/* * Copyright (c) 1990 Dennis Ferguson. All rights reserved. * * Commercial use is permitted only if products which are derived from * or include this software are made available for purchase and/or use * in Canada. Otherwise, redistribution and use in source and binary * forms are permitted. */ Sorry about the poor quality of installation instructions. Included here are replacements for the DES portions of Eric Young's kerberos DES library replacement. To use this you will need his distribution. Untar the latter and: (1) Copy all .c and .h files into the distribution directory. This will overwrite some files and add others. (2) Apply the patch included here to set_key.c in the distribution directory. (3) Edit the Imakefile (or the Makefile) to include the following files on the SRCS= line: des_tables.c ecb_buffer.c make_sched.c Add the following files to the OBJS= line: des_tables.o ecb_buffer.o make_sched.o Add the following file to the CODE= line: des_tables.h Recompile and you're done. The salient differences between this DES and Eric Young's are as follows: (1) There are no dependencies on byte ordering, the ability to do unaligned loads and stores, or any other machine dependencies that I know of. There are no #ifdef's. The code could probably be made faster by adding such things, but not enough to be worth it. (2) Combined S and P tables are used for the inner loop of the cipher routine and the E expansion is computed on the fly, like Eric Young's code, but the computation is reordered from the standard to save instructions. (3) The initial and final permutations are table driven, and take about the same amount of work as a single round of the inner loop (i.e. only about 12% of the work done for an ecb encryption is spent in the IP and FP code). (4) Since NTP (for which this DES was originally implemented) uses lots of keys to encrypt small things, the key permutation code has been well worked over and is quite speedy (the amount of work required to permute a key is on the order of that required to do a single ECB encryption, more or less). (5) Since the code required to do an ECB encryption using the tables is actually fairly compact, even with lots of inlining, it was implemented as a macro and is expanded in situ where needed. On the one machine I ran a comparison on this code ran 80% faster than Eric's, compiled into a slightly smaller space, and did pass destest. I suspect this stuff is also faster, and not a lot larger, than the library MIT doesn't export with kerberos. You mileage may vary. The silly copyright was a (probably ineffective) afterthought. If it really inconveniences you give me a call.