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