DES SOFTWARE PACKAGE Version 2.2 _ Copyright (c) 1990,1991,1992,1993 Stig Ostholm. All Rights Reserved The author takes no responsibility of actions caused by the use of this software package and does not guarantee the correctness of the functions. This software package may be freely distributed for non-commercial purpose as long as the copyright notice is kept. Any changes made should be accompanied by a comment indicating who made the change, when it was made and what was changed. This software package, or any parts of it, may not be used or in any way re-distributed for commercial purpose without the authors permission. The author keeps the right to decide between of what is commercial and what is non-commercial purpose. Restrictions due to national laws governing the use, import or export of cryptographic software is the responsibility of the software user/importer/ exporter to follow. DES SOFTWARE PACKAGE Version 2.2 This software package is an implementation of the Data Encryption Standard (DES) as described in "Federal Information Processing Standards Publication 46", 1977 January 15. The triple DES encryption described in "ANSI X9.17-1985" has also been added. The implementation contains a general purpose DES library and user programs for file encryption/decryption. The library is compatible with the DES library from MIT (Massachusetts Institute of Technology) at function call level, as described in the manual DES(3). There are also functions available in this implementation that are not a part of the MIT library. The header file "des.h" contains ANSI C function prototypes for all library functions. This library has only been compared against the MIT library through the manual page due to export restrictions of cryptographic software outside the US. Changes from the MIT library: * The base encryption algorithm (default: `des_dea') may be changed by setting `des_core'. * The method of converting a text-string to a DES key may be changed by setting `des_strkey'. * Encryption methods using an initialization vector may return a modified vector from the last iteration, making it possible to chain calls to an encryption/decryption function into an unbroken sequence. * Additional functions not in the MIT library are: des_dea - Identical to des_ecb_encrypt. des_dea3 - Triple DES encryption. des_dea3b - Triple DES encryption (des_dea3b != des_dea3). des_core - Pointer to `des_dea' (or `des_dea3'). des_sched - Same as des_key_sched without any parity or weak-key test. des_ecb2_encrypt - The Electronic Code Book mode of encryption/decryption on a user specified number of bytes. des_cfb8_encrypt - The 8-bit Cipher Feed-Back mode of encryption/decryption on a user specified number of bytes. des_ofb8_encrypt - The 8-bit Output Feed-Back mode of encryption/decryption on a user specified number of bytes. des_is_weak_key - Tests if the key is weak. des_is_semiweak_key - Tests if the key is semi-weak. des_no_key_schedule - Returns the number of different keys in a key schedule. des_strkey - Pointer to the actual function used by `des_string_to_key'. des_random_cblock - Generates a random value in a 64-bit block. des_hex_to_cblock - returns the value of a string with a 64-bit hexadecimal number in a 64-bit block. des_print_cblock - Prints a 64-bits block as a 64-bit hexadecimal value on stdout. des_read_cblock - Similar to des_read_password but accepts only 64-bit hexadecimal numbers. des_read_hexkey - Similar to des_read_cblock but parity adjusts the value. encrypt - Encryption/decryption function described in X/Open Portability Guide (December 1988). setkey - Key handling function described in X/Open Portability Guide. * The `quad_cksum' routine is not a part for this release but are separately available and easy to install in the package. See the file QUAD_CKSUM for more information. User programs: * descrypt - General purpose file encryption/decryption program. * deskey - Show the actual DES keys used or returns random keys. Utility programs: These programs are useful when modifying or optimizing the code. * desktest - A simple test of the DES key algorithm. * desbench - Simple benchmark program for the base DES, triple DES and key schedule generation. * desvrfy - Simple verification program for the base DES and triple DES algorithms. Building the package: The building process is fairly straight-forward. There are, however, some special things to note: * Makefiles - Some makefile configurations (such as CC) can be set in the top-level makefile are then propagated to the subdirectory makfiles when building. Note: typing `make' in a subdirectory does NOT include changes made to the top makefile. * make depend - Has not been tested. * util/ranllib - This is a shell-script wich does nothing. This script is run if no ranlib program can be found in the path since the `util/' directory is appeded to the path in the top-level makefile. The idea is to prevent makefiles from failing on systems wihtout ranlibmm (such as SunOS 5.x). * lib/dea - Some files in this library are compiled by first doing test-compiles of different version and performing benchmarks to find the fastest method. This can be prevented by making conigurations by hand and changing the makefile. Please study lib/dea/Makefile before attempting this. If you find any bugs or porting problems, please inform the author about these problems (and fixes if there are any). _ Stig Ostholm Department of Computer Engineering Chalmers University of Technology ---------------------------------- Email: ostholm@ce.chalmers.se Phone: +46 31 772 1703 Fax: +46 31 772 3663