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