VERSION revision 1.1 1 1.1 christos Fixed the weak key values which were wrong :-(
2 1.1 christos Defining SIGACTION causes sigaction() to be used instead of signal().
3 1.1 christos SIGUSR1/SIGUSR2 are no longer mapped in the read tty stuff because it
4 1.1 christos can cause problems. This should hopefully not affect normal
5 1.1 christos applications.
6 1.1 christos
7 1.1 christos Version 4.04
8 1.1 christos Fixed a few tests in destest. Also added x86 assember for
9 1.1 christos des_ncbc_encrypt() which is the standard cbc mode function.
10 1.1 christos This makes a very very large performace difference.
11 1.1 christos Ariel Glenn ariel (a] columbia.edu reports that the terminal
12 1.1 christos 'turn echo off' can return (errno == EINVAL) under solaris
13 1.1 christos when redirection is used. So I now catch that as well as ENOTTY.
14 1.1 christos
15 1.1 christos
16 1.1 christos Version 4.03
17 1.1 christos Left a static out of enc_write.c, which caused to buffer to be
18 1.1 christos continiously malloc()ed. Does anyone use these functions? I keep
19 1.1 christos on feeling like removing them since I only had these in there
20 1.1 christos for a version of kerberised login. Anyway, this was pointed out
21 1.1 christos by Theo de Raadt <deraadt (a] cvs.openbsd.org>
22 1.1 christos The 'n' bit ofb code was wrong, it was not shifting the shift
23 1.1 christos register. It worked correctly for n == 64. Thanks to
24 1.1 christos Gigi Ankeny <Gigi.Ankeny (a] Eng.Sun.COM> for pointing this one out.
25 1.1 christos
26 1.1 christos Version 4.02
27 1.1 christos I was doing 'if (memcmp(weak_keys[i],key,sizeof(key)) == 0)'
28 1.1 christos when checking for weak keys which is wrong :-(, pointed out by
29 1.1 christos Markus F.X.J. Oberhumer <markus.oberhumer (a] jk.uni-linz.ac.at>.
30 1.1 christos
31 1.1 christos Version 4.01
32 1.1 christos Even faster inner loop in the DES assembler for x86 and a modification
33 1.1 christos for IP/FP which is faster on x86. Both of these changes are
34 1.1 christos from Svend Olaf Mikkelsen <svolaf (a] inet.uni-c.dk>. His
35 1.1 christos changes make the assembler run %40 faster on a pentium. This is just
36 1.1 christos a case of getting the instruction sequence 'just right'.
37 1.1 christos All credit to 'Svend' :-)
38 1.1 christos Quite a few special x86 'make' targets.
39 1.1 christos A libdes-l (lite) distribution.
40 1.1 christos
41 1.1 christos Version 4.00
42 1.1 christos After a bit of a pause, I'll up the major version number since this
43 1.1 christos is mostly a performace release. I've added x86 assembler and
44 1.1 christos added more options for performance. A %28 speedup for gcc
45 1.1 christos on a pentium and the assembler is a %50 speedup.
46 1.1 christos MIPS CPU's, sparc and Alpha are the main CPU's with speedups.
47 1.1 christos Run des_opts to work out which options should be used.
48 1.1 christos DES_RISC1/DES_RISC2 use alternative inner loops which use
49 1.1 christos more registers but should give speedups on any CPU that does
50 1.1 christos dual issue (pentium). DES_UNROLL unrolls the inner loop,
51 1.1 christos which costs in code size.
52 1.1 christos
53 1.1 christos Version 3.26
54 1.1 christos I've finally removed one of the shifts in D_ENCRYPT. This
55 1.1 christos meant I've changed the des_SPtrans table (spr.h), the set_key()
56 1.1 christos function and some things in des_enc.c. This has definitly
57 1.1 christos made things faster :-). I've known about this one for some
58 1.1 christos time but I've been too lazy to follow it up :-).
59 1.1 christos Noticed that in the D_ENCRYPT() macro, we can just do L^=(..)^(..)^..
60 1.1 christos instead of L^=((..)|(..)|(..).. This should save a register at
61 1.1 christos least.
62 1.1 christos Assember for x86. The file to replace is des_enc.c, which is replaced
63 1.1 christos by one of the assembler files found in asm. Look at des/asm/readme
64 1.1 christos for more info.
65 1.1 christos
66 1.1 christos /* Modification to fcrypt so it can be compiled to support
67 1.1 christos HPUX 10.x's long password format, define -DLONGCRYPT to use this.
68 1.1 christos Thanks to Jens Kupferschmidt <bt1cu (a] hpboot.rz.uni-leipzig.de>. */
69 1.1 christos
70 1.1 christos SIGWINCH case put in des_read_passwd() so the function does not
71 1.1 christos 'exit' if this function is recieved.
72 1.1 christos
73 1.1 christos Version 3.25 17/07/96
74 1.1 christos Modified read_pwd.c so that stdin can be read if not a tty.
75 1.1 christos Thanks to Jeff Barber <jeffb (a] issl.atl.hp.com> for the patches.
76 1.1 christos des_init_random_number_generator() shortened due to VMS linker
77 1.1 christos limits.
78 1.1 christos Added RSA's DESX cbc mode. It is a form of cbc encryption, with 2
79 1.1 christos 8 byte quantites xored before and after encryption.
80 1.1 christos des_xcbc_encryption() - the name is funny to preserve the des_
81 1.1 christos prefix on all functions.
82 1.1 christos
83 1.1 christos Version 3.24 20/04/96
84 1.1 christos The DES_PTR macro option checked and used by SSLeay configuration
85 1.1 christos
86 1.1 christos Version 3.23 11/04/96
87 1.1 christos Added DES_LONG. If defined to 'unsigned int' on the DEC Alpha,
88 1.1 christos it gives a %20 speedup :-)
89 1.1 christos Fixed the problem with des.pl under perl5. The patches were
90 1.1 christos sent by Ed Kubaitis (ejk (a] uiuc.edu).
91 1.1 christos if fcrypt.c, changed values to handle illegal salt values the way
92 1.1 christos normal crypt() implementations do. Some programs apparently use
93 1.1 christos them :-(. The patch was sent by Bjorn Gronvall <bg (a] sics.se>
94 1.1 christos
95 1.1 christos Version 3.22 29/11/95
96 1.1 christos Bug in des(1), an error with the uuencoding stuff when the
97 1.1 christos 'data' is small, thanks to Geoff Keating <keagchon (a] mehta.anu.edu.au>
98 1.1 christos for the patch.
99 1.1 christos
100 1.1 christos Version 3.21 22/11/95
101 1.1 christos After some emailing back and forth with
102 1.1 christos Colin Plumb <colin (a] nyx10.cs.du.edu>, I've tweaked a few things
103 1.1 christos and in a future version I will probably put in some of the
104 1.1 christos optimisation he suggested for use with the DES_USE_PTR option.
105 1.1 christos Extra routines from Mark Murray <mark (a] grondar.za> for use in
106 1.1 christos freeBSD. They mostly involve random number generation for use
107 1.1 christos with kerberos. They involve evil machine specific system calls
108 1.1 christos etc so I would normally suggest pushing this stuff into the
109 1.1 christos application and/or using RAND_seed()/RAND_bytes() if you are
110 1.1 christos using this DES library as part of SSLeay.
111 1.1 christos Redone the read_pw() function so that it is cleaner and
112 1.1 christos supports termios, thanks to Sameer Parekh <sameer (a] c2.org>
113 1.1 christos for the initial patches for this.
114 1.1 christos Renamed 3ecb_encrypt() to ecb3_encrypt(). This has been
115 1.1 christos done just to make things more consistent.
116 1.1 christos I have also now added triple DES versions of cfb and ofb.
117 1.1 christos
118 1.1 christos Version 3.20
119 1.1 christos Damn, Damn, Damn, as pointed out by Mike_Spreitzer.PARC (a] xerox.com,
120 1.1 christos my des_random_seed() function was only copying 4 bytes of the
121 1.1 christos passed seed into the init structure. It is now fixed to copy 8.
122 1.1 christos My own suggestion is to used something like MD5 :-)
123 1.1 christos
124 1.1 christos Version 3.19
125 1.1 christos While looking at my code one day, I though, why do I keep on
126 1.1 christos calling des_encrypt(in,out,ks,enc) when every function that
127 1.1 christos calls it has in and out the same. So I dropped the 'out'
128 1.1 christos parameter, people should not be using this function.
129 1.1 christos
130 1.1 christos Version 3.18 30/08/95
131 1.1 christos Fixed a few bit with the distribution and the filenames.
132 1.1 christos 3.17 had been munged via a move to DOS and back again.
133 1.1 christos NO CODE CHANGES
134 1.1 christos
135 1.1 christos Version 3.17 14/07/95
136 1.1 christos Fixed ede3 cbc which I had broken in 3.16. I have also
137 1.1 christos removed some unneeded variables in 7-8 of the routines.
138 1.1 christos
139 1.1 christos Version 3.16 26/06/95
140 1.1 christos Added des_encrypt2() which does not use IP/FP, used by triple
141 1.1 christos des routines. Tweaked things a bit elsewhere. %13 speedup on
142 1.1 christos sparc and %6 on a R4400 for ede3 cbc mode.
143 1.1 christos
144 1.1 christos Version 3.15 06/06/95
145 1.1 christos Added des_ncbc_encrypt(), it is des_cbc mode except that it is
146 1.1 christos 'normal' and copies the new iv value back over the top of the
147 1.1 christos passed parameter.
148 1.1 christos CHANGED des_ede3_cbc_encrypt() so that it too now overwrites
149 1.1 christos the iv. THIS WILL BREAK EXISTING CODE, but since this function
150 1.1 christos only new, I feel I can change it, not so with des_cbc_encrypt :-(.
151 1.1 christos I need to update the documentation.
152 1.1 christos
153 1.1 christos Version 3.14 31/05/95
154 1.1 christos New release upon the world, as part of my SSL implementation.
155 1.1 christos New copyright and usage stuff. Basically free for all to use
156 1.1 christos as long as you say it came from me :-)
157 1.1 christos
158 1.1 christos Version 3.13 31/05/95
159 1.1 christos A fix in speed.c, if HZ is not defined, I set it to 100.0
160 1.1 christos which is reasonable for most unixes except SunOS 4.x.
161 1.1 christos I now have a #ifdef sun but timing for SunOS 4.x looked very
162 1.1 christos good :-(. At my last job where I used SunOS 4.x, it was
163 1.1 christos defined to be 60.0 (look at the old INSTALL documentation), at
164 1.1 christos the last release had it changed to 100.0 since I now work with
165 1.1 christos Solaris2 and SVR4 boxes.
166 1.1 christos Thanks to Rory Chisholm <rchishol (a] math.ethz.ch> for pointing this
167 1.1 christos one out.
168 1.1 christos
169 1.1 christos Version 3.12 08/05/95
170 1.1 christos As pointed out by The Crypt Keeper <tck (a] bend.UCSD.EDU>,
171 1.1 christos my D_ENCRYPT macro in crypt() had an un-necessary variable.
172 1.1 christos It has been removed.
173 1.1 christos
174 1.1 christos Version 3.11 03/05/95
175 1.1 christos Added des_ede3_cbc_encrypt() which is cbc mode des with 3 keys
176 1.1 christos and one iv. It is a standard and I needed it for my SSL code.
177 1.1 christos It makes more sense to use this for triple DES than
178 1.1 christos 3cbc_encrypt(). I have also added (or should I say tested :-)
179 1.1 christos cfb64_encrypt() which is cfb64 but it will encrypt a partial
180 1.1 christos number of bytes - 3 bytes in 3 bytes out. Again this is for
181 1.1 christos my SSL library, as a form of encryption to use with SSL
182 1.1 christos telnet.
183 1.1 christos
184 1.1 christos Version 3.10 22/03/95
185 1.1 christos Fixed a bug in 3cbc_encrypt() :-(. When making repeated calls
186 1.1 christos to cbc3_encrypt, the 2 iv values that were being returned to
187 1.1 christos be used in the next call were reversed :-(.
188 1.1 christos Many thanks to Bill Wade <wade (a] Stoner.COM> for pointing out
189 1.1 christos this error.
190 1.1 christos
191 1.1 christos Version 3.09 01/02/95
192 1.1 christos Fixed des_random_key to far more random, it was rather feeble
193 1.1 christos with regards to picking the initial seed. The problem was
194 1.1 christos pointed out by Olaf Kirch <okir (a] monad.swb.de>.
195 1.1 christos
196 1.1 christos Version 3.08 14/12/94
197 1.1 christos Added Makefile.PL so libdes can be built into perl5.
198 1.1 christos Changed des_locl.h so RAND is always defined.
199 1.1 christos
200 1.1 christos Version 3.07 05/12/94
201 1.1 christos Added GNUmake and stuff so the library can be build with
202 1.1 christos glibc.
203 1.1 christos
204 1.1 christos Version 3.06 30/08/94
205 1.1 christos Added rpc_enc.c which contains _des_crypt. This is for use in
206 1.1 christos secure_rpc v 4.0
207 1.1 christos Finally fixed the cfb_enc problems.
208 1.1 christos Fixed a few parameter parsing bugs in des (-3 and -b), thanks
209 1.1 christos to Rob McMillan <R.McMillan (a] its.gu.edu.au>
210 1.1 christos
211 1.1 christos Version 3.05 21/04/94
212 1.1 christos for unsigned long l; gcc does not produce ((l>>34) == 0)
213 1.1 christos This causes bugs in cfb_enc.
214 1.1 christos Thanks to Hadmut Danisch <danisch (a] ira.uka.de>
215 1.1 christos
216 1.1 christos Version 3.04 20/04/94
217 1.1 christos Added a version number to des.c and libdes.a
218 1.1 christos
219 1.1 christos Version 3.03 12/01/94
220 1.1 christos Fixed a bug in non zero iv in 3cbc_enc.
221 1.1 christos
222 1.1 christos Version 3.02 29/10/93
223 1.1 christos I now work in a place where there are 6+ architectures and 14+
224 1.1 christos OS versions :-).
225 1.1 christos Fixed TERMIO definition so the most sys V boxes will work :-)
226 1.1 christos
227 1.1 christos Release upon comp.sources.misc
228 1.1 christos Version 3.01 08/10/93
229 1.1 christos Added des_3cbc_encrypt()
230 1.1 christos
231 1.1 christos Version 3.00 07/10/93
232 1.1 christos Fixed up documentation.
233 1.1 christos quad_cksum definitely compatible with MIT's now.
234 1.1 christos
235 1.1 christos Version 2.30 24/08/93
236 1.1 christos Triple DES now defaults to triple cbc but can do triple ecb
237 1.1 christos with the -b flag.
238 1.1 christos Fixed some MSDOS uuen/uudecoding problems, thanks to
239 1.1 christos Added prototypes.
240 1.1 christos
241 1.1 christos Version 2.22 29/06/93
242 1.1 christos Fixed a bug in des_is_weak_key() which stopped it working :-(
243 1.1 christos thanks to engineering (a] MorningStar.Com.
244 1.1 christos
245 1.1 christos Version 2.21 03/06/93
246 1.1 christos des(1) with no arguments gives quite a bit of help.
247 1.1 christos Added -c (generate ckecksum) flag to des(1).
248 1.1 christos Added -3 (triple DES) flag to des(1).
249 1.1 christos Added cfb and ofb routines to the library.
250 1.1 christos
251 1.1 christos Version 2.20 11/03/93
252 1.1 christos Added -u (uuencode) flag to des(1).
253 1.1 christos I have been playing with byte order in quad_cksum to make it
254 1.1 christos compatible with MIT's version. All I can say is avid this
255 1.1 christos function if possible since MIT's output is endian dependent.
256 1.1 christos
257 1.1 christos Version 2.12 14/10/92
258 1.1 christos Added MSDOS specific macro in ecb_encrypt which gives a %70
259 1.1 christos speed up when the code is compiled with turbo C.
260 1.1 christos
261 1.1 christos Version 2.11 12/10/92
262 1.1 christos Speedup in set_key (recoding of PC-1)
263 1.1 christos I now do it in 47 simple operations, down from 60.
264 1.1 christos Thanks to John Fletcher (john_fletcher (a] lccmail.ocf.llnl.gov)
265 1.1 christos for motivating me to look for a faster system :-)
266 1.1 christos The speedup is probably less that 1% but it is still 13
267 1.1 christos instructions less :-).
268 1.1 christos
269 1.1 christos Version 2.10 06/10/92
270 1.1 christos The code now works on the 64bit ETA10 and CRAY without modifications or
271 1.1 christos #defines. I believe the code should work on any machine that
272 1.1 christos defines long, int or short to be 8 bytes long.
273 1.1 christos Thanks to Shabbir J. Safdar (shabby (a] mentor.cc.purdue.edu)
274 1.1 christos for helping me fix the code to run on 64bit machines (he had
275 1.1 christos access to an ETA10).
276 1.1 christos Thanks also to John Fletcher <john_fletcher (a] lccmail.ocf.llnl.gov>
277 1.1 christos for testing the routines on a CRAY.
278 1.1 christos read_password.c has been renamed to read_passwd.c
279 1.1 christos string_to_key.c has been renamed to string2key.c
280 1.1 christos
281 1.1 christos Version 2.00 14/09/92
282 1.1 christos Made mods so that the library should work on 64bit CPU's.
283 1.1 christos Removed all my uchar and ulong defs. To many different
284 1.1 christos versions of unix define them in their header files in too many
285 1.1 christos different combinations :-)
286 1.1 christos IRIX - Sillicon Graphics mods (mostly in read_password.c).
287 1.1 christos Thanks to Andrew Daviel (advax (a] erich.triumf.ca)
288 1.1 christos
289 1.1 christos Version 1.99 26/08/92
290 1.1 christos Fixed a bug or 2 in enc_read.c
291 1.1 christos Fixed a bug in enc_write.c
292 1.1 christos Fixed a pseudo bug in fcrypt.c (very obscure).
293 1.1 christos
294 1.1 christos Version 1.98 31/07/92
295 1.1 christos Support for the ETA10. This is a strange machine that defines
296 1.1 christos longs and ints as 8 bytes and shorts as 4 bytes.
297 1.1 christos Since I do evil things with long * that assume that they are 4
298 1.1 christos bytes. Look in the Makefile for the option to compile for
299 1.1 christos this machine. quad_cksum appears to have problems but I
300 1.1 christos will don't have the time to fix it right now, and this is not
301 1.1 christos a function that uses DES and so will not effect the main uses
302 1.1 christos of the library.
303 1.1 christos
304 1.1 christos Version 1.97 20/05/92 eay
305 1.1 christos Fixed the Imakefile and made some changes to des.h to fix some
306 1.1 christos problems when building this package with Kerberos v 4.
307 1.1 christos
308 1.1 christos Version 1.96 18/05/92 eay
309 1.1 christos Fixed a small bug in string_to_key() where problems could
310 1.1 christos occur if des_check_key was set to true and the string
311 1.1 christos generated a weak key.
312 1.1 christos
313 1.1 christos Patch2 posted to comp.sources.misc
314 1.1 christos Version 1.95 13/05/92 eay
315 1.1 christos Added an alternative version of the D_ENCRYPT macro in
316 1.1 christos ecb_encrypt and fcrypt. Depending on the compiler, one version or the
317 1.1 christos other will be faster. This was inspired by
318 1.1 christos Dana How <how (a] isl.stanford.edu>, and her pointers about doing the
319 1.1 christos *(ulong *)((uchar *)ptr+(value&0xfc))
320 1.1 christos vs
321 1.1 christos ptr[value&0x3f]
322 1.1 christos to stop the C compiler doing a <<2 to convert the long array index.
323 1.1 christos
324 1.1 christos Version 1.94 05/05/92 eay
325 1.1 christos Fixed an incompatibility between my string_to_key and the MIT
326 1.1 christos version. When the key is longer than 8 chars, I was wrapping
327 1.1 christos with a different method. To use the old version, define
328 1.1 christos OLD_STR_TO_KEY in the makefile. Thanks to
329 1.1 christos viktor (a] newsu.shearson.com (Viktor Dukhovni).
330 1.1 christos
331 1.1 christos Version 1.93 28/04/92 eay
332 1.1 christos Fixed the VMS mods so that echo is now turned off in
333 1.1 christos read_password. Thanks again to brennan (a] coco.cchs.su.oz.AU.
334 1.1 christos MSDOS support added. The routines can be compiled with
335 1.1 christos Turbo C (v2.0) and MSC (v5.1). Make sure MSDOS is defined.
336 1.1 christos
337 1.1 christos Patch1 posted to comp.sources.misc
338 1.1 christos Version 1.92 13/04/92 eay
339 1.1 christos Changed D_ENCRYPT so that the rotation of R occurs outside of
340 1.1 christos the loop. This required rotating all the longs in sp.h (now
341 1.1 christos called spr.h). Thanks to Richard Outerbridge <71755.204 (a] CompuServe.COM>
342 1.1 christos speed.c has been changed so it will work without SIGALRM. If
343 1.1 christos times(3) is not present it will try to use ftime() instead.
344 1.1 christos
345 1.1 christos Version 1.91 08/04/92 eay
346 1.1 christos Added -E/-D options to des(1) so it can use string_to_key.
347 1.1 christos Added SVR4 mods suggested by witr (a] rwwa.COM
348 1.1 christos Added VMS mods suggested by brennan (a] coco.cchs.su.oz.AU. If
349 1.1 christos anyone knows how to turn of tty echo in VMS please tell me or
350 1.1 christos implement it yourself :-).
351 1.1 christos Changed FILE *IN/*OUT to *DES_IN/*DES_OUT since it appears VMS
352 1.1 christos does not like IN/OUT being used.
353 1.1 christos
354 1.1 christos Libdes posted to comp.sources.misc
355 1.1 christos Version 1.9 24/03/92 eay
356 1.1 christos Now contains a fast small crypt replacement.
357 1.1 christos Added des(1) command.
358 1.1 christos Added des_rw_mode so people can use cbc encryption with
359 1.1 christos enc_read and enc_write.
360 1.1 christos
361 1.1 christos Version 1.8 15/10/91 eay
362 1.1 christos Bug in cbc_cksum.
363 1.1 christos Many thanks to Keith Reynolds (keithr (a] sco.COM) for pointing this
364 1.1 christos one out.
365 1.1 christos
366 1.1 christos Version 1.7 24/09/91 eay
367 1.1 christos Fixed set_key :-)
368 1.1 christos set_key is 4 times faster and takes less space.
369 1.1 christos There are a few minor changes that could be made.
370 1.1 christos
371 1.1 christos Version 1.6 19/09/1991 eay
372 1.1 christos Finally go IP and FP finished.
373 1.1 christos Now I need to fix set_key.
374 1.1 christos This version is quite a bit faster that 1.51
375 1.1 christos
376 1.1 christos Version 1.52 15/06/1991 eay
377 1.1 christos 20% speedup in ecb_encrypt by changing the E bit selection
378 1.1 christos to use 2 32bit words. This also required modification of the
379 1.1 christos sp table. There is still a way to speedup the IP and IP-1
380 1.1 christos (hints from outer (a] sq.com) still working on this one :-(.
381 1.1 christos
382 1.1 christos Version 1.51 07/06/1991 eay
383 1.1 christos Faster des_encrypt by loop unrolling
384 1.1 christos Fixed bug in quad_cksum.c (thanks to hughes (a] logos.ucs.indiana.edu)
385 1.1 christos
386 1.1 christos Version 1.50 28/05/1991 eay
387 1.1 christos Optimised the code a bit more for the sparc. I have improved the
388 1.1 christos speed of the inner des_encrypt by speeding up the initial and
389 1.1 christos final permutations.
390 1.1 christos
391 1.1 christos Version 1.40 23/10/1990 eay
392 1.1 christos Fixed des_random_key, it did not produce a random key :-(
393 1.1 christos
394 1.1 christos Version 1.30 2/10/1990 eay
395 1.1 christos Have made des_quad_cksum the same as MIT's, the full package
396 1.1 christos should be compatible with MIT's
397 1.1 christos Have tested on a DECstation 3100
398 1.1 christos Still need to fix des_set_key (make it faster).
399 1.1 christos Does des_cbc_encrypts at 70.5k/sec on a 3100.
400 1.1 christos
401 1.1 christos Version 1.20 18/09/1990 eay
402 1.1 christos Fixed byte order dependencies.
403 1.1 christos Fixed (I hope) all the word alignment problems.
404 1.1 christos Speedup in des_ecb_encrypt.
405 1.1 christos
406 1.1 christos Version 1.10 11/09/1990 eay
407 1.1 christos Added des_enc_read and des_enc_write.
408 1.1 christos Still need to fix des_quad_cksum.
409 1.1 christos Still need to document des_enc_read and des_enc_write.
410 1.1 christos
411 1.1 christos Version 1.00 27/08/1990 eay
412 1.1 christos
413