Home | History | Annotate | Download | only in des
      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