cac99a373487467ab050f3be2c42e8ef2c8dfdd4
[openssl.git] / CHANGES
1
2  OpenSSL CHANGES
3  _______________
4
5
6  Changes between 0.9.2b and 0.9.3
7
8   *) Fix `openssl crl -noout -text' combination where `-noout' killed the
9      `-text' option at all and this way the `-noout -text' combination was
10      inconsistent in `openssl crl' with the friends in `openssl x509|rsa|dsa'.
11      [Ralf S. Engelschall]
12
13   *) Make sure a corresponding plain text error message exists for the
14      X509_V_ERR_CERT_REVOKED/23 error number which can occur when a
15      verify callback function determined that a certificate was revoked.
16      [Ralf S. Engelschall]
17
18   *) Bugfix: In test/testenc, don't test "openssl <cipher>" for
19      ciphers that were excluded, e.g. by -DNO_IDEA.  Also, test
20      all available cipers including rc5, which was forgotten until now.
21      In order to let the testing shell script know which algorithms
22      are available, a new (up to now undocumented) command
23      "openssl list-cipher-commands" is used.
24      [Bodo Moeller]
25
26   *) Bugfix: s_client occasionally would sleep in select() when
27      it should have checked SSL_pending() first.
28      [Bodo Moeller]
29
30   *) New functions DSA_do_sign and DSA_do_verify to provide access to
31      the raw DSA values prior to ASN.1 encoding.
32      [Ulf Möller]
33
34   *) Tweaks to Configure
35      Niels Poppe <niels@netbox.org>
36
37   *) Add support for PKCS#5 v2.0 ASN1 PBES2 structures. No other support,
38      yet...
39      [Steve Henson]
40
41   *) New variables $(RANLIB) and $(PERL) in the Makefiles.
42      [Ulf Möller]
43
44   *) New config option to avoid instructions that are illegal on the 80386.
45      The default code is faster, but requires at least a 486.
46      [Ulf Möller]
47   
48   *) Got rid of old SSL2_CLIENT_VERSION (inconsistently used) and
49      SSL2_SERVER_VERSION (not used at all) macros, which are now the
50      same as SSL2_VERSION anyway.
51      [Bodo Moeller]
52
53   *) New "-showcerts" option for s_client.
54      [Bodo Moeller]
55
56   *) Still more PKCS#12 integration. Add pkcs12 application to openssl
57      application. Various cleanups and fixes.
58      [Steve Henson]
59
60   *) More PKCS#12 integration. Add new pkcs12 directory with Makefile.ssl and
61      modify error routines to work internally. Add error codes and PBE init
62      to library startup routines.
63      [Steve Henson]
64
65   *) Further PKCS#12 integration. Added password based encryption, PKCS#8 and
66      packing functions to asn1 and evp. Changed function names and error
67      codes along the way.
68      [Steve Henson]
69
70   *) PKCS12 integration: and so it begins... First of several patches to
71      slowly integrate PKCS#12 functionality into OpenSSL. Add PKCS#12
72      objects to objects.h
73      [Steve Henson]
74
75   *) Add a new 'indent' option to some X509V3 extension code. Initial ASN1
76      and display support for Thawte strong extranet extension.
77      [Steve Henson]
78
79   *) Add LinuxPPC support.
80      [Jeff Dubrule <igor@pobox.org>]
81
82   *) Get rid of redundant BN file bn_mulw.c, and rename bn_div64 to
83      bn_div_words in alpha.s.
84      [Hannes Reinecke <H.Reinecke@hw.ac.uk> and Ben Laurie]
85
86   *) Make sure the RSA OAEP test is skipped under -DRSAref because
87      OAEP isn't supported when OpenSSL is built with RSAref.
88      [Ulf Moeller <ulf@fitug.de>]
89
90   *) Move definitions of IS_SET/IS_SEQUENCE inside crypto/asn1/asn1.h 
91      so they no longer are missing under -DNOPROTO. 
92      [Soren S. Jorvang <soren@t.dk>]
93
94  Changes between 0.9.1c and 0.9.2b
95
96   *) Make SSL_get_peer_cert_chain() work in servers. Unfortunately, it still
97      doesn't work when the session is reused. Coming soon!
98      [Ben Laurie]
99
100   *) Fix a security hole, that allows sessions to be reused in the wrong
101      context thus bypassing client cert protection! All software that uses
102      client certs and session caches in multiple contexts NEEDS PATCHING to
103      allow session reuse! A fuller solution is in the works.
104      [Ben Laurie, problem pointed out by Holger Reif, Bodo Moeller (and ???)]
105
106   *) Some more source tree cleanups (removed obsolete files
107      crypto/bf/asm/bf586.pl, test/test.txt and crypto/sha/asm/f.s; changed
108      permission on "config" script to be executable) and a fix for the INSTALL
109      document.
110      [Ulf Moeller <ulf@fitug.de>]
111
112   *) Remove some legacy and erroneous uses of malloc, free instead of
113      Malloc, Free.
114      [Lennart Bang <lob@netstream.se>, with minor changes by Steve]
115
116   *) Make rsa_oaep_test return non-zero on error.
117      [Ulf Moeller <ulf@fitug.de>]
118
119   *) Add support for native Solaris shared libraries. Configure
120      solaris-sparc-sc4-pic, make, then run shlib/solaris-sc4.sh. It'd be nice
121      if someone would make that last step automatic.
122      [Matthias Loepfe <Matthias.Loepfe@AdNovum.CH>]
123
124   *) ctx_size was not built with the right compiler during "make links". Fixed.
125      [Ben Laurie]
126
127   *) Change the meaning of 'ALL' in the cipher list. It now means "everything
128      except NULL ciphers". This means the default cipher list will no longer
129      enable NULL ciphers. They need to be specifically enabled e.g. with
130      the string "DEFAULT:eNULL".
131      [Steve Henson]
132
133   *) Fix to RSA private encryption routines: if p < q then it would
134      occasionally produce an invalid result. This will only happen with
135      externally generated keys because OpenSSL (and SSLeay) ensure p > q.
136      [Steve Henson]
137
138   *) Be less restrictive and allow also `perl util/perlpath.pl
139      /path/to/bin/perl' in addition to `perl util/perlpath.pl /path/to/bin',
140      because this way one can also use an interpreter named `perl5' (which is
141      usually the name of Perl 5.xxx on platforms where an Perl 4.x is still
142      installed as `perl').
143      [Matthias Loepfe <Matthias.Loepfe@adnovum.ch>]
144
145   *) Let util/clean-depend.pl work also with older Perl 5.00x versions.
146      [Matthias Loepfe <Matthias.Loepfe@adnovum.ch>]
147
148   *) Fix Makefile.org so CC,CFLAG etc are passed to 'make links' add
149      advapi32.lib to Win32 build and change the pem test comparision
150      to fc.exe (thanks to Ulrich Kroener <kroneru@yahoo.com> for the
151      suggestion). Fix misplaced ASNI prototypes and declarations in evp.h
152      and crypto/des/ede_cbcm_enc.c.
153      [Steve Henson]
154
155   *) DES quad checksum was broken on big-endian architectures. Fixed.
156      [Ben Laurie]
157
158   *) Comment out two functions in bio.h that aren't implemented. Fix up the
159      Win32 test batch file so it (might) work again. The Win32 test batch file
160      is horrible: I feel ill....
161      [Steve Henson]
162
163   *) Move various #ifdefs around so NO_SYSLOG, NO_DIRENT etc are now selected
164      in e_os.h. Audit of header files to check ANSI and non ANSI
165      sections: 10 functions were absent from non ANSI section and not exported
166      from Windows DLLs. Fixed up libeay.num for new functions.
167      [Steve Henson]
168
169   *) Make `openssl version' output lines consistent.
170      [Ralf S. Engelschall]
171
172   *) Fix Win32 symbol export lists for BIO functions: Added
173      BIO_get_ex_new_index, BIO_get_ex_num, BIO_get_ex_data and BIO_set_ex_data
174      to ms/libeay{16,32}.def.
175      [Ralf S. Engelschall]
176
177   *) Second round of fixing the OpenSSL perl/ stuff. It now at least compiled
178      fine under Unix and passes some trivial tests I've now added. But the
179      whole stuff is horribly incomplete, so a README.1ST with a disclaimer was
180      added to make sure no one expects that this stuff really works in the
181      OpenSSL 0.9.2 release.  Additionally I've started to clean the XS sources
182      up and fixed a few little bugs and inconsistencies in OpenSSL.{pm,xs} and
183      openssl_bio.xs.
184      [Ralf S. Engelschall]
185
186   *) Fix the generation of two part addresses in perl.
187      [Kenji Miyake <kenji@miyake.org>, integrated by Ben Laurie]
188
189   *) Add config entry for Linux on MIPS.
190      [John Tobey <jtobey@channel1.com>]
191
192   *) Make links whenever Configure is run, unless we are on Windoze.
193      [Ben Laurie]
194
195   *) Permit extensions to be added to CRLs using crl_section in openssl.cnf.
196      Currently only issuerAltName and AuthorityKeyIdentifier make any sense
197      in CRLs.
198      [Steve Henson]
199
200   *) Add a useful kludge to allow package maintainers to specify compiler and
201      other platforms details on the command line without having to patch the
202      Configure script everytime: One now can use ``perl Configure
203      <id>:<details>'', i.e. platform ids are allowed to have details appended
204      to them (seperated by colons). This is treated as there would be a static
205      pre-configured entry in Configure's %table under key <id> with value
206      <details> and ``perl Configure <id>'' is called.  So, when you want to
207      perform a quick test-compile under FreeBSD 3.1 with pgcc and without
208      assembler stuff you can use ``perl Configure "FreeBSD-elf:pgcc:-O6:::"''
209      now, which overrides the FreeBSD-elf entry on-the-fly.
210      [Ralf S. Engelschall]
211
212   *) Disable new TLS1 ciphersuites by default: they aren't official yet.
213      [Ben Laurie]
214
215   *) Allow DSO flags like -fpic, -fPIC, -KPIC etc. to be specified
216      on the `perl Configure ...' command line. This way one can compile
217      OpenSSL libraries with Position Independent Code (PIC) which is needed
218      for linking it into DSOs.
219      [Ralf S. Engelschall]
220
221   *) Remarkably, export ciphers were totally broken and no-one had noticed!
222      Fixed.
223      [Ben Laurie]
224
225   *) Cleaned up the LICENSE document: The official contact for any license
226      questions now is the OpenSSL core team under openssl-core@openssl.org.
227      And add a paragraph about the dual-license situation to make sure people
228      recognize that _BOTH_ the OpenSSL license _AND_ the SSLeay license apply
229      to the OpenSSL toolkit.
230      [Ralf S. Engelschall]
231
232   *) General source tree makefile cleanups: Made `making xxx in yyy...'
233      display consistent in the source tree and replaced `/bin/rm' by `rm'.
234      Additonally cleaned up the `make links' target: Remove unnecessary
235      semicolons, subsequent redundant removes, inline point.sh into mklink.sh
236      to speed processing and no longer clutter the display with confusing
237      stuff. Instead only the actually done links are displayed.
238      [Ralf S. Engelschall]
239
240   *) Permit null encryption ciphersuites, used for authentication only. It used
241      to be necessary to set the preprocessor define SSL_ALLOW_ENULL to do this.
242      It is now necessary to set SSL_FORBID_ENULL to prevent the use of null
243      encryption.
244      [Ben Laurie]
245
246   *) Add a bunch of fixes to the PKCS#7 stuff. It used to sometimes reorder
247      signed attributes when verifying signatures (this would break them), 
248      the detached data encoding was wrong and public keys obtained using
249      X509_get_pubkey() weren't freed.
250      [Steve Henson]
251
252   *) Add text documentation for the BUFFER functions. Also added a work around
253      to a Win95 console bug. This was triggered by the password read stuff: the
254      last character typed gets carried over to the next fread(). If you were 
255      generating a new cert request using 'req' for example then the last
256      character of the passphrase would be CR which would then enter the first
257      field as blank.
258      [Steve Henson]
259
260   *) Added the new `Includes OpenSSL Cryptography Software' button as
261      doc/openssl_button.{gif,html} which is similar in style to the old SSLeay
262      button and can be used by applications based on OpenSSL to show the
263      relationship to the OpenSSL project.  
264      [Ralf S. Engelschall]
265
266   *) Remove confusing variables in function signatures in files
267      ssl/ssl_lib.c and ssl/ssl.h.
268      [Lennart Bong <lob@kulthea.stacken.kth.se>]
269
270   *) Don't install bss_file.c under PREFIX/include/
271      [Lennart Bong <lob@kulthea.stacken.kth.se>]
272
273   *) Get the Win32 compile working again. Modify mkdef.pl so it can handle
274      functions that return function pointers and has support for NT specific
275      stuff. Fix mk1mf.pl and VC-32.pl to support NT differences also. Various
276      #ifdef WIN32 and WINNTs sprinkled about the place and some changes from
277      unsigned to signed types: this was killing the Win32 compile.
278      [Steve Henson]
279
280   *) Add new certificate file to stack functions,
281      SSL_add_dir_cert_subjects_to_stack() and
282      SSL_add_file_cert_subjects_to_stack().  These largely supplant
283      SSL_load_client_CA_file(), and can be used to add multiple certs easily
284      to a stack (usually this is then handed to SSL_CTX_set_client_CA_list()).
285      This means that Apache-SSL and similar packages don't have to mess around
286      to add as many CAs as they want to the preferred list.
287      [Ben Laurie]
288
289   *) Experiment with doxygen documentation. Currently only partially applied to
290      ssl/ssl_lib.c.
291      See http://www.stack.nl/~dimitri/doxygen/index.html, and run doxygen with
292      openssl.doxy as the configuration file.
293      [Ben Laurie]
294   
295   *) Get rid of remaining C++-style comments which strict C compilers hate.
296      [Ralf S. Engelschall, pointed out by Carlos Amengual]
297
298   *) Changed BN_RECURSION in bn_mont.c to BN_RECURSION_MONT so it is not
299      compiled in by default: it has problems with large keys.
300      [Steve Henson]
301
302   *) Add a bunch of SSL_xxx() functions for configuring the temporary RSA and
303      DH private keys and/or callback functions which directly correspond to
304      their SSL_CTX_xxx() counterparts but work on a per-connection basis. This
305      is needed for applications which have to configure certificates on a
306      per-connection basis (e.g. Apache+mod_ssl) instead of a per-context basis
307      (e.g. s_server). 
308         For the RSA certificate situation is makes no difference, but
309      for the DSA certificate situation this fixes the "no shared cipher"
310      problem where the OpenSSL cipher selection procedure failed because the
311      temporary keys were not overtaken from the context and the API provided
312      no way to reconfigure them. 
313         The new functions now let applications reconfigure the stuff and they
314      are in detail: SSL_need_tmp_RSA, SSL_set_tmp_rsa, SSL_set_tmp_dh,
315      SSL_set_tmp_rsa_callback and SSL_set_tmp_dh_callback.  Additionally a new
316      non-public-API function ssl_cert_instantiate() is used as a helper
317      function and also to reduce code redundancy inside ssl_rsa.c.
318      [Ralf S. Engelschall]
319
320   *) Move s_server -dcert and -dkey options out of the undocumented feature
321      area because they are useful for the DSA situation and should be
322      recognized by the users.
323      [Ralf S. Engelschall]
324
325   *) Fix the cipher decision scheme for export ciphers: the export bits are
326      *not* within SSL_MKEY_MASK or SSL_AUTH_MASK, they are within
327      SSL_EXP_MASK.  So, the original variable has to be used instead of the
328      already masked variable.
329      [Richard Levitte <levitte@stacken.kth.se>]
330
331   *) Fix 'port' variable from `int' to `unsigned int' in crypto/bio/b_sock.c
332      [Richard Levitte <levitte@stacken.kth.se>]
333
334   *) Change type of another md_len variable in pk7_doit.c:PKCS7_dataFinal()
335      from `int' to `unsigned int' because it's a length and initialized by
336      EVP_DigestFinal() which expects an `unsigned int *'.
337      [Richard Levitte <levitte@stacken.kth.se>]
338
339   *) Don't hard-code path to Perl interpreter on shebang line of Configure
340      script. Instead use the usual Shell->Perl transition trick.
341      [Ralf S. Engelschall]
342
343   *) Make `openssl x509 -noout -modulus' functional also for DSA certificates
344      (in addition to RSA certificates) to match the behaviour of `openssl dsa
345      -noout -modulus' as it's already the case for `openssl rsa -noout
346      -modulus'.  For RSA the -modulus is the real "modulus" while for DSA
347      currently the public key is printed (a decision which was already done by
348      `openssl dsa -modulus' in the past) which serves a similar purpose.
349      Additionally the NO_RSA no longer completely removes the whole -modulus
350      option; it now only avoids using the RSA stuff. Same applies to NO_DSA
351      now, too.
352      [Ralf S.  Engelschall]
353
354   *) Add Arne Ansper's reliable BIO - this is an encrypted, block-digested
355      BIO. See the source (crypto/evp/bio_ok.c) for more info.
356      [Arne Ansper <arne@ats.cyber.ee>]
357
358   *) Dump the old yucky req code that tried (and failed) to allow raw OIDs
359      to be added. Now both 'req' and 'ca' can use new objects defined in the
360      config file.
361      [Steve Henson]
362
363   *) Add cool BIO that does syslog (or event log on NT).
364      [Arne Ansper <arne@ats.cyber.ee>, integrated by Ben Laurie]
365
366   *) Add support for new TLS ciphersuites, TLS_RSA_EXPORT56_WITH_RC4_56_MD5,
367      TLS_RSA_EXPORT56_WITH_RC2_CBC_56_MD5 and
368      TLS_RSA_EXPORT56_WITH_DES_CBC_SHA, as specified in "56-bit Export Cipher
369      Suites For TLS", draft-ietf-tls-56-bit-ciphersuites-00.txt.
370      [Ben Laurie]
371
372   *) Add preliminary config info for new extension code.
373      [Steve Henson]
374
375   *) Make RSA_NO_PADDING really use no padding.
376      [Ulf Moeller <ulf@fitug.de>]
377
378   *) Generate errors when private/public key check is done.
379      [Ben Laurie]
380
381   *) Overhaul for 'crl' utility. New function X509_CRL_print. Partial support
382      for some CRL extensions and new objects added.
383      [Steve Henson]
384
385   *) Really fix the ASN1 IMPLICIT bug this time... Partial support for private
386      key usage extension and fuller support for authority key id.
387      [Steve Henson]
388
389   *) Add OAEP encryption for the OpenSSL crypto library. OAEP is the improved
390      padding method for RSA, which is recommended for new applications in PKCS
391      #1 v2.0 (RFC 2437, October 1998).
392      OAEP (Optimal Asymmetric Encryption Padding) has better theoretical
393      foundations than the ad-hoc padding used in PKCS #1 v1.5. It is secure
394      against Bleichbacher's attack on RSA.
395      [Ulf Moeller <ulf@fitug.de>, reformatted, corrected and integrated by
396       Ben Laurie]
397
398   *) Updates to the new SSL compression code
399      [Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)]
400
401   *) Fix so that the version number in the master secret, when passed
402      via RSA, checks that if TLS was proposed, but we roll back to SSLv3
403      (because the server will not accept higher), that the version number
404      is 0x03,0x01, not 0x03,0x00
405      [Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)]
406
407   *) Run extensive memory leak checks on SSL apps. Fixed *lots* of memory
408      leaks in ssl/ relating to new X509_get_pubkey() behaviour. Also fixes
409      in apps/ and an unrelated leak in crypto/dsa/dsa_vrf.c
410      [Steve Henson]
411
412   *) Support for RAW extensions where an arbitrary extension can be
413      created by including its DER encoding. See apps/openssl.cnf for
414      an example.
415      [Steve Henson]
416
417   *) Make sure latest Perl versions don't interpret some generated C array
418      code as Perl array code in the crypto/err/err_genc.pl script.
419      [Lars Weber <3weber@informatik.uni-hamburg.de>]
420
421   *) Modify ms/do_ms.bat to not generate assembly language makefiles since
422      not many people have the assembler. Various Win32 compilation fixes and
423      update to the INSTALL.W32 file with (hopefully) more accurate Win32
424      build instructions.
425      [Steve Henson]
426
427   *) Modify configure script 'Configure' to automatically create crypto/date.h
428      file under Win32 and also build pem.h from pem.org. New script
429      util/mkfiles.pl to create the MINFO file on environments that can't do a
430      'make files': perl util/mkfiles.pl >MINFO should work.
431      [Steve Henson]
432
433   *) Major rework of DES function declarations, in the pursuit of correctness
434      and purity. As a result, many evil casts evaporated, and some weirdness,
435      too. You may find this causes warnings in your code. Zapping your evil
436      casts will probably fix them. Mostly.
437      [Ben Laurie]
438
439   *) Fix for a typo in asn1.h. Bug fix to object creation script
440      obj_dat.pl. It considered a zero in an object definition to mean
441      "end of object": none of the objects in objects.h have any zeros
442      so it wasn't spotted.
443      [Steve Henson, reported by Erwann ABALEA <eabalea@certplus.com>]
444
445   *) Add support for Triple DES Cipher Block Chaining with Output Feedback
446      Masking (CBCM). In the absence of test vectors, the best I have been able
447      to do is check that the decrypt undoes the encrypt, so far. Send me test
448      vectors if you have them.
449      [Ben Laurie]
450
451   *) Correct calculation of key length for export ciphers (too much space was
452      allocated for null ciphers). This has not been tested!
453      [Ben Laurie]
454
455   *) Modifications to the mkdef.pl for Win32 DEF file creation. The usage
456      message is now correct (it understands "crypto" and "ssl" on its
457      command line). There is also now an "update" option. This will update
458      the util/ssleay.num and util/libeay.num files with any new functions.
459      If you do a: 
460      perl util/mkdef.pl crypto ssl update
461      it will update them.
462      [Steve Henson]
463
464   *) Overhauled the Perl interface (perl/*):
465      - ported BN stuff to OpenSSL's different BN library
466      - made the perl/ source tree CVS-aware
467      - renamed the package from SSLeay to OpenSSL (the files still contain
468        their history because I've copied them in the repository)
469      - removed obsolete files (the test scripts will be replaced
470        by better Test::Harness variants in the future)
471      [Ralf S. Engelschall]
472
473   *) First cut for a very conservative source tree cleanup:
474      1. merge various obsolete readme texts into doc/ssleay.txt
475      where we collect the old documents and readme texts.
476      2. remove the first part of files where I'm already sure that we no
477      longer need them because of three reasons: either they are just temporary
478      files which were left by Eric or they are preserved original files where
479      I've verified that the diff is also available in the CVS via "cvs diff
480      -rSSLeay_0_8_1b" or they were renamed (as it was definitely the case for
481      the crypto/md/ stuff).
482      [Ralf S. Engelschall]
483
484   *) More extension code. Incomplete support for subject and issuer alt
485      name, issuer and authority key id. Change the i2v function parameters
486      and add an extra 'crl' parameter in the X509V3_CTX structure: guess
487      what that's for :-) Fix to ASN1 macro which messed up
488      IMPLICIT tag and add f_enum.c which adds a2i, i2a for ENUMERATED.
489      [Steve Henson]
490
491   *) Preliminary support for ENUMERATED type. This is largely copied from the
492      INTEGER code.
493      [Steve Henson]
494
495   *) Add new function, EVP_MD_CTX_copy() to replace frequent use of memcpy.
496      [Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)]
497
498   *) Make sure `make rehash' target really finds the `openssl' program.
499      [Ralf S. Engelschall, Matthias Loepfe <Matthias.Loepfe@adnovum.ch>]
500
501   *) Squeeze another 7% of speed out of MD5 assembler, at least on a P2. I'd
502      like to hear about it if this slows down other processors.
503      [Ben Laurie]
504
505   *) Add CygWin32 platform information to Configure script.
506      [Alan Batie <batie@aahz.jf.intel.com>]
507
508   *) Fixed ms/32all.bat script: `no_asm' -> `no-asm'
509      [Rainer W. Gerling <gerling@mpg-gv.mpg.de>]
510   
511   *) New program nseq to manipulate netscape certificate sequences
512      [Steve Henson]
513
514   *) Modify crl2pkcs7 so it supports multiple -certfile arguments. Fix a
515      few typos.
516      [Steve Henson]
517
518   *) Fixes to BN code.  Previously the default was to define BN_RECURSION
519      but the BN code had some problems that would cause failures when
520      doing certificate verification and some other functions.
521      [Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)]
522
523   *) Add ASN1 and PEM code to support netscape certificate sequences.
524      [Steve Henson]
525
526   *) Add ASN1 and PEM code to support netscape certificate sequences.
527      [Steve Henson]
528
529   *) Add several PKIX and private extended key usage OIDs.
530      [Steve Henson]
531
532   *) Modify the 'ca' program to handle the new extension code. Modify
533      openssl.cnf for new extension format, add comments.
534      [Steve Henson]
535
536   *) More X509 V3 changes. Fix typo in v3_bitstr.c. Add support to 'req'
537      and add a sample to openssl.cnf so req -x509 now adds appropriate
538      CA extensions.
539      [Steve Henson]
540
541   *) Continued X509 V3 changes. Add to other makefiles, integrate with the
542      error code, add initial support to X509_print() and x509 application.
543      [Steve Henson]
544
545   *) Takes a deep breath and start addding X509 V3 extension support code. Add
546      files in crypto/x509v3. Move original stuff to crypto/x509v3/old. All this
547      stuff is currently isolated and isn't even compiled yet.
548      [Steve Henson]
549
550   *) Continuing patches for GeneralizedTime. Fix up certificate and CRL
551      ASN1 to use ASN1_TIME and modify print routines to use ASN1_TIME_print.
552      Removed the versions check from X509 routines when loading extensions:
553      this allows certain broken certificates that don't set the version
554      properly to be processed.
555      [Steve Henson]
556
557   *) Deal with irritating shit to do with dependencies, in YAAHW (Yet Another
558      Ad Hoc Way) - Makefile.ssls now all contain local dependencies, which
559      can still be regenerated with "make depend".
560      [Ben Laurie]
561
562   *) Spelling mistake in C version of CAST-128.
563      [Ben Laurie, reported by Jeremy Hylton <jeremy@cnri.reston.va.us>]
564
565   *) Changes to the error generation code. The perl script err-code.pl 
566      now reads in the old error codes and retains the old numbers, only
567      adding new ones if necessary. It also only changes the .err files if new
568      codes are added. The makefiles have been modified to only insert errors
569      when needed (to avoid needlessly modifying header files). This is done
570      by only inserting errors if the .err file is newer than the auto generated
571      C file. To rebuild all the error codes from scratch (the old behaviour)
572      either modify crypto/Makefile.ssl to pass the -regen flag to err_code.pl
573      or delete all the .err files.
574      [Steve Henson]
575
576   *) CAST-128 was incorrectly implemented for short keys. The C version has
577      been fixed, but is untested. The assembler versions are also fixed, but
578      new assembler HAS NOT BEEN GENERATED FOR WIN32 - the Makefile needs fixing
579      to regenerate it if needed.
580      [Ben Laurie, reported (with fix for C version) by Jun-ichiro itojun
581       Hagino <itojun@kame.net>]
582
583   *) File was opened incorrectly in randfile.c.
584      [Ulf Möller <ulf@fitug.de>]
585
586   *) Beginning of support for GeneralizedTime. d2i, i2d, check and print
587      functions. Also ASN1_TIME suite which is a CHOICE of UTCTime or
588      GeneralizedTime. ASN1_TIME is the proper type used in certificates et
589      al: it's just almost always a UTCTime. Note this patch adds new error
590      codes so do a "make errors" if there are problems.
591      [Steve Henson]
592
593   *) Correct Linux 1 recognition in config.
594      [Ulf Möller <ulf@fitug.de>]
595
596   *) Remove pointless MD5 hash when using DSA keys in ca.
597      [Anonymous <nobody@replay.com>]
598
599   *) Generate an error if given an empty string as a cert directory. Also
600      generate an error if handed NULL (previously returned 0 to indicate an
601      error, but didn't set one).
602      [Ben Laurie, reported by Anonymous <nobody@replay.com>]
603
604   *) Add prototypes to SSL methods. Make SSL_write's buffer const, at last.
605      [Ben Laurie]
606
607   *) Fix the dummy function BN_ref_mod_exp() in rsaref.c to have the correct
608      parameters. This was causing a warning which killed off the Win32 compile.
609      [Steve Henson]
610
611   *) Remove C++ style comments from crypto/bn/bn_local.h.
612      [Neil Costigan <neil.costigan@celocom.com>]
613
614   *) The function OBJ_txt2nid was broken. It was supposed to return a nid
615      based on a text string, looking up short and long names and finally
616      "dot" format. The "dot" format stuff didn't work. Added new function
617      OBJ_txt2obj to do the same but return an ASN1_OBJECT and rewrote 
618      OBJ_txt2nid to use it. OBJ_txt2obj can also return objects even if the
619      OID is not part of the table.
620      [Steve Henson]
621
622   *) Add prototypes to X509 lookup/verify methods, fixing a bug in
623      X509_LOOKUP_by_alias().
624      [Ben Laurie]
625
626   *) Sort openssl functions by name.
627      [Ben Laurie]
628
629   *) Get the gendsa program working (hopefully) and add it to app list. Remove
630      encryption from sample DSA keys (in case anyone is interested the password
631      was "1234").
632      [Steve Henson]
633
634   *) Make _all_ *_free functions accept a NULL pointer.
635      [Frans Heymans <fheymans@isaserver.be>]
636
637   *) If a DH key is generated in s3_srvr.c, don't blow it by trying to use
638      NULL pointers.
639      [Anonymous <nobody@replay.com>]
640
641   *) s_server should send the CAfile as acceptable CAs, not its own cert.
642      [Bodo Moeller <3moeller@informatik.uni-hamburg.de>]
643
644   *) Don't blow it for numeric -newkey arguments to apps/req.
645      [Bodo Moeller <3moeller@informatik.uni-hamburg.de>]
646
647   *) Temp key "for export" tests were wrong in s3_srvr.c.
648      [Anonymous <nobody@replay.com>]
649
650   *) Add prototype for temp key callback functions
651      SSL_CTX_set_tmp_{rsa,dh}_callback().
652      [Ben Laurie]
653
654   *) Make DH_free() tolerate being passed a NULL pointer (like RSA_free() and
655      DSA_free()). Make X509_PUBKEY_set() check for errors in d2i_PublicKey().
656      [Steve Henson]
657
658   *) X509_name_add_entry() freed the wrong thing after an error.
659      [Arne Ansper <arne@ats.cyber.ee>]
660
661   *) rsa_eay.c would attempt to free a NULL context.
662      [Arne Ansper <arne@ats.cyber.ee>]
663
664   *) BIO_s_socket() had a broken should_retry() on Windoze.
665      [Arne Ansper <arne@ats.cyber.ee>]
666
667   *) BIO_f_buffer() didn't pass on BIO_CTRL_FLUSH.
668      [Arne Ansper <arne@ats.cyber.ee>]
669
670   *) Make sure the already existing X509_STORE->depth variable is initialized
671      in X509_STORE_new(), but document the fact that this variable is still
672      unused in the certificate verification process.
673      [Ralf S. Engelschall]
674
675   *) Fix the various library and apps files to free up pkeys obtained from
676      X509_PUBKEY_get() et al. Also allow x509.c to handle netscape extensions.
677      [Steve Henson]
678
679   *) Fix reference counting in X509_PUBKEY_get(). This makes
680      demos/maurice/example2.c work, amongst others, probably.
681      [Steve Henson and Ben Laurie]
682
683   *) First cut of a cleanup for apps/. First the `ssleay' program is now named
684      `openssl' and second, the shortcut symlinks for the `openssl <command>'
685      are no longer created. This way we have a single and consistent command
686      line interface `openssl <command>', similar to `cvs <command>'.
687      [Ralf S. Engelschall, Paul Sutton and Ben Laurie]
688
689   *) ca.c: move test for DSA keys inside #ifndef NO_DSA. Make pubkey
690      BIT STRING wrapper always have zero unused bits.
691      [Steve Henson]
692
693   *) Add CA.pl, perl version of CA.sh, add extended key usage OID.
694      [Steve Henson]
695
696   *) Make the top-level INSTALL documentation easier to understand.
697      [Paul Sutton]
698
699   *) Makefiles updated to exit if an error occurs in a sub-directory
700      make (including if user presses ^C) [Paul Sutton]
701
702   *) Make Montgomery context stuff explicit in RSA data structure.
703      [Ben Laurie]
704
705   *) Fix build order of pem and err to allow for generated pem.h.
706      [Ben Laurie]
707
708   *) Fix renumbering bug in X509_NAME_delete_entry().
709      [Ben Laurie]
710
711   *) Enhanced the err-ins.pl script so it makes the error library number 
712      global and can add a library name. This is needed for external ASN1 and
713      other error libraries.
714      [Steve Henson]
715
716   *) Fixed sk_insert which never worked properly.
717      [Steve Henson]
718
719   *) Fix ASN1 macros so they can handle indefinite length construted 
720      EXPLICIT tags. Some non standard certificates use these: they can now
721      be read in.
722      [Steve Henson]
723
724   *) Merged the various old/obsolete SSLeay documentation files (doc/xxx.doc)
725      into a single doc/ssleay.txt bundle. This way the information is still
726      preserved but no longer messes up this directory. Now it's new room for
727      the new set of documenation files.
728      [Ralf S. Engelschall]
729
730   *) SETs were incorrectly DER encoded. This was a major pain, because they
731      shared code with SEQUENCEs, which aren't coded the same. This means that
732      almost everything to do with SETs or SEQUENCEs has either changed name or
733      number of arguments.
734      [Ben Laurie, based on a partial fix by GP Jayan <gp@nsj.co.jp>]
735
736   *) Fix test data to work with the above.
737      [Ben Laurie]
738
739   *) Fix the RSA header declarations that hid a bug I fixed in 0.9.0b but
740      was already fixed by Eric for 0.9.1 it seems.
741      [Ben Laurie - pointed out by Ulf Möller <ulf@fitug.de>]
742
743   *) Autodetect FreeBSD3.
744      [Ben Laurie]
745
746   *) Fix various bugs in Configure. This affects the following platforms:
747      nextstep
748      ncr-scde
749      unixware-2.0
750      unixware-2.0-pentium
751      sco5-cc.
752      [Ben Laurie]
753
754   *) Eliminate generated files from CVS. Reorder tests to regenerate files
755      before they are needed.
756      [Ben Laurie]
757
758   *) Generate Makefile.ssl from Makefile.org (to keep CVS happy).
759      [Ben Laurie]
760
761  Changes between 0.9.1b and 0.9.1c
762
763   *) Added OPENSSL_VERSION_NUMBER to crypto/crypto.h and 
764      changed SSLeay to OpenSSL in version strings.
765      [Ralf S. Engelschall]
766   
767   *) Some fixups to the top-level documents.
768      [Paul Sutton]
769
770   *) Fixed the nasty bug where rsaref.h was not found under compile-time
771      because the symlink to include/ was missing.
772      [Ralf S. Engelschall]
773
774   *) Incorporated the popular no-RSA/DSA-only patches 
775      which allow to compile a RSA-free SSLeay.
776      [Andrew Cooke / Interrader Ldt., Ralf S. Engelschall]
777
778   *) Fixed nasty rehash problem under `make -f Makefile.ssl links'
779      when "ssleay" is still not found.
780      [Ralf S. Engelschall]
781
782   *) Added more platforms to Configure: Cray T3E, HPUX 11, 
783      [Ralf S. Engelschall, Beckmann <beckman@acl.lanl.gov>]
784
785   *) Updated the README file.
786      [Ralf S. Engelschall]
787
788   *) Added various .cvsignore files in the CVS repository subdirs
789      to make a "cvs update" really silent.
790      [Ralf S. Engelschall]
791
792   *) Recompiled the error-definition header files and added
793      missing symbols to the Win32 linker tables.
794      [Ralf S. Engelschall]
795
796   *) Cleaned up the top-level documents;
797      o new files: CHANGES and LICENSE
798      o merged VERSION, HISTORY* and README* files a CHANGES.SSLeay 
799      o merged COPYRIGHT into LICENSE
800      o removed obsolete TODO file
801      o renamed MICROSOFT to INSTALL.W32
802      [Ralf S. Engelschall]
803
804   *) Removed dummy files from the 0.9.1b source tree: 
805      crypto/asn1/x crypto/bio/cd crypto/bio/fg crypto/bio/grep crypto/bio/vi
806      crypto/bn/asm/......add.c crypto/bn/asm/a.out crypto/dsa/f crypto/md5/f
807      crypto/pem/gmon.out crypto/perlasm/f crypto/pkcs7/build crypto/rsa/f
808      crypto/sha/asm/f crypto/threads/f ms/zzz ssl/f ssl/f.mak test/f
809      util/f.mak util/pl/f util/pl/f.mak crypto/bf/bf_locl.old apps/f
810      [Ralf S. Engelschall]
811
812   *) Added various platform portability fixes.
813      [Mark J. Cox]
814
815   *) The Genesis of the OpenSSL rpject:
816      We start with the latest (unreleased) SSLeay version 0.9.1b which Eric A.
817      Young and Tim J. Hudson created while they were working for C2Net until
818      summer 1998.
819      [The OpenSSL Project]
820  
821  Changes between 0.9.0b and 0.9.1b
822
823   *) Updated a few CA certificates under certs/
824      [Eric A. Young]
825
826   *) Changed some BIGNUM api stuff.
827      [Eric A. Young]
828
829   *) Various platform ports: OpenBSD, Ultrix, IRIX 64bit, NetBSD, 
830      DGUX x86, Linux Alpha, etc.
831      [Eric A. Young]
832
833   *) New COMP library [crypto/comp/] for SSL Record Layer Compression: 
834      RLE (dummy implemented) and ZLIB (really implemented when ZLIB is
835      available).
836      [Eric A. Young]
837
838   *) Add -strparse option to asn1pars program which parses nested 
839      binary structures 
840      [Dr Stephen Henson <shenson@bigfoot.com>]
841
842   *) Added "oid_file" to ssleay.cnf for "ca" and "req" programs.
843      [Eric A. Young]
844
845   *) DSA fix for "ca" program.
846      [Eric A. Young]
847
848   *) Added "-genkey" option to "dsaparam" program.
849      [Eric A. Young]
850
851   *) Added RIPE MD160 (rmd160) message digest.
852      [Eric A. Young]
853
854   *) Added -a (all) option to "ssleay version" command.
855      [Eric A. Young]
856
857   *) Added PLATFORM define which is the id given to Configure.
858      [Eric A. Young]
859
860   *) Added MemCheck_XXXX functions to crypto/mem.c for memory checking.
861      [Eric A. Young]
862
863   *) Extended the ASN.1 parser routines.
864      [Eric A. Young]
865
866   *) Extended BIO routines to support REUSEADDR, seek, tell, etc.
867      [Eric A. Young]
868
869   *) Added a BN_CTX to the BN library.
870      [Eric A. Young]
871
872   *) Fixed the weak key values in DES library
873      [Eric A. Young]
874
875   *) Changed API in EVP library for cipher aliases.
876      [Eric A. Young]
877
878   *) Added support for RC2/64bit cipher.
879      [Eric A. Young]
880
881   *) Converted the lhash library to the crypto/mem.c functions.
882      [Eric A. Young]
883
884   *) Added more recognized ASN.1 object ids.
885      [Eric A. Young]
886
887   *) Added more RSA padding checks for SSL/TLS.
888      [Eric A. Young]
889
890   *) Added BIO proxy/filter functionality.
891      [Eric A. Young]
892
893   *) Added extra_certs to SSL_CTX which can be used
894      send extra CA certificates to the client in the CA cert chain sending
895      process. It can be configured with SSL_CTX_add_extra_chain_cert().
896      [Eric A. Young]
897
898   *) Now Fortezza is denied in the authentication phase because
899      this is key exchange mechanism is not supported by SSLeay at all.
900      [Eric A. Young]
901
902   *) Additional PKCS1 checks.
903      [Eric A. Young]
904
905   *) Support the string "TLSv1" for all TLS v1 ciphers.
906      [Eric A. Young]
907
908   *) Added function SSL_get_ex_data_X509_STORE_CTX_idx() which gives the
909      ex_data index of the SSL context in the X509_STORE_CTX ex_data.
910      [Eric A. Young]
911
912   *) Fixed a few memory leaks.
913      [Eric A. Young]
914
915   *) Fixed various code and comment typos.
916      [Eric A. Young]
917
918   *) A minor bug in ssl/s3_clnt.c where there would always be 4 0 
919      bytes sent in the client random.
920      [Edward Bishop <ebishop@spyglass.com>]
921