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