b777391663cf8cd4e0ff04a5b6df15a8fc6b5748
[openssl.git] / CHANGES
1
2  OpenSSL CHANGES
3  _______________
4
5  Changes between 0.9.8a and 0.9.9  [xx XXX xxxx]
6
7   *) Integrated support for PVK file format and some related formats such
8      as MS PUBLICKEYBLOB and PRIVATEKEYBLOB. Command line switches to support
9      these in the 'rsa' and 'dsa' utilities.
10      [Steve Henson]
11
12   *) Support for PKCS#1 RSAPublicKey format on rsa utility command line.
13      [Steve Henson]
14
15   *) Remove the ancient ASN1_METHOD code. This was only ever used in one
16      place for the (very old) "NETSCAPE" format certificates which are now
17      handled using new ASN1 code equivalents.
18      [Steve Henson]
19
20   *) Let the TLSv1_method() etc. functions return a 'const' SSL_METHOD
21      pointer and make the SSL_METHOD parameter in SSL_CTX_new,
22      SSL_CTX_set_ssl_version and SSL_set_ssl_method 'const'.
23      [Nils Larsch]
24
25   *) Modify CRL distribution points extension code to print out previously
26      unsupported fields. Enhance extension setting code to allow setting of
27      all fields.
28      [Steve Henson]
29
30   *) Add print and set support for Issuing Distribution Point CRL extension.
31      [Steve Henson]
32
33  Changes between 0.9.8 and 0.9.8a  [XX xxx XXXX]
34
35   *) Keep cipherlists sorted in the source instead of sorting them at
36      runtime, thus removing the need for a lock.
37      [Nils Larsch]
38
39   *) Avoid some small subgroup attacks in Diffie-Hellman.
40      [Nick Mathewson and Ben Laurie]
41
42   *) Add functions for well-known primes.
43      [Nick Mathewson]
44
45   *) Extended Windows CE support.
46      [Satoshi Nakamura and Andy Polyakov]
47  
48   *) Initialize SSL_METHOD structures at compile time instead of during
49      runtime, thus removing the need for a lock.
50      [Steve Henson]
51
52   *) Make PKCS7_decrypt() work even if no certificate is supplied by
53      attempting to decrypt each encrypted key in turn. Add support to
54      smime utility.
55      [Steve Henson]
56
57  Changes between 0.9.7h and 0.9.8  [05 Jul 2005]
58
59   *) Add libcrypto.pc and libssl.pc for those who feel they need them.
60      [Richard Levitte]
61
62   *) Change CA.sh and CA.pl so they don't bundle the CSR and the private
63      key into the same file any more.
64      [Richard Levitte]
65
66   *) Add initial support for Win64, both IA64 and AMD64/x64 flavors.
67      [Andy Polyakov]
68
69   *) Add -utf8 command line and config file option to 'ca'.
70      [Stefan <stf@udoma.org]
71
72   *) Removed the macro des_crypt(), as it seems to conflict with some
73      libraries.  Use DES_crypt().
74      [Richard Levitte]
75
76   *) Correct naming of the 'chil' and '4758cca' ENGINEs. This
77      involves renaming the source and generated shared-libs for
78      both. The engines will accept the corrected or legacy ids
79      ('ncipher' and '4758_cca' respectively) when binding. NB,
80      this only applies when building 'shared'.
81      [Corinna Vinschen <vinschen@redhat.com> and Geoff Thorpe]
82
83   *) Add attribute functions to EVP_PKEY structure. Modify
84      PKCS12_create() to recognize a CSP name attribute and
85      use it. Make -CSP option work again in pkcs12 utility.
86      [Steve Henson]
87
88   *) Add new functionality to the bn blinding code:
89      - automatic re-creation of the BN_BLINDING parameters after
90        a fixed number of uses (currently 32)
91      - add new function for parameter creation
92      - introduce flags to control the update behaviour of the
93        BN_BLINDING parameters
94      - hide BN_BLINDING structure
95      Add a second BN_BLINDING slot to the RSA structure to improve
96      performance when a single RSA object is shared among several
97      threads.
98      [Nils Larsch]
99
100   *) Add support for DTLS.
101      [Nagendra Modadugu <nagendra@cs.stanford.edu> and Ben Laurie]
102
103   *) Add support for DER encoded private keys (SSL_FILETYPE_ASN1)
104      to SSL_CTX_use_PrivateKey_file() and SSL_use_PrivateKey_file()
105      [Walter Goulet]
106
107   *) Remove buggy and incompletet DH cert support from
108      ssl/ssl_rsa.c and ssl/s3_both.c
109      [Nils Larsch]
110
111   *) Use SHA-1 instead of MD5 as the default digest algorithm for
112      the apps/openssl applications.
113      [Nils Larsch]
114
115   *) Compile clean with "-Wall -Wmissing-prototypes
116      -Wstrict-prototypes -Wmissing-declarations -Werror". Currently
117      DEBUG_SAFESTACK must also be set.
118      [Ben Laurie]
119
120   *) Change ./Configure so that certain algorithms can be disabled by default.
121      The new counterpiece to "no-xxx" is "enable-xxx".
122
123      The patented RC5 and MDC2 algorithms will now be disabled unless
124      "enable-rc5" and "enable-mdc2", respectively, are specified.
125
126      (IDEA remains enabled despite being patented.  This is because IDEA
127      is frequently required for interoperability, and there is no license
128      fee for non-commercial use.  As before, "no-idea" can be used to
129      avoid this algorithm.)
130
131      [Bodo Moeller]
132
133   *) Add processing of proxy certificates (see RFC 3820).  This work was
134      sponsored by KTH (The Royal Institute of Technology in Stockholm) and
135      EGEE (Enabling Grids for E-science in Europe).
136      [Richard Levitte]
137
138   *) RC4 performance overhaul on modern architectures/implementations, such
139      as Intel P4, IA-64 and AMD64.
140      [Andy Polyakov]
141
142   *) New utility extract-section.pl. This can be used specify an alternative
143      section number in a pod file instead of having to treat each file as
144      a separate case in Makefile. This can be done by adding two lines to the
145      pod file:
146
147      =for comment openssl_section:XXX
148
149      The blank line is mandatory.
150
151      [Steve Henson]
152
153   *) New arguments -certform, -keyform and -pass for s_client and s_server
154      to allow alternative format key and certificate files and passphrase
155      sources.
156      [Steve Henson]
157
158   *) New structure X509_VERIFY_PARAM which combines current verify parameters,
159      update associated structures and add various utility functions.
160
161      Add new policy related verify parameters, include policy checking in 
162      standard verify code. Enhance 'smime' application with extra parameters
163      to support policy checking and print out.
164      [Steve Henson]
165
166   *) Add a new engine to support VIA PadLock ACE extensions in the VIA C3
167      Nehemiah processors. These extensions support AES encryption in hardware
168      as well as RNG (though RNG support is currently disabled).
169      [Michal Ludvig <michal@logix.cz>, with help from Andy Polyakov]
170
171   *) Deprecate BN_[get|set]_params() functions (they were ignored internally).
172      [Geoff Thorpe]
173
174   *) New FIPS 180-2 algorithms, SHA-224/-256/-384/-512 are implemented.
175      [Andy Polyakov and a number of other people]
176
177   *) Improved PowerPC platform support. Most notably BIGNUM assembler
178      implementation contributed by IBM.
179      [Suresh Chari, Peter Waltenberg, Andy Polyakov]
180
181   *) The new 'RSA_generate_key_ex' function now takes a BIGNUM for the public
182      exponent rather than 'unsigned long'. There is a corresponding change to
183      the new 'rsa_keygen' element of the RSA_METHOD structure.
184      [Jelte Jansen, Geoff Thorpe]
185
186   *) Functionality for creating the initial serial number file is now
187      moved from CA.pl to the 'ca' utility with a new option -create_serial.
188
189      (Before OpenSSL 0.9.7e, CA.pl used to initialize the serial
190      number file to 1, which is bound to cause problems.  To avoid
191      the problems while respecting compatibility between different 0.9.7
192      patchlevels, 0.9.7e  employed 'openssl x509 -next_serial' in
193      CA.pl for serial number initialization.  With the new release 0.9.8,
194      we can fix the problem directly in the 'ca' utility.)
195      [Steve Henson]
196
197   *) Reduced header interdepencies by declaring more opaque objects in
198      ossl_typ.h. As a consequence, including some headers (eg. engine.h) will
199      give fewer recursive includes, which could break lazy source code - so
200      this change is covered by the OPENSSL_NO_DEPRECATED symbol. As always,
201      developers should define this symbol when building and using openssl to
202      ensure they track the recommended behaviour, interfaces, [etc], but
203      backwards-compatible behaviour prevails when this isn't defined.
204      [Geoff Thorpe]
205
206   *) New function X509_POLICY_NODE_print() which prints out policy nodes.
207      [Steve Henson]
208
209   *) Add new EVP function EVP_CIPHER_CTX_rand_key and associated functionality.
210      This will generate a random key of the appropriate length based on the 
211      cipher context. The EVP_CIPHER can provide its own random key generation
212      routine to support keys of a specific form. This is used in the des and 
213      3des routines to generate a key of the correct parity. Update S/MIME
214      code to use new functions and hence generate correct parity DES keys.
215      Add EVP_CHECK_DES_KEY #define to return an error if the key is not 
216      valid (weak or incorrect parity).
217      [Steve Henson]
218
219   *) Add a local set of CRLs that can be used by X509_verify_cert() as well
220      as looking them up. This is useful when the verified structure may contain
221      CRLs, for example PKCS#7 signedData. Modify PKCS7_verify() to use any CRLs
222      present unless the new PKCS7_NO_CRL flag is asserted.
223      [Steve Henson]
224
225   *) Extend ASN1 oid configuration module. It now additionally accepts the
226      syntax:
227
228      shortName = some long name, 1.2.3.4
229      [Steve Henson]
230
231   *) Reimplemented the BN_CTX implementation. There is now no more static
232      limitation on the number of variables it can handle nor the depth of the
233      "stack" handling for BN_CTX_start()/BN_CTX_end() pairs. The stack
234      information can now expand as required, and rather than having a single
235      static array of bignums, BN_CTX now uses a linked-list of such arrays
236      allowing it to expand on demand whilst maintaining the usefulness of
237      BN_CTX's "bundling".
238      [Geoff Thorpe]
239
240   *) Add a missing BN_CTX parameter to the 'rsa_mod_exp' callback in RSA_METHOD
241      to allow all RSA operations to function using a single BN_CTX.
242      [Geoff Thorpe]
243
244   *) Preliminary support for certificate policy evaluation and checking. This
245      is initially intended to pass the tests outlined in "Conformance Testing
246      of Relying Party Client Certificate Path Processing Logic" v1.07.
247      [Steve Henson]
248
249   *) bn_dup_expand() has been deprecated, it was introduced in 0.9.7 and
250      remained unused and not that useful. A variety of other little bignum
251      tweaks and fixes have also been made continuing on from the audit (see
252      below).
253      [Geoff Thorpe]
254
255   *) Constify all or almost all d2i, c2i, s2i and r2i functions, along with
256      associated ASN1, EVP and SSL functions and old ASN1 macros.
257      [Richard Levitte]
258
259   *) BN_zero() only needs to set 'top' and 'neg' to zero for correct results,
260      and this should never fail. So the return value from the use of
261      BN_set_word() (which can fail due to needless expansion) is now deprecated;
262      if OPENSSL_NO_DEPRECATED is defined, BN_zero() is a void macro.
263      [Geoff Thorpe]
264
265   *) BN_CTX_get() should return zero-valued bignums, providing the same
266      initialised value as BN_new().
267      [Geoff Thorpe, suggested by Ulf Möller]
268
269   *) Support for inhibitAnyPolicy certificate extension.
270      [Steve Henson]
271
272   *) An audit of the BIGNUM code is underway, for which debugging code is
273      enabled when BN_DEBUG is defined. This makes stricter enforcements on what
274      is considered valid when processing BIGNUMs, and causes execution to
275      assert() when a problem is discovered. If BN_DEBUG_RAND is defined,
276      further steps are taken to deliberately pollute unused data in BIGNUM
277      structures to try and expose faulty code further on. For now, openssl will
278      (in its default mode of operation) continue to tolerate the inconsistent
279      forms that it has tolerated in the past, but authors and packagers should
280      consider trying openssl and their own applications when compiled with
281      these debugging symbols defined. It will help highlight potential bugs in
282      their own code, and will improve the test coverage for OpenSSL itself. At
283      some point, these tighter rules will become openssl's default to improve
284      maintainability, though the assert()s and other overheads will remain only
285      in debugging configurations. See bn.h for more details.
286      [Geoff Thorpe, Nils Larsch, Ulf Möller]
287
288   *) BN_CTX_init() has been deprecated, as BN_CTX is an opaque structure
289      that can only be obtained through BN_CTX_new() (which implicitly
290      initialises it). The presence of this function only made it possible
291      to overwrite an existing structure (and cause memory leaks).
292      [Geoff Thorpe]
293
294   *) Because of the callback-based approach for implementing LHASH as a
295      template type, lh_insert() adds opaque objects to hash-tables and
296      lh_doall() or lh_doall_arg() are typically used with a destructor callback
297      to clean up those corresponding objects before destroying the hash table
298      (and losing the object pointers). So some over-zealous constifications in
299      LHASH have been relaxed so that lh_insert() does not take (nor store) the
300      objects as "const" and the lh_doall[_arg] callback wrappers are not
301      prototyped to have "const" restrictions on the object pointers they are
302      given (and so aren't required to cast them away any more).
303      [Geoff Thorpe]
304
305   *) The tmdiff.h API was so ugly and minimal that our own timing utility
306      (speed) prefers to use its own implementation. The two implementations
307      haven't been consolidated as yet (volunteers?) but the tmdiff API has had
308      its object type properly exposed (MS_TM) instead of casting to/from "char
309      *". This may still change yet if someone realises MS_TM and "ms_time_***"
310      aren't necessarily the greatest nomenclatures - but this is what was used
311      internally to the implementation so I've used that for now.
312      [Geoff Thorpe]
313
314   *) Ensure that deprecated functions do not get compiled when
315      OPENSSL_NO_DEPRECATED is defined. Some "openssl" subcommands and a few of
316      the self-tests were still using deprecated key-generation functions so
317      these have been updated also.
318      [Geoff Thorpe]
319
320   *) Reorganise PKCS#7 code to separate the digest location functionality
321      into PKCS7_find_digest(), digest addtion into PKCS7_bio_add_digest().
322      New function PKCS7_set_digest() to set the digest type for PKCS#7
323      digestedData type. Add additional code to correctly generate the
324      digestedData type and add support for this type in PKCS7 initialization
325      functions.
326      [Steve Henson]
327
328   *) New function PKCS7_set0_type_other() this initializes a PKCS7 
329      structure of type "other".
330      [Steve Henson]
331
332   *) Fix prime generation loop in crypto/bn/bn_prime.pl by making
333      sure the loop does correctly stop and breaking ("division by zero")
334      modulus operations are not performed. The (pre-generated) prime
335      table crypto/bn/bn_prime.h was already correct, but it could not be
336      re-generated on some platforms because of the "division by zero"
337      situation in the script.
338      [Ralf S. Engelschall]
339
340   *) Update support for ECC-based TLS ciphersuites according to
341      draft-ietf-tls-ecc-03.txt: the KDF1 key derivation function with
342      SHA-1 now is only used for "small" curves (where the
343      representation of a field element takes up to 24 bytes); for
344      larger curves, the field element resulting from ECDH is directly
345      used as premaster secret.
346      [Douglas Stebila (Sun Microsystems Laboratories)]
347
348   *) Add code for kP+lQ timings to crypto/ec/ectest.c, and add SEC2
349      curve secp160r1 to the tests.
350      [Douglas Stebila (Sun Microsystems Laboratories)]
351
352   *) Add the possibility to load symbols globally with DSO.
353      [Götz Babin-Ebell <babin-ebell@trustcenter.de> via Richard Levitte]
354
355   *) Add the functions ERR_set_mark() and ERR_pop_to_mark() for better
356      control of the error stack.
357      [Richard Levitte]
358
359   *) Add support for STORE in ENGINE.
360      [Richard Levitte]
361
362   *) Add the STORE type.  The intention is to provide a common interface
363      to certificate and key stores, be they simple file-based stores, or
364      HSM-type store, or LDAP stores, or...
365      NOTE: The code is currently UNTESTED and isn't really used anywhere.
366      [Richard Levitte]
367
368   *) Add a generic structure called OPENSSL_ITEM.  This can be used to
369      pass a list of arguments to any function as well as provide a way
370      for a function to pass data back to the caller.
371      [Richard Levitte]
372
373   *) Add the functions BUF_strndup() and BUF_memdup().  BUF_strndup()
374      works like BUF_strdup() but can be used to duplicate a portion of
375      a string.  The copy gets NUL-terminated.  BUF_memdup() duplicates
376      a memory area.
377      [Richard Levitte]
378
379   *) Add the function sk_find_ex() which works like sk_find(), but will
380      return an index to an element even if an exact match couldn't be
381      found.  The index is guaranteed to point at the element where the
382      searched-for key would be inserted to preserve sorting order.
383      [Richard Levitte]
384
385   *) Add the function OBJ_bsearch_ex() which works like OBJ_bsearch() but
386      takes an extra flags argument for optional functionality.  Currently,
387      the following flags are defined:
388
389         OBJ_BSEARCH_VALUE_ON_NOMATCH
390         This one gets OBJ_bsearch_ex() to return a pointer to the first
391         element where the comparing function returns a negative or zero
392         number.
393
394         OBJ_BSEARCH_FIRST_VALUE_ON_MATCH
395         This one gets OBJ_bsearch_ex() to return a pointer to the first
396         element where the comparing function returns zero.  This is useful
397         if there are more than one element where the comparing function
398         returns zero.
399      [Richard Levitte]
400
401   *) Make it possible to create self-signed certificates with 'openssl ca'
402      in such a way that the self-signed certificate becomes part of the
403      CA database and uses the same mechanisms for serial number generation
404      as all other certificate signing.  The new flag '-selfsign' enables
405      this functionality.  Adapt CA.sh and CA.pl.in.
406      [Richard Levitte]
407
408   *) Add functionality to check the public key of a certificate request
409      against a given private.  This is useful to check that a certificate
410      request can be signed by that key (self-signing).
411      [Richard Levitte]
412
413   *) Make it possible to have multiple active certificates with the same
414      subject in the CA index file.  This is done only if the keyword
415      'unique_subject' is set to 'no' in the main CA section (default
416      if 'CA_default') of the configuration file.  The value is saved
417      with the database itself in a separate index attribute file,
418      named like the index file with '.attr' appended to the name.
419      [Richard Levitte]
420
421   *) Generate muti valued AVAs using '+' notation in config files for
422      req and dirName.
423      [Steve Henson]
424
425   *) Support for nameConstraints certificate extension.
426      [Steve Henson]
427
428   *) Support for policyConstraints certificate extension.
429      [Steve Henson]
430
431   *) Support for policyMappings certificate extension.
432      [Steve Henson]
433
434   *) Make sure the default DSA_METHOD implementation only uses its
435      dsa_mod_exp() and/or bn_mod_exp() handlers if they are non-NULL,
436      and change its own handlers to be NULL so as to remove unnecessary
437      indirection. This lets alternative implementations fallback to the
438      default implementation more easily.
439      [Geoff Thorpe]
440
441   *) Support for directoryName in GeneralName related extensions
442      in config files.
443      [Steve Henson]
444
445   *) Make it possible to link applications using Makefile.shared.
446      Make that possible even when linking against static libraries!
447      [Richard Levitte]
448
449   *) Support for single pass processing for S/MIME signing. This now
450      means that S/MIME signing can be done from a pipe, in addition
451      cleartext signing (multipart/signed type) is effectively streaming
452      and the signed data does not need to be all held in memory.
453
454      This is done with a new flag PKCS7_STREAM. When this flag is set
455      PKCS7_sign() only initializes the PKCS7 structure and the actual signing
456      is done after the data is output (and digests calculated) in
457      SMIME_write_PKCS7().
458      [Steve Henson]
459
460   *) Add full support for -rpath/-R, both in shared libraries and
461      applications, at least on the platforms where it's known how
462      to do it.
463      [Richard Levitte]
464
465   *) In crypto/ec/ec_mult.c, implement fast point multiplication with
466      precomputation, based on wNAF splitting: EC_GROUP_precompute_mult()
467      will now compute a table of multiples of the generator that
468      makes subsequent invocations of EC_POINTs_mul() or EC_POINT_mul()
469      faster (notably in the case of a single point multiplication,
470      scalar * generator).
471      [Nils Larsch, Bodo Moeller]
472
473   *) IPv6 support for certificate extensions. The various extensions
474      which use the IP:a.b.c.d can now take IPv6 addresses using the
475      formats of RFC1884 2.2 . IPv6 addresses are now also displayed
476      correctly.
477      [Steve Henson]
478
479   *) Added an ENGINE that implements RSA by performing private key
480      exponentiations with the GMP library. The conversions to and from
481      GMP's mpz_t format aren't optimised nor are any montgomery forms
482      cached, and on x86 it appears OpenSSL's own performance has caught up.
483      However there are likely to be other architectures where GMP could
484      provide a boost. This ENGINE is not built in by default, but it can be
485      specified at Configure time and should be accompanied by the necessary
486      linker additions, eg;
487          ./config -DOPENSSL_USE_GMP -lgmp
488      [Geoff Thorpe]
489
490   *) "openssl engine" will not display ENGINE/DSO load failure errors when
491      testing availability of engines with "-t" - the old behaviour is
492      produced by increasing the feature's verbosity with "-tt".
493      [Geoff Thorpe]
494
495   *) ECDSA routines: under certain error conditions uninitialized BN objects
496      could be freed. Solution: make sure initialization is performed early
497      enough. (Reported and fix supplied by Nils Larsch <nla@trustcenter.de>
498      via PR#459)
499      [Lutz Jaenicke]
500
501   *) Key-generation can now be implemented in RSA_METHOD, DSA_METHOD
502      and DH_METHOD (eg. by ENGINE implementations) to override the normal
503      software implementations. For DSA and DH, parameter generation can
504      also be overriden by providing the appropriate method callbacks.
505      [Geoff Thorpe]
506
507   *) Change the "progress" mechanism used in key-generation and
508      primality testing to functions that take a new BN_GENCB pointer in
509      place of callback/argument pairs. The new API functions have "_ex"
510      postfixes and the older functions are reimplemented as wrappers for
511      the new ones. The OPENSSL_NO_DEPRECATED symbol can be used to hide
512      declarations of the old functions to help (graceful) attempts to
513      migrate to the new functions. Also, the new key-generation API
514      functions operate on a caller-supplied key-structure and return
515      success/failure rather than returning a key or NULL - this is to
516      help make "keygen" another member function of RSA_METHOD etc.
517
518      Example for using the new callback interface:
519
520           int (*my_callback)(int a, int b, BN_GENCB *cb) = ...;
521           void *my_arg = ...;
522           BN_GENCB my_cb;
523
524           BN_GENCB_set(&my_cb, my_callback, my_arg);
525
526           return BN_is_prime_ex(some_bignum, BN_prime_checks, NULL, &cb);
527           /* For the meaning of a, b in calls to my_callback(), see the
528            * documentation of the function that calls the callback.
529            * cb will point to my_cb; my_arg can be retrieved as cb->arg.
530            * my_callback should return 1 if it wants BN_is_prime_ex()
531            * to continue, or 0 to stop.
532            */
533
534      [Geoff Thorpe]
535
536   *) Change the ZLIB compression method to be stateful, and make it
537      available to TLS with the number defined in 
538      draft-ietf-tls-compression-04.txt.
539      [Richard Levitte]
540
541   *) Add the ASN.1 structures and functions for CertificatePair, which
542      is defined as follows (according to X.509_4thEditionDraftV6.pdf):
543
544      CertificatePair ::= SEQUENCE {
545         forward         [0]     Certificate OPTIONAL,
546         reverse         [1]     Certificate OPTIONAL,
547         -- at least one of the pair shall be present -- }
548
549      Also implement the PEM functions to read and write certificate
550      pairs, and defined the PEM tag as "CERTIFICATE PAIR".
551
552      This needed to be defined, mostly for the sake of the LDAP
553      attribute crossCertificatePair, but may prove useful elsewhere as
554      well.
555      [Richard Levitte]
556
557   *) Make it possible to inhibit symlinking of shared libraries in
558      Makefile.shared, for Cygwin's sake.
559      [Richard Levitte]
560
561   *) Extend the BIGNUM API by creating a function 
562           void BN_set_negative(BIGNUM *a, int neg);
563      and a macro that behave like
564           int  BN_is_negative(const BIGNUM *a);
565
566      to avoid the need to access 'a->neg' directly in applications.
567      [Nils Larsch]
568
569   *) Implement fast modular reduction for pseudo-Mersenne primes
570      used in NIST curves (crypto/bn/bn_nist.c, crypto/ec/ecp_nist.c).
571      EC_GROUP_new_curve_GFp() will now automatically use this
572      if applicable.
573      [Nils Larsch <nla@trustcenter.de>]
574
575   *) Add new lock type (CRYPTO_LOCK_BN).
576      [Bodo Moeller]
577
578   *) Change the ENGINE framework to automatically load engines
579      dynamically from specific directories unless they could be
580      found to already be built in or loaded.  Move all the
581      current engines except for the cryptodev one to a new
582      directory engines/.
583      The engines in engines/ are built as shared libraries if
584      the "shared" options was given to ./Configure or ./config.
585      Otherwise, they are inserted in libcrypto.a.
586      /usr/local/ssl/engines is the default directory for dynamic
587      engines, but that can be overriden at configure time through
588      the usual use of --prefix and/or --openssldir, and at run
589      time with the environment variable OPENSSL_ENGINES.
590      [Geoff Thorpe and Richard Levitte]
591
592   *) Add Makefile.shared, a helper makefile to build shared
593      libraries.  Addapt Makefile.org.
594      [Richard Levitte]
595
596   *) Add version info to Win32 DLLs.
597      [Peter 'Luna' Runestig" <peter@runestig.com>]
598
599   *) Add new 'medium level' PKCS#12 API. Certificates and keys
600      can be added using this API to created arbitrary PKCS#12
601      files while avoiding the low level API.
602
603      New options to PKCS12_create(), key or cert can be NULL and
604      will then be omitted from the output file. The encryption
605      algorithm NIDs can be set to -1 for no encryption, the mac
606      iteration count can be set to 0 to omit the mac.
607
608      Enhance pkcs12 utility by making the -nokeys and -nocerts
609      options work when creating a PKCS#12 file. New option -nomac
610      to omit the mac, NONE can be set for an encryption algorithm.
611      New code is modified to use the enhanced PKCS12_create()
612      instead of the low level API.
613      [Steve Henson]
614
615   *) Extend ASN1 encoder to support indefinite length constructed
616      encoding. This can output sequences tags and octet strings in
617      this form. Modify pk7_asn1.c to support indefinite length
618      encoding. This is experimental and needs additional code to
619      be useful, such as an ASN1 bio and some enhanced streaming
620      PKCS#7 code.
621
622      Extend template encode functionality so that tagging is passed
623      down to the template encoder.
624      [Steve Henson]
625
626   *) Let 'openssl req' fail if an argument to '-newkey' is not
627      recognized instead of using RSA as a default.
628      [Bodo Moeller]
629
630   *) Add support for ECC-based ciphersuites from draft-ietf-tls-ecc-01.txt.
631      As these are not official, they are not included in "ALL";
632      the "ECCdraft" ciphersuite group alias can be used to select them.
633      [Vipul Gupta and Sumit Gupta (Sun Microsystems Laboratories)]
634
635   *) Add ECDH engine support.
636      [Nils Gura and Douglas Stebila (Sun Microsystems Laboratories)]
637
638   *) Add ECDH in new directory crypto/ecdh/.
639      [Douglas Stebila (Sun Microsystems Laboratories)]
640
641   *) Let BN_rand_range() abort with an error after 100 iterations
642      without success (which indicates a broken PRNG).
643      [Bodo Moeller]
644
645   *) Change BN_mod_sqrt() so that it verifies that the input value
646      is really the square of the return value.  (Previously,
647      BN_mod_sqrt would show GIGO behaviour.)
648      [Bodo Moeller]
649
650   *) Add named elliptic curves over binary fields from X9.62, SECG,
651      and WAP/WTLS; add OIDs that were still missing.
652
653      [Sheueling Chang Shantz and Douglas Stebila
654      (Sun Microsystems Laboratories)]
655
656   *) Extend the EC library for elliptic curves over binary fields
657      (new files ec2_smpl.c, ec2_smpt.c, ec2_mult.c in crypto/ec/).
658      New EC_METHOD:
659
660           EC_GF2m_simple_method
661
662      New API functions:
663
664           EC_GROUP_new_curve_GF2m
665           EC_GROUP_set_curve_GF2m
666           EC_GROUP_get_curve_GF2m
667           EC_POINT_set_affine_coordinates_GF2m
668           EC_POINT_get_affine_coordinates_GF2m
669           EC_POINT_set_compressed_coordinates_GF2m
670
671      Point compression for binary fields is disabled by default for
672      patent reasons (compile with OPENSSL_EC_BIN_PT_COMP defined to
673      enable it).
674
675      As binary polynomials are represented as BIGNUMs, various members
676      of the EC_GROUP and EC_POINT data structures can be shared
677      between the implementations for prime fields and binary fields;
678      the above ..._GF2m functions (except for EX_GROUP_new_curve_GF2m)
679      are essentially identical to their ..._GFp counterparts.
680      (For simplicity, the '..._GFp' prefix has been dropped from
681      various internal method names.)
682
683      An internal 'field_div' method (similar to 'field_mul' and
684      'field_sqr') has been added; this is used only for binary fields.
685
686      [Sheueling Chang Shantz and Douglas Stebila
687      (Sun Microsystems Laboratories)]
688
689   *) Optionally dispatch EC_POINT_mul(), EC_POINT_precompute_mult()
690      through methods ('mul', 'precompute_mult').
691
692      The generic implementations (now internally called 'ec_wNAF_mul'
693      and 'ec_wNAF_precomputed_mult') remain the default if these
694      methods are undefined.
695
696      [Sheueling Chang Shantz and Douglas Stebila
697      (Sun Microsystems Laboratories)]
698
699   *) New function EC_GROUP_get_degree, which is defined through
700      EC_METHOD.  For curves over prime fields, this returns the bit
701      length of the modulus.
702
703      [Sheueling Chang Shantz and Douglas Stebila
704      (Sun Microsystems Laboratories)]
705
706   *) New functions EC_GROUP_dup, EC_POINT_dup.
707      (These simply call ..._new  and ..._copy).
708
709      [Sheueling Chang Shantz and Douglas Stebila
710      (Sun Microsystems Laboratories)]
711
712   *) Add binary polynomial arithmetic software in crypto/bn/bn_gf2m.c.
713      Polynomials are represented as BIGNUMs (where the sign bit is not
714      used) in the following functions [macros]:  
715
716           BN_GF2m_add
717           BN_GF2m_sub             [= BN_GF2m_add]
718           BN_GF2m_mod             [wrapper for BN_GF2m_mod_arr]
719           BN_GF2m_mod_mul         [wrapper for BN_GF2m_mod_mul_arr]
720           BN_GF2m_mod_sqr         [wrapper for BN_GF2m_mod_sqr_arr]
721           BN_GF2m_mod_inv
722           BN_GF2m_mod_exp         [wrapper for BN_GF2m_mod_exp_arr]
723           BN_GF2m_mod_sqrt        [wrapper for BN_GF2m_mod_sqrt_arr]
724           BN_GF2m_mod_solve_quad  [wrapper for BN_GF2m_mod_solve_quad_arr]
725           BN_GF2m_cmp             [= BN_ucmp]
726
727      (Note that only the 'mod' functions are actually for fields GF(2^m).
728      BN_GF2m_add() is misnomer, but this is for the sake of consistency.)
729
730      For some functions, an the irreducible polynomial defining a
731      field can be given as an 'unsigned int[]' with strictly
732      decreasing elements giving the indices of those bits that are set;
733      i.e., p[] represents the polynomial
734           f(t) = t^p[0] + t^p[1] + ... + t^p[k]
735      where
736           p[0] > p[1] > ... > p[k] = 0.
737      This applies to the following functions:
738
739           BN_GF2m_mod_arr
740           BN_GF2m_mod_mul_arr
741           BN_GF2m_mod_sqr_arr
742           BN_GF2m_mod_inv_arr        [wrapper for BN_GF2m_mod_inv]
743           BN_GF2m_mod_div_arr        [wrapper for BN_GF2m_mod_div]
744           BN_GF2m_mod_exp_arr
745           BN_GF2m_mod_sqrt_arr
746           BN_GF2m_mod_solve_quad_arr
747           BN_GF2m_poly2arr
748           BN_GF2m_arr2poly
749
750      Conversion can be performed by the following functions:
751
752           BN_GF2m_poly2arr
753           BN_GF2m_arr2poly
754
755      bntest.c has additional tests for binary polynomial arithmetic.
756
757      Two implementations for BN_GF2m_mod_div() are available.
758      The default algorithm simply uses BN_GF2m_mod_inv() and
759      BN_GF2m_mod_mul().  The alternative algorithm is compiled in only
760      if OPENSSL_SUN_GF2M_DIV is defined (patent pending; read the
761      copyright notice in crypto/bn/bn_gf2m.c before enabling it).
762
763      [Sheueling Chang Shantz and Douglas Stebila
764      (Sun Microsystems Laboratories)]
765
766   *) Add new error code 'ERR_R_DISABLED' that can be used when some
767      functionality is disabled at compile-time.
768      [Douglas Stebila <douglas.stebila@sun.com>]
769
770   *) Change default behaviour of 'openssl asn1parse' so that more
771      information is visible when viewing, e.g., a certificate:
772
773      Modify asn1_parse2 (crypto/asn1/asn1_par.c) so that in non-'dump'
774      mode the content of non-printable OCTET STRINGs is output in a
775      style similar to INTEGERs, but with '[HEX DUMP]' prepended to
776      avoid the appearance of a printable string.
777      [Nils Larsch <nla@trustcenter.de>]
778
779   *) Add 'asn1_flag' and 'asn1_form' member to EC_GROUP with access
780      functions
781           EC_GROUP_set_asn1_flag()
782           EC_GROUP_get_asn1_flag()
783           EC_GROUP_set_point_conversion_form()
784           EC_GROUP_get_point_conversion_form()
785      These control ASN1 encoding details:
786      - Curves (i.e., groups) are encoded explicitly unless asn1_flag
787        has been set to OPENSSL_EC_NAMED_CURVE.
788      - Points are encoded in uncompressed form by default; options for
789        asn1_for are as for point2oct, namely
790           POINT_CONVERSION_COMPRESSED
791           POINT_CONVERSION_UNCOMPRESSED
792           POINT_CONVERSION_HYBRID
793
794      Also add 'seed' and 'seed_len' members to EC_GROUP with access
795      functions
796           EC_GROUP_set_seed()
797           EC_GROUP_get0_seed()
798           EC_GROUP_get_seed_len()
799      This is used only for ASN1 purposes (so far).
800      [Nils Larsch <nla@trustcenter.de>]
801
802   *) Add 'field_type' member to EC_METHOD, which holds the NID
803      of the appropriate field type OID.  The new function
804      EC_METHOD_get_field_type() returns this value.
805      [Nils Larsch <nla@trustcenter.de>]
806
807   *) Add functions 
808           EC_POINT_point2bn()
809           EC_POINT_bn2point()
810           EC_POINT_point2hex()
811           EC_POINT_hex2point()
812      providing useful interfaces to EC_POINT_point2oct() and
813      EC_POINT_oct2point().
814      [Nils Larsch <nla@trustcenter.de>]
815
816   *) Change internals of the EC library so that the functions
817           EC_GROUP_set_generator()
818           EC_GROUP_get_generator()
819           EC_GROUP_get_order()
820           EC_GROUP_get_cofactor()
821      are implemented directly in crypto/ec/ec_lib.c and not dispatched
822      to methods, which would lead to unnecessary code duplication when
823      adding different types of curves.
824      [Nils Larsch <nla@trustcenter.de> with input by Bodo Moeller]
825
826   *) Implement compute_wNAF (crypto/ec/ec_mult.c) without BIGNUM
827      arithmetic, and such that modified wNAFs are generated
828      (which avoid length expansion in many cases).
829      [Bodo Moeller]
830
831   *) Add a function EC_GROUP_check_discriminant() (defined via
832      EC_METHOD) that verifies that the curve discriminant is non-zero.
833
834      Add a function EC_GROUP_check() that makes some sanity tests
835      on a EC_GROUP, its generator and order.  This includes
836      EC_GROUP_check_discriminant().
837      [Nils Larsch <nla@trustcenter.de>]
838
839   *) Add ECDSA in new directory crypto/ecdsa/.
840
841      Add applications 'openssl ecparam' and 'openssl ecdsa'
842      (these are based on 'openssl dsaparam' and 'openssl dsa').
843
844      ECDSA support is also included in various other files across the
845      library.  Most notably,
846      - 'openssl req' now has a '-newkey ecdsa:file' option;
847      - EVP_PKCS82PKEY (crypto/evp/evp_pkey.c) now can handle ECDSA;
848      - X509_PUBKEY_get (crypto/asn1/x_pubkey.c) and
849        d2i_PublicKey (crypto/asn1/d2i_pu.c) have been modified to make
850        them suitable for ECDSA where domain parameters must be
851        extracted before the specific public key;
852      - ECDSA engine support has been added.
853      [Nils Larsch <nla@trustcenter.de>]
854
855   *) Include some named elliptic curves, and add OIDs from X9.62,
856      SECG, and WAP/WTLS.  Each curve can be obtained from the new
857      function
858           EC_GROUP_new_by_curve_name(),
859      and the list of available named curves can be obtained with
860           EC_get_builtin_curves().
861      Also add a 'curve_name' member to EC_GROUP objects, which can be
862      accessed via
863          EC_GROUP_set_curve_name()
864          EC_GROUP_get_curve_name()
865      [Nils Larsch <larsch@trustcenter.de, Bodo Moeller]
866  
867   *) Remove a few calls to bn_wexpand() in BN_sqr() (the one in there
868      was actually never needed) and in BN_mul().  The removal in BN_mul()
869      required a small change in bn_mul_part_recursive() and the addition
870      of the functions bn_cmp_part_words(), bn_sub_part_words() and
871      bn_add_part_words(), which do the same thing as bn_cmp_words(),
872      bn_sub_words() and bn_add_words() except they take arrays with
873      differing sizes.
874      [Richard Levitte]
875
876  Changes between 0.9.7g and 0.9.7h  [XX xxx XXXX]
877
878   *) Minimal support for X9.31 signatures and PSS padding modes. This is
879      mainly for FIPS compliance and not fully integrated at this stage.
880      [Steve Henson]
881
882   *) For DSA signing, unless DSA_FLAG_NO_EXP_CONSTTIME is set, perform
883      the exponentiation using a fixed-length exponent.  (Otherwise,
884      the information leaked through timing could expose the secret key
885      after many signatures; cf. Bleichenbacher's attack on DSA with
886      biased k.)
887      [Bodo Moeller]
888
889   *) Make a new fixed-window mod_exp implementation the default for
890      RSA, DSA, and DH private-key operations so that the sequence of
891      squares and multiplies and the memory access pattern are
892      independent of the particular secret key.  This will mitigate
893      cache-timing and potential related attacks.
894
895      BN_mod_exp_mont_consttime() is the new exponentiation implementation,
896      and this is automatically used by BN_mod_exp_mont() if the new flag
897      BN_FLG_EXP_CONSTTIME is set for the exponent.  RSA, DSA, and DH
898      will use this BN flag for private exponents unless the flag
899      RSA_FLAG_NO_EXP_CONSTTIME, DSA_FLAG_NO_EXP_CONSTTIME, or
900      DH_FLAG_NO_EXP_CONSTTIME, respectively, is set.
901
902      [Matthew D Wood (Intel Corp), with some changes by Bodo Moeller]
903
904   *) Change the client implementation for SSLv23_method() and
905      SSLv23_client_method() so that is uses the SSL 3.0/TLS 1.0
906      Client Hello message format if the SSL_OP_NO_SSLv2 option is set.
907      (Previously, the SSL 2.0 backwards compatible Client Hello
908      message format would be used even with SSL_OP_NO_SSLv2.)
909      [Bodo Moeller]
910
911   *) Add support for smime-type MIME parameter in S/MIME messages which some
912      clients need.
913      [Steve Henson]
914
915   *) New function BN_MONT_CTX_set_locked() to set montgomery parameters in
916      a threadsafe manner. Modify rsa code to use new function and add calls
917      to dsa and dh code (which had race conditions before).
918      [Steve Henson]
919
920   *) Include the fixed error library code in the C error file definitions
921      instead of fixing them up at runtime. This keeps the error code
922      structures constant.
923      [Steve Henson]
924
925  Changes between 0.9.7f and 0.9.7g  [11 Apr 2005]
926
927   *) Fixes for newer kerberos headers. NB: the casts are needed because
928      the 'length' field is signed on one version and unsigned on another
929      with no (?) obvious way to tell the difference, without these VC++
930      complains. Also the "definition" of FAR (blank) is no longer included
931      nor is the error ENOMEM. KRB5_PRIVATE has to be set to 1 to pick up
932      some needed definitions.
933      [Steve Henson]
934
935   *) Undo Cygwin change.
936      [Ulf Möller]
937
938   *) Added support for proxy certificates according to RFC 3820.
939      Because they may be a security thread to unaware applications,
940      they must be explicitely allowed in run-time.  See
941      docs/HOWTO/proxy_certificates.txt for further information.
942      [Richard Levitte]
943
944  Changes between 0.9.7e and 0.9.7f  [22 Mar 2005]
945
946   *) Use (SSL_RANDOM_VALUE - 4) bytes of pseudo random data when generating
947      server and client random values. Previously
948      (SSL_RANDOM_VALUE - sizeof(time_t)) would be used which would result in
949      less random data when sizeof(time_t) > 4 (some 64 bit platforms).
950
951      This change has negligible security impact because:
952
953      1. Server and client random values still have 24 bytes of pseudo random
954         data.
955
956      2. Server and client random values are sent in the clear in the initial
957         handshake.
958
959      3. The master secret is derived using the premaster secret (48 bytes in
960         size for static RSA ciphersuites) as well as client server and random
961         values.
962
963      The OpenSSL team would like to thank the UK NISCC for bringing this issue
964      to our attention. 
965
966      [Stephen Henson, reported by UK NISCC]
967
968   *) Use Windows randomness collection on Cygwin.
969      [Ulf Möller]
970
971   *) Fix hang in EGD/PRNGD query when communication socket is closed
972      prematurely by EGD/PRNGD.
973      [Darren Tucker <dtucker@zip.com.au> via Lutz Jänicke, resolves #1014]
974
975   *) Prompt for pass phrases when appropriate for PKCS12 input format.
976      [Steve Henson]
977
978   *) Back-port of selected performance improvements from development
979      branch, as well as improved support for PowerPC platforms.
980      [Andy Polyakov]
981
982   *) Add lots of checks for memory allocation failure, error codes to indicate
983      failure and freeing up memory if a failure occurs.
984      [Nauticus Networks SSL Team <openssl@nauticusnet.com>, Steve Henson]
985
986   *) Add new -passin argument to dgst.
987      [Steve Henson]
988
989   *) Perform some character comparisons of different types in X509_NAME_cmp:
990      this is needed for some certificates that reencode DNs into UTF8Strings
991      (in violation of RFC3280) and can't or wont issue name rollover
992      certificates.
993      [Steve Henson]
994
995   *) Make an explicit check during certificate validation to see that
996      the CA setting in each certificate on the chain is correct.  As a
997      side effect always do the following basic checks on extensions,
998      not just when there's an associated purpose to the check:
999
1000       - if there is an unhandled critical extension (unless the user
1001         has chosen to ignore this fault)
1002       - if the path length has been exceeded (if one is set at all)
1003       - that certain extensions fit the associated purpose (if one has
1004         been given)
1005      [Richard Levitte]
1006
1007  Changes between 0.9.7d and 0.9.7e  [25 Oct 2004]
1008
1009   *) Avoid a race condition when CRLs are checked in a multi threaded 
1010      environment. This would happen due to the reordering of the revoked
1011      entries during signature checking and serial number lookup. Now the
1012      encoding is cached and the serial number sort performed under a lock.
1013      Add new STACK function sk_is_sorted().
1014      [Steve Henson]
1015
1016   *) Add Delta CRL to the extension code.
1017      [Steve Henson]
1018
1019   *) Various fixes to s3_pkt.c so alerts are sent properly.
1020      [David Holmes <d.holmes@f5.com>]
1021
1022   *) Reduce the chances of duplicate issuer name and serial numbers (in
1023      violation of RFC3280) using the OpenSSL certificate creation utilities.
1024      This is done by creating a random 64 bit value for the initial serial
1025      number when a serial number file is created or when a self signed
1026      certificate is created using 'openssl req -x509'. The initial serial
1027      number file is created using 'openssl x509 -next_serial' in CA.pl
1028      rather than being initialized to 1.
1029      [Steve Henson]
1030
1031  Changes between 0.9.7c and 0.9.7d  [17 Mar 2004]
1032
1033   *) Fix null-pointer assignment in do_change_cipher_spec() revealed           
1034      by using the Codenomicon TLS Test Tool (CAN-2004-0079)                    
1035      [Joe Orton, Steve Henson]   
1036
1037   *) Fix flaw in SSL/TLS handshaking when using Kerberos ciphersuites
1038      (CAN-2004-0112)
1039      [Joe Orton, Steve Henson]   
1040
1041   *) Make it possible to have multiple active certificates with the same
1042      subject in the CA index file.  This is done only if the keyword
1043      'unique_subject' is set to 'no' in the main CA section (default
1044      if 'CA_default') of the configuration file.  The value is saved
1045      with the database itself in a separate index attribute file,
1046      named like the index file with '.attr' appended to the name.
1047      [Richard Levitte]
1048
1049   *) X509 verify fixes. Disable broken certificate workarounds when 
1050      X509_V_FLAGS_X509_STRICT is set. Check CRL issuer has cRLSign set if
1051      keyUsage extension present. Don't accept CRLs with unhandled critical
1052      extensions: since verify currently doesn't process CRL extensions this
1053      rejects a CRL with *any* critical extensions. Add new verify error codes
1054      for these cases.
1055      [Steve Henson]
1056
1057   *) When creating an OCSP nonce use an OCTET STRING inside the extnValue.
1058      A clarification of RFC2560 will require the use of OCTET STRINGs and 
1059      some implementations cannot handle the current raw format. Since OpenSSL
1060      copies and compares OCSP nonces as opaque blobs without any attempt at
1061      parsing them this should not create any compatibility issues.
1062      [Steve Henson]
1063
1064   *) New md flag EVP_MD_CTX_FLAG_REUSE this allows md_data to be reused when
1065      calling EVP_MD_CTX_copy_ex() to avoid calling OPENSSL_malloc(). Without
1066      this HMAC (and other) operations are several times slower than OpenSSL
1067      < 0.9.7.
1068      [Steve Henson]
1069
1070   *) Print out GeneralizedTime and UTCTime in ASN1_STRING_print_ex().
1071      [Peter Sylvester <Peter.Sylvester@EdelWeb.fr>]
1072
1073   *) Use the correct content when signing type "other".
1074      [Steve Henson]
1075
1076  Changes between 0.9.7b and 0.9.7c  [30 Sep 2003]
1077
1078   *) Fix various bugs revealed by running the NISCC test suite:
1079
1080      Stop out of bounds reads in the ASN1 code when presented with
1081      invalid tags (CAN-2003-0543 and CAN-2003-0544).
1082      
1083      Free up ASN1_TYPE correctly if ANY type is invalid (CAN-2003-0545).
1084
1085      If verify callback ignores invalid public key errors don't try to check
1086      certificate signature with the NULL public key.
1087
1088      [Steve Henson]
1089
1090   *) New -ignore_err option in ocsp application to stop the server
1091      exiting on the first error in a request.
1092      [Steve Henson]
1093
1094   *) In ssl3_accept() (ssl/s3_srvr.c) only accept a client certificate
1095      if the server requested one: as stated in TLS 1.0 and SSL 3.0
1096      specifications.
1097      [Steve Henson]
1098
1099   *) In ssl3_get_client_hello() (ssl/s3_srvr.c), tolerate additional
1100      extra data after the compression methods not only for TLS 1.0
1101      but also for SSL 3.0 (as required by the specification).
1102      [Bodo Moeller; problem pointed out by Matthias Loepfe]
1103
1104   *) Change X509_certificate_type() to mark the key as exported/exportable
1105      when it's 512 *bits* long, not 512 bytes.
1106      [Richard Levitte]
1107
1108   *) Change AES_cbc_encrypt() so it outputs exact multiple of
1109      blocks during encryption.
1110      [Richard Levitte]
1111
1112   *) Various fixes to base64 BIO and non blocking I/O. On write 
1113      flushes were not handled properly if the BIO retried. On read
1114      data was not being buffered properly and had various logic bugs.
1115      This also affects blocking I/O when the data being decoded is a
1116      certain size.
1117      [Steve Henson]
1118
1119   *) Various S/MIME bugfixes and compatibility changes:
1120      output correct application/pkcs7 MIME type if
1121      PKCS7_NOOLDMIMETYPE is set. Tolerate some broken signatures.
1122      Output CR+LF for EOL if PKCS7_CRLFEOL is set (this makes opening
1123      of files as .eml work). Correctly handle very long lines in MIME
1124      parser.
1125      [Steve Henson]
1126
1127  Changes between 0.9.7a and 0.9.7b  [10 Apr 2003]
1128
1129   *) Countermeasure against the Klima-Pokorny-Rosa extension of
1130      Bleichbacher's attack on PKCS #1 v1.5 padding: treat
1131      a protocol version number mismatch like a decryption error
1132      in ssl3_get_client_key_exchange (ssl/s3_srvr.c).
1133      [Bodo Moeller]
1134
1135   *) Turn on RSA blinding by default in the default implementation
1136      to avoid a timing attack. Applications that don't want it can call
1137      RSA_blinding_off() or use the new flag RSA_FLAG_NO_BLINDING.
1138      They would be ill-advised to do so in most cases.
1139      [Ben Laurie, Steve Henson, Geoff Thorpe, Bodo Moeller]
1140
1141   *) Change RSA blinding code so that it works when the PRNG is not
1142      seeded (in this case, the secret RSA exponent is abused as
1143      an unpredictable seed -- if it is not unpredictable, there
1144      is no point in blinding anyway).  Make RSA blinding thread-safe
1145      by remembering the creator's thread ID in rsa->blinding and
1146      having all other threads use local one-time blinding factors
1147      (this requires more computation than sharing rsa->blinding, but
1148      avoids excessive locking; and if an RSA object is not shared
1149      between threads, blinding will still be very fast).
1150      [Bodo Moeller]
1151
1152   *) Fixed a typo bug that would cause ENGINE_set_default() to set an
1153      ENGINE as defaults for all supported algorithms irrespective of
1154      the 'flags' parameter. 'flags' is now honoured, so applications
1155      should make sure they are passing it correctly.
1156      [Geoff Thorpe]
1157
1158   *) Target "mingw" now allows native Windows code to be generated in
1159      the Cygwin environment as well as with the MinGW compiler.
1160      [Ulf Moeller] 
1161
1162  Changes between 0.9.7 and 0.9.7a  [19 Feb 2003]
1163
1164   *) In ssl3_get_record (ssl/s3_pkt.c), minimize information leaked
1165      via timing by performing a MAC computation even if incorrrect
1166      block cipher padding has been found.  This is a countermeasure
1167      against active attacks where the attacker has to distinguish
1168      between bad padding and a MAC verification error. (CAN-2003-0078)
1169
1170      [Bodo Moeller; problem pointed out by Brice Canvel (EPFL),
1171      Alain Hiltgen (UBS), Serge Vaudenay (EPFL), and
1172      Martin Vuagnoux (EPFL, Ilion)]
1173
1174   *) Make the no-err option work as intended.  The intention with no-err
1175      is not to have the whole error stack handling routines removed from
1176      libcrypto, it's only intended to remove all the function name and
1177      reason texts, thereby removing some of the footprint that may not
1178      be interesting if those errors aren't displayed anyway.
1179
1180      NOTE: it's still possible for any application or module to have it's
1181      own set of error texts inserted.  The routines are there, just not
1182      used by default when no-err is given.
1183      [Richard Levitte]
1184
1185   *) Add support for FreeBSD on IA64.
1186      [dirk.meyer@dinoex.sub.org via Richard Levitte, resolves #454]
1187
1188   *) Adjust DES_cbc_cksum() so it returns the same value as the MIT
1189      Kerberos function mit_des_cbc_cksum().  Before this change,
1190      the value returned by DES_cbc_cksum() was like the one from
1191      mit_des_cbc_cksum(), except the bytes were swapped.
1192      [Kevin Greaney <Kevin.Greaney@hp.com> and Richard Levitte]
1193
1194   *) Allow an application to disable the automatic SSL chain building.
1195      Before this a rather primitive chain build was always performed in
1196      ssl3_output_cert_chain(): an application had no way to send the 
1197      correct chain if the automatic operation produced an incorrect result.
1198
1199      Now the chain builder is disabled if either:
1200
1201      1. Extra certificates are added via SSL_CTX_add_extra_chain_cert().
1202
1203      2. The mode flag SSL_MODE_NO_AUTO_CHAIN is set.
1204
1205      The reasoning behind this is that an application would not want the
1206      auto chain building to take place if extra chain certificates are
1207      present and it might also want a means of sending no additional
1208      certificates (for example the chain has two certificates and the
1209      root is omitted).
1210      [Steve Henson]
1211
1212   *) Add the possibility to build without the ENGINE framework.
1213      [Steven Reddie <smr@essemer.com.au> via Richard Levitte]
1214
1215   *) Under Win32 gmtime() can return NULL: check return value in
1216      OPENSSL_gmtime(). Add error code for case where gmtime() fails.
1217      [Steve Henson]
1218
1219   *) DSA routines: under certain error conditions uninitialized BN objects
1220      could be freed. Solution: make sure initialization is performed early
1221      enough. (Reported and fix supplied by Ivan D Nestlerode <nestler@MIT.EDU>,
1222      Nils Larsch <nla@trustcenter.de> via PR#459)
1223      [Lutz Jaenicke]
1224
1225   *) Another fix for SSLv2 session ID handling: the session ID was incorrectly
1226      checked on reconnect on the client side, therefore session resumption
1227      could still fail with a "ssl session id is different" error. This
1228      behaviour is masked when SSL_OP_ALL is used due to
1229      SSL_OP_MICROSOFT_SESS_ID_BUG being set.
1230      Behaviour observed by Crispin Flowerday <crispin@flowerday.cx> as
1231      followup to PR #377.
1232      [Lutz Jaenicke]
1233
1234   *) IA-32 assembler support enhancements: unified ELF targets, support
1235      for SCO/Caldera platforms, fix for Cygwin shared build.
1236      [Andy Polyakov]
1237
1238   *) Add support for FreeBSD on sparc64.  As a consequence, support for
1239      FreeBSD on non-x86 processors is separate from x86 processors on
1240      the config script, much like the NetBSD support.
1241      [Richard Levitte & Kris Kennaway <kris@obsecurity.org>]
1242
1243  Changes between 0.9.6h and 0.9.7  [31 Dec 2002]
1244
1245   [NB: OpenSSL 0.9.6i and later 0.9.6 patch levels were released after
1246   OpenSSL 0.9.7.]
1247
1248   *) Fix session ID handling in SSLv2 client code: the SERVER FINISHED
1249      code (06) was taken as the first octet of the session ID and the last
1250      octet was ignored consequently. As a result SSLv2 client side session
1251      caching could not have worked due to the session ID mismatch between
1252      client and server.
1253      Behaviour observed by Crispin Flowerday <crispin@flowerday.cx> as
1254      PR #377.
1255      [Lutz Jaenicke]
1256
1257   *) Change the declaration of needed Kerberos libraries to use EX_LIBS
1258      instead of the special (and badly supported) LIBKRB5.  LIBKRB5 is
1259      removed entirely.
1260      [Richard Levitte]
1261
1262   *) The hw_ncipher.c engine requires dynamic locks.  Unfortunately, it
1263      seems that in spite of existing for more than a year, many application
1264      author have done nothing to provide the necessary callbacks, which
1265      means that this particular engine will not work properly anywhere.
1266      This is a very unfortunate situation which forces us, in the name
1267      of usability, to give the hw_ncipher.c a static lock, which is part
1268      of libcrypto.
1269      NOTE: This is for the 0.9.7 series ONLY.  This hack will never
1270      appear in 0.9.8 or later.  We EXPECT application authors to have
1271      dealt properly with this when 0.9.8 is released (unless we actually
1272      make such changes in the libcrypto locking code that changes will
1273      have to be made anyway).
1274      [Richard Levitte]
1275
1276   *) In asn1_d2i_read_bio() repeatedly call BIO_read() until all content
1277      octets have been read, EOF or an error occurs. Without this change
1278      some truncated ASN1 structures will not produce an error.
1279      [Steve Henson]
1280
1281   *) Disable Heimdal support, since it hasn't been fully implemented.
1282      Still give the possibility to force the use of Heimdal, but with
1283      warnings and a request that patches get sent to openssl-dev.
1284      [Richard Levitte]
1285
1286   *) Add the VC-CE target, introduce the WINCE sysname, and add
1287      INSTALL.WCE and appropriate conditionals to make it build.
1288      [Steven Reddie <smr@essemer.com.au> via Richard Levitte]
1289
1290   *) Change the DLL names for Cygwin to cygcrypto-x.y.z.dll and
1291      cygssl-x.y.z.dll, where x, y and z are the major, minor and
1292      edit numbers of the version.
1293      [Corinna Vinschen <vinschen@redhat.com> and Richard Levitte]
1294
1295   *) Introduce safe string copy and catenation functions
1296      (BUF_strlcpy() and BUF_strlcat()).
1297      [Ben Laurie (CHATS) and Richard Levitte]
1298
1299   *) Avoid using fixed-size buffers for one-line DNs.
1300      [Ben Laurie (CHATS)]
1301
1302   *) Add BUF_MEM_grow_clean() to avoid information leakage when
1303      resizing buffers containing secrets, and use where appropriate.
1304      [Ben Laurie (CHATS)]
1305
1306   *) Avoid using fixed size buffers for configuration file location.
1307      [Ben Laurie (CHATS)]
1308
1309   *) Avoid filename truncation for various CA files.
1310      [Ben Laurie (CHATS)]
1311
1312   *) Use sizeof in preference to magic numbers.
1313      [Ben Laurie (CHATS)]
1314
1315   *) Avoid filename truncation in cert requests.
1316      [Ben Laurie (CHATS)]
1317
1318   *) Add assertions to check for (supposedly impossible) buffer
1319      overflows.
1320      [Ben Laurie (CHATS)]
1321
1322   *) Don't cache truncated DNS entries in the local cache (this could
1323      potentially lead to a spoofing attack).
1324      [Ben Laurie (CHATS)]
1325
1326   *) Fix various buffers to be large enough for hex/decimal
1327      representations in a platform independent manner.
1328      [Ben Laurie (CHATS)]
1329
1330   *) Add CRYPTO_realloc_clean() to avoid information leakage when
1331      resizing buffers containing secrets, and use where appropriate.
1332      [Ben Laurie (CHATS)]
1333
1334   *) Add BIO_indent() to avoid much slightly worrying code to do
1335      indents.
1336      [Ben Laurie (CHATS)]
1337
1338   *) Convert sprintf()/BIO_puts() to BIO_printf().
1339      [Ben Laurie (CHATS)]
1340
1341   *) buffer_gets() could terminate with the buffer only half
1342      full. Fixed.
1343      [Ben Laurie (CHATS)]
1344
1345   *) Add assertions to prevent user-supplied crypto functions from
1346      overflowing internal buffers by having large block sizes, etc.
1347      [Ben Laurie (CHATS)]
1348
1349   *) New OPENSSL_assert() macro (similar to assert(), but enabled
1350      unconditionally).
1351      [Ben Laurie (CHATS)]
1352
1353   *) Eliminate unused copy of key in RC4.
1354      [Ben Laurie (CHATS)]
1355
1356   *) Eliminate unused and incorrectly sized buffers for IV in pem.h.
1357      [Ben Laurie (CHATS)]
1358
1359   *) Fix off-by-one error in EGD path.
1360      [Ben Laurie (CHATS)]
1361
1362   *) If RANDFILE path is too long, ignore instead of truncating.
1363      [Ben Laurie (CHATS)]
1364
1365   *) Eliminate unused and incorrectly sized X.509 structure
1366      CBCParameter.
1367      [Ben Laurie (CHATS)]
1368
1369   *) Eliminate unused and dangerous function knumber().
1370      [Ben Laurie (CHATS)]
1371
1372   *) Eliminate unused and dangerous structure, KSSL_ERR.
1373      [Ben Laurie (CHATS)]
1374
1375   *) Protect against overlong session ID context length in an encoded
1376      session object. Since these are local, this does not appear to be
1377      exploitable.
1378      [Ben Laurie (CHATS)]
1379
1380   *) Change from security patch (see 0.9.6e below) that did not affect
1381      the 0.9.6 release series:
1382
1383      Remote buffer overflow in SSL3 protocol - an attacker could
1384      supply an oversized master key in Kerberos-enabled versions.
1385      (CAN-2002-0657)
1386      [Ben Laurie (CHATS)]
1387
1388   *) Change the SSL kerb5 codes to match RFC 2712.
1389      [Richard Levitte]
1390
1391   *) Make -nameopt work fully for req and add -reqopt switch.
1392      [Michael Bell <michael.bell@rz.hu-berlin.de>, Steve Henson]
1393
1394   *) The "block size" for block ciphers in CFB and OFB mode should be 1.
1395      [Steve Henson, reported by Yngve Nysaeter Pettersen <yngve@opera.com>]
1396
1397   *) Make sure tests can be performed even if the corresponding algorithms
1398      have been removed entirely.  This was also the last step to make
1399      OpenSSL compilable with DJGPP under all reasonable conditions.
1400      [Richard Levitte, Doug Kaufman <dkaufman@rahul.net>]
1401
1402   *) Add cipher selection rules COMPLEMENTOFALL and COMPLEMENTOFDEFAULT
1403      to allow version independent disabling of normally unselected ciphers,
1404      which may be activated as a side-effect of selecting a single cipher.
1405
1406      (E.g., cipher list string "RSA" enables ciphersuites that are left
1407      out of "ALL" because they do not provide symmetric encryption.
1408      "RSA:!COMPLEMEMENTOFALL" avoids these unsafe ciphersuites.)
1409      [Lutz Jaenicke, Bodo Moeller]
1410
1411   *) Add appropriate support for separate platform-dependent build
1412      directories.  The recommended way to make a platform-dependent
1413      build directory is the following (tested on Linux), maybe with
1414      some local tweaks:
1415
1416         # Place yourself outside of the OpenSSL source tree.  In
1417         # this example, the environment variable OPENSSL_SOURCE
1418         # is assumed to contain the absolute OpenSSL source directory.
1419         mkdir -p objtree/"`uname -s`-`uname -r`-`uname -m`"
1420         cd objtree/"`uname -s`-`uname -r`-`uname -m`"
1421         (cd $OPENSSL_SOURCE; find . -type f) | while read F; do
1422                 mkdir -p `dirname $F`
1423                 ln -s $OPENSSL_SOURCE/$F $F
1424         done
1425
1426      To be absolutely sure not to disturb the source tree, a "make clean"
1427      is a good thing.  If it isn't successfull, don't worry about it,
1428      it probably means the source directory is very clean.
1429      [Richard Levitte]
1430
1431   *) Make sure any ENGINE control commands make local copies of string
1432      pointers passed to them whenever necessary. Otherwise it is possible
1433      the caller may have overwritten (or deallocated) the original string
1434      data when a later ENGINE operation tries to use the stored values.
1435      [Götz Babin-Ebell <babinebell@trustcenter.de>]
1436
1437   *) Improve diagnostics in file reading and command-line digests.
1438      [Ben Laurie aided and abetted by Solar Designer <solar@openwall.com>]
1439
1440   *) Add AES modes CFB and OFB to the object database.  Correct an
1441      error in AES-CFB decryption.
1442      [Richard Levitte]
1443
1444   *) Remove most calls to EVP_CIPHER_CTX_cleanup() in evp_enc.c, this 
1445      allows existing EVP_CIPHER_CTX structures to be reused after
1446      calling EVP_*Final(). This behaviour is used by encryption
1447      BIOs and some applications. This has the side effect that
1448      applications must explicitly clean up cipher contexts with
1449      EVP_CIPHER_CTX_cleanup() or they will leak memory.
1450      [Steve Henson]
1451
1452   *) Check the values of dna and dnb in bn_mul_recursive before calling
1453      bn_mul_comba (a non zero value means the a or b arrays do not contain
1454      n2 elements) and fallback to bn_mul_normal if either is not zero.
1455      [Steve Henson]
1456
1457   *) Fix escaping of non-ASCII characters when using the -subj option
1458      of the "openssl req" command line tool. (Robert Joop <joop@fokus.gmd.de>)
1459      [Lutz Jaenicke]
1460
1461   *) Make object definitions compliant to LDAP (RFC2256): SN is the short
1462      form for "surname", serialNumber has no short form.
1463      Use "mail" as the short name for "rfc822Mailbox" according to RFC2798;
1464      therefore remove "mail" short name for "internet 7".
1465      The OID for unique identifiers in X509 certificates is
1466      x500UniqueIdentifier, not uniqueIdentifier.
1467      Some more OID additions. (Michael Bell <michael.bell@rz.hu-berlin.de>)
1468      [Lutz Jaenicke]
1469
1470   *) Add an "init" command to the ENGINE config module and auto initialize
1471      ENGINEs. Without any "init" command the ENGINE will be initialized 
1472      after all ctrl commands have been executed on it. If init=1 the 
1473      ENGINE is initailized at that point (ctrls before that point are run
1474      on the uninitialized ENGINE and after on the initialized one). If
1475      init=0 then the ENGINE will not be iniatialized at all.
1476      [Steve Henson]
1477
1478   *) Fix the 'app_verify_callback' interface so that the user-defined
1479      argument is actually passed to the callback: In the
1480      SSL_CTX_set_cert_verify_callback() prototype, the callback
1481      declaration has been changed from
1482           int (*cb)()
1483      into
1484           int (*cb)(X509_STORE_CTX *,void *);
1485      in ssl_verify_cert_chain (ssl/ssl_cert.c), the call
1486           i=s->ctx->app_verify_callback(&ctx)
1487      has been changed into
1488           i=s->ctx->app_verify_callback(&ctx, s->ctx->app_verify_arg).
1489
1490      To update applications using SSL_CTX_set_cert_verify_callback(),
1491      a dummy argument can be added to their callback functions.
1492      [D. K. Smetters <smetters@parc.xerox.com>]
1493
1494   *) Added the '4758cca' ENGINE to support IBM 4758 cards.
1495      [Maurice Gittens <maurice@gittens.nl>, touchups by Geoff Thorpe]
1496
1497   *) Add and OPENSSL_LOAD_CONF define which will cause
1498      OpenSSL_add_all_algorithms() to load the openssl.cnf config file.
1499      This allows older applications to transparently support certain
1500      OpenSSL features: such as crypto acceleration and dynamic ENGINE loading.
1501      Two new functions OPENSSL_add_all_algorithms_noconf() which will never
1502      load the config file and OPENSSL_add_all_algorithms_conf() which will
1503      always load it have also been added.
1504      [Steve Henson]
1505
1506   *) Add the OFB, CFB and CTR (all with 128 bit feedback) to AES.
1507      Adjust NIDs and EVP layer.
1508      [Stephen Sprunk <stephen@sprunk.org> and Richard Levitte]
1509
1510   *) Config modules support in openssl utility.
1511
1512      Most commands now load modules from the config file,
1513      though in a few (such as version) this isn't done 
1514      because it couldn't be used for anything.
1515
1516      In the case of ca and req the config file used is
1517      the same as the utility itself: that is the -config
1518      command line option can be used to specify an
1519      alternative file.
1520      [Steve Henson]
1521
1522   *) Move default behaviour from OPENSSL_config(). If appname is NULL
1523      use "openssl_conf" if filename is NULL use default openssl config file.
1524      [Steve Henson]
1525
1526   *) Add an argument to OPENSSL_config() to allow the use of an alternative
1527      config section name. Add a new flag to tolerate a missing config file
1528      and move code to CONF_modules_load_file().
1529      [Steve Henson]
1530
1531   *) Support for crypto accelerator cards from Accelerated Encryption
1532      Processing, www.aep.ie.  (Use engine 'aep')
1533      The support was copied from 0.9.6c [engine] and adapted/corrected
1534      to work with the new engine framework.
1535      [AEP Inc. and Richard Levitte]
1536
1537   *) Support for SureWare crypto accelerator cards from Baltimore
1538      Technologies.  (Use engine 'sureware')
1539      The support was copied from 0.9.6c [engine] and adapted
1540      to work with the new engine framework.
1541      [Richard Levitte]
1542
1543   *) Have the CHIL engine fork-safe (as defined by nCipher) and actually
1544      make the newer ENGINE framework commands for the CHIL engine work.
1545      [Toomas Kiisk <vix@cyber.ee> and Richard Levitte]
1546
1547   *) Make it possible to produce shared libraries on ReliantUNIX.
1548      [Robert Dahlem <Robert.Dahlem@ffm2.siemens.de> via Richard Levitte]
1549
1550   *) Add the configuration target debug-linux-ppro.
1551      Make 'openssl rsa' use the general key loading routines
1552      implemented in apps.c, and make those routines able to
1553      handle the key format FORMAT_NETSCAPE and the variant
1554      FORMAT_IISSGC.
1555      [Toomas Kiisk <vix@cyber.ee> via Richard Levitte]
1556
1557  *) Fix a crashbug and a logic bug in hwcrhk_load_pubkey().
1558      [Toomas Kiisk <vix@cyber.ee> via Richard Levitte]
1559
1560   *) Add -keyform to rsautl, and document -engine.
1561      [Richard Levitte, inspired by Toomas Kiisk <vix@cyber.ee>]
1562
1563   *) Change BIO_new_file (crypto/bio/bss_file.c) to use new
1564      BIO_R_NO_SUCH_FILE error code rather than the generic
1565      ERR_R_SYS_LIB error code if fopen() fails with ENOENT.
1566      [Ben Laurie]
1567
1568   *) Add new functions
1569           ERR_peek_last_error
1570           ERR_peek_last_error_line
1571           ERR_peek_last_error_line_data.
1572      These are similar to
1573           ERR_peek_error
1574           ERR_peek_error_line
1575           ERR_peek_error_line_data,
1576      but report on the latest error recorded rather than the first one
1577      still in the error queue.
1578      [Ben Laurie, Bodo Moeller]
1579         
1580   *) default_algorithms option in ENGINE config module. This allows things
1581      like:
1582      default_algorithms = ALL
1583      default_algorithms = RSA, DSA, RAND, CIPHERS, DIGESTS
1584      [Steve Henson]
1585
1586   *) Prelminary ENGINE config module.
1587      [Steve Henson]
1588
1589   *) New experimental application configuration code.
1590      [Steve Henson]
1591
1592   *) Change the AES code to follow the same name structure as all other
1593      symmetric ciphers, and behave the same way.  Move everything to
1594      the directory crypto/aes, thereby obsoleting crypto/rijndael.
1595      [Stephen Sprunk <stephen@sprunk.org> and Richard Levitte]
1596
1597   *) SECURITY: remove unsafe setjmp/signal interaction from ui_openssl.c.
1598      [Ben Laurie and Theo de Raadt]
1599
1600   *) Add option to output public keys in req command.
1601      [Massimiliano Pala madwolf@openca.org]
1602
1603   *) Use wNAFs in EC_POINTs_mul() for improved efficiency
1604      (up to about 10% better than before for P-192 and P-224).
1605      [Bodo Moeller]
1606
1607   *) New functions/macros
1608
1609           SSL_CTX_set_msg_callback(ctx, cb)
1610           SSL_CTX_set_msg_callback_arg(ctx, arg)
1611           SSL_set_msg_callback(ssl, cb)
1612           SSL_set_msg_callback_arg(ssl, arg)
1613
1614      to request calling a callback function
1615
1616           void cb(int write_p, int version, int content_type,
1617                   const void *buf, size_t len, SSL *ssl, void *arg)
1618
1619      whenever a protocol message has been completely received
1620      (write_p == 0) or sent (write_p == 1).  Here 'version' is the
1621      protocol version  according to which the SSL library interprets
1622      the current protocol message (SSL2_VERSION, SSL3_VERSION, or
1623      TLS1_VERSION).  'content_type' is 0 in the case of SSL 2.0, or
1624      the content type as defined in the SSL 3.0/TLS 1.0 protocol
1625      specification (change_cipher_spec(20), alert(21), handshake(22)).
1626      'buf' and 'len' point to the actual message, 'ssl' to the
1627      SSL object, and 'arg' is the application-defined value set by
1628      SSL[_CTX]_set_msg_callback_arg().
1629
1630      'openssl s_client' and 'openssl s_server' have new '-msg' options
1631      to enable a callback that displays all protocol messages.
1632      [Bodo Moeller]
1633
1634   *) Change the shared library support so shared libraries are built as
1635      soon as the corresponding static library is finished, and thereby get
1636      openssl and the test programs linked against the shared library.
1637      This still only happens when the keyword "shard" has been given to
1638      the configuration scripts.
1639
1640      NOTE: shared library support is still an experimental thing, and
1641      backward binary compatibility is still not guaranteed.
1642      ["Maciej W. Rozycki" <macro@ds2.pg.gda.pl> and Richard Levitte]
1643
1644   *) Add support for Subject Information Access extension.
1645      [Peter Sylvester <Peter.Sylvester@EdelWeb.fr>]
1646
1647   *) Make BUF_MEM_grow() behaviour more consistent: Initialise to zero
1648      additional bytes when new memory had to be allocated, not just
1649      when reusing an existing buffer.
1650      [Bodo Moeller]
1651
1652   *) New command line and configuration option 'utf8' for the req command.
1653      This allows field values to be specified as UTF8 strings.
1654      [Steve Henson]
1655
1656   *) Add -multi and -mr options to "openssl speed" - giving multiple parallel
1657      runs for the former and machine-readable output for the latter.
1658      [Ben Laurie]
1659
1660   *) Add '-noemailDN' option to 'openssl ca'.  This prevents inclusion
1661      of the e-mail address in the DN (i.e., it will go into a certificate
1662      extension only).  The new configuration file option 'email_in_dn = no'
1663      has the same effect.
1664      [Massimiliano Pala madwolf@openca.org]
1665
1666   *) Change all functions with names starting with des_ to be starting
1667      with DES_ instead.  Add wrappers that are compatible with libdes,
1668      but are named _ossl_old_des_*.  Finally, add macros that map the
1669      des_* symbols to the corresponding _ossl_old_des_* if libdes
1670      compatibility is desired.  If OpenSSL 0.9.6c compatibility is
1671      desired, the des_* symbols will be mapped to DES_*, with one
1672      exception.
1673
1674      Since we provide two compatibility mappings, the user needs to
1675      define the macro OPENSSL_DES_LIBDES_COMPATIBILITY if libdes
1676      compatibility is desired.  The default (i.e., when that macro
1677      isn't defined) is OpenSSL 0.9.6c compatibility.
1678
1679      There are also macros that enable and disable the support of old
1680      des functions altogether.  Those are OPENSSL_ENABLE_OLD_DES_SUPPORT
1681      and OPENSSL_DISABLE_OLD_DES_SUPPORT.  If none or both of those
1682      are defined, the default will apply: to support the old des routines.
1683
1684      In either case, one must include openssl/des.h to get the correct
1685      definitions.  Do not try to just include openssl/des_old.h, that
1686      won't work.
1687
1688      NOTE: This is a major break of an old API into a new one.  Software
1689      authors are encouraged to switch to the DES_ style functions.  Some
1690      time in the future, des_old.h and the libdes compatibility functions
1691      will be disable (i.e. OPENSSL_DISABLE_OLD_DES_SUPPORT will be the
1692      default), and then completely removed.
1693      [Richard Levitte]
1694
1695   *) Test for certificates which contain unsupported critical extensions.
1696      If such a certificate is found during a verify operation it is 
1697      rejected by default: this behaviour can be overridden by either
1698      handling the new error X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION or
1699      by setting the verify flag X509_V_FLAG_IGNORE_CRITICAL. A new function
1700      X509_supported_extension() has also been added which returns 1 if a
1701      particular extension is supported.
1702      [Steve Henson]
1703
1704   *) Modify the behaviour of EVP cipher functions in similar way to digests
1705      to retain compatibility with existing code.
1706      [Steve Henson]
1707
1708   *) Modify the behaviour of EVP_DigestInit() and EVP_DigestFinal() to retain
1709      compatibility with existing code. In particular the 'ctx' parameter does
1710      not have to be to be initialized before the call to EVP_DigestInit() and
1711      it is tidied up after a call to EVP_DigestFinal(). New function
1712      EVP_DigestFinal_ex() which does not tidy up the ctx. Similarly function
1713      EVP_MD_CTX_copy() changed to not require the destination to be
1714      initialized valid and new function EVP_MD_CTX_copy_ex() added which
1715      requires the destination to be valid.
1716
1717      Modify all the OpenSSL digest calls to use EVP_DigestInit_ex(),
1718      EVP_DigestFinal_ex() and EVP_MD_CTX_copy_ex().
1719      [Steve Henson]
1720
1721   *) Change ssl3_get_message (ssl/s3_both.c) and the functions using it
1722      so that complete 'Handshake' protocol structures are kept in memory
1723      instead of overwriting 'msg_type' and 'length' with 'body' data.
1724      [Bodo Moeller]
1725
1726   *) Add an implementation of SSL_add_dir_cert_subjects_to_stack for Win32.
1727      [Massimo Santin via Richard Levitte]
1728
1729   *) Major restructuring to the underlying ENGINE code. This includes
1730      reduction of linker bloat, separation of pure "ENGINE" manipulation
1731      (initialisation, etc) from functionality dealing with implementations
1732      of specific crypto iterfaces. This change also introduces integrated
1733      support for symmetric ciphers and digest implementations - so ENGINEs
1734      can now accelerate these by providing EVP_CIPHER and EVP_MD
1735      implementations of their own. This is detailed in crypto/engine/README
1736      as it couldn't be adequately described here. However, there are a few
1737      API changes worth noting - some RSA, DSA, DH, and RAND functions that
1738      were changed in the original introduction of ENGINE code have now
1739      reverted back - the hooking from this code to ENGINE is now a good
1740      deal more passive and at run-time, operations deal directly with
1741      RSA_METHODs, DSA_METHODs (etc) as they did before, rather than
1742      dereferencing through an ENGINE pointer any more. Also, the ENGINE
1743      functions dealing with BN_MOD_EXP[_CRT] handlers have been removed -
1744      they were not being used by the framework as there is no concept of a
1745      BIGNUM_METHOD and they could not be generalised to the new
1746      'ENGINE_TABLE' mechanism that underlies the new code. Similarly,
1747      ENGINE_cpy() has been removed as it cannot be consistently defined in
1748      the new code.
1749      [Geoff Thorpe]
1750
1751   *) Change ASN1_GENERALIZEDTIME_check() to allow fractional seconds.
1752      [Steve Henson]
1753
1754   *) Change mkdef.pl to sort symbols that get the same entry number,
1755      and make sure the automatically generated functions ERR_load_*
1756      become part of libeay.num as well.
1757      [Richard Levitte]
1758
1759   *) New function SSL_renegotiate_pending().  This returns true once
1760      renegotiation has been requested (either SSL_renegotiate() call
1761      or HelloRequest/ClientHello receveived from the peer) and becomes
1762      false once a handshake has been completed.
1763      (For servers, SSL_renegotiate() followed by SSL_do_handshake()
1764      sends a HelloRequest, but does not ensure that a handshake takes
1765      place.  SSL_renegotiate_pending() is useful for checking if the
1766      client has followed the request.)
1767      [Bodo Moeller]
1768
1769   *) New SSL option SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION.
1770      By default, clients may request session resumption even during
1771      renegotiation (if session ID contexts permit); with this option,
1772      session resumption is possible only in the first handshake.
1773
1774      SSL_OP_ALL is now 0x00000FFFL instead of 0x000FFFFFL.  This makes
1775      more bits available for options that should not be part of
1776      SSL_OP_ALL (such as SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION).
1777      [Bodo Moeller]
1778
1779   *) Add some demos for certificate and certificate request creation.
1780      [Steve Henson]
1781
1782   *) Make maximum certificate chain size accepted from the peer application
1783      settable (SSL*_get/set_max_cert_list()), as proposed by
1784      "Douglas E. Engert" <deengert@anl.gov>.
1785      [Lutz Jaenicke]
1786
1787   *) Add support for shared libraries for Unixware-7
1788      (Boyd Lynn Gerber <gerberb@zenez.com>).
1789      [Lutz Jaenicke]
1790
1791   *) Add a "destroy" handler to ENGINEs that allows structural cleanup to
1792      be done prior to destruction. Use this to unload error strings from
1793      ENGINEs that load their own error strings. NB: This adds two new API
1794      functions to "get" and "set" this destroy handler in an ENGINE.
1795      [Geoff Thorpe]
1796
1797   *) Alter all existing ENGINE implementations (except "openssl" and
1798      "openbsd") to dynamically instantiate their own error strings. This
1799      makes them more flexible to be built both as statically-linked ENGINEs
1800      and self-contained shared-libraries loadable via the "dynamic" ENGINE.
1801      Also, add stub code to each that makes building them as self-contained
1802      shared-libraries easier (see README.ENGINE).
1803      [Geoff Thorpe]
1804
1805   *) Add a "dynamic" ENGINE that provides a mechanism for binding ENGINE
1806      implementations into applications that are completely implemented in
1807      self-contained shared-libraries. The "dynamic" ENGINE exposes control
1808      commands that can be used to configure what shared-library to load and
1809      to control aspects of the way it is handled. Also, made an update to
1810      the README.ENGINE file that brings its information up-to-date and
1811      provides some information and instructions on the "dynamic" ENGINE
1812      (ie. how to use it, how to build "dynamic"-loadable ENGINEs, etc).
1813      [Geoff Thorpe]
1814
1815   *) Make it possible to unload ranges of ERR strings with a new
1816      "ERR_unload_strings" function.
1817      [Geoff Thorpe]
1818
1819   *) Add a copy() function to EVP_MD.
1820      [Ben Laurie]
1821
1822   *) Make EVP_MD routines take a context pointer instead of just the
1823      md_data void pointer.
1824      [Ben Laurie]
1825
1826   *) Add flags to EVP_MD and EVP_MD_CTX. EVP_MD_FLAG_ONESHOT indicates
1827      that the digest can only process a single chunk of data
1828      (typically because it is provided by a piece of
1829      hardware). EVP_MD_CTX_FLAG_ONESHOT indicates that the application
1830      is only going to provide a single chunk of data, and hence the
1831      framework needn't accumulate the data for oneshot drivers.
1832      [Ben Laurie]
1833
1834   *) As with "ERR", make it possible to replace the underlying "ex_data"
1835      functions. This change also alters the storage and management of global
1836      ex_data state - it's now all inside ex_data.c and all "class" code (eg.
1837      RSA, BIO, SSL_CTX, etc) no longer stores its own STACKS and per-class
1838      index counters. The API functions that use this state have been changed
1839      to take a "class_index" rather than pointers to the class's local STACK
1840      and counter, and there is now an API function to dynamically create new
1841      classes. This centralisation allows us to (a) plug a lot of the
1842      thread-safety problems that existed, and (b) makes it possible to clean
1843      up all allocated state using "CRYPTO_cleanup_all_ex_data()". W.r.t. (b)
1844      such data would previously have always leaked in application code and
1845      workarounds were in place to make the memory debugging turn a blind eye
1846      to it. Application code that doesn't use this new function will still
1847      leak as before, but their memory debugging output will announce it now
1848      rather than letting it slide.
1849
1850      Besides the addition of CRYPTO_cleanup_all_ex_data(), another API change
1851      induced by the "ex_data" overhaul is that X509_STORE_CTX_init() now
1852      has a return value to indicate success or failure.
1853      [Geoff Thorpe]
1854
1855   *) Make it possible to replace the underlying "ERR" functions such that the
1856      global state (2 LHASH tables and 2 locks) is only used by the "default"
1857      implementation. This change also adds two functions to "get" and "set"
1858      the implementation prior to it being automatically set the first time
1859      any other ERR function takes place. Ie. an application can call "get",
1860      pass the return value to a module it has just loaded, and that module
1861      can call its own "set" function using that value. This means the
1862      module's "ERR" operations will use (and modify) the error state in the
1863      application and not in its own statically linked copy of OpenSSL code.
1864      [Geoff Thorpe]
1865
1866   *) Give DH, DSA, and RSA types their own "**_up_ref()" function to increment
1867      reference counts. This performs normal REF_PRINT/REF_CHECK macros on
1868      the operation, and provides a more encapsulated way for external code
1869      (crypto/evp/ and ssl/) to do this. Also changed the evp and ssl code
1870      to use these functions rather than manually incrementing the counts.
1871
1872      Also rename "DSO_up()" function to more descriptive "DSO_up_ref()".
1873      [Geoff Thorpe]
1874
1875   *) Add EVP test program.
1876      [Ben Laurie]
1877
1878   *) Add symmetric cipher support to ENGINE. Expect the API to change!
1879      [Ben Laurie]
1880
1881   *) New CRL functions: X509_CRL_set_version(), X509_CRL_set_issuer_name()
1882      X509_CRL_set_lastUpdate(), X509_CRL_set_nextUpdate(), X509_CRL_sort(),
1883      X509_REVOKED_set_serialNumber(), and X509_REVOKED_set_revocationDate().
1884      These allow a CRL to be built without having to access X509_CRL fields
1885      directly. Modify 'ca' application to use new functions.
1886      [Steve Henson]
1887
1888   *) Move SSL_OP_TLS_ROLLBACK_BUG out of the SSL_OP_ALL list of recommended
1889      bug workarounds. Rollback attack detection is a security feature.
1890      The problem will only arise on OpenSSL servers when TLSv1 is not
1891      available (sslv3_server_method() or SSL_OP_NO_TLSv1).
1892      Software authors not wanting to support TLSv1 will have special reasons
1893      for their choice and can explicitly enable this option.
1894      [Bodo Moeller, Lutz Jaenicke]
1895
1896   *) Rationalise EVP so it can be extended: don't include a union of
1897      cipher/digest structures, add init/cleanup functions for EVP_MD_CTX
1898      (similar to those existing for EVP_CIPHER_CTX).
1899      Usage example:
1900
1901          EVP_MD_CTX md;
1902
1903          EVP_MD_CTX_init(&md);             /* new function call */
1904          EVP_DigestInit(&md, EVP_sha1());
1905          EVP_DigestUpdate(&md, in, len);
1906          EVP_DigestFinal(&md, out, NULL);
1907          EVP_MD_CTX_cleanup(&md);          /* new function call */
1908
1909      [Ben Laurie]
1910
1911   *) Make DES key schedule conform to the usual scheme, as well as
1912      correcting its structure. This means that calls to DES functions
1913      now have to pass a pointer to a des_key_schedule instead of a
1914      plain des_key_schedule (which was actually always a pointer
1915      anyway): E.g.,
1916
1917          des_key_schedule ks;
1918
1919          des_set_key_checked(..., &ks);
1920          des_ncbc_encrypt(..., &ks, ...);
1921
1922      (Note that a later change renames 'des_...' into 'DES_...'.)
1923      [Ben Laurie]
1924
1925   *) Initial reduction of linker bloat: the use of some functions, such as
1926      PEM causes large amounts of unused functions to be linked in due to
1927      poor organisation. For example pem_all.c contains every PEM function
1928      which has a knock on effect of linking in large amounts of (unused)
1929      ASN1 code. Grouping together similar functions and splitting unrelated
1930      functions prevents this.
1931      [Steve Henson]
1932
1933   *) Cleanup of EVP macros.
1934      [Ben Laurie]
1935
1936   *) Change historical references to {NID,SN,LN}_des_ede and ede3 to add the
1937      correct _ecb suffix.
1938      [Ben Laurie]
1939
1940   *) Add initial OCSP responder support to ocsp application. The
1941      revocation information is handled using the text based index
1942      use by the ca application. The responder can either handle
1943      requests generated internally, supplied in files (for example
1944      via a CGI script) or using an internal minimal server.
1945      [Steve Henson]
1946
1947   *) Add configuration choices to get zlib compression for TLS.
1948      [Richard Levitte]
1949
1950   *) Changes to Kerberos SSL for RFC 2712 compliance:
1951      1.  Implemented real KerberosWrapper, instead of just using
1952          KRB5 AP_REQ message.  [Thanks to Simon Wilkinson <sxw@sxw.org.uk>]
1953      2.  Implemented optional authenticator field of KerberosWrapper.
1954
1955      Added openssl-style ASN.1 macros for Kerberos ticket, ap_req,
1956      and authenticator structs; see crypto/krb5/.
1957
1958      Generalized Kerberos calls to support multiple Kerberos libraries.
1959      [Vern Staats <staatsvr@asc.hpc.mil>,
1960       Jeffrey Altman <jaltman@columbia.edu>
1961       via Richard Levitte]
1962
1963   *) Cause 'openssl speed' to use fully hard-coded DSA keys as it
1964      already does with RSA. testdsa.h now has 'priv_key/pub_key'
1965      values for each of the key sizes rather than having just
1966      parameters (and 'speed' generating keys each time).
1967      [Geoff Thorpe]
1968
1969   *) Speed up EVP routines.
1970      Before:
1971 encrypt
1972 type              8 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
1973 des-cbc           4408.85k     5560.51k     5778.46k     5862.20k     5825.16k
1974 des-cbc           4389.55k     5571.17k     5792.23k     5846.91k     5832.11k
1975 des-cbc           4394.32k     5575.92k     5807.44k     5848.37k     5841.30k
1976 decrypt
1977 des-cbc           3482.66k     5069.49k     5496.39k     5614.16k     5639.28k
1978 des-cbc           3480.74k     5068.76k     5510.34k     5609.87k     5635.52k
1979 des-cbc           3483.72k     5067.62k     5504.60k     5708.01k     5724.80k
1980      After:
1981 encrypt
1982 des-cbc           4660.16k     5650.19k     5807.19k     5827.13k     5783.32k
1983 decrypt
1984 des-cbc           3624.96k     5258.21k     5530.91k     5624.30k     5628.26k
1985      [Ben Laurie]
1986
1987   *) Added the OS2-EMX target.
1988      ["Brian Havard" <brianh@kheldar.apana.org.au> and Richard Levitte]
1989
1990   *) Rewrite apps to use NCONF routines instead of the old CONF. New functions
1991      to support NCONF routines in extension code. New function CONF_set_nconf()
1992      to allow functions which take an NCONF to also handle the old LHASH
1993      structure: this means that the old CONF compatible routines can be
1994      retained (in particular wrt extensions) without having to duplicate the
1995      code. New function X509V3_add_ext_nconf_sk to add extensions to a stack.
1996      [Steve Henson]
1997
1998   *) Enhance the general user interface with mechanisms for inner control
1999      and with possibilities to have yes/no kind of prompts.
2000      [Richard Levitte]
2001
2002   *) Change all calls to low level digest routines in the library and
2003      applications to use EVP. Add missing calls to HMAC_cleanup() and
2004      don't assume HMAC_CTX can be copied using memcpy().
2005      [Verdon Walker <VWalker@novell.com>, Steve Henson]
2006
2007   *) Add the possibility to control engines through control names but with
2008      arbitrary arguments instead of just a string.
2009      Change the key loaders to take a UI_METHOD instead of a callback
2010      function pointer.  NOTE: this breaks binary compatibility with earlier
2011      versions of OpenSSL [engine].
2012      Adapt the nCipher code for these new conditions and add a card insertion
2013      callback.
2014      [Richard Levitte]
2015
2016   *) Enhance the general user interface with mechanisms to better support
2017      dialog box interfaces, application-defined prompts, the possibility
2018      to use defaults (for example default passwords from somewhere else)
2019      and interrupts/cancellations.
2020      [Richard Levitte]
2021
2022   *) Tidy up PKCS#12 attribute handling. Add support for the CSP name
2023      attribute in PKCS#12 files, add new -CSP option to pkcs12 utility.
2024      [Steve Henson]
2025
2026   *) Fix a memory leak in 'sk_dup()' in the case reallocation fails. (Also
2027      tidy up some unnecessarily weird code in 'sk_new()').
2028      [Geoff, reported by Diego Tartara <dtartara@novamens.com>]
2029
2030   *) Change the key loading routines for ENGINEs to use the same kind
2031      callback (pem_password_cb) as all other routines that need this
2032      kind of callback.
2033      [Richard Levitte]
2034
2035   *) Increase ENTROPY_NEEDED to 32 bytes, as Rijndael can operate with
2036      256 bit (=32 byte) keys. Of course seeding with more entropy bytes
2037      than this minimum value is recommended.
2038      [Lutz Jaenicke]
2039
2040   *) New random seeder for OpenVMS, using the system process statistics
2041      that are easily reachable.
2042      [Richard Levitte]
2043
2044   *) Windows apparently can't transparently handle global
2045      variables defined in DLLs. Initialisations such as:
2046
2047         const ASN1_ITEM *it = &ASN1_INTEGER_it;
2048
2049      wont compile. This is used by the any applications that need to
2050      declare their own ASN1 modules. This was fixed by adding the option
2051      EXPORT_VAR_AS_FN to all Win32 platforms, although this isn't strictly
2052      needed for static libraries under Win32.
2053      [Steve Henson]
2054
2055   *) New functions X509_PURPOSE_set() and X509_TRUST_set() to handle
2056      setting of purpose and trust fields. New X509_STORE trust and
2057      purpose functions and tidy up setting in other SSL functions.
2058      [Steve Henson]
2059
2060   *) Add copies of X509_STORE_CTX fields and callbacks to X509_STORE
2061      structure. These are inherited by X509_STORE_CTX when it is 
2062      initialised. This allows various defaults to be set in the
2063      X509_STORE structure (such as flags for CRL checking and custom
2064      purpose or trust settings) for functions which only use X509_STORE_CTX
2065      internally such as S/MIME.
2066
2067      Modify X509_STORE_CTX_purpose_inherit() so it only sets purposes and
2068      trust settings if they are not set in X509_STORE. This allows X509_STORE
2069      purposes and trust (in S/MIME for example) to override any set by default.
2070
2071      Add command line options for CRL checking to smime, s_client and s_server
2072      applications.
2073      [Steve Henson]
2074
2075   *) Initial CRL based revocation checking. If the CRL checking flag(s)
2076      are set then the CRL is looked up in the X509_STORE structure and
2077      its validity and signature checked, then if the certificate is found
2078      in the CRL the verify fails with a revoked error.
2079
2080      Various new CRL related callbacks added to X509_STORE_CTX structure.
2081
2082      Command line options added to 'verify' application to support this.
2083
2084      This needs some additional work, such as being able to handle multiple
2085      CRLs with different times, extension based lookup (rather than just
2086      by subject name) and ultimately more complete V2 CRL extension
2087      handling.
2088      [Steve Henson]
2089
2090   *) Add a general user interface API (crypto/ui/).  This is designed
2091      to replace things like des_read_password and friends (backward
2092      compatibility functions using this new API are provided).
2093      The purpose is to remove prompting functions from the DES code
2094      section as well as provide for prompting through dialog boxes in
2095      a window system and the like.
2096      [Richard Levitte]
2097
2098   *) Add "ex_data" support to ENGINE so implementations can add state at a
2099      per-structure level rather than having to store it globally.
2100      [Geoff]
2101
2102   *) Make it possible for ENGINE structures to be copied when retrieved by
2103      ENGINE_by_id() if the ENGINE specifies a new flag: ENGINE_FLAGS_BY_ID_COPY.
2104      This causes the "original" ENGINE structure to act like a template,
2105      analogous to the RSA vs. RSA_METHOD type of separation. Because of this
2106      operational state can be localised to each ENGINE structure, despite the
2107      fact they all share the same "methods". New ENGINE structures returned in
2108      this case have no functional references and the return value is the single
2109      structural reference. This matches the single structural reference returned
2110      by ENGINE_by_id() normally, when it is incremented on the pre-existing
2111      ENGINE structure.
2112      [Geoff]
2113
2114   *) Fix ASN1 decoder when decoding type ANY and V_ASN1_OTHER: since this
2115      needs to match any other type at all we need to manually clear the
2116      tag cache.
2117      [Steve Henson]
2118
2119   *) Changes to the "openssl engine" utility to include;
2120      - verbosity levels ('-v', '-vv', and '-vvv') that provide information
2121        about an ENGINE's available control commands.
2122      - executing control commands from command line arguments using the
2123        '-pre' and '-post' switches. '-post' is only used if '-t' is
2124        specified and the ENGINE is successfully initialised. The syntax for
2125        the individual commands are colon-separated, for example;
2126          openssl engine chil -pre FORK_CHECK:0 -pre SO_PATH:/lib/test.so
2127      [Geoff]
2128
2129   *) New dynamic control command support for ENGINEs. ENGINEs can now
2130      declare their own commands (numbers), names (strings), descriptions,
2131      and input types for run-time discovery by calling applications. A
2132      subset of these commands are implicitly classed as "executable"
2133      depending on their input type, and only these can be invoked through
2134      the new string-based API function ENGINE_ctrl_cmd_string(). (Eg. this
2135      can be based on user input, config files, etc). The distinction is
2136      that "executable" commands cannot return anything other than a boolean
2137      result and can only support numeric or string input, whereas some
2138      discoverable commands may only be for direct use through
2139      ENGINE_ctrl(), eg. supporting the exchange of binary data, function
2140      pointers, or other custom uses. The "executable" commands are to
2141      support parameterisations of ENGINE behaviour that can be
2142      unambiguously defined by ENGINEs and used consistently across any
2143      OpenSSL-based application. Commands have been added to all the
2144      existing hardware-supporting ENGINEs, noticeably "SO_PATH" to allow
2145      control over shared-library paths without source code alterations.
2146      [Geoff]
2147
2148   *) Changed all ENGINE implementations to dynamically allocate their
2149      ENGINEs rather than declaring them statically. Apart from this being
2150      necessary with the removal of the ENGINE_FLAGS_MALLOCED distinction,
2151      this also allows the implementations to compile without using the
2152      internal engine_int.h header.
2153      [Geoff]
2154
2155   *) Minor adjustment to "rand" code. RAND_get_rand_method() now returns a
2156      'const' value. Any code that should be able to modify a RAND_METHOD
2157      should already have non-const pointers to it (ie. they should only
2158      modify their own ones).
2159      [Geoff]
2160
2161   *) Made a variety of little tweaks to the ENGINE code.
2162      - "atalla" and "ubsec" string definitions were moved from header files
2163        to C code. "nuron" string definitions were placed in variables
2164        rather than hard-coded - allowing parameterisation of these values
2165        later on via ctrl() commands.
2166      - Removed unused "#if 0"'d code.
2167      - Fixed engine list iteration code so it uses ENGINE_free() to release
2168        structural references.
2169      - Constified the RAND_METHOD element of ENGINE structures.
2170      - Constified various get/set functions as appropriate and added
2171        missing functions (including a catch-all ENGINE_cpy that duplicates
2172        all ENGINE values onto a new ENGINE except reference counts/state).
2173      - Removed NULL parameter checks in get/set functions. Setting a method
2174        or function to NULL is a way of cancelling out a previously set
2175        value.  Passing a NULL ENGINE parameter is just plain stupid anyway
2176        and doesn't justify the extra error symbols and code.
2177      - Deprecate the ENGINE_FLAGS_MALLOCED define and move the area for
2178        flags from engine_int.h to engine.h.
2179      - Changed prototypes for ENGINE handler functions (init(), finish(),
2180        ctrl(), key-load functions, etc) to take an (ENGINE*) parameter.
2181      [Geoff]
2182
2183   *) Implement binary inversion algorithm for BN_mod_inverse in addition
2184      to the algorithm using long division.  The binary algorithm can be
2185      used only if the modulus is odd.  On 32-bit systems, it is faster
2186      only for relatively small moduli (roughly 20-30% for 128-bit moduli,
2187      roughly 5-15% for 256-bit moduli), so we use it only for moduli
2188      up to 450 bits.  In 64-bit environments, the binary algorithm
2189      appears to be advantageous for much longer moduli; here we use it
2190      for moduli up to 2048 bits.
2191      [Bodo Moeller]
2192
2193   *) Rewrite CHOICE field setting in ASN1_item_ex_d2i(). The old code
2194      could not support the combine flag in choice fields.
2195      [Steve Henson]
2196
2197   *) Add a 'copy_extensions' option to the 'ca' utility. This copies
2198      extensions from a certificate request to the certificate.
2199      [Steve Henson]
2200
2201   *) Allow multiple 'certopt' and 'nameopt' options to be separated
2202      by commas. Add 'namopt' and 'certopt' options to the 'ca' config
2203      file: this allows the display of the certificate about to be
2204      signed to be customised, to allow certain fields to be included
2205      or excluded and extension details. The old system didn't display
2206      multicharacter strings properly, omitted fields not in the policy
2207      and couldn't display additional details such as extensions.
2208      [Steve Henson]
2209
2210   *) Function EC_POINTs_mul for multiple scalar multiplication
2211      of an arbitrary number of elliptic curve points
2212           \sum scalars[i]*points[i],
2213      optionally including the generator defined for the EC_GROUP:
2214           scalar*generator +  \sum scalars[i]*points[i].
2215
2216      EC_POINT_mul is a simple wrapper function for the typical case
2217      that the point list has just one item (besides the optional
2218      generator).
2219      [Bodo Moeller]
2220
2221   *) First EC_METHODs for curves over GF(p):
2222
2223      EC_GFp_simple_method() uses the basic BN_mod_mul and BN_mod_sqr
2224      operations and provides various method functions that can also
2225      operate with faster implementations of modular arithmetic.     
2226
2227      EC_GFp_mont_method() reuses most functions that are part of
2228      EC_GFp_simple_method, but uses Montgomery arithmetic.
2229
2230      [Bodo Moeller; point addition and point doubling
2231      implementation directly derived from source code provided by
2232      Lenka Fibikova <fibikova@exp-math.uni-essen.de>]
2233
2234   *) Framework for elliptic curves (crypto/ec/ec.h, crypto/ec/ec_lcl.h,
2235      crypto/ec/ec_lib.c):
2236
2237      Curves are EC_GROUP objects (with an optional group generator)
2238      based on EC_METHODs that are built into the library.
2239
2240      Points are EC_POINT objects based on EC_GROUP objects.
2241
2242      Most of the framework would be able to handle curves over arbitrary
2243      finite fields, but as there are no obvious types for fields other
2244      than GF(p), some functions are limited to that for now.
2245      [Bodo Moeller]
2246
2247   *) Add the -HTTP option to s_server.  It is similar to -WWW, but requires
2248      that the file contains a complete HTTP response.
2249      [Richard Levitte]
2250
2251   *) Add the ec directory to mkdef.pl and mkfiles.pl. In mkdef.pl
2252      change the def and num file printf format specifier from "%-40sXXX"
2253      to "%-39s XXX". The latter will always guarantee a space after the
2254      field while the former will cause them to run together if the field
2255      is 40 of more characters long.
2256      [Steve Henson]
2257
2258   *) Constify the cipher and digest 'method' functions and structures
2259      and modify related functions to take constant EVP_MD and EVP_CIPHER
2260      pointers.
2261      [Steve Henson]
2262
2263   *) Hide BN_CTX structure details in bn_lcl.h instead of publishing them
2264      in <openssl/bn.h>.  Also further increase BN_CTX_NUM to 32.
2265      [Bodo Moeller]
2266
2267   *) Modify EVP_Digest*() routines so they now return values. Although the
2268      internal software routines can never fail additional hardware versions
2269      might.
2270      [Steve Henson]
2271
2272   *) Clean up crypto/err/err.h and change some error codes to avoid conflicts:
2273
2274      Previously ERR_R_FATAL was too small and coincided with ERR_LIB_PKCS7
2275      (= ERR_R_PKCS7_LIB); it is now 64 instead of 32.
2276
2277      ASN1 error codes
2278           ERR_R_NESTED_ASN1_ERROR
2279           ...
2280           ERR_R_MISSING_ASN1_EOS
2281      were 4 .. 9, conflicting with
2282           ERR_LIB_RSA (= ERR_R_RSA_LIB)
2283           ...
2284           ERR_LIB_PEM (= ERR_R_PEM_LIB).
2285      They are now 58 .. 63 (i.e., just below ERR_R_FATAL).
2286
2287      Add new error code 'ERR_R_INTERNAL_ERROR'.
2288      [Bodo Moeller]
2289
2290   *) Don't overuse locks in crypto/err/err.c: For data retrieval, CRYPTO_r_lock
2291      suffices.
2292      [Bodo Moeller]
2293
2294   *) New option '-subj arg' for 'openssl req' and 'openssl ca'.  This
2295      sets the subject name for a new request or supersedes the
2296      subject name in a given request. Formats that can be parsed are
2297           'CN=Some Name, OU=myOU, C=IT'
2298      and
2299           'CN=Some Name/OU=myOU/C=IT'.
2300
2301      Add options '-batch' and '-verbose' to 'openssl req'.
2302      [Massimiliano Pala <madwolf@hackmasters.net>]
2303
2304   *) Introduce the possibility to access global variables through
2305      functions on platform were that's the best way to handle exporting
2306      global variables in shared libraries.  To enable this functionality,
2307      one must configure with "EXPORT_VAR_AS_FN" or defined the C macro
2308      "OPENSSL_EXPORT_VAR_AS_FUNCTION" in crypto/opensslconf.h (the latter
2309      is normally done by Configure or something similar).
2310
2311      To implement a global variable, use the macro OPENSSL_IMPLEMENT_GLOBAL
2312      in the source file (foo.c) like this:
2313
2314         OPENSSL_IMPLEMENT_GLOBAL(int,foo)=1;
2315         OPENSSL_IMPLEMENT_GLOBAL(double,bar);
2316
2317      To declare a global variable, use the macros OPENSSL_DECLARE_GLOBAL
2318      and OPENSSL_GLOBAL_REF in the header file (foo.h) like this:
2319
2320         OPENSSL_DECLARE_GLOBAL(int,foo);
2321         #define foo OPENSSL_GLOBAL_REF(foo)
2322         OPENSSL_DECLARE_GLOBAL(double,bar);
2323         #define bar OPENSSL_GLOBAL_REF(bar)
2324
2325      The #defines are very important, and therefore so is including the
2326      header file everywhere where the defined globals are used.
2327
2328      The macro OPENSSL_EXPORT_VAR_AS_FUNCTION also affects the definition
2329      of ASN.1 items, but that structure is a bit different.
2330
2331      The largest change is in util/mkdef.pl which has been enhanced with
2332      better and easier to understand logic to choose which symbols should
2333      go into the Windows .def files as well as a number of fixes and code
2334      cleanup (among others, algorithm keywords are now sorted
2335      lexicographically to avoid constant rewrites).
2336      [Richard Levitte]
2337
2338   *) In BN_div() keep a copy of the sign of 'num' before writing the
2339      result to 'rm' because if rm==num the value will be overwritten
2340      and produce the wrong result if 'num' is negative: this caused
2341      problems with BN_mod() and BN_nnmod().
2342      [Steve Henson]
2343
2344   *) Function OCSP_request_verify(). This checks the signature on an
2345      OCSP request and verifies the signer certificate. The signer
2346      certificate is just checked for a generic purpose and OCSP request
2347      trust settings.
2348      [Steve Henson]
2349
2350   *) Add OCSP_check_validity() function to check the validity of OCSP
2351      responses. OCSP responses are prepared in real time and may only
2352      be a few seconds old. Simply checking that the current time lies
2353      between thisUpdate and nextUpdate max reject otherwise valid responses
2354      caused by either OCSP responder or client clock inaccuracy. Instead
2355      we allow thisUpdate and nextUpdate to fall within a certain period of
2356      the current time. The age of the response can also optionally be
2357      checked. Two new options -validity_period and -status_age added to
2358      ocsp utility.
2359      [Steve Henson]
2360
2361   *) If signature or public key algorithm is unrecognized print out its
2362      OID rather that just UNKNOWN.
2363      [Steve Henson]
2364
2365   *) Change OCSP_cert_to_id() to tolerate a NULL subject certificate and
2366      OCSP_cert_id_new() a NULL serialNumber. This allows a partial certificate
2367      ID to be generated from the issuer certificate alone which can then be
2368      passed to OCSP_id_issuer_cmp().
2369      [Steve Henson]
2370
2371   *) New compilation option ASN1_ITEM_FUNCTIONS. This causes the new
2372      ASN1 modules to export functions returning ASN1_ITEM pointers
2373      instead of the ASN1_ITEM structures themselves. This adds several
2374      new macros which allow the underlying ASN1 function/structure to
2375      be accessed transparently. As a result code should not use ASN1_ITEM
2376      references directly (such as &X509_it) but instead use the relevant
2377      macros (such as ASN1_ITEM_rptr(X509)). This option is to allow
2378      use of the new ASN1 code on platforms where exporting structures
2379      is problematical (for example in shared libraries) but exporting
2380      functions returning pointers to structures is not.
2381      [Steve Henson]
2382
2383   *) Add support for overriding the generation of SSL/TLS session IDs.
2384      These callbacks can be registered either in an SSL_CTX or per SSL.
2385      The purpose of this is to allow applications to control, if they wish,
2386      the arbitrary values chosen for use as session IDs, particularly as it
2387      can be useful for session caching in multiple-server environments. A
2388      command-line switch for testing this (and any client code that wishes
2389      to use such a feature) has been added to "s_server".
2390      [Geoff Thorpe, Lutz Jaenicke]
2391
2392   *) Modify mkdef.pl to recognise and parse preprocessor conditionals
2393      of the form '#if defined(...) || defined(...) || ...' and
2394      '#if !defined(...) && !defined(...) && ...'.  This also avoids
2395      the growing number of special cases it was previously handling.
2396      [Richard Levitte]
2397
2398   *) Make all configuration macros available for application by making
2399      sure they are available in opensslconf.h, by giving them names starting
2400      with "OPENSSL_" to avoid conflicts with other packages and by making
2401      sure e_os2.h will cover all platform-specific cases together with
2402      opensslconf.h.
2403      Additionally, it is now possible to define configuration/platform-
2404      specific names (called "system identities").  In the C code, these
2405      are prefixed with "OPENSSL_SYSNAME_".  e_os2.h will create another
2406      macro with the name beginning with "OPENSSL_SYS_", which is determined
2407      from "OPENSSL_SYSNAME_*" or compiler-specific macros depending on
2408      what is available.
2409      [Richard Levitte]
2410
2411   *) New option -set_serial to 'req' and 'x509' this allows the serial
2412      number to use to be specified on the command line. Previously self
2413      signed certificates were hard coded with serial number 0 and the 
2414      CA options of 'x509' had to use a serial number in a file which was
2415      auto incremented.
2416      [Steve Henson]
2417
2418   *) New options to 'ca' utility to support V2 CRL entry extensions.
2419      Currently CRL reason, invalidity date and hold instruction are
2420      supported. Add new CRL extensions to V3 code and some new objects.
2421      [Steve Henson]
2422
2423   *) New function EVP_CIPHER_CTX_set_padding() this is used to
2424      disable standard block padding (aka PKCS#5 padding) in the EVP
2425      API, which was previously mandatory. This means that the data is
2426      not padded in any way and so the total length much be a multiple
2427      of the block size, otherwise an error occurs.
2428      [Steve Henson]
2429
2430   *) Initial (incomplete) OCSP SSL support.
2431      [Steve Henson]
2432
2433   *) New function OCSP_parse_url(). This splits up a URL into its host,
2434      port and path components: primarily to parse OCSP URLs. New -url
2435      option to ocsp utility.
2436      [Steve Henson]
2437
2438   *) New nonce behavior. The return value of OCSP_check_nonce() now 
2439      reflects the various checks performed. Applications can decide
2440      whether to tolerate certain situations such as an absent nonce
2441      in a response when one was present in a request: the ocsp application
2442      just prints out a warning. New function OCSP_add1_basic_nonce()
2443      this is to allow responders to include a nonce in a response even if
2444      the request is nonce-less.
2445      [Steve Henson]
2446
2447   *) Disable stdin buffering in load_cert (apps/apps.c) so that no certs are
2448      skipped when using openssl x509 multiple times on a single input file,
2449      e.g. "(openssl x509 -out cert1; openssl x509 -out cert2) <certs".
2450      [Bodo Moeller]
2451
2452   *) Make ASN1_UTCTIME_set_string() and ASN1_GENERALIZEDTIME_set_string()
2453      set string type: to handle setting ASN1_TIME structures. Fix ca
2454      utility to correctly initialize revocation date of CRLs.
2455      [Steve Henson]
2456
2457   *) New option SSL_OP_CIPHER_SERVER_PREFERENCE allows the server to override
2458      the clients preferred ciphersuites and rather use its own preferences.
2459      Should help to work around M$ SGC (Server Gated Cryptography) bug in
2460      Internet Explorer by ensuring unchanged hash method during stepup.
2461      (Also replaces the broken/deactivated SSL_OP_NON_EXPORT_FIRST option.)
2462      [Lutz Jaenicke]
2463
2464   *) Make mkdef.pl recognise all DECLARE_ASN1 macros, change rijndael
2465      to aes and add a new 'exist' option to print out symbols that don't
2466      appear to exist.
2467      [Steve Henson]
2468
2469   *) Additional options to ocsp utility to allow flags to be set and
2470      additional certificates supplied.
2471      [Steve Henson]
2472
2473   *) Add the option -VAfile to 'openssl ocsp', so the user can give the
2474      OCSP client a number of certificate to only verify the response
2475      signature against.
2476      [Richard Levitte]
2477
2478   *) Update Rijndael code to version 3.0 and change EVP AES ciphers to
2479      handle the new API. Currently only ECB, CBC modes supported. Add new
2480      AES OIDs.
2481
2482      Add TLS AES ciphersuites as described in RFC3268, "Advanced
2483      Encryption Standard (AES) Ciphersuites for Transport Layer
2484      Security (TLS)".  (In beta versions of OpenSSL 0.9.7, these were
2485      not enabled by default and were not part of the "ALL" ciphersuite
2486      alias because they were not yet official; they could be
2487      explicitly requested by specifying the "AESdraft" ciphersuite
2488      group alias.  In the final release of OpenSSL 0.9.7, the group
2489      alias is called "AES" and is part of "ALL".)
2490      [Ben Laurie, Steve  Henson, Bodo Moeller]
2491
2492   *) New function OCSP_copy_nonce() to copy nonce value (if present) from
2493      request to response.
2494      [Steve Henson]
2495
2496   *) Functions for OCSP responders. OCSP_request_onereq_count(),
2497      OCSP_request_onereq_get0(), OCSP_onereq_get0_id() and OCSP_id_get0_info()
2498      extract information from a certificate request. OCSP_response_create()
2499      creates a response and optionally adds a basic response structure.
2500      OCSP_basic_add1_status() adds a complete single response to a basic
2501      response and returns the OCSP_SINGLERESP structure just added (to allow
2502      extensions to be included for example). OCSP_basic_add1_cert() adds a
2503      certificate to a basic response and OCSP_basic_sign() signs a basic
2504      response with various flags. New helper functions ASN1_TIME_check()
2505      (checks validity of ASN1_TIME structure) and ASN1_TIME_to_generalizedtime()
2506      (converts ASN1_TIME to GeneralizedTime).
2507      [Steve Henson]
2508
2509   *) Various new functions. EVP_Digest() combines EVP_Digest{Init,Update,Final}()
2510      in a single operation. X509_get0_pubkey_bitstr() extracts the public_key
2511      structure from a certificate. X509_pubkey_digest() digests the public_key
2512      contents: this is used in various key identifiers. 
2513      [Steve Henson]
2514
2515   *) Make sk_sort() tolerate a NULL argument.
2516      [Steve Henson reported by Massimiliano Pala <madwolf@comune.modena.it>]
2517
2518   *) New OCSP verify flag OCSP_TRUSTOTHER. When set the "other" certificates
2519      passed by the function are trusted implicitly. If any of them signed the
2520      response then it is assumed to be valid and is not verified.
2521      [Steve Henson]
2522
2523   *) In PKCS7_set_type() initialise content_type in PKCS7_ENC_CONTENT
2524      to data. This was previously part of the PKCS7 ASN1 code. This
2525      was causing problems with OpenSSL created PKCS#12 and PKCS#7 structures.
2526      [Steve Henson, reported by Kenneth R. Robinette
2527                                 <support@securenetterm.com>]
2528
2529   *) Add CRYPTO_push_info() and CRYPTO_pop_info() calls to new ASN1
2530      routines: without these tracing memory leaks is very painful.
2531      Fix leaks in PKCS12 and PKCS7 routines.
2532      [Steve Henson]
2533
2534   *) Make X509_time_adj() cope with the new behaviour of ASN1_TIME_new().
2535      Previously it initialised the 'type' argument to V_ASN1_UTCTIME which
2536      effectively meant GeneralizedTime would never be used. Now it
2537      is initialised to -1 but X509_time_adj() now has to check the value
2538      and use ASN1_TIME_set() if the value is not V_ASN1_UTCTIME or
2539      V_ASN1_GENERALIZEDTIME, without this it always uses GeneralizedTime.
2540      [Steve Henson, reported by Kenneth R. Robinette
2541                                 <support@securenetterm.com>]
2542
2543   *) Fixes to BN_to_ASN1_INTEGER when bn is zero. This would previously
2544      result in a zero length in the ASN1_INTEGER structure which was
2545      not consistent with the structure when d2i_ASN1_INTEGER() was used
2546      and would cause ASN1_INTEGER_cmp() to fail. Enhance s2i_ASN1_INTEGER()
2547      to cope with hex and negative integers. Fix bug in i2a_ASN1_INTEGER()
2548      where it did not print out a minus for negative ASN1_INTEGER.
2549      [Steve Henson]
2550
2551   *) Add summary printout to ocsp utility. The various functions which
2552      convert status values to strings have been renamed to:
2553      OCSP_response_status_str(), OCSP_cert_status_str() and
2554      OCSP_crl_reason_str() and are no longer static. New options
2555      to verify nonce values and to disable verification. OCSP response
2556      printout format cleaned up.
2557      [Steve Henson]
2558
2559   *) Add additional OCSP certificate checks. These are those specified
2560      in RFC2560. This consists of two separate checks: the CA of the
2561      certificate being checked must either be the OCSP signer certificate
2562      or the issuer of the OCSP signer certificate. In the latter case the
2563      OCSP signer certificate must contain the OCSP signing extended key
2564      usage. This check is performed by attempting to match the OCSP
2565      signer or the OCSP signer CA to the issuerNameHash and issuerKeyHash
2566      in the OCSP_CERTID structures of the response.
2567      [Steve Henson]
2568
2569   *) Initial OCSP certificate verification added to OCSP_basic_verify()
2570      and related routines. This uses the standard OpenSSL certificate
2571      verify routines to perform initial checks (just CA validity) and
2572      to obtain the certificate chain. Then additional checks will be
2573      performed on the chain. Currently the root CA is checked to see
2574      if it is explicitly trusted for OCSP signing. This is used to set
2575      a root CA as a global signing root: that is any certificate that
2576      chains to that CA is an acceptable OCSP signing certificate.
2577      [Steve Henson]
2578
2579   *) New '-extfile ...' option to 'openssl ca' for reading X.509v3
2580      extensions from a separate configuration file.
2581      As when reading extensions from the main configuration file,
2582      the '-extensions ...' option may be used for specifying the
2583      section to use.
2584      [Massimiliano Pala <madwolf@comune.modena.it>]
2585
2586   *) New OCSP utility. Allows OCSP requests to be generated or
2587      read. The request can be sent to a responder and the output
2588      parsed, outputed or printed in text form. Not complete yet:
2589      still needs to check the OCSP response validity.
2590      [Steve Henson]
2591
2592   *) New subcommands for 'openssl ca':
2593      'openssl ca -status <serial>' prints the status of the cert with
2594      the given serial number (according to the index file).
2595      'openssl ca -updatedb' updates the expiry status of certificates
2596      in the index file.
2597      [Massimiliano Pala <madwolf@comune.modena.it>]
2598
2599   *) New '-newreq-nodes' command option to CA.pl.  This is like
2600      '-newreq', but calls 'openssl req' with the '-nodes' option
2601      so that the resulting key is not encrypted.
2602      [Damien Miller <djm@mindrot.org>]
2603
2604   *) New configuration for the GNU Hurd.
2605      [Jonathan Bartlett <johnnyb@wolfram.com> via Richard Levitte]
2606
2607   *) Initial code to implement OCSP basic response verify. This
2608      is currently incomplete. Currently just finds the signer's
2609      certificate and verifies the signature on the response.
2610      [Steve Henson]
2611
2612   *) New SSLeay_version code SSLEAY_DIR to determine the compiled-in
2613      value of OPENSSLDIR.  This is available via the new '-d' option
2614      to 'openssl version', and is also included in 'openssl version -a'.
2615      [Bodo Moeller]
2616
2617   *) Allowing defining memory allocation callbacks that will be given
2618      file name and line number information in additional arguments
2619      (a const char* and an int).  The basic functionality remains, as
2620      well as the original possibility to just replace malloc(),
2621      realloc() and free() by functions that do not know about these
2622      additional arguments.  To register and find out the current
2623      settings for extended allocation functions, the following
2624      functions are provided:
2625
2626         CRYPTO_set_mem_ex_functions
2627         CRYPTO_set_locked_mem_ex_functions
2628         CRYPTO_get_mem_ex_functions
2629         CRYPTO_get_locked_mem_ex_functions
2630
2631      These work the same way as CRYPTO_set_mem_functions and friends.
2632      CRYPTO_get_[locked_]mem_functions now writes 0 where such an
2633      extended allocation function is enabled.
2634      Similarly, CRYPTO_get_[locked_]mem_ex_functions writes 0 where
2635      a conventional allocation function is enabled.
2636      [Richard Levitte, Bodo Moeller]
2637
2638   *) Finish off removing the remaining LHASH function pointer casts.
2639      There should no longer be any prototype-casting required when using
2640      the LHASH abstraction, and any casts that remain are "bugs". See
2641      the callback types and macros at the head of lhash.h for details
2642      (and "OBJ_cleanup" in crypto/objects/obj_dat.c as an example).
2643      [Geoff Thorpe]
2644
2645   *) Add automatic query of EGD sockets in RAND_poll() for the unix variant.
2646      If /dev/[u]random devices are not available or do not return enough
2647      entropy, EGD style sockets (served by EGD or PRNGD) will automatically
2648      be queried.
2649      The locations /var/run/egd-pool, /dev/egd-pool, /etc/egd-pool, and
2650      /etc/entropy will be queried once each in this sequence, quering stops
2651      when enough entropy was collected without querying more sockets.
2652      [Lutz Jaenicke]
2653
2654   *) Change the Unix RAND_poll() variant to be able to poll several
2655      random devices, as specified by DEVRANDOM, until a sufficient amount
2656      of data has been collected.   We spend at most 10 ms on each file
2657      (select timeout) and read in non-blocking mode.  DEVRANDOM now
2658      defaults to the list "/dev/urandom", "/dev/random", "/dev/srandom"
2659      (previously it was just the string "/dev/urandom"), so on typical
2660      platforms the 10 ms delay will never occur.
2661      Also separate out the Unix variant to its own file, rand_unix.c.
2662      For VMS, there's a currently-empty rand_vms.c.
2663      [Richard Levitte]
2664
2665   *) Move OCSP client related routines to ocsp_cl.c. These
2666      provide utility functions which an application needing
2667      to issue a request to an OCSP responder and analyse the
2668      response will typically need: as opposed to those which an
2669      OCSP responder itself would need which will be added later.
2670
2671      OCSP_request_sign() signs an OCSP request with an API similar
2672      to PKCS7_sign(). OCSP_response_status() returns status of OCSP
2673      response. OCSP_response_get1_basic() extracts basic response
2674      from response. OCSP_resp_find_status(): finds and extracts status
2675      information from an OCSP_CERTID structure (which will be created
2676      when the request structure is built). These are built from lower
2677      level functions which work on OCSP_SINGLERESP structures but
2678      wont normally be used unless the application wishes to examine
2679      extensions in the OCSP response for example.
2680
2681      Replace nonce routines with a pair of functions.
2682      OCSP_request_add1_nonce() adds a nonce value and optionally
2683      generates a random value. OCSP_check_nonce() checks the
2684      validity of the nonce in an OCSP response.
2685      [Steve Henson]
2686
2687   *) Change function OCSP_request_add() to OCSP_request_add0_id().
2688      This doesn't copy the supplied OCSP_CERTID and avoids the
2689      need to free up the newly created id. Change return type
2690      to OCSP_ONEREQ to return the internal OCSP_ONEREQ structure.
2691      This can then be used to add extensions to the request.
2692      Deleted OCSP_request_new(), since most of its functionality
2693      is now in OCSP_REQUEST_new() (and the case insensitive name
2694      clash) apart from the ability to set the request name which
2695      will be added elsewhere.
2696      [Steve Henson]
2697
2698   *) Update OCSP API. Remove obsolete extensions argument from
2699      various functions. Extensions are now handled using the new
2700      OCSP extension code. New simple OCSP HTTP function which 
2701      can be used to send requests and parse the response.
2702      [Steve Henson]
2703
2704   *) Fix the PKCS#7 (S/MIME) code to work with new ASN1. Two new
2705      ASN1_ITEM structures help with sign and verify. PKCS7_ATTR_SIGN
2706      uses the special reorder version of SET OF to sort the attributes
2707      and reorder them to match the encoded order. This resolves a long
2708      standing problem: a verify on a PKCS7 structure just after signing
2709      it used to fail because the attribute order did not match the
2710      encoded order. PKCS7_ATTR_VERIFY does not reorder the attributes:
2711      it uses the received order. This is necessary to tolerate some broken
2712      software that does not order SET OF. This is handled by encoding
2713      as a SEQUENCE OF but using implicit tagging (with UNIVERSAL class)
2714      to produce the required SET OF.
2715      [Steve Henson]
2716
2717   *) Have mk1mf.pl generate the macros OPENSSL_BUILD_SHLIBCRYPTO and
2718      OPENSSL_BUILD_SHLIBSSL and use them appropriately in the header
2719      files to get correct declarations of the ASN.1 item variables.
2720      [Richard Levitte]
2721
2722   *) Rewrite of PKCS#12 code to use new ASN1 functionality. Replace many
2723      PKCS#12 macros with real functions. Fix two unrelated ASN1 bugs:
2724      asn1_check_tlen() would sometimes attempt to use 'ctx' when it was
2725      NULL and ASN1_TYPE was not dereferenced properly in asn1_ex_c2i().
2726      New ASN1 macro: DECLARE_ASN1_ITEM() which just declares the relevant
2727      ASN1_ITEM and no wrapper functions.
2728      [Steve Henson]
2729
2730   *) New functions or ASN1_item_d2i_fp() and ASN1_item_d2i_bio(). These
2731      replace the old function pointer based I/O routines. Change most of
2732      the *_d2i_bio() and *_d2i_fp() functions to use these.
2733      [Steve Henson]
2734
2735   *) Enhance mkdef.pl to be more accepting about spacing in C preprocessor
2736      lines, recognice more "algorithms" that can be deselected, and make
2737      it complain about algorithm deselection that isn't recognised.
2738      [Richard Levitte]
2739
2740   *) New ASN1 functions to handle dup, sign, verify, digest, pack and
2741      unpack operations in terms of ASN1_ITEM. Modify existing wrappers
2742      to use new functions. Add NO_ASN1_OLD which can be set to remove
2743      some old style ASN1 functions: this can be used to determine if old
2744      code will still work when these eventually go away.
2745      [Steve Henson]
2746
2747   *) New extension functions for OCSP structures, these follow the
2748      same conventions as certificates and CRLs.
2749      [Steve Henson]
2750
2751   *) New function X509V3_add1_i2d(). This automatically encodes and
2752      adds an extension. Its behaviour can be customised with various
2753      flags to append, replace or delete. Various wrappers added for
2754      certifcates and CRLs.
2755      [Steve Henson]
2756
2757   *) Fix to avoid calling the underlying ASN1 print routine when
2758      an extension cannot be parsed. Correct a typo in the
2759      OCSP_SERVICELOC extension. Tidy up print OCSP format.
2760      [Steve Henson]
2761
2762   *) Make mkdef.pl parse some of the ASN1 macros and add apropriate
2763      entries for variables.
2764      [Steve Henson]
2765
2766   *) Add functionality to apps/openssl.c for detecting locking
2767      problems: As the program is single-threaded, all we have
2768      to do is register a locking callback using an array for
2769      storing which locks are currently held by the program.
2770      [Bodo Moeller]
2771
2772   *) Use a lock around the call to CRYPTO_get_ex_new_index() in
2773      SSL_get_ex_data_X509_STORE_idx(), which is used in
2774      ssl_verify_cert_chain() and thus can be called at any time
2775      during TLS/SSL handshakes so that thread-safety is essential.
2776      Unfortunately, the ex_data design is not at all suited
2777      for multi-threaded use, so it probably should be abolished.
2778      [Bodo Moeller]
2779
2780   *) Added Broadcom "ubsec" ENGINE to OpenSSL.
2781      [Broadcom, tweaked and integrated by Geoff Thorpe]
2782
2783   *) Move common extension printing code to new function
2784      X509V3_print_extensions(). Reorganise OCSP print routines and
2785      implement some needed OCSP ASN1 functions. Add OCSP extensions.
2786      [Steve Henson]
2787
2788   *) New function X509_signature_print() to remove duplication in some
2789      print routines.
2790      [Steve Henson]
2791
2792   *) Add a special meaning when SET OF and SEQUENCE OF flags are both
2793      set (this was treated exactly the same as SET OF previously). This
2794      is used to reorder the STACK representing the structure to match the
2795      encoding. This will be used to get round a problem where a PKCS7
2796      structure which was signed could not be verified because the STACK
2797      order did not reflect the encoded order.
2798      [Steve Henson]
2799
2800   *) Reimplement the OCSP ASN1 module using the new code.
2801      [Steve Henson]
2802
2803   *) Update the X509V3 code to permit the use of an ASN1_ITEM structure
2804      for its ASN1 operations. The old style function pointers still exist
2805      for now but they will eventually go away.
2806      [Steve Henson]
2807
2808   *) Merge in replacement ASN1 code from the ASN1 branch. This almost
2809      completely replaces the old ASN1 functionality with a table driven
2810      encoder and decoder which interprets an ASN1_ITEM structure describing
2811      the ASN1 module. Compatibility with the existing ASN1 API (i2d,d2i) is
2812      largely maintained. Almost all of the old asn1_mac.h macro based ASN1
2813      has also been converted to the new form.
2814      [Steve Henson]
2815
2816   *) Change BN_mod_exp_recp so that negative moduli are tolerated
2817      (the sign is ignored).  Similarly, ignore the sign in BN_MONT_CTX_set
2818      so that BN_mod_exp_mont and BN_mod_exp_mont_word work
2819      for negative moduli.
2820      [Bodo Moeller]
2821
2822   *) Fix BN_uadd and BN_usub: Always return non-negative results instead
2823      of not touching the result's sign bit.
2824      [Bodo Moeller]
2825
2826   *) BN_div bugfix: If the result is 0, the sign (res->neg) must not be
2827      set.
2828      [Bodo Moeller]
2829
2830   *) Changed the LHASH code to use prototypes for callbacks, and created
2831      macros to declare and implement thin (optionally static) functions
2832      that provide type-safety and avoid function pointer casting for the
2833      type-specific callbacks.
2834      [Geoff Thorpe]
2835
2836   *) Added Kerberos Cipher Suites to be used with TLS, as written in
2837      RFC 2712.
2838      [Veers Staats <staatsvr@asc.hpc.mil>,
2839       Jeffrey Altman <jaltman@columbia.edu>, via Richard Levitte]
2840
2841   *) Reformat the FAQ so the different questions and answers can be divided
2842      in sections depending on the subject.
2843      [Richard Levitte]
2844
2845   *) Have the zlib compression code load ZLIB.DLL dynamically under
2846      Windows.
2847      [Richard Levitte]
2848
2849   *) New function BN_mod_sqrt for computing square roots modulo a prime
2850      (using the probabilistic Tonelli-Shanks algorithm unless
2851      p == 3 (mod 4)  or  p == 5 (mod 8),  which are cases that can
2852      be handled deterministically).
2853      [Lenka Fibikova <fibikova@exp-math.uni-essen.de>, Bodo Moeller]
2854
2855   *) Make BN_mod_inverse faster by explicitly handling small quotients
2856      in the Euclid loop. (Speed gain about 20% for small moduli [256 or
2857      512 bits], about 30% for larger ones [1024 or 2048 bits].)
2858      [Bodo Moeller]
2859
2860   *) New function BN_kronecker.
2861      [Bodo Moeller]
2862
2863   *) Fix BN_gcd so that it works on negative inputs; the result is
2864      positive unless both parameters are zero.
2865      Previously something reasonably close to an infinite loop was
2866      possible because numbers could be growing instead of shrinking
2867      in the implementation of Euclid's algorithm.
2868      [Bodo Moeller]
2869
2870   *) Fix BN_is_word() and BN_is_one() macros to take into account the
2871      sign of the number in question.
2872
2873      Fix BN_is_word(a,w) to work correctly for w == 0.
2874
2875      The old BN_is_word(a,w) macro is now called BN_abs_is_word(a,w)
2876      because its test if the absolute value of 'a' equals 'w'.
2877      Note that BN_abs_is_word does *not* handle w == 0 reliably;
2878      it exists mostly for use in the implementations of BN_is_zero(),
2879      BN_is_one(), and BN_is_word().
2880      [Bodo Moeller]
2881
2882   *) New function BN_swap.
2883      [Bodo Moeller]
2884
2885   *) Use BN_nnmod instead of BN_mod in crypto/bn/bn_exp.c so that
2886      the exponentiation functions are more likely to produce reasonable
2887      results on negative inputs.
2888      [Bodo Moeller]
2889
2890   *) Change BN_mod_mul so that the result is always non-negative.
2891      Previously, it could be negative if one of the factors was negative;
2892      I don't think anyone really wanted that behaviour.
2893      [Bodo Moeller]
2894
2895   *) Move BN_mod_... functions into new file crypto/bn/bn_mod.c
2896      (except for exponentiation, which stays in crypto/bn/bn_exp.c,
2897      and BN_mod_mul_reciprocal, which stays in crypto/bn/bn_recp.c)
2898      and add new functions:
2899
2900           BN_nnmod
2901           BN_mod_sqr
2902           BN_mod_add
2903           BN_mod_add_quick
2904           BN_mod_sub
2905           BN_mod_sub_quick
2906           BN_mod_lshift1
2907           BN_mod_lshift1_quick
2908           BN_mod_lshift
2909           BN_mod_lshift_quick
2910
2911      These functions always generate non-negative results.
2912
2913      BN_nnmod otherwise is like BN_mod (if BN_mod computes a remainder  r
2914      such that  |m| < r < 0,  BN_nnmod will output  rem + |m|  instead).
2915
2916      BN_mod_XXX_quick(r, a, [b,] m) generates the same result as
2917      BN_mod_XXX(r, a, [b,] m, ctx), but requires that  a  [and  b]
2918      be reduced modulo  m.
2919      [Lenka Fibikova <fibikova@exp-math.uni-essen.de>, Bodo Moeller]
2920
2921 #if 0
2922      The following entry accidentily appeared in the CHANGES file
2923      distributed with OpenSSL 0.9.7.  The modifications described in
2924      it do *not* apply to OpenSSL 0.9.7.
2925
2926   *) Remove a few calls to bn_wexpand() in BN_sqr() (the one in there
2927      was actually never needed) and in BN_mul().  The removal in BN_mul()
2928      required a small change in bn_mul_part_recursive() and the addition
2929      of the functions bn_cmp_part_words(), bn_sub_part_words() and
2930      bn_add_part_words(), which do the same thing as bn_cmp_words(),
2931      bn_sub_words() and bn_add_words() except they take arrays with
2932      differing sizes.
2933      [Richard Levitte]
2934 #endif
2935
2936   *) In 'openssl passwd', verify passwords read from the terminal
2937      unless the '-salt' option is used (which usually means that
2938      verification would just waste user's time since the resulting
2939      hash is going to be compared with some given password hash)
2940      or the new '-noverify' option is used.
2941
2942      This is an incompatible change, but it does not affect
2943      non-interactive use of 'openssl passwd' (passwords on the command
2944      line, '-stdin' option, '-in ...' option) and thus should not
2945      cause any problems.
2946      [Bodo Moeller]
2947
2948   *) Remove all references to RSAref, since there's no more need for it.
2949      [Richard Levitte]
2950
2951   *) Make DSO load along a path given through an environment variable
2952      (SHLIB_PATH) with shl_load().
2953      [Richard Levitte]
2954
2955   *) Constify the ENGINE code as a result of BIGNUM constification.
2956      Also constify the RSA code and most things related to it.  In a
2957      few places, most notable in the depth of the ASN.1 code, ugly
2958      casts back to non-const were required (to be solved at a later
2959      time)
2960      [Richard Levitte]
2961
2962   *) Make it so the openssl application has all engines loaded by default.
2963      [Richard Levitte]
2964
2965   *) Constify the BIGNUM routines a little more.
2966      [Richard Levitte]
2967
2968   *) Add the following functions:
2969
2970         ENGINE_load_cswift()
2971         ENGINE_load_chil()
2972         ENGINE_load_atalla()
2973         ENGINE_load_nuron()
2974         ENGINE_load_builtin_engines()
2975
2976      That way, an application can itself choose if external engines that
2977      are built-in in OpenSSL shall ever be used or not.  The benefit is
2978      that applications won't have to be linked with libdl or other dso
2979      libraries unless it's really needed.
2980
2981      Changed 'openssl engine' to load all engines on demand.
2982      Changed the engine header files to avoid the duplication of some
2983      declarations (they differed!).
2984      [Richard Levitte]
2985
2986   *) 'openssl engine' can now list capabilities.
2987      [Richard Levitte]
2988
2989   *) Better error reporting in 'openssl engine'.
2990      [Richard Levitte]
2991
2992   *) Never call load_dh_param(NULL) in s_server.
2993      [Bodo Moeller]
2994
2995   *) Add engine application.  It can currently list engines by name and
2996      identity, and test if they are actually available.
2997      [Richard Levitte]
2998
2999   *) Improve RPM specification file by forcing symbolic linking and making
3000      sure the installed documentation is also owned by root.root.
3001      [Damien Miller <djm@mindrot.org>]
3002
3003   *) Give the OpenSSL applications more possibilities to make use of
3004      keys (public as well as private) handled by engines.
3005      [Richard Levitte]
3006
3007   *) Add OCSP code that comes from CertCo.
3008      [Richard Levitte]
3009
3010   *) Add VMS support for the Rijndael code.
3011      [Richard Levitte]
3012
3013   *) Added untested support for Nuron crypto accelerator.
3014      [Ben Laurie]
3015
3016   *) Add support for external cryptographic devices.  This code was
3017      previously distributed separately as the "engine" branch.
3018      [Geoff Thorpe, Richard Levitte]
3019
3020   *) Rework the filename-translation in the DSO code. It is now possible to
3021      have far greater control over how a "name" is turned into a filename
3022      depending on the operating environment and any oddities about the
3023      different shared library filenames on each system.
3024      [Geoff Thorpe]
3025
3026   *) Support threads on FreeBSD-elf in Configure.
3027      [Richard Levitte]
3028
3029   *) Fix for SHA1 assembly problem with MASM: it produces
3030      warnings about corrupt line number information when assembling
3031      with debugging information. This is caused by the overlapping
3032      of two sections.
3033      [Bernd Matthes <mainbug@celocom.de>, Steve Henson]
3034
3035   *) NCONF changes.
3036      NCONF_get_number() has no error checking at all.  As a replacement,
3037      NCONF_get_number_e() is defined (_e for "error checking") and is
3038      promoted strongly.  The old NCONF_get_number is kept around for
3039      binary backward compatibility.
3040      Make it possible for methods to load from something other than a BIO,
3041      by providing a function pointer that is given a name instead of a BIO.
3042      For example, this could be used to load configuration data from an
3043      LDAP server.
3044      [Richard Levitte]
3045
3046   *) Fix for non blocking accept BIOs. Added new I/O special reason
3047      BIO_RR_ACCEPT to cover this case. Previously use of accept BIOs
3048      with non blocking I/O was not possible because no retry code was
3049      implemented. Also added new SSL code SSL_WANT_ACCEPT to cover
3050      this case.
3051      [Steve Henson]
3052
3053   *) Added the beginnings of Rijndael support.
3054      [Ben Laurie]
3055
3056   *) Fix for bug in DirectoryString mask setting. Add support for
3057      X509_NAME_print_ex() in 'req' and X509_print_ex() function
3058      to allow certificate printing to more controllable, additional
3059      'certopt' option to 'x509' to allow new printing options to be
3060      set.
3061      [Steve Henson]
3062
3063   *) Clean old EAY MD5 hack from e_os.h.
3064      [Richard Levitte]
3065
3066  Changes between 0.9.6l and 0.9.6m  [17 Mar 2004]
3067
3068   *) Fix null-pointer assignment in do_change_cipher_spec() revealed
3069      by using the Codenomicon TLS Test Tool (CAN-2004-0079)
3070      [Joe Orton, Steve Henson]
3071
3072  Changes between 0.9.6k and 0.9.6l  [04 Nov 2003]
3073
3074   *) Fix additional bug revealed by the NISCC test suite:
3075
3076      Stop bug triggering large recursion when presented with
3077      certain ASN.1 tags (CAN-2003-0851)
3078      [Steve Henson]
3079
3080  Changes between 0.9.6j and 0.9.6k  [30 Sep 2003]
3081
3082   *) Fix various bugs revealed by running the NISCC test suite:
3083
3084      Stop out of bounds reads in the ASN1 code when presented with
3085      invalid tags (CAN-2003-0543 and CAN-2003-0544).
3086      
3087      If verify callback ignores invalid public key errors don't try to check
3088      certificate signature with the NULL public key.
3089
3090      [Steve Henson]
3091
3092   *) In ssl3_accept() (ssl/s3_srvr.c) only accept a client certificate
3093      if the server requested one: as stated in TLS 1.0 and SSL 3.0
3094      specifications.
3095      [Steve Henson]
3096
3097   *) In ssl3_get_client_hello() (ssl/s3_srvr.c), tolerate additional
3098      extra data after the compression methods not only for TLS 1.0
3099      but also for SSL 3.0 (as required by the specification).
3100      [Bodo Moeller; problem pointed out by Matthias Loepfe]
3101
3102   *) Change X509_certificate_type() to mark the key as exported/exportable
3103      when it's 512 *bits* long, not 512 bytes.
3104      [Richard Levitte]
3105
3106  Changes between 0.9.6i and 0.9.6j  [10 Apr 2003]
3107
3108   *) Countermeasure against the Klima-Pokorny-Rosa extension of
3109      Bleichbacher's attack on PKCS #1 v1.5 padding: treat
3110      a protocol version number mismatch like a decryption error
3111      in ssl3_get_client_key_exchange (ssl/s3_srvr.c).
3112      [Bodo Moeller]
3113
3114   *) Turn on RSA blinding by default in the default implementation
3115      to avoid a timing attack. Applications that don't want it can call
3116      RSA_blinding_off() or use the new flag RSA_FLAG_NO_BLINDING.
3117      They would be ill-advised to do so in most cases.
3118      [Ben Laurie, Steve Henson, Geoff Thorpe, Bodo Moeller]
3119
3120   *) Change RSA blinding code so that it works when the PRNG is not
3121      seeded (in this case, the secret RSA exponent is abused as
3122      an unpredictable seed -- if it is not unpredictable, there
3123      is no point in blinding anyway).  Make RSA blinding thread-safe
3124      by remembering the creator's thread ID in rsa->blinding and
3125      having all other threads use local one-time blinding factors
3126      (this requires more computation than sharing rsa->blinding, but
3127      avoids excessive locking; and if an RSA object is not shared
3128      between threads, blinding will still be very fast).
3129      [Bodo Moeller]
3130
3131  Changes between 0.9.6h and 0.9.6i  [19 Feb 2003]
3132
3133   *) In ssl3_get_record (ssl/s3_pkt.c), minimize information leaked
3134      via timing by performing a MAC computation even if incorrrect
3135      block cipher padding has been found.  This is a countermeasure
3136      against active attacks where the attacker has to distinguish
3137      between bad padding and a MAC verification error. (CAN-2003-0078)
3138
3139      [Bodo Moeller; problem pointed out by Brice Canvel (EPFL),
3140      Alain Hiltgen (UBS), Serge Vaudenay (EPFL), and
3141      Martin Vuagnoux (EPFL, Ilion)]
3142
3143  Changes between 0.9.6g and 0.9.6h  [5 Dec 2002]
3144
3145   *) New function OPENSSL_cleanse(), which is used to cleanse a section of
3146      memory from it's contents.  This is done with a counter that will
3147      place alternating values in each byte.  This can be used to solve
3148      two issues: 1) the removal of calls to memset() by highly optimizing
3149      compilers, and 2) cleansing with other values than 0, since those can
3150      be read through on certain media, for example a swap space on disk.
3151      [Geoff Thorpe]
3152
3153   *) Bugfix: client side session caching did not work with external caching,
3154      because the session->cipher setting was not restored when reloading
3155      from the external cache. This problem was masked, when
3156      SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG (part of SSL_OP_ALL) was set.
3157      (Found by Steve Haslam <steve@araqnid.ddts.net>.)
3158      [Lutz Jaenicke]
3159
3160   *) Fix client_certificate (ssl/s2_clnt.c): The permissible total
3161      length of the REQUEST-CERTIFICATE message is 18 .. 34, not 17 .. 33.
3162      [Zeev Lieber <zeev-l@yahoo.com>]
3163
3164   *) Undo an undocumented change introduced in 0.9.6e which caused
3165      repeated calls to OpenSSL_add_all_ciphers() and 
3166      OpenSSL_add_all_digests() to be ignored, even after calling
3167      EVP_cleanup().
3168      [Richard Levitte]
3169
3170   *) Change the default configuration reader to deal with last line not
3171      being properly terminated.
3172      [Richard Levitte]
3173
3174   *) Change X509_NAME_cmp() so it applies the special rules on handling
3175      DN values that are of type PrintableString, as well as RDNs of type
3176      emailAddress where the value has the type ia5String.
3177      [stefank@valicert.com via Richard Levitte]
3178
3179   *) Add a SSL_SESS_CACHE_NO_INTERNAL_STORE flag to take over half
3180      the job SSL_SESS_CACHE_NO_INTERNAL_LOOKUP was inconsistently
3181      doing, define a new flag (SSL_SESS_CACHE_NO_INTERNAL) to be
3182      the bitwise-OR of the two for use by the majority of applications
3183      wanting this behaviour, and update the docs. The documented
3184      behaviour and actual behaviour were inconsistent and had been
3185      changing anyway, so this is more a bug-fix than a behavioural
3186      change.
3187      [Geoff Thorpe, diagnosed by Nadav Har'El]
3188
3189   *) Don't impose a 16-byte length minimum on session IDs in ssl/s3_clnt.c
3190      (the SSL 3.0 and TLS 1.0 specifications allow any length up to 32 bytes).
3191      [Bodo Moeller]
3192
3193   *) Fix initialization code race conditions in
3194         SSLv23_method(),  SSLv23_client_method(),   SSLv23_server_method(),
3195         SSLv2_method(),   SSLv2_client_method(),    SSLv2_server_method(),
3196         SSLv3_method(),   SSLv3_client_method(),    SSLv3_server_method(),
3197         TLSv1_method(),   TLSv1_client_method(),    TLSv1_server_method(),
3198         ssl2_get_cipher_by_char(),
3199         ssl3_get_cipher_by_char().
3200      [Patrick McCormick <patrick@tellme.com>, Bodo Moeller]
3201
3202   *) Reorder cleanup sequence in SSL_CTX_free(): only remove the ex_data after
3203      the cached sessions are flushed, as the remove_cb() might use ex_data
3204      contents. Bug found by Sam Varshavchik <mrsam@courier-mta.com>
3205      (see [openssl.org #212]).
3206      [Geoff Thorpe, Lutz Jaenicke]
3207
3208   *) Fix typo in OBJ_txt2obj which incorrectly passed the content
3209      length, instead of the encoding length to d2i_ASN1_OBJECT.
3210      [Steve Henson]
3211
3212  Changes between 0.9.6f and 0.9.6g  [9 Aug 2002]
3213
3214   *) [In 0.9.6g-engine release:]
3215      Fix crypto/engine/vendor_defns/cswift.h for WIN32 (use '_stdcall').
3216      [Lynn Gazis <lgazis@rainbow.com>]
3217
3218  Changes between 0.9.6e and 0.9.6f  [8 Aug 2002]
3219
3220   *) Fix ASN1 checks. Check for overflow by comparing with LONG_MAX
3221      and get fix the header length calculation.
3222      [Florian Weimer <Weimer@CERT.Uni-Stuttgart.DE>,
3223         Alon Kantor <alonk@checkpoint.com> (and others),
3224         Steve Henson]
3225
3226   *) Use proper error handling instead of 'assertions' in buffer
3227      overflow checks added in 0.9.6e.  This prevents DoS (the
3228      assertions could call abort()).
3229      [Arne Ansper <arne@ats.cyber.ee>, Bodo Moeller]
3230
3231  Changes between 0.9.6d and 0.9.6e  [30 Jul 2002]
3232
3233   *) Add various sanity checks to asn1_get_length() to reject
3234      the ASN1 length bytes if they exceed sizeof(long), will appear
3235      negative or the content length exceeds the length of the
3236      supplied buffer.
3237      [Steve Henson, Adi Stav <stav@mercury.co.il>, James Yonan <jim@ntlp.com>]
3238
3239   *) Fix cipher selection routines: ciphers without encryption had no flags
3240      for the cipher strength set and where therefore not handled correctly
3241      by the selection routines (PR #130).
3242      [Lutz Jaenicke]
3243
3244   *) Fix EVP_dsa_sha macro.
3245      [Nils Larsch]
3246
3247   *) New option
3248           SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS
3249      for disabling the SSL 3.0/TLS 1.0 CBC vulnerability countermeasure
3250      that was added in OpenSSL 0.9.6d.
3251
3252      As the countermeasure turned out to be incompatible with some
3253      broken SSL implementations, the new option is part of SSL_OP_ALL.
3254      SSL_OP_ALL is usually employed when compatibility with weird SSL
3255      implementations is desired (e.g. '-bugs' option to 's_client' and
3256      's_server'), so the new option is automatically set in many
3257      applications.
3258      [Bodo Moeller]
3259
3260   *) Changes in security patch:
3261
3262      Changes marked "(CHATS)" were sponsored by the Defense Advanced
3263      Research Projects Agency (DARPA) and Air Force Research Laboratory,
3264      Air Force Materiel Command, USAF, under agreement number
3265      F30602-01-2-0537.
3266
3267   *) Add various sanity checks to asn1_get_length() to reject
3268      the ASN1 length bytes if they exceed sizeof(long), will appear
3269      negative or the content length exceeds the length of the
3270      supplied buffer. (CAN-2002-0659)
3271      [Steve Henson, Adi Stav <stav@mercury.co.il>, James Yonan <jim@ntlp.com>]
3272
3273   *) Assertions for various potential buffer overflows, not known to
3274      happen in practice.
3275      [Ben Laurie (CHATS)]
3276
3277   *) Various temporary buffers to hold ASCII versions of integers were
3278      too small for 64 bit platforms. (CAN-2002-0655)
3279      [Matthew Byng-Maddick <mbm@aldigital.co.uk> and Ben Laurie (CHATS)>
3280
3281   *) Remote buffer overflow in SSL3 protocol - an attacker could
3282      supply an oversized session ID to a client. (CAN-2002-0656)
3283      [Ben Laurie (CHATS)]
3284
3285   *) Remote buffer overflow in SSL2 protocol - an attacker could
3286      supply an oversized client master key. (CAN-2002-0656)
3287      [Ben Laurie (CHATS)]
3288
3289  Changes between 0.9.6c and 0.9.6d  [9 May 2002]
3290
3291   *) Fix crypto/asn1/a_sign.c so that 'parameters' is omitted (not
3292      encoded as NULL) with id-dsa-with-sha1.
3293      [Nils Larsch <nla@trustcenter.de>; problem pointed out by Bodo Moeller]
3294
3295   *) Check various X509_...() return values in apps/req.c.
3296      [Nils Larsch <nla@trustcenter.de>]
3297
3298   *) Fix BASE64 decode (EVP_DecodeUpdate) for data with CR/LF ended lines:
3299      an end-of-file condition would erronously be flagged, when the CRLF
3300      was just at the end of a processed block. The bug was discovered when
3301      processing data through a buffering memory BIO handing the data to a
3302      BASE64-decoding BIO. Bug fund and patch submitted by Pavel Tsekov
3303      <ptsekov@syntrex.com> and Nedelcho Stanev.
3304      [Lutz Jaenicke]
3305
3306   *) Implement a countermeasure against a vulnerability recently found
3307      in CBC ciphersuites in SSL 3.0/TLS 1.0: Send an empty fragment
3308      before application data chunks to avoid the use of known IVs
3309      with data potentially chosen by the attacker.
3310      [Bodo Moeller]
3311
3312   *) Fix length checks in ssl3_get_client_hello().
3313      [Bodo Moeller]
3314
3315   *) TLS/SSL library bugfix: use s->s3->in_read_app_data differently
3316      to prevent ssl3_read_internal() from incorrectly assuming that
3317      ssl3_read_bytes() found application data while handshake
3318      processing was enabled when in fact s->s3->in_read_app_data was
3319      merely automatically cleared during the initial handshake.
3320      [Bodo Moeller; problem pointed out by Arne Ansper <arne@ats.cyber.ee>]
3321
3322   *) Fix object definitions for Private and Enterprise: they were not
3323      recognized in their shortname (=lowercase) representation. Extend
3324      obj_dat.pl to issue an error when using undefined keywords instead
3325      of silently ignoring the problem (Svenning Sorensen
3326      <sss@sss.dnsalias.net>).
3327      [Lutz Jaenicke]
3328
3329   *) Fix DH_generate_parameters() so that it works for 'non-standard'
3330      generators, i.e. generators other than 2 and 5.  (Previously, the
3331      code did not properly initialise the 'add' and 'rem' values to
3332      BN_generate_prime().)
3333
3334      In the new general case, we do not insist that 'generator' is
3335      actually a primitive root: This requirement is rather pointless;
3336      a generator of the order-q subgroup is just as good, if not
3337      better.
3338      [Bodo Moeller]
3339  
3340   *) Map new X509 verification errors to alerts. Discovered and submitted by
3341      Tom Wu <tom@arcot.com>.
3342      [Lutz Jaenicke]
3343
3344   *) Fix ssl3_pending() (ssl/s3_lib.c) to prevent SSL_pending() from
3345      returning non-zero before the data has been completely received
3346      when using non-blocking I/O.
3347      [Bodo Moeller; problem pointed out by John Hughes]
3348
3349   *) Some of the ciphers missed the strength entry (SSL_LOW etc).
3350      [Ben Laurie, Lutz Jaenicke]
3351
3352   *) Fix bug in SSL_clear(): bad sessions were not removed (found by
3353      Yoram Zahavi <YoramZ@gilian.com>).
3354      [Lutz Jaenicke]
3355
3356   *) Add information about CygWin 1.3 and on, and preserve proper
3357      configuration for the versions before that.
3358      [Corinna Vinschen <vinschen@redhat.com> and Richard Levitte]
3359
3360   *) Make removal from session cache (SSL_CTX_remove_session()) more robust:
3361      check whether we deal with a copy of a session and do not delete from
3362      the cache in this case. Problem reported by "Izhar Shoshani Levi"
3363      <izhar@checkpoint.com>.
3364      [Lutz Jaenicke]
3365
3366   *) Do not store session data into the internal session cache, if it
3367      is never intended to be looked up (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP
3368      flag is set). Proposed by Aslam <aslam@funk.com>.
3369      [Lutz Jaenicke]
3370
3371   *) Have ASN1_BIT_STRING_set_bit() really clear a bit when the requested
3372      value is 0.
3373      [Richard Levitte]
3374
3375   *) [In 0.9.6d-engine release:]
3376      Fix a crashbug and a logic bug in hwcrhk_load_pubkey().
3377      [Toomas Kiisk <vix@cyber.ee> via Richard Levitte]
3378
3379   *) Add the configuration target linux-s390x.
3380      [Neale Ferguson <Neale.Ferguson@SoftwareAG-USA.com> via Richard Levitte]
3381
3382   *) The earlier bugfix for the SSL3_ST_SW_HELLO_REQ_C case of
3383      ssl3_accept (ssl/s3_srvr.c) incorrectly used a local flag
3384      variable as an indication that a ClientHello message has been
3385      received.  As the flag value will be lost between multiple
3386      invocations of ssl3_accept when using non-blocking I/O, the
3387      function may not be aware that a handshake has actually taken
3388      place, thus preventing a new session from being added to the
3389      session cache.
3390
3391      To avoid this problem, we now set s->new_session to 2 instead of
3392      using a local variable.
3393      [Lutz Jaenicke, Bodo Moeller]
3394
3395   *) Bugfix: Return -1 from ssl3_get_server_done (ssl3/s3_clnt.c)
3396      if the SSL_R_LENGTH_MISMATCH error is detected.
3397      [Geoff Thorpe, Bodo Moeller]
3398
3399   *) New 'shared_ldflag' column in Configure platform table.
3400      [Richard Levitte]
3401
3402   *) Fix EVP_CIPHER_mode macro.
3403      ["Dan S. Camper" <dan@bti.net>]
3404
3405   *) Fix ssl3_read_bytes (ssl/s3_pkt.c): To ignore messages of unknown
3406      type, we must throw them away by setting rr->length to 0.
3407      [D P Chang <dpc@qualys.com>]
3408
3409  Changes between 0.9.6b and 0.9.6c  [21 dec 2001]
3410
3411   *) Fix BN_rand_range bug pointed out by Dominikus Scherkl
3412      <Dominikus.Scherkl@biodata.com>.  (The previous implementation
3413      worked incorrectly for those cases where  range = 10..._2  and
3414      3*range  is two bits longer than  range.)
3415      [Bodo Moeller]
3416
3417   *) Only add signing time to PKCS7 structures if it is not already
3418      present.
3419      [Steve Henson]
3420
3421   *) Fix crypto/objects/objects.h: "ld-ce" should be "id-ce",
3422      OBJ_ld_ce should be OBJ_id_ce.
3423      Also some ip-pda OIDs in crypto/objects/objects.txt were
3424      incorrect (cf. RFC 3039).
3425      [Matt Cooper, Frederic Giudicelli, Bodo Moeller]
3426
3427   *) Release CRYPTO_LOCK_DYNLOCK when CRYPTO_destroy_dynlockid()
3428      returns early because it has nothing to do.
3429      [Andy Schneider <andy.schneider@bjss.co.uk>]
3430
3431   *) [In 0.9.6c-engine release:]
3432      Fix mutex callback return values in crypto/engine/hw_ncipher.c.
3433      [Andy Schneider <andy.schneider@bjss.co.uk>]
3434
3435   *) [In 0.9.6c-engine release:]
3436      Add support for Cryptographic Appliance's keyserver technology.
3437      (Use engine 'keyclient')
3438      [Cryptographic Appliances and Geoff Thorpe]
3439
3440   *) Add a configuration entry for OS/390 Unix.  The C compiler 'c89'
3441      is called via tools/c89.sh because arguments have to be
3442      rearranged (all '-L' options must appear before the first object
3443      modules).
3444      [Richard Shapiro <rshapiro@abinitio.com>]
3445
3446   *) [In 0.9.6c-engine release:]
3447      Add support for Broadcom crypto accelerator cards, backported
3448      from 0.9.7.
3449      [Broadcom, Nalin Dahyabhai <nalin@redhat.com>, Mark Cox]
3450
3451   *) [In 0.9.6c-engine release:]
3452      Add support for SureWare crypto accelerator cards from 
3453      Baltimore Technologies.  (Use engine 'sureware')
3454      [Baltimore Technologies and Mark Cox]
3455
3456   *) [In 0.9.6c-engine release:]
3457      Add support for crypto accelerator cards from Accelerated
3458      Encryption Processing, www.aep.ie.  (Use engine 'aep')
3459      [AEP Inc. and Mark Cox]
3460
3461   *) Add a configuration entry for gcc on UnixWare.
3462      [Gary Benson <gbenson@redhat.com>]
3463
3464   *) Change ssl/s2_clnt.c and ssl/s2_srvr.c so that received handshake
3465      messages are stored in a single piece (fixed-length part and
3466      variable-length part combined) and fix various bugs found on the way.
3467      [Bodo Moeller]
3468
3469   *) Disable caching in BIO_gethostbyname(), directly use gethostbyname()
3470      instead.  BIO_gethostbyname() does not know what timeouts are
3471      appropriate, so entries would stay in cache even when they have
3472      become invalid.
3473      [Bodo Moeller; problem pointed out by Rich Salz <rsalz@zolera.com>
3474
3475   *) Change ssl23_get_client_hello (ssl/s23_srvr.c) behaviour when
3476      faced with a pathologically small ClientHello fragment that does
3477      not contain client_version: Instead of aborting with an error,
3478      simply choose the highest available protocol version (i.e.,
3479      TLS 1.0 unless it is disabled).  In practice, ClientHello
3480      messages are never sent like this, but this change gives us
3481      strictly correct behaviour at least for TLS.
3482      [Bodo Moeller]
3483
3484   *) Fix SSL handshake functions and SSL_clear() such that SSL_clear()
3485      never resets s->method to s->ctx->method when called from within
3486      one of the SSL handshake functions.
3487      [Bodo Moeller; problem pointed out by Niko Baric]
3488
3489   *) In ssl3_get_client_hello (ssl/s3_srvr.c), generate a fatal alert
3490      (sent using the client's version number) if client_version is
3491      smaller than the protocol version in use.  Also change
3492      ssl23_get_client_hello (ssl/s23_srvr.c) to select TLS 1.0 if
3493      the client demanded SSL 3.0 but only TLS 1.0 is enabled; then
3494      the client will at least see that alert.
3495      [Bodo Moeller]
3496
3497   *) Fix ssl3_get_message (ssl/s3_both.c) to handle message fragmentation
3498      correctly.
3499      [Bodo Moeller]
3500
3501   *) Avoid infinite loop in ssl3_get_message (ssl/s3_both.c) if a
3502      client receives HelloRequest while in a handshake.
3503      [Bodo Moeller; bug noticed by Andy Schneider <andy.schneider@bjss.co.uk>]
3504
3505   *) Bugfix in ssl3_accept (ssl/s3_srvr.c): Case SSL3_ST_SW_HELLO_REQ_C
3506      should end in 'break', not 'goto end' which circuments various
3507      cleanups done in state SSL_ST_OK.   But session related stuff
3508      must be disabled for SSL_ST_OK in the case that we just sent a
3509      HelloRequest.
3510
3511      Also avoid some overhead by not calling ssl_init_wbio_buffer()
3512      before just sending a HelloRequest.
3513      [Bodo Moeller, Eric Rescorla <ekr@rtfm.com>]
3514
3515   *) Fix ssl/s3_enc.c, ssl/t1_enc.c and ssl/s3_pkt.c so that we don't
3516      reveal whether illegal block cipher padding was found or a MAC
3517      verification error occured.  (Neither SSLerr() codes nor alerts
3518      are directly visible to potential attackers, but the information
3519      may leak via logfiles.)
3520
3521      Similar changes are not required for the SSL 2.0 implementation
3522      because the number of padding bytes is sent in clear for SSL 2.0,
3523      and the extra bytes are just ignored.  However ssl/s2_pkt.c
3524      failed to verify that the purported number of padding bytes is in
3525      the legal range.
3526      [Bodo Moeller]
3527
3528   *) Add OpenUNIX-8 support including shared libraries
3529      (Boyd Lynn Gerber <gerberb@zenez.com>).
3530      [Lutz Jaenicke]
3531
3532   *) Improve RSA_padding_check_PKCS1_OAEP() check again to avoid
3533      'wristwatch attack' using huge encoding parameters (cf.
3534      James H. Manger's CRYPTO 2001 paper).  Note that the
3535      RSA_PKCS1_OAEP_PADDING case of RSA_private_decrypt() does not use
3536      encoding parameters and hence was not vulnerable.
3537      [Bodo Moeller]
3538
3539   *) BN_sqr() bug fix.
3540      [Ulf Möller, reported by Jim Ellis <jim.ellis@cavium.com>]
3541
3542   *) Rabin-Miller test analyses assume uniformly distributed witnesses,
3543      so use BN_pseudo_rand_range() instead of using BN_pseudo_rand()
3544      followed by modular reduction.
3545      [Bodo Moeller; pointed out by Adam Young <AYoung1@NCSUS.JNJ.COM>]
3546
3547   *) Add BN_pseudo_rand_range() with obvious functionality: BN_rand_range()
3548      equivalent based on BN_pseudo_rand() instead of BN_rand().
3549      [Bodo Moeller]
3550
3551   *) s3_srvr.c: allow sending of large client certificate lists (> 16 kB).
3552      This function was broken, as the check for a new client hello message
3553      to handle SGC did not allow these large messages.
3554      (Tracked down by "Douglas E. Engert" <deengert@anl.gov>.)
3555      [Lutz Jaenicke]
3556
3557   *) Add alert descriptions for TLSv1 to SSL_alert_desc_string[_long]().
3558      [Lutz Jaenicke]
3559
3560   *) Fix buggy behaviour of BIO_get_num_renegotiates() and BIO_ctrl()
3561      for BIO_C_GET_WRITE_BUF_SIZE ("Stephen Hinton" <shinton@netopia.com>).
3562      [Lutz Jaenicke]
3563
3564   *) Rework the configuration and shared library support for Tru64 Unix.
3565      The configuration part makes use of modern compiler features and
3566      still retains old compiler behavior for those that run older versions
3567      of the OS.  The shared library support part includes a variant that
3568      uses the RPATH feature, and is available through the special
3569      configuration target "alpha-cc-rpath", which will never be selected
3570      automatically.
3571      [Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu> via Richard Levitte]
3572
3573   *) In ssl3_get_key_exchange (ssl/s3_clnt.c), call ssl3_get_message()
3574      with the same message size as in ssl3_get_certificate_request().
3575      Otherwise, if no ServerKeyExchange message occurs, CertificateRequest
3576      messages might inadvertently be reject as too long.
3577      [Petr Lampa <lampa@fee.vutbr.cz>]
3578
3579   *) Enhanced support for IA-64 Unix platforms (well, Linux and HP-UX).
3580      [Andy Polyakov]
3581
3582   *) Modified SSL library such that the verify_callback that has been set
3583      specificly for an SSL object with SSL_set_verify() is actually being
3584      used. Before the change, a verify_callback set with this function was
3585      ignored and the verify_callback() set in the SSL_CTX at the time of
3586      the call was used. New function X509_STORE_CTX_set_verify_cb() introduced
3587      to allow the necessary settings.
3588      [Lutz Jaenicke]
3589
3590   *) Initialize static variable in crypto/dsa/dsa_lib.c and crypto/dh/dh_lib.c
3591      explicitly to NULL, as at least on Solaris 8 this seems not always to be
3592      done automatically (in contradiction to the requirements of the C
3593      standard). This made problems when used from OpenSSH.
3594      [Lutz Jaenicke]
3595
3596   *) In OpenSSL 0.9.6a and 0.9.6b, crypto/dh/dh_key.c ignored
3597      dh->length and always used
3598
3599           BN_rand_range(priv_key, dh->p).
3600
3601      BN_rand_range() is not necessary for Diffie-Hellman, and this
3602      specific range makes Diffie-Hellman unnecessarily inefficient if
3603      dh->length (recommended exponent length) is much smaller than the
3604      length of dh->p.  We could use BN_rand_range() if the order of
3605      the subgroup was stored in the DH structure, but we only have
3606      dh->length.
3607
3608      So switch back to
3609
3610           BN_rand(priv_key, l, ...)
3611
3612      where 'l' is dh->length if this is defined, or BN_num_bits(dh->p)-1
3613      otherwise.
3614      [Bodo Moeller]
3615
3616   *) In
3617
3618           RSA_eay_public_encrypt
3619           RSA_eay_private_decrypt
3620           RSA_eay_private_encrypt (signing)
3621           RSA_eay_public_decrypt (signature verification)
3622
3623      (default implementations for RSA_public_encrypt,
3624      RSA_private_decrypt, RSA_private_encrypt, RSA_public_decrypt),
3625      always reject numbers >= n.
3626      [Bodo Moeller]
3627
3628   *) In crypto/rand/md_rand.c, use a new short-time lock CRYPTO_LOCK_RAND2
3629      to synchronize access to 'locking_thread'.  This is necessary on
3630      systems where access to 'locking_thread' (an 'unsigned long'
3631      variable) is not atomic.
3632      [Bodo Moeller]
3633
3634   *) In crypto/rand/md_rand.c, set 'locking_thread' to current thread's ID
3635      *before* setting the 'crypto_lock_rand' flag.  The previous code had
3636      a race condition if 0 is a valid thread ID.
3637      [Travis Vitek <vitek@roguewave.com>]
3638
3639   *) Add support for shared libraries under Irix.
3640      [Albert Chin-A-Young <china@thewrittenword.com>]
3641
3642   *) Add configuration option to build on Linux on both big-endian and
3643      little-endian MIPS.
3644      [Ralf Baechle <ralf@uni-koblenz.de>]
3645
3646   *) Add the possibility to create shared libraries on HP-UX.
3647      [Richard Levitte]
3648
3649  Changes between 0.9.6a and 0.9.6b  [9 Jul 2001]
3650
3651   *) Change ssleay_rand_bytes (crypto/rand/md_rand.c)
3652      to avoid a SSLeay/OpenSSL PRNG weakness pointed out by
3653      Markku-Juhani O. Saarinen <markku-juhani.saarinen@nokia.com>:
3654      PRNG state recovery was possible based on the output of
3655      one PRNG request appropriately sized to gain knowledge on
3656      'md' followed by enough consecutive 1-byte PRNG requests
3657      to traverse all of 'state'.
3658
3659      1. When updating 'md_local' (the current thread's copy of 'md')
3660         during PRNG output generation, hash all of the previous
3661         'md_local' value, not just the half used for PRNG output.
3662
3663      2. Make the number of bytes from 'state' included into the hash
3664         independent from the number of PRNG bytes requested.
3665
3666      The first measure alone would be sufficient to avoid
3667      Markku-Juhani's attack.  (Actually it had never occurred
3668      to me that the half of 'md_local' used for chaining was the
3669      half from which PRNG output bytes were taken -- I had always
3670      assumed that the secret half would be used.)  The second
3671      measure makes sure that additional data from 'state' is never
3672      mixed into 'md_local' in small portions; this heuristically
3673      further strengthens the PRNG.
3674      [Bodo Moeller]
3675
3676   *) Fix crypto/bn/asm/mips3.s.
3677      [Andy Polyakov]
3678
3679   *) When only the key is given to "enc", the IV is undefined. Print out
3680      an error message in this case.
3681      [Lutz Jaenicke]
3682
3683   *) Handle special case when X509_NAME is empty in X509 printing routines.
3684      [Steve Henson]
3685
3686   *) In dsa_do_verify (crypto/dsa/dsa_ossl.c), verify that r and s are
3687      positive and less than q.
3688      [Bodo Moeller]
3689
3690   *) Don't change *pointer in CRYPTO_add_lock() is add_lock_callback is
3691      used: it isn't thread safe and the add_lock_callback should handle
3692      that itself.
3693      [Paul Rose <Paul.Rose@bridge.com>]
3694
3695   *) Verify that incoming data obeys the block size in
3696      ssl3_enc (ssl/s3_enc.c) and tls1_enc (ssl/t1_enc.c).
3697      [Bodo Moeller]
3698
3699   *) Fix OAEP check.
3700      [Ulf Möller, Bodo Möller]
3701
3702   *) The countermeasure against Bleichbacher's attack on PKCS #1 v1.5
3703      RSA encryption was accidentally removed in s3_srvr.c in OpenSSL 0.9.5
3704      when fixing the server behaviour for backwards-compatible 'client
3705      hello' messages.  (Note that the attack is impractical against
3706      SSL 3.0 and TLS 1.0 anyway because length and version checking
3707      means that the probability of guessing a valid ciphertext is
3708      around 2^-40; see section 5 in Bleichenbacher's CRYPTO '98
3709      paper.)
3710
3711      Before 0.9.5, the countermeasure (hide the error by generating a
3712      random 'decryption result') did not work properly because
3713      ERR_clear_error() was missing, meaning that SSL_get_error() would
3714      detect the supposedly ignored error.
3715
3716      Both problems are now fixed.
3717      [Bodo Moeller]
3718
3719   *) In crypto/bio/bf_buff.c, increase DEFAULT_BUFFER_SIZE to 4096
3720      (previously it was 1024).
3721      [Bodo Moeller]
3722
3723   *) Fix for compatibility mode trust settings: ignore trust settings
3724      unless some valid trust or reject settings are present.
3725      [Steve Henson]
3726
3727   *) Fix for blowfish EVP: its a variable length cipher.
3728      [Steve Henson]
3729
3730   *) Fix various bugs related to DSA S/MIME verification. Handle missing
3731      parameters in DSA public key structures and return an error in the
3732      DSA routines if parameters are absent.
3733      [Steve Henson]
3734
3735   *) In versions up to 0.9.6, RAND_file_name() resorted to file ".rnd"
3736      in the current directory if neither $RANDFILE nor $HOME was set.
3737      RAND_file_name() in 0.9.6a returned NULL in this case.  This has
3738      caused some confusion to Windows users who haven't defined $HOME.
3739      Thus RAND_file_name() is changed again: e_os.h can define a
3740      DEFAULT_HOME, which will be used if $HOME is not set.
3741      For Windows, we use "C:"; on other platforms, we still require
3742      environment variables.
3743
3744   *) Move 'if (!initialized) RAND_poll()' into regions protected by
3745      CRYPTO_LOCK_RAND.  This is not strictly necessary, but avoids
3746      having multiple threads call RAND_poll() concurrently.
3747      [Bodo Moeller]
3748
3749   *) In crypto/rand/md_rand.c, replace 'add_do_not_lock' flag by a
3750      combination of a flag and a thread ID variable.
3751      Otherwise while one thread is in ssleay_rand_bytes (which sets the
3752      flag), *other* threads can enter ssleay_add_bytes without obeying
3753      the CRYPTO_LOCK_RAND lock (and may even illegally release the lock
3754      that they do not hold after the first thread unsets add_do_not_lock).
3755      [Bodo Moeller]
3756
3757   *) Change bctest again: '-x' expressions are not available in all
3758      versions of 'test'.
3759      [Bodo Moeller]
3760
3761  Changes between 0.9.6 and 0.9.6a  [5 Apr 2001]
3762
3763   *) Fix a couple of memory leaks in PKCS7_dataDecode()
3764      [Steve Henson, reported by Heyun Zheng <hzheng@atdsprint.com>]
3765
3766   *) Change Configure and Makefiles to provide EXE_EXT, which will contain
3767      the default extension for executables, if any.  Also, make the perl
3768      scripts that use symlink() to test if it really exists and use "cp"
3769      if it doesn't.  All this made OpenSSL compilable and installable in
3770      CygWin.
3771      [Richard Levitte]
3772
3773   *) Fix for asn1_GetSequence() for indefinite length constructed data.
3774      If SEQUENCE is length is indefinite just set c->slen to the total
3775      amount of data available.
3776      [Steve Henson, reported by shige@FreeBSD.org]
3777      [This change does not apply to 0.9.7.]
3778
3779   *) Change bctest to avoid here-documents inside command substitution
3780      (workaround for FreeBSD /bin/sh bug).
3781      For compatibility with Ultrix, avoid shell functions (introduced
3782      in the bctest version that searches along $PATH).
3783      [Bodo Moeller]
3784
3785   *) Rename 'des_encrypt' to 'des_encrypt1'.  This avoids the clashes
3786      with des_encrypt() defined on some operating systems, like Solaris
3787      and UnixWare.
3788      [Richard Levitte]
3789
3790   *) Check the result of RSA-CRT (see D. Boneh, R. DeMillo, R. Lipton:
3791      On the Importance of Eliminating Errors in Cryptographic
3792      Computations, J. Cryptology 14 (2001) 2, 101-119,
3793      http://theory.stanford.edu/~dabo/papers/faults.ps.gz).
3794      [Ulf Moeller]
3795   
3796   *) MIPS assembler BIGNUM division bug fix. 
3797      [Andy Polyakov]
3798
3799   *) Disabled incorrect Alpha assembler code.
3800      [Richard Levitte]
3801
3802   *) Fix PKCS#7 decode routines so they correctly update the length
3803      after reading an EOC for the EXPLICIT tag.
3804      [Steve Henson]
3805      [This change does not apply to 0.9.7.]
3806
3807   *) Fix bug in PKCS#12 key generation routines. This was triggered
3808      if a 3DES key was generated with a 0 initial byte. Include
3809      PKCS12_BROKEN_KEYGEN compilation option to retain the old
3810      (but broken) behaviour.
3811      [Steve Henson]
3812
3813   *) Enhance bctest to search for a working bc along $PATH and print
3814      it when found.
3815      [Tim Rice <tim@multitalents.net> via Richard Levitte]
3816
3817   *) Fix memory leaks in err.c: free err_data string if necessary;
3818      don't write to the wrong index in ERR_set_error_data.
3819      [Bodo Moeller]
3820
3821   *) Implement ssl23_peek (analogous to ssl23_read), which previously
3822      did not exist.
3823      [Bodo Moeller]
3824
3825   *) Replace rdtsc with _emit statements for VC++ version 5.
3826      [Jeremy Cooper <jeremy@baymoo.org>]
3827
3828   *) Make it possible to reuse SSLv2 sessions.
3829      [Richard Levitte]
3830
3831   *) In copy_email() check for >= 0 as a return value for
3832      X509_NAME_get_index_by_NID() since 0 is a valid index.
3833      [Steve Henson reported by Massimiliano Pala <madwolf@opensca.org>]
3834
3835   *) Avoid coredump with unsupported or invalid public keys by checking if
3836      X509_get_pubkey() fails in PKCS7_verify(). Fix memory leak when
3837      PKCS7_verify() fails with non detached data.
3838      [Steve Henson]
3839
3840   *) Don't use getenv in library functions when run as setuid/setgid.
3841      New function OPENSSL_issetugid().
3842      [Ulf Moeller]
3843
3844   *) Avoid false positives in memory leak detection code (crypto/mem_dbg.c)
3845      due to incorrect handling of multi-threading:
3846
3847      1. Fix timing glitch in the MemCheck_off() portion of CRYPTO_mem_ctrl().
3848
3849      2. Fix logical glitch in is_MemCheck_on() aka CRYPTO_is_mem_check_on().
3850
3851      3. Count how many times MemCheck_off() has been called so that
3852         nested use can be treated correctly.  This also avoids 
3853         inband-signalling in the previous code (which relied on the
3854         assumption that thread ID 0 is impossible).
3855      [Bodo Moeller]
3856
3857   *) Add "-rand" option also to s_client and s_server.
3858      [Lutz Jaenicke]
3859
3860   *) Fix CPU detection on Irix 6.x.
3861      [Kurt Hockenbury <khockenb@stevens-tech.edu> and
3862       "Bruce W. Forsberg" <bruce.forsberg@baesystems.com>]
3863
3864   *) Fix X509_NAME bug which produced incorrect encoding if X509_NAME
3865      was empty.
3866      [Steve Henson]
3867      [This change does not apply to 0.9.7.]
3868
3869   *) Use the cached encoding of an X509_NAME structure rather than
3870      copying it. This is apparently the reason for the libsafe "errors"
3871      but the code is actually correct.
3872      [Steve Henson]
3873
3874   *) Add new function BN_rand_range(), and fix DSA_sign_setup() to prevent
3875      Bleichenbacher's DSA attack.
3876      Extend BN_[pseudo_]rand: As before, top=1 forces the highest two bits
3877      to be set and top=0 forces the highest bit to be set; top=-1 is new
3878      and leaves the highest bit random.
3879      [Ulf Moeller, Bodo Moeller]
3880
3881   *) In the NCONF_...-based implementations for CONF_... queries
3882      (crypto/conf/conf_lib.c), if the input LHASH is NULL, avoid using
3883      a temporary CONF structure with the data component set to NULL
3884      (which gives segmentation faults in lh_retrieve).
3885      Instead, use NULL for the CONF pointer in CONF_get_string and
3886      CONF_get_number (which may use environment variables) and directly
3887      return NULL from CONF_get_section.
3888      [Bodo Moeller]
3889
3890   *) Fix potential buffer overrun for EBCDIC.
3891      [Ulf Moeller]
3892
3893   *) Tolerate nonRepudiation as being valid for S/MIME signing and certSign
3894      keyUsage if basicConstraints absent for a CA.
3895      [Steve Henson]
3896
3897   *) Make SMIME_write_PKCS7() write mail header values with a format that
3898      is more generally accepted (no spaces before the semicolon), since
3899      some programs can't parse those values properly otherwise.  Also make
3900      sure BIO's that break lines after each write do not create invalid
3901      headers.
3902      [Richard Levitte]
3903
3904   *) Make the CRL encoding routines work with empty SEQUENCE OF. The
3905      macros previously used would not encode an empty SEQUENCE OF
3906      and break the signature.
3907      [Steve Henson]
3908      [This change does not apply to 0.9.7.]
3909
3910   *) Zero the premaster secret after deriving the master secret in
3911      DH ciphersuites.
3912      [Steve Henson]
3913
3914   *) Add some EVP_add_digest_alias registrations (as found in
3915      OpenSSL_add_all_digests()) to SSL_library_init()
3916      aka OpenSSL_add_ssl_algorithms().  This provides improved
3917      compatibility with peers using X.509 certificates
3918      with unconventional AlgorithmIdentifier OIDs.
3919      [Bodo Moeller]
3920
3921   *) Fix for Irix with NO_ASM.
3922      ["Bruce W. Forsberg" <bruce.forsberg@baesystems.com>]
3923
3924   *) ./config script fixes.
3925      [Ulf Moeller, Richard Levitte]
3926
3927   *) Fix 'openssl passwd -1'.
3928      [Bodo Moeller]
3929
3930   *) Change PKCS12_key_gen_asc() so it can cope with non null
3931      terminated strings whose length is passed in the passlen
3932      parameter, for example from PEM callbacks. This was done
3933      by adding an extra length parameter to asc2uni().
3934      [Steve Henson, reported by <oddissey@samsung.co.kr>]
3935
3936   *) Fix C code generated by 'openssl dsaparam -C': If a BN_bin2bn
3937      call failed, free the DSA structure.
3938      [Bodo Moeller]
3939
3940   *) Fix to uni2asc() to cope with zero length Unicode strings.
3941      These are present in some PKCS#12 files.
3942      [Steve Henson]
3943
3944   *) Increase s2->wbuf allocation by one byte in ssl2_new (ssl/s2_lib.c).
3945      Otherwise do_ssl_write (ssl/s2_pkt.c) will write beyond buffer limits
3946      when writing a 32767 byte record.
3947      [Bodo Moeller; problem reported by Eric Day <eday@concentric.net>]
3948
3949   *) In RSA_eay_public_{en,ed}crypt and RSA_eay_mod_exp (rsa_eay.c),
3950      obtain lock CRYPTO_LOCK_RSA before setting rsa->_method_mod_{n,p,q}.
3951
3952      (RSA objects have a reference count access to which is protected
3953      by CRYPTO_LOCK_RSA [see rsa_lib.c, s3_srvr.c, ssl_cert.c, ssl_rsa.c],
3954      so they are meant to be shared between threads.)
3955      [Bodo Moeller, Geoff Thorpe; original patch submitted by
3956      "Reddie, Steven" <Steven.Reddie@ca.com>]
3957
3958   *) Fix a deadlock in CRYPTO_mem_leaks().
3959      [Bodo Moeller]
3960
3961   *) Use better test patterns in bntest.
3962      [Ulf Möller]
3963
3964   *) rand_win.c fix for Borland C.
3965      [Ulf Möller]
3966  
3967   *) BN_rshift bugfix for n == 0.
3968      [Bodo Moeller]
3969
3970   *) Add a 'bctest' script that checks for some known 'bc' bugs
3971      so that 'make test' does not abort just because 'bc' is broken.
3972      [Bodo Moeller]
3973
3974   *) Store verify_result within SSL_SESSION also for client side to
3975      avoid potential security hole. (Re-used sessions on the client side
3976      always resulted in verify_result==X509_V_OK, not using the original
3977      result of the server certificate verification.)
3978      [Lutz Jaenicke]
3979
3980   *) Fix ssl3_pending: If the record in s->s3->rrec is not of type
3981      SSL3_RT_APPLICATION_DATA, return 0.
3982      Similarly, change ssl2_pending to return 0 if SSL_in_init(s) is true.
3983      [Bodo Moeller]
3984
3985   *) Fix SSL_peek:
3986      Both ssl2_peek and ssl3_peek, which were totally broken in earlier
3987      releases, have been re-implemented by renaming the previous
3988      implementations of ssl2_read and ssl3_read to ssl2_read_internal
3989      and ssl3_read_internal, respectively, and adding 'peek' parameters
3990      to them.  The new ssl[23]_{read,peek} functions are calls to
3991      ssl[23]_read_internal with the 'peek' flag set appropriately.
3992      A 'peek' parameter has also been added to ssl3_read_bytes, which
3993      does the actual work for ssl3_read_internal.
3994      [Bodo Moeller]
3995
3996   *) Initialise "ex_data" member of RSA/DSA/DH structures prior to calling
3997      the method-specific "init()" handler. Also clean up ex_data after
3998      calling the method-specific "finish()" handler. Previously, this was
3999      happening the other way round.
4000      [Geoff Thorpe]
4001
4002   *) Increase BN_CTX_NUM (the number of BIGNUMs in a BN_CTX) to 16.
4003      The previous value, 12, was not always sufficient for BN_mod_exp().
4004      [Bodo Moeller]
4005
4006   *) Make sure that shared libraries get the internal name engine with
4007      the full version number and not just 0.  This should mark the
4008      shared libraries as not backward compatible.  Of course, this should
4009      be changed again when we can guarantee backward binary compatibility.
4010      [Richard Levitte]
4011
4012   *) Fix typo in get_cert_by_subject() in by_dir.c
4013      [Jean-Marc Desperrier <jean-marc.desperrier@certplus.com>]
4014
4015   *) Rework the system to generate shared libraries:
4016
4017      - Make note of the expected extension for the shared libraries and
4018        if there is a need for symbolic links from for example libcrypto.so.0
4019        to libcrypto.so.0.9.7.  There is extended info in Configure for
4020        that.
4021
4022      - Make as few rebuilds of the shared libraries as possible.
4023
4024      - Still avoid linking the OpenSSL programs with the shared libraries.
4025
4026      - When installing, install the shared libraries separately from the
4027        static ones.
4028      [Richard Levitte]
4029
4030   *) Fix SSL_CTX_set_read_ahead macro to actually use its argument.
4031
4032      Copy SSL_CTX's read_ahead flag to SSL object directly in SSL_new
4033      and not in SSL_clear because the latter is also used by the
4034      accept/connect functions; previously, the settings made by
4035      SSL_set_read_ahead would be lost during the handshake.
4036      [Bodo Moeller; problems reported by Anders Gertz <gertz@epact.se>]     
4037
4038   *) Correct util/mkdef.pl to be selective about disabled algorithms.
4039      Previously, it would create entries for disableed algorithms no
4040      matter what.
4041      [Richard Levitte]
4042
4043   *) Added several new manual pages for SSL_* function.
4044      [Lutz Jaenicke]
4045
4046  Changes between 0.9.5a and 0.9.6  [24 Sep 2000]
4047
4048   *) In ssl23_get_client_hello, generate an error message when faced
4049      with an initial SSL 3.0/TLS record that is too small to contain the
4050      first two bytes of the ClientHello message, i.e. client_version.
4051      (Note that this is a pathologic case that probably has never happened
4052      in real life.)  The previous approach was to use the version number
4053      from the record header as a substitute; but our protocol choice
4054      should not depend on that one because it is not authenticated
4055      by the Finished messages.
4056      [Bodo Moeller]
4057
4058   *) More robust randomness gathering functions for Windows.
4059      [Jeffrey Altman <jaltman@columbia.edu>]
4060
4061   *) For compatibility reasons if the flag X509_V_FLAG_ISSUER_CHECK is
4062      not set then we don't setup the error code for issuer check errors
4063      to avoid possibly overwriting other errors which the callback does
4064      handle. If an application does set the flag then we assume it knows
4065      what it is doing and can handle the new informational codes
4066      appropriately.
4067      [Steve Henson]
4068
4069   *) Fix for a nasty bug in ASN1_TYPE handling. ASN1_TYPE is used for
4070      a general "ANY" type, as such it should be able to decode anything
4071      including tagged types. However it didn't check the class so it would
4072      wrongly interpret tagged types in the same way as their universal
4073      counterpart and unknown types were just rejected. Changed so that the
4074      tagged and unknown types are handled in the same way as a SEQUENCE:
4075      that is the encoding is stored intact. There is also a new type
4076      "V_ASN1_OTHER" which is used when the class is not universal, in this
4077      case we have no idea what the actual type is so we just lump them all
4078      together.
4079      [Steve Henson]
4080
4081   *) On VMS, stdout may very well lead to a file that is written to
4082      in a record-oriented fashion.  That means that every write() will
4083      write a separate record, which will be read separately by the
4084      programs trying to read from it.  This can be very confusing.
4085
4086      The solution is to put a BIO filter in the way that will buffer
4087      text until a linefeed is reached, and then write everything a
4088      line at a time, so every record written will be an actual line,
4089      not chunks of lines and not (usually doesn't happen, but I've
4090      seen it once) several lines in one record.  BIO_f_linebuffer() is
4091      the answer.
4092
4093      Currently, it's a VMS-only method, because that's where it has
4094      been tested well enough.
4095      [Richard Levitte]
4096
4097   *) Remove 'optimized' squaring variant in BN_mod_mul_montgomery,
4098      it can return incorrect results.
4099      (Note: The buggy variant was not enabled in OpenSSL 0.9.5a,
4100      but it was in 0.9.6-beta[12].)
4101      [Bodo Moeller]
4102
4103   *) Disable the check for content being present when verifying detached
4104      signatures in pk7_smime.c. Some versions of Netscape (wrongly)
4105      include zero length content when signing messages.
4106      [Steve Henson]
4107
4108   *) New BIO_shutdown_wr macro, which invokes the BIO_C_SHUTDOWN_WR
4109      BIO_ctrl (for BIO pairs).
4110      [Bodo Möller]
4111
4112   *) Add DSO method for VMS.
4113      [Richard Levitte]
4114
4115   *) Bug fix: Montgomery multiplication could produce results with the
4116      wrong sign.
4117      [Ulf Möller]
4118
4119   *) Add RPM specification openssl.spec and modify it to build three
4120      packages.  The default package contains applications, application
4121      documentation and run-time libraries.  The devel package contains
4122      include files, static libraries and function documentation.  The
4123      doc package contains the contents of the doc directory.  The original
4124      openssl.spec was provided by Damien Miller <djm@mindrot.org>.
4125      [Richard Levitte]
4126      
4127   *) Add a large number of documentation files for many SSL routines.
4128      [Lutz Jaenicke <Lutz.Jaenicke@aet.TU-Cottbus.DE>]
4129
4130   *) Add a configuration entry for Sony News 4.
4131      [NAKAJI Hiroyuki <nakaji@tutrp.tut.ac.jp>]
4132
4133   *) Don't set the two most significant bits to one when generating a
4134      random number < q in the DSA library.
4135      [Ulf Möller]
4136
4137   *) New SSL API mode 'SSL_MODE_AUTO_RETRY'.  This disables the default
4138      behaviour that SSL_read may result in SSL_ERROR_WANT_READ (even if
4139      the underlying transport is blocking) if a handshake took place.
4140      (The default behaviour is needed by applications such as s_client
4141      and s_server that use select() to determine when to use SSL_read;
4142      but for applications that know in advance when to expect data, it
4143      just makes things more complicated.)
4144      [Bodo Moeller]
4145
4146   *) Add RAND_egd_bytes(), which gives control over the number of bytes read
4147      from EGD.
4148      [Ben Laurie]
4149
4150   *) Add a few more EBCDIC conditionals that make `req' and `x509'
4151      work better on such systems.
4152      [Martin Kraemer <Martin.Kraemer@MchP.Siemens.De>]
4153
4154   *) Add two demo programs for PKCS12_parse() and PKCS12_create().
4155      Update PKCS12_parse() so it copies the friendlyName and the
4156      keyid to the certificates aux info.
4157      [Steve Henson]
4158
4159   *) Fix bug in PKCS7_verify() which caused an infinite loop
4160      if there was more than one signature.
4161      [Sven Uszpelkat <su@celocom.de>]
4162
4163   *) Major change in util/mkdef.pl to include extra information
4164      about each symbol, as well as presentig variables as well
4165      as functions.  This change means that there's n more need
4166      to rebuild the .num files when some algorithms are excluded.
4167      [Richard Levitte]
4168
4169   *) Allow the verify time to be set by an application,
4170      rather than always using the current time.
4171      [Steve Henson]
4172   
4173   *) Phase 2 verify code reorganisation. The certificate
4174      verify code now looks up an issuer certificate by a
4175      number of criteria: subject name, authority key id
4176      and key usage. It also verifies self signed certificates
4177      by the same criteria. The main comparison function is
4178      X509_check_issued() which performs these checks.
4179  
4180      Lot of changes were necessary in order to support this
4181      without completely rewriting the lookup code.
4182  
4183      Authority and subject key identifier are now cached.
4184  
4185      The LHASH 'certs' is X509_STORE has now been replaced
4186      by a STACK_OF(X509_OBJECT). This is mainly because an
4187      LHASH can't store or retrieve multiple objects with
4188      the same hash value.
4189
4190      As a result various functions (which were all internal
4191      use only) have changed to handle the new X509_STORE
4192      structure. This will break anything that messed round
4193      with X509_STORE internally.
4194  
4195      The functions X509_STORE_add_cert() now checks for an
4196      exact match, rather than just subject name.
4197  
4198      The X509_STORE API doesn't directly support the retrieval
4199      of multiple certificates matching a given criteria, however
4200      this can be worked round by performing a lookup first
4201      (which will fill the cache with candidate certificates)
4202      and then examining the cache for matches. This is probably
4203      the best we can do without throwing out X509_LOOKUP
4204      entirely (maybe later...).
4205  
4206      The X509_VERIFY_CTX structure has been enhanced considerably.
4207  
4208      All certificate lookup operations now go via a get_issuer()
4209      callback. Although this currently uses an X509_STORE it
4210      can be replaced by custom lookups. This is a simple way
4211      to bypass the X509_STORE hackery necessary to make this
4212      work and makes it possible to use more efficient techniques
4213      in future. A very simple version which uses a simple
4214      STACK for its trusted certificate store is also provided
4215      using X509_STORE_CTX_trusted_stack().
4216  
4217      The verify_cb() and verify() callbacks now have equivalents
4218      in the X509_STORE_CTX structure.
4219  
4220      X509_STORE_CTX also has a 'flags' field which can be used
4221      to customise the verify behaviour.
4222      [Steve Henson]
4223  
4224   *) Add new PKCS#7 signing option PKCS7_NOSMIMECAP which 
4225      excludes S/MIME capabilities.
4226      [Steve Henson]
4227
4228   *) When a certificate request is read in keep a copy of the
4229      original encoding of the signed data and use it when outputing
4230      again. Signatures then use the original encoding rather than
4231      a decoded, encoded version which may cause problems if the
4232      request is improperly encoded.
4233      [Steve Henson]
4234
4235   *) For consistency with other BIO_puts implementations, call
4236      buffer_write(b, ...) directly in buffer_puts instead of calling
4237      BIO_write(b, ...).
4238
4239      In BIO_puts, increment b->num_write as in BIO_write.
4240      [Peter.Sylvester@EdelWeb.fr]
4241
4242   *) Fix BN_mul_word for the case where the word is 0. (We have to use
4243      BN_zero, we may not return a BIGNUM with an array consisting of
4244      words set to zero.)
4245      [Bodo Moeller]
4246
4247   *) Avoid calling abort() from within the library when problems are
4248      detected, except if preprocessor symbols have been defined
4249      (such as REF_CHECK, BN_DEBUG etc.).
4250      [Bodo Moeller]
4251
4252   *) New openssl application 'rsautl'. This utility can be
4253      used for low level RSA operations. DER public key
4254      BIO/fp routines also added.
4255      [Steve Henson]
4256
4257   *) New Configure entry and patches for compiling on QNX 4.
4258      [Andreas Schneider <andreas@ds3.etech.fh-hamburg.de>]
4259
4260   *) A demo state-machine implementation was sponsored by
4261      Nuron (http://www.nuron.com/) and is now available in
4262      demos/state_machine.
4263      [Ben Laurie]
4264
4265   *) New options added to the 'dgst' utility for signature
4266      generation and verification.
4267      [Steve Henson]
4268
4269   *) Unrecognized PKCS#7 content types are now handled via a
4270      catch all ASN1_TYPE structure. This allows unsupported
4271      types to be stored as a "blob" and an application can
4272      encode and decode it manually.
4273      [Steve Henson]
4274
4275   *) Fix various signed/unsigned issues to make a_strex.c
4276      compile under VC++.
4277      [Oscar Jacobsson <oscar.jacobsson@celocom.com>]
4278
4279   *) ASN1 fixes. i2d_ASN1_OBJECT was not returning the correct
4280      length if passed a buffer. ASN1_INTEGER_to_BN failed
4281      if passed a NULL BN and its argument was negative.
4282      [Steve Henson, pointed out by Sven Heiberg <sven@tartu.cyber.ee>]
4283
4284   *) Modification to PKCS#7 encoding routines to output definite
4285      length encoding. Since currently the whole structures are in
4286      memory there's not real point in using indefinite length 
4287      constructed encoding. However if OpenSSL is compiled with
4288      the flag PKCS7_INDEFINITE_ENCODING the old form is used.
4289      [Steve Henson]
4290
4291   *) Added BIO_vprintf() and BIO_vsnprintf().
4292      [Richard Levitte]
4293
4294   *) Added more prefixes to parse for in the the strings written
4295      through a logging bio, to cover all the levels that are available
4296      through syslog.  The prefixes are now:
4297
4298         PANIC, EMERG, EMR       =>      LOG_EMERG
4299         ALERT, ALR              =>      LOG_ALERT
4300         CRIT, CRI               =>      LOG_CRIT
4301         ERROR, ERR              =>      LOG_ERR
4302         WARNING, WARN, WAR      =>      LOG_WARNING
4303         NOTICE, NOTE, NOT       =>      LOG_NOTICE
4304         INFO, INF               =>      LOG_INFO
4305         DEBUG, DBG              =>      LOG_DEBUG
4306
4307      and as before, if none of those prefixes are present at the
4308      beginning of the string, LOG_ERR is chosen.
4309
4310      On Win32, the LOG_* levels are mapped according to this:
4311
4312         LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR => EVENTLOG_ERROR_TYPE
4313         LOG_WARNING                             => EVENTLOG_WARNING_TYPE
4314         LOG_NOTICE, LOG_INFO, LOG_DEBUG         => EVENTLOG_INFORMATION_TYPE
4315
4316      [Richard Levitte]
4317
4318   *) Made it possible to reconfigure with just the configuration
4319      argument "reconf" or "reconfigure".  The command line arguments
4320      are stored in Makefile.ssl in the variable CONFIGURE_ARGS,
4321      and are retrieved from there when reconfiguring.
4322      [Richard Levitte]
4323
4324   *) MD4 implemented.
4325      [Assar Westerlund <assar@sics.se>, Richard Levitte]
4326
4327   *) Add the arguments -CAfile and -CApath to the pkcs12 utility.
4328      [Richard Levitte]
4329
4330   *) The obj_dat.pl script was messing up the sorting of object
4331      names. The reason was that it compared the quoted version
4332      of strings as a result "OCSP" > "OCSP Signing" because
4333      " > SPACE. Changed script to store unquoted versions of
4334      names and add quotes on output. It was also omitting some
4335      names from the lookup table if they were given a default
4336      value (that is if SN is missing it is given the same
4337      value as LN and vice versa), these are now added on the
4338      grounds that if an object has a name we should be able to
4339      look it up. Finally added warning output when duplicate
4340      short or long names are found.
4341      [Steve Henson]
4342
4343   *) Changes needed for Tandem NSK.
4344      [Scott Uroff <scott@xypro.com>]
4345
4346   *) Fix SSL 2.0 rollback checking: Due to an off-by-one error in
4347      RSA_padding_check_SSLv23(), special padding was never detected
4348      and thus the SSL 3.0/TLS 1.0 countermeasure against protocol
4349      version rollback attacks was not effective.
4350
4351      In s23_clnt.c, don't use special rollback-attack detection padding
4352      (RSA_SSLV23_PADDING) if SSL 2.0 is the only protocol enabled in the
4353      client; similarly, in s23_srvr.c, don't do the rollback check if
4354      SSL 2.0 is the only protocol enabled in the server.
4355      [Bodo Moeller]
4356
4357   *) Make it possible to get hexdumps of unprintable data with 'openssl
4358      asn1parse'.  By implication, the functions ASN1_parse_dump() and
4359      BIO_dump_indent() are added.
4360      [Richard Levitte]
4361
4362   *) New functions ASN1_STRING_print_ex() and X509_NAME_print_ex()
4363      these print out strings and name structures based on various
4364      flags including RFC2253 support and proper handling of
4365      multibyte characters. Added options to the 'x509' utility 
4366      to allow the various flags to be set.
4367      [Steve Henson]
4368
4369   *) Various fixes to use ASN1_TIME instead of ASN1_UTCTIME.
4370      Also change the functions X509_cmp_current_time() and
4371      X509_gmtime_adj() work with an ASN1_TIME structure,
4372      this will enable certificates using GeneralizedTime in validity
4373      dates to be checked.
4374      [Steve Henson]
4375
4376   *) Make the NEG_PUBKEY_BUG code (which tolerates invalid
4377      negative public key encodings) on by default,
4378      NO_NEG_PUBKEY_BUG can be set to disable it.
4379      [Steve Henson]
4380
4381   *) New function c2i_ASN1_OBJECT() which acts on ASN1_OBJECT
4382      content octets. An i2c_ASN1_OBJECT is unnecessary because
4383      the encoding can be trivially obtained from the structure.
4384      [Steve Henson]
4385
4386   *) crypto/err.c locking bugfix: Use write locks (CRYPTO_w_[un]lock),
4387      not read locks (CRYPTO_r_[un]lock).
4388      [Bodo Moeller]
4389
4390   *) A first attempt at creating official support for shared
4391      libraries through configuration.  I've kept it so the
4392      default is static libraries only, and the OpenSSL programs
4393      are always statically linked for now, but there are
4394      preparations for dynamic linking in place.
4395      This has been tested on Linux and Tru64.
4396      [Richard Levitte]
4397
4398   *) Randomness polling function for Win9x, as described in:
4399      Peter Gutmann, Software Generation of Practically Strong
4400      Random Numbers.
4401      [Ulf Möller]
4402
4403   *) Fix so PRNG is seeded in req if using an already existing
4404      DSA key.
4405      [Steve Henson]
4406
4407   *) New options to smime application. -inform and -outform
4408      allow alternative formats for the S/MIME message including
4409      PEM and DER. The -content option allows the content to be
4410      specified separately. This should allow things like Netscape
4411      form signing output easier to verify.
4412      [Steve Henson]
4413
4414   *) Fix the ASN1 encoding of tags using the 'long form'.
4415      [Steve Henson]
4416
4417   *) New ASN1 functions, i2c_* and c2i_* for INTEGER and BIT
4418      STRING types. These convert content octets to and from the
4419      underlying type. The actual tag and length octets are
4420      already assumed to have been read in and checked. These
4421      are needed because all other string types have virtually
4422      identical handling apart from the tag. By having versions
4423      of the ASN1 functions that just operate on content octets
4424      IMPLICIT tagging can be handled properly. It also allows
4425      the ASN1_ENUMERATED code to be cut down because ASN1_ENUMERATED
4426      and ASN1_INTEGER are identical apart from the tag.
4427      [Steve Henson]
4428
4429   *) Change the handling of OID objects as follows:
4430
4431      - New object identifiers are inserted in objects.txt, following
4432        the syntax given in objects.README.
4433      - objects.pl is used to process obj_mac.num and create a new
4434        obj_mac.h.
4435      - obj_dat.pl is used to create a new obj_dat.h, using the data in
4436        obj_mac.h.
4437
4438      This is currently kind of a hack, and the perl code in objects.pl
4439      isn't very elegant, but it works as I intended.  The simplest way
4440      to check that it worked correctly is to look in obj_dat.h and
4441      check the array nid_objs and make sure the objects haven't moved
4442      around (this is important!).  Additions are OK, as well as
4443      consistent name changes. 
4444      [Richard Levitte]
4445
4446   *) Add BSD-style MD5-based passwords to 'openssl passwd' (option '-1').
4447      [Bodo Moeller]
4448
4449   *) Addition of the command line parameter '-rand file' to 'openssl req'.
4450      The given file adds to whatever has already been seeded into the
4451      random pool through the RANDFILE configuration file option or
4452      environment variable, or the default random state file.
4453      [Richard Levitte]
4454
4455   *) mkstack.pl now sorts each macro group into lexical order.
4456      Previously the output order depended on the order the files
4457      appeared in the directory, resulting in needless rewriting
4458      of safestack.h .
4459      [Steve Henson]
4460
4461   *) Patches to make OpenSSL compile under Win32 again. Mostly
4462      work arounds for the VC++ problem that it treats func() as
4463      func(void). Also stripped out the parts of mkdef.pl that
4464      added extra typesafe functions: these no longer exist.
4465      [Steve Henson]
4466
4467   *) Reorganisation of the stack code. The macros are now all 
4468      collected in safestack.h . Each macro is defined in terms of
4469      a "stack macro" of the form SKM_<name>(type, a, b). The 
4470      DEBUG_SAFESTACK is now handled in terms of function casts,
4471      this has the advantage of retaining type safety without the
4472      use of additional functions. If DEBUG_SAFESTACK is not defined
4473      then the non typesafe macros are used instead. Also modified the
4474      mkstack.pl script to handle the new form. Needs testing to see
4475      if which (if any) compilers it chokes and maybe make DEBUG_SAFESTACK
4476      the default if no major problems. Similar behaviour for ASN1_SET_OF
4477      and PKCS12_STACK_OF.
4478      [Steve Henson]
4479
4480   *) When some versions of IIS use the 'NET' form of private key the
4481      key derivation algorithm is different. Normally MD5(password) is
4482      used as a 128 bit RC4 key. In the modified case
4483      MD5(MD5(password) + "SGCKEYSALT")  is used insted. Added some
4484      new functions i2d_RSA_NET(), d2i_RSA_NET() etc which are the same
4485      as the old Netscape_RSA functions except they have an additional
4486      'sgckey' parameter which uses the modified algorithm. Also added
4487      an -sgckey command line option to the rsa utility. Thanks to 
4488      Adrian Peck <bertie@ncipher.com> for posting details of the modified
4489      algorithm to openssl-dev.
4490      [Steve Henson]
4491
4492   *) The evp_local.h macros were using 'c.##kname' which resulted in
4493      invalid expansion on some systems (SCO 5.0.5 for example).
4494      Corrected to 'c.kname'.
4495      [Phillip Porch <root@theporch.com>]
4496
4497   *) New X509_get1_email() and X509_REQ_get1_email() functions that return
4498      a STACK of email addresses from a certificate or request, these look
4499      in the subject name and the subject alternative name extensions and 
4500      omit any duplicate addresses.
4501      [Steve Henson]
4502
4503   *) Re-implement BN_mod_exp2_mont using independent (and larger) windows.
4504      This makes DSA verification about 2 % faster.
4505      [Bodo Moeller]
4506
4507   *) Increase maximum window size in BN_mod_exp_... to 6 bits instead of 5
4508      (meaning that now 2^5 values will be precomputed, which is only 4 KB
4509      plus overhead for 1024 bit moduli).
4510      This makes exponentiations about 0.5 % faster for 1024 bit
4511      exponents (as measured by "openssl speed rsa2048").
4512      [Bodo Moeller]
4513
4514   *) Rename memory handling macros to avoid conflicts with other
4515      software:
4516           Malloc         =>  OPENSSL_malloc
4517           Malloc_locked  =>  OPENSSL_malloc_locked
4518           Realloc        =>  OPENSSL_realloc
4519           Free           =>  OPENSSL_free
4520      [Richard Levitte]
4521
4522   *) New function BN_mod_exp_mont_word for small bases (roughly 15%
4523      faster than BN_mod_exp_mont, i.e. 7% for a full DH exchange).
4524      [Bodo Moeller]
4525
4526   *) CygWin32 support.
4527      [John Jarvie <jjarvie@newsguy.com>]
4528
4529   *) The type-safe stack code has been rejigged. It is now only compiled
4530      in when OpenSSL is configured with the DEBUG_SAFESTACK option and
4531      by default all type-specific stack functions are "#define"d back to
4532      standard stack functions. This results in more streamlined output
4533      but retains the type-safety checking possibilities of the original
4534      approach.
4535      [Geoff Thorpe]
4536
4537   *) The STACK code has been cleaned up, and certain type declarations
4538      that didn't make a lot of sense have been brought in line. This has
4539      also involved a cleanup of sorts in safestack.h to more correctly
4540      map type-safe stack functions onto their plain stack counterparts.
4541      This work has also resulted in a variety of "const"ifications of
4542      lots of the code, especially "_cmp" operations which should normally
4543      be prototyped with "const" parameters anyway.
4544      [Geoff Thorpe]
4545
4546   *) When generating bytes for the first time in md_rand.c, 'stir the pool'
4547      by seeding with STATE_SIZE dummy bytes (with zero entropy count).
4548      (The PRNG state consists of two parts, the large pool 'state' and 'md',
4549      where all of 'md' is used each time the PRNG is used, but 'state'
4550      is used only indexed by a cyclic counter. As entropy may not be
4551      well distributed from the beginning, 'md' is important as a
4552      chaining variable. However, the output function chains only half
4553      of 'md', i.e. 80 bits.  ssleay_rand_add, on the other hand, chains
4554      all of 'md', and seeding with STATE_SIZE dummy bytes will result
4555      in all of 'state' being rewritten, with the new values depending
4556      on virtually all of 'md'.  This overcomes the 80 bit limitation.)
4557      [Bodo Moeller]
4558
4559   *) In ssl/s2_clnt.c and ssl/s3_clnt.c, call ERR_clear_error() when
4560      the handshake is continued after ssl_verify_cert_chain();
4561      otherwise, if SSL_VERIFY_NONE is set, remaining error codes
4562      can lead to 'unexplainable' connection aborts later.
4563      [Bodo Moeller; problem tracked down by Lutz Jaenicke]
4564
4565   *) Major EVP API cipher revision.
4566      Add hooks for extra EVP features. This allows various cipher
4567      parameters to be set in the EVP interface. Support added for variable
4568      key length ciphers via the EVP_CIPHER_CTX_set_key_length() function and
4569      setting of RC2 and RC5 parameters.
4570
4571      Modify EVP_OpenInit() and EVP_SealInit() to cope with variable key length
4572      ciphers.
4573
4574      Remove lots of duplicated code from the EVP library. For example *every*
4575      cipher init() function handles the 'iv' in the same way according to the
4576      cipher mode. They also all do nothing if the 'key' parameter is NULL and
4577      for CFB and OFB modes they zero ctx->num.
4578
4579      New functionality allows removal of S/MIME code RC2 hack.
4580
4581      Most of the routines have the same form and so can be declared in terms
4582      of macros.
4583
4584      By shifting this to the top level EVP_CipherInit() it can be removed from
4585      all individual ciphers. If the cipher wants to handle IVs or keys
4586      differently it can set the EVP_CIPH_CUSTOM_IV or EVP_CIPH_ALWAYS_CALL_INIT
4587      flags.
4588
4589      Change lots of functions like EVP_EncryptUpdate() to now return a
4590      value: although software versions of the algorithms cannot fail
4591      any installed hardware versions can.
4592      [Steve Henson]
4593
4594   *) Implement SSL_OP_TLS_ROLLBACK_BUG: In ssl3_get_client_key_exchange, if
4595      this option is set, tolerate broken clients that send the negotiated
4596      protocol version number instead of the requested protocol version
4597      number.
4598      [Bodo Moeller]
4599
4600   *) Call dh_tmp_cb (set by ..._TMP_DH_CB) with correct 'is_export' flag;
4601      i.e. non-zero for export ciphersuites, zero otherwise.
4602      Previous versions had this flag inverted, inconsistent with
4603      rsa_tmp_cb (..._TMP_RSA_CB).
4604      [Bodo Moeller; problem reported by Amit Chopra]
4605
4606   *) Add missing DSA library text string. Work around for some IIS
4607      key files with invalid SEQUENCE encoding.
4608      [Steve Henson]
4609
4610   *) Add a document (doc/standards.txt) that list all kinds of standards
4611      and so on that are implemented in OpenSSL.
4612      [Richard Levitte]
4613
4614   *) Enhance c_rehash script. Old version would mishandle certificates
4615      with the same subject name hash and wouldn't handle CRLs at all.
4616      Added -fingerprint option to crl utility, to support new c_rehash
4617      features.
4618      [Steve Henson]
4619
4620   *) Eliminate non-ANSI declarations in crypto.h and stack.h.
4621      [Ulf Möller]
4622
4623   *) Fix for SSL server purpose checking. Server checking was
4624      rejecting certificates which had extended key usage present
4625      but no ssl client purpose.
4626      [Steve Henson, reported by Rene Grosser <grosser@hisolutions.com>]
4627
4628   *) Make PKCS#12 code work with no password. The PKCS#12 spec
4629      is a little unclear about how a blank password is handled.
4630      Since the password in encoded as a BMPString with terminating
4631      double NULL a zero length password would end up as just the
4632      double NULL. However no password at all is different and is
4633      handled differently in the PKCS#12 key generation code. NS
4634      treats a blank password as zero length. MSIE treats it as no
4635      password on export: but it will try both on import. We now do
4636      the same: PKCS12_parse() tries zero length and no password if
4637      the password is set to "" or NULL (NULL is now a valid password:
4638      it wasn't before) as does the pkcs12 application.
4639      [Steve Henson]
4640
4641   *) Bugfixes in apps/x509.c: Avoid a memory leak; and don't use
4642      perror when PEM_read_bio_X509_REQ fails, the error message must
4643      be obtained from the error queue.
4644      [Bodo Moeller]
4645
4646   *) Avoid 'thread_hash' memory leak in crypto/err/err.c by freeing
4647      it in ERR_remove_state if appropriate, and change ERR_get_state
4648      accordingly to avoid race conditions (this is necessary because
4649      thread_hash is no longer constant once set).
4650      [Bodo Moeller]
4651
4652   *) Bugfix for linux-elf makefile.one.
4653      [Ulf Möller]
4654
4655   *) RSA_get_default_method() will now cause a default
4656      RSA_METHOD to be chosen if one doesn't exist already.
4657      Previously this was only set during a call to RSA_new()
4658      or RSA_new_method(NULL) meaning it was possible for
4659      RSA_get_default_method() to return NULL.
4660      [Geoff Thorpe]
4661
4662   *) Added native name translation to the existing DSO code
4663      that will convert (if the flag to do so is set) filenames
4664      that are sufficiently small and have no path information
4665      into a canonical native form. Eg. "blah" converted to
4666      "libblah.so" or "blah.dll" etc.
4667      [Geoff Thorpe]
4668
4669   *) New function ERR_error_string_n(e, buf, len) which is like
4670      ERR_error_string(e, buf), but writes at most 'len' bytes
4671      including the 0 terminator.  For ERR_error_string_n, 'buf'
4672      may not be NULL.
4673      [Damien Miller <djm@mindrot.org>, Bodo Moeller]
4674
4675   *) CONF library reworked to become more general.  A new CONF
4676      configuration file reader "class" is implemented as well as a
4677      new functions (NCONF_*, for "New CONF") to handle it.  The now
4678      old CONF_* functions are still there, but are reimplemented to
4679      work in terms of the new functions.  Also, a set of functions
4680      to handle the internal storage of the configuration data is
4681      provided to make it easier to write new configuration file
4682      reader "classes" (I can definitely see something reading a
4683      configuration file in XML format, for example), called _CONF_*,
4684      or "the configuration storage API"...
4685
4686      The new configuration file reading functions are:
4687
4688         NCONF_new, NCONF_free, NCONF_load, NCONF_load_fp, NCONF_load_bio,
4689         NCONF_get_section, NCONF_get_string, NCONF_get_numbre
4690
4691         NCONF_default, NCONF_WIN32
4692
4693         NCONF_dump_fp, NCONF_dump_bio
4694
4695      NCONF_default and NCONF_WIN32 are method (or "class") choosers,
4696      NCONF_new creates a new CONF object.  This works in the same way
4697      as other interfaces in OpenSSL, like the BIO interface.
4698      NCONF_dump_* dump the internal storage of the configuration file,
4699      which is useful for debugging.  All other functions take the same
4700      arguments as the old CONF_* functions wth the exception of the
4701      first that must be a `CONF *' instead of a `LHASH *'.
4702
4703      To make it easer to use the new classes with the old CONF_* functions,
4704      the function CONF_set_default_method is provided.
4705      [Richard Levitte]
4706
4707   *) Add '-tls1' option to 'openssl ciphers', which was already
4708      mentioned in the documentation but had not been implemented.
4709      (This option is not yet really useful because even the additional
4710      experimental TLS 1.0 ciphers are currently treated as SSL 3.0 ciphers.)
4711      [Bodo Moeller]
4712
4713   *) Initial DSO code added into libcrypto for letting OpenSSL (and
4714      OpenSSL-based applications) load shared libraries and bind to
4715      them in a portable way.
4716      [Geoff Thorpe, with contributions from Richard Levitte]
4717
4718  Changes between 0.9.5 and 0.9.5a  [1 Apr 2000]
4719
4720   *) Make sure _lrotl and _lrotr are only used with MSVC.
4721
4722   *) Use lock CRYPTO_LOCK_RAND correctly in ssleay_rand_status
4723      (the default implementation of RAND_status).
4724
4725   *) Rename openssl x509 option '-crlext', which was added in 0.9.5,
4726      to '-clrext' (= clear extensions), as intended and documented.
4727      [Bodo Moeller; inconsistency pointed out by Michael Attili
4728      <attili@amaxo.com>]
4729
4730   *) Fix for HMAC. It wasn't zeroing the rest of the block if the key length
4731      was larger than the MD block size.      
4732      [Steve Henson, pointed out by Yost William <YostW@tce.com>]
4733
4734   *) Modernise PKCS12_parse() so it uses STACK_OF(X509) for its ca argument
4735      fix a leak when the ca argument was passed as NULL. Stop X509_PUBKEY_set()
4736      using the passed key: if the passed key was a private key the result
4737      of X509_print(), for example, would be to print out all the private key
4738      components.
4739      [Steve Henson]
4740
4741   *) des_quad_cksum() byte order bug fix.
4742      [Ulf Möller, using the problem description in krb4-0.9.7, where
4743       the solution is attributed to Derrick J Brashear <shadow@DEMENTIA.ORG>]
4744
4745   *) Fix so V_ASN1_APP_CHOOSE works again: however its use is strongly
4746      discouraged.
4747      [Steve Henson, pointed out by Brian Korver <briank@cs.stanford.edu>]
4748
4749   *) For easily testing in shell scripts whether some command
4750      'openssl XXX' exists, the new pseudo-command 'openssl no-XXX'
4751      returns with exit code 0 iff no command of the given name is available.
4752      'no-XXX' is printed in this case, 'XXX' otherwise.  In both cases,
4753      the output goes to stdout and nothing is printed to stderr.
4754      Additional arguments are always ignored.
4755
4756      Since for each cipher there is a command of the same name,
4757      the 'no-cipher' compilation switches can be tested this way.
4758
4759      ('openssl no-XXX' is not able to detect pseudo-commands such
4760      as 'quit', 'list-XXX-commands', or 'no-XXX' itself.)
4761      [Bodo Moeller]
4762
4763   *) Update test suite so that 'make test' succeeds in 'no-rsa' configuration.
4764      [Bodo Moeller]
4765
4766   *) For SSL_[CTX_]set_tmp_dh, don't create a DH key if SSL_OP_SINGLE_DH_USE
4767      is set; it will be thrown away anyway because each handshake creates
4768      its own key.
4769      ssl_cert_dup, which is used by SSL_new, now copies DH keys in addition
4770      to parameters -- in previous versions (since OpenSSL 0.9.3) the
4771      'default key' from SSL_CTX_set_tmp_dh would always be lost, meanining
4772      you effectivly got SSL_OP_SINGLE_DH_USE when using this macro.
4773      [Bodo Moeller]
4774
4775   *) New s_client option -ign_eof: EOF at stdin is ignored, and
4776      'Q' and 'R' lose their special meanings (quit/renegotiate).
4777      This is part of what -quiet does; unlike -quiet, -ign_eof
4778      does not suppress any output.
4779      [Richard Levitte]
4780
4781   *) Add compatibility options to the purpose and trust code. The
4782      purpose X509_PURPOSE_ANY is "any purpose" which automatically
4783      accepts a certificate or CA, this was the previous behaviour,
4784      with all the associated security issues.
4785
4786      X509_TRUST_COMPAT is the old trust behaviour: only and
4787      automatically trust self signed roots in certificate store. A
4788      new trust setting X509_TRUST_DEFAULT is used to specify that
4789      a purpose has no associated trust setting and it should instead
4790      use the value in the default purpose.
4791      [Steve Henson]
4792
4793   *) Fix the PKCS#8 DSA private key code so it decodes keys again
4794      and fix a memory leak.
4795      [Steve Henson]
4796
4797   *) In util/mkerr.pl (which implements 'make errors'), preserve
4798      reason strings from the previous version of the .c file, as
4799      the default to have only downcase letters (and digits) in
4800      automatically generated reasons codes is not always appropriate.
4801      [Bodo Moeller]
4802
4803   *) In ERR_load_ERR_strings(), build an ERR_LIB_SYS error reason table
4804      using strerror.  Previously, ERR_reason_error_string() returned
4805      library names as reason strings for SYSerr; but SYSerr is a special
4806      case where small numbers are errno values, not library numbers.
4807      [Bodo Moeller]
4808
4809   *) Add '-dsaparam' option to 'openssl dhparam' application.  This
4810      converts DSA parameters into DH parameters. (When creating parameters,
4811      DSA_generate_parameters is used.)
4812      [Bodo Moeller]
4813
4814   *) Include 'length' (recommended exponent length) in C code generated
4815      by 'openssl dhparam -C'.
4816      [Bodo Moeller]
4817
4818   *) The second argument to set_label in perlasm was already being used
4819      so couldn't be used as a "file scope" flag. Moved to third argument
4820      which was free.
4821      [Steve Henson]
4822
4823   *) In PEM_ASN1_write_bio and some other functions, use RAND_pseudo_bytes
4824      instead of RAND_bytes for encryption IVs and salts.
4825      [Bodo Moeller]
4826
4827   *) Include RAND_status() into RAND_METHOD instead of implementing
4828      it only for md_rand.c  Otherwise replacing the PRNG by calling
4829      RAND_set_rand_method would be impossible.
4830      [Bodo Moeller]
4831
4832   *) Don't let DSA_generate_key() enter an infinite loop if the random
4833      number generation fails.
4834      [Bodo Moeller]
4835
4836   *) New 'rand' application for creating pseudo-random output.
4837      [Bodo Moeller]
4838
4839   *) Added configuration support for Linux/IA64
4840      [Rolf Haberrecker <rolf@suse.de>]
4841
4842   *) Assembler module support for Mingw32.
4843      [Ulf Möller]
4844
4845   *) Shared library support for HPUX (in shlib/).
4846      [Lutz Jaenicke <Lutz.Jaenicke@aet.TU-Cottbus.DE> and Anonymous]
4847
4848   *) Shared library support for Solaris gcc.
4849      [Lutz Behnke <behnke@trustcenter.de>]
4850
4851  Changes between 0.9.4 and 0.9.5  [28 Feb 2000]
4852
4853   *) PKCS7_encrypt() was adding text MIME headers twice because they
4854      were added manually and by SMIME_crlf_copy().
4855      [Steve Henson]
4856
4857   *) In bntest.c don't call BN_rand with zero bits argument.
4858      [Steve Henson, pointed out by Andrew W. Gray <agray@iconsinc.com>]
4859
4860   *) BN_mul bugfix: In bn_mul_part_recursion() only the a>a[n] && b>b[n]
4861      case was implemented. This caused BN_div_recp() to fail occasionally.
4862      [Ulf Möller]
4863
4864   *) Add an optional second argument to the set_label() in the perl
4865      assembly language builder. If this argument exists and is set
4866      to 1 it signals that the assembler should use a symbol whose 
4867      scope is the entire file, not just the current function. This
4868      is needed with MASM which uses the format label:: for this scope.
4869      [Steve Henson, pointed out by Peter Runestig <peter@runestig.com>]
4870
4871   *) Change the ASN1 types so they are typedefs by default. Before
4872      almost all types were #define'd to ASN1_STRING which was causing
4873      STACK_OF() problems: you couldn't declare STACK_OF(ASN1_UTF8STRING)
4874      for example.
4875      [Steve Henson]
4876
4877   *) Change names of new functions to the new get1/get0 naming
4878      convention: After 'get1', the caller owns a reference count
4879      and has to call ..._free; 'get0' returns a pointer to some
4880      data structure without incrementing reference counters.
4881      (Some of the existing 'get' functions increment a reference
4882      counter, some don't.)
4883      Similarly, 'set1' and 'add1' functions increase reference
4884      counters or duplicate objects.
4885      [Steve Henson]
4886
4887   *) Allow for the possibility of temp RSA key generation failure:
4888      the code used to assume it always worked and crashed on failure.
4889      [Steve Henson]
4890
4891   *) Fix potential buffer overrun problem in BIO_printf().
4892      [Ulf Möller, using public domain code by Patrick Powell; problem
4893       pointed out by David Sacerdote <das33@cornell.edu>]
4894
4895   *) Support EGD <http://www.lothar.com/tech/crypto/>.  New functions
4896      RAND_egd() and RAND_status().  In the command line application,
4897      the EGD socket can be specified like a seed file using RANDFILE
4898      or -rand.
4899      [Ulf Möller]
4900
4901   *) Allow the string CERTIFICATE to be tolerated in PKCS#7 structures.
4902      Some CAs (e.g. Verisign) distribute certificates in this form.
4903      [Steve Henson]
4904
4905   *) Remove the SSL_ALLOW_ADH compile option and set the default cipher
4906      list to exclude them. This means that no special compilation option
4907      is needed to use anonymous DH: it just needs to be included in the
4908      cipher list.
4909      [Steve Henson]
4910
4911   *) Change the EVP_MD_CTX_type macro so its meaning consistent with
4912      EVP_MD_type. The old functionality is available in a new macro called
4913      EVP_MD_md(). Change code that uses it and update docs.
4914      [Steve Henson]
4915
4916   *) ..._ctrl functions now have corresponding ..._callback_ctrl functions
4917      where the 'void *' argument is replaced by a function pointer argument.
4918      Previously 'void *' was abused to point to functions, which works on
4919      many platforms, but is not correct.  As these functions are usually
4920      called by macros defined in OpenSSL header files, most source code
4921      should work without changes.
4922      [Richard Levitte]
4923
4924   *) <openssl/opensslconf.h> (which is created by Configure) now contains
4925      sections with information on -D... compiler switches used for
4926      compiling the library so that applications can see them.  To enable
4927      one of these sections, a pre-processor symbol OPENSSL_..._DEFINES
4928      must be defined.  E.g.,
4929         #define OPENSSL_ALGORITHM_DEFINES
4930         #include <openssl/opensslconf.h>
4931      defines all pertinent NO_<algo> symbols, such as NO_IDEA, NO_RSA, etc.
4932      [Richard Levitte, Ulf and Bodo Möller]
4933
4934   *) Bugfix: Tolerate fragmentation and interleaving in the SSL 3/TLS
4935      record layer.
4936      [Bodo Moeller]
4937
4938   *) Change the 'other' type in certificate aux info to a STACK_OF
4939      X509_ALGOR. Although not an AlgorithmIdentifier as such it has
4940      the required ASN1 format: arbitrary types determined by an OID.
4941      [Steve Henson]
4942
4943   *) Add some PEM_write_X509_REQ_NEW() functions and a command line
4944      argument to 'req'. This is not because the function is newer or
4945      better than others it just uses the work 'NEW' in the certificate
4946      request header lines. Some software needs this.
4947      [Steve Henson]
4948
4949   *) Reorganise password command line arguments: now passwords can be
4950      obtained from various sources. Delete the PEM_cb function and make
4951      it the default behaviour: i.e. if the callback is NULL and the
4952      usrdata argument is not NULL interpret it as a null terminated pass
4953      phrase. If usrdata and the callback are NULL then the pass phrase
4954      is prompted for as usual.
4955      [Steve Henson]
4956
4957   *) Add support for the Compaq Atalla crypto accelerator. If it is installed,
4958      the support is automatically enabled. The resulting binaries will
4959      autodetect the card and use it if present.
4960      [Ben Laurie and Compaq Inc.]
4961
4962   *) Work around for Netscape hang bug. This sends certificate request
4963      and server done in one record. Since this is perfectly legal in the
4964      SSL/TLS protocol it isn't a "bug" option and is on by default. See
4965      the bugs/SSLv3 entry for more info.
4966      [Steve Henson]
4967
4968   *) HP-UX tune-up: new unified configs, HP C compiler bug workaround.
4969      [Andy Polyakov]
4970
4971   *) Add -rand argument to smime and pkcs12 applications and read/write
4972      of seed file.
4973      [Steve Henson]
4974
4975   *) New 'passwd' tool for crypt(3) and apr1 password hashes.
4976      [Bodo Moeller]
4977
4978   *) Add command line password options to the remaining applications.
4979      [Steve Henson]
4980
4981   *) Bug fix for BN_div_recp() for numerators with an even number of
4982      bits.
4983      [Ulf Möller]
4984
4985   *) More tests in bntest.c, and changed test_bn output.
4986      [Ulf Möller]
4987
4988   *) ./config recognizes MacOS X now.
4989      [Andy Polyakov]
4990
4991   *) Bug fix for BN_div() when the first words of num and divsor are
4992      equal (it gave wrong results if (rem=(n1-q*d0)&BN_MASK2) < d0).
4993      [Ulf Möller]
4994
4995   *) Add support for various broken PKCS#8 formats, and command line
4996      options to produce them.
4997      [Steve Henson]
4998
4999   *) New functions BN_CTX_start(), BN_CTX_get() and BT_CTX_end() to
5000      get temporary BIGNUMs from a BN_CTX.
5001      [Ulf Möller]
5002
5003   *) Correct return values in BN_mod_exp_mont() and BN_mod_exp2_mont()
5004      for p == 0.
5005      [Ulf Möller]
5006
5007   *) Change the SSLeay_add_all_*() functions to OpenSSL_add_all_*() and
5008      include a #define from the old name to the new. The original intent
5009      was that statically linked binaries could for example just call
5010      SSLeay_add_all_ciphers() to just add ciphers to the table and not
5011      link with digests. This never worked becayse SSLeay_add_all_digests()
5012      and SSLeay_add_all_ciphers() were in the same source file so calling
5013      one would link with the other. They are now in separate source files.
5014      [Steve Henson]
5015
5016   *) Add a new -notext option to 'ca' and a -pubkey option to 'spkac'.
5017      [Steve Henson]
5018
5019   *) Use a less unusual form of the Miller-Rabin primality test (it used
5020      a binary algorithm for exponentiation integrated into the Miller-Rabin
5021      loop, our standard modexp algorithms are faster).
5022      [Bodo Moeller]
5023
5024   *) Support for the EBCDIC character set completed.
5025      [Martin Kraemer <Martin.Kraemer@Mch.SNI.De>]
5026
5027   *) Source code cleanups: use const where appropriate, eliminate casts,
5028      use void * instead of char * in lhash.
5029      [Ulf Möller] 
5030
5031   *) Bugfix: ssl3_send_server_key_exchange was not restartable
5032      (the state was not changed to SSL3_ST_SW_KEY_EXCH_B, and because of
5033      this the server could overwrite ephemeral keys that the client
5034      has already seen).
5035      [Bodo Moeller]
5036
5037   *) Turn DSA_is_prime into a macro that calls BN_is_prime,
5038      using 50 iterations of the Rabin-Miller test.
5039
5040      DSA_generate_parameters now uses BN_is_prime_fasttest (with 50
5041      iterations of the Rabin-Miller test as required by the appendix
5042      to FIPS PUB 186[-1]) instead of DSA_is_prime.
5043      As BN_is_prime_fasttest includes trial division, DSA parameter
5044      generation becomes much faster.
5045
5046      This implies a change for the callback functions in DSA_is_prime
5047      and DSA_generate_parameters: The callback function is called once
5048      for each positive witness in the Rabin-Miller test, not just
5049      occasionally in the inner loop; and the parameters to the
5050      callback function now provide an iteration count for the outer
5051      loop rather than for the current invocation of the inner loop.
5052      DSA_generate_parameters additionally can call the callback
5053      function with an 'iteration count' of -1, meaning that a
5054      candidate has passed the trial division test (when q is generated 
5055      from an application-provided seed, trial division is skipped).
5056      [Bodo Moeller]
5057
5058   *) New function BN_is_prime_fasttest that optionally does trial
5059      division before starting the Rabin-Miller test and has
5060      an additional BN_CTX * argument (whereas BN_is_prime always
5061      has to allocate at least one BN_CTX).
5062      'callback(1, -1, cb_arg)' is called when a number has passed the
5063      trial division stage.
5064      [Bodo Moeller]
5065
5066   *) Fix for bug in CRL encoding. The validity dates weren't being handled
5067      as ASN1_TIME.
5068      [Steve Henson]
5069
5070   *) New -pkcs12 option to CA.pl script to write out a PKCS#12 file.
5071      [Steve Henson]
5072
5073   *) New function BN_pseudo_rand().
5074      [Ulf Möller]
5075
5076   *) Clean up BN_mod_mul_montgomery(): replace the broken (and unreadable)
5077      bignum version of BN_from_montgomery() with the working code from
5078      SSLeay 0.9.0 (the word based version is faster anyway), and clean up
5079      the comments.
5080      [Ulf Möller]
5081
5082   *) Avoid a race condition in s2_clnt.c (function get_server_hello) that
5083      made it impossible to use the same SSL_SESSION data structure in
5084      SSL2 clients in multiple threads.
5085      [Bodo Moeller]
5086
5087   *) The return value of RAND_load_file() no longer counts bytes obtained
5088      by stat().  RAND_load_file(..., -1) is new and uses the complete file
5089      to seed the PRNG (previously an explicit byte count was required).
5090      [Ulf Möller, Bodo Möller]
5091
5092   *) Clean up CRYPTO_EX_DATA functions, some of these didn't have prototypes
5093      used (char *) instead of (void *) and had casts all over the place.
5094      [Steve Henson]
5095
5096   *) Make BN_generate_prime() return NULL on error if ret!=NULL.
5097      [Ulf Möller]
5098
5099   *) Retain source code compatibility for BN_prime_checks macro:
5100      BN_is_prime(..., BN_prime_checks, ...) now uses
5101      BN_prime_checks_for_size to determine the appropriate number of
5102      Rabin-Miller iterations.
5103      [Ulf Möller]
5104
5105   *) Diffie-Hellman uses "safe" primes: DH_check() return code renamed to
5106      DH_CHECK_P_NOT_SAFE_PRIME.
5107      (Check if this is true? OpenPGP calls them "strong".)
5108      [Ulf Möller]
5109
5110   *) Merge the functionality of "dh" and "gendh" programs into a new program
5111      "dhparam". The old programs are retained for now but will handle DH keys
5112      (instead of parameters) in future.
5113      [Steve Henson]
5114
5115   *) Make the ciphers, s_server and s_client programs check the return values
5116      when a new cipher list is set.
5117      [Steve Henson]
5118
5119   *) Enhance the SSL/TLS cipher mechanism to correctly handle the TLS 56bit
5120      ciphers. Before when the 56bit ciphers were enabled the sorting was
5121      wrong.
5122
5123      The syntax for the cipher sorting has been extended to support sorting by
5124      cipher-strength (using the strength_bits hard coded in the tables).
5125      The new command is "@STRENGTH" (see also doc/apps/ciphers.pod).
5126
5127      Fix a bug in the cipher-command parser: when supplying a cipher command
5128      string with an "undefined" symbol (neither command nor alphanumeric
5129      [A-Za-z0-9], ssl_set_cipher_list used to hang in an endless loop. Now
5130      an error is flagged.
5131
5132      Due to the strength-sorting extension, the code of the
5133      ssl_create_cipher_list() function was completely rearranged. I hope that
5134      the readability was also increased :-)
5135      [Lutz Jaenicke <Lutz.Jaenicke@aet.TU-Cottbus.DE>]
5136
5137   *) Minor change to 'x509' utility. The -CAcreateserial option now uses 1
5138      for the first serial number and places 2 in the serial number file. This
5139      avoids problems when the root CA is created with serial number zero and
5140      the first user certificate has the same issuer name and serial number
5141      as the root CA.
5142      [Steve Henson]
5143
5144   *) Fixes to X509_ATTRIBUTE utilities, change the 'req' program so it uses
5145      the new code. Add documentation for this stuff.
5146      [Steve Henson]
5147
5148   *) Changes to X509_ATTRIBUTE utilities. These have been renamed from
5149      X509_*() to X509at_*() on the grounds that they don't handle X509
5150      structures and behave in an analagous way to the X509v3 functions:
5151      they shouldn't be called directly but wrapper functions should be used
5152      instead.
5153
5154      So we also now have some wrapper functions that call the X509at functions
5155      when passed certificate requests. (TO DO: similar things can be done with
5156      PKCS#7 signed and unsigned attributes, PKCS#12 attributes and a few other
5157      things. Some of these need some d2i or i2d and print functionality
5158      because they handle more complex structures.)
5159      [Steve Henson]
5160
5161   *) Add missing #ifndefs that caused missing symbols when building libssl
5162      as a shared library without RSA.  Use #ifndef NO_SSL2 instead of
5163      NO_RSA in ssl/s2*.c. 
5164      [Kris Kennaway <kris@hub.freebsd.org>, modified by Ulf Möller]
5165
5166   *) Precautions against using the PRNG uninitialized: RAND_bytes() now
5167      has a return value which indicates the quality of the random data
5168      (1 = ok, 0 = not seeded).  Also an error is recorded on the thread's
5169      error queue. New function RAND_pseudo_bytes() generates output that is
5170      guaranteed to be unique but not unpredictable. RAND_add is like
5171      RAND_seed, but takes an extra argument for an entropy estimate
5172      (RAND_seed always assumes full entropy).
5173      [Ulf Möller]
5174
5175   *) Do more iterations of Rabin-Miller probable prime test (specifically,
5176      3 for 1024-bit primes, 6 for 512-bit primes, 12 for 256-bit primes
5177      instead of only 2 for all lengths; see BN_prime_checks_for_size definition
5178      in crypto/bn/bn_prime.c for the complete table).  This guarantees a
5179      false-positive rate of at most 2^-80 for random input.
5180      [Bodo Moeller]
5181
5182   *) Rewrite ssl3_read_n (ssl/s3_pkt.c) avoiding a couple of bugs.
5183      [Bodo Moeller]
5184
5185   *) New function X509_CTX_rget_chain() (renamed to X509_CTX_get1_chain
5186      in the 0.9.5 release), this returns the chain
5187      from an X509_CTX structure with a dup of the stack and all
5188      the X509 reference counts upped: so the stack will exist
5189      after X509_CTX_cleanup() has been called. Modify pkcs12.c
5190      to use this.
5191
5192      Also make SSL_SESSION_print() print out the verify return
5193      code.
5194      [Steve Henson]
5195
5196   *) Add manpage for the pkcs12 command. Also change the default
5197      behaviour so MAC iteration counts are used unless the new
5198      -nomaciter option is used. This improves file security and
5199      only older versions of MSIE (4.0 for example) need it.
5200      [Steve Henson]
5201
5202   *) Honor the no-xxx Configure options when creating .DEF files.
5203      [Ulf Möller]
5204
5205   *) Add PKCS#10 attributes to field table: challengePassword, 
5206      unstructuredName and unstructuredAddress. These are taken from
5207      draft PKCS#9 v2.0 but are compatible with v1.2 provided no 
5208      international characters are used.
5209
5210      More changes to X509_ATTRIBUTE code: allow the setting of types
5211      based on strings. Remove the 'loc' parameter when adding
5212      attributes because these will be a SET OF encoding which is sorted
5213      in ASN1 order.
5214      [Steve Henson]
5215
5216   *) Initial changes to the 'req' utility to allow request generation
5217      automation. This will allow an application to just generate a template
5218      file containing all the field values and have req construct the
5219      request.
5220
5221      Initial support for X509_ATTRIBUTE handling. Stacks of these are
5222      used all over the place including certificate requests and PKCS#7
5223      structures. They are currently handled manually where necessary with
5224      some primitive wrappers for PKCS#7. The new functions behave in a
5225      manner analogous to the X509 extension functions: they allow
5226      attributes to be looked up by NID and added.
5227
5228      Later something similar to the X509V3 code would be desirable to
5229      automatically handle the encoding, decoding and printing of the
5230      more complex types. The string types like challengePassword can
5231      be handled by the string table functions.
5232
5233      Also modified the multi byte string table handling. Now there is
5234      a 'global mask' which masks out certain types. The table itself
5235      can use the flag STABLE_NO_MASK to ignore the mask setting: this
5236      is useful when for example there is only one permissible type
5237      (as in countryName) and using the mask might result in no valid
5238      types at all.
5239      [Steve Henson]
5240
5241   *) Clean up 'Finished' handling, and add functions SSL_get_finished and
5242      SSL_get_peer_finished to allow applications to obtain the latest
5243      Finished messages sent to the peer or expected from the peer,
5244      respectively.  (SSL_get_peer_finished is usually the Finished message
5245      actually received from the peer, otherwise the protocol will be aborted.)
5246
5247      As the Finished message are message digests of the complete handshake
5248      (with a total of 192 bits for TLS 1.0 and more for SSL 3.0), they can
5249      be used for external authentication procedures when the authentication
5250      provided by SSL/TLS is not desired or is not enough.
5251      [Bodo Moeller]
5252
5253   *) Enhanced support for Alpha Linux is added. Now ./config checks if
5254      the host supports BWX extension and if Compaq C is present on the
5255      $PATH. Just exploiting of the BWX extension results in 20-30%
5256      performance kick for some algorithms, e.g. DES and RC4 to mention
5257      a couple. Compaq C in turn generates ~20% faster code for MD5 and
5258      SHA1.
5259      [Andy Polyakov]
5260
5261   *) Add support for MS "fast SGC". This is arguably a violation of the
5262      SSL3/TLS protocol. Netscape SGC does two handshakes: the first with
5263      weak crypto and after checking the certificate is SGC a second one
5264      with strong crypto. MS SGC stops the first handshake after receiving
5265      the server certificate message and sends a second client hello. Since
5266      a server will typically do all the time consuming operations before
5267      expecting any further messages from the client (server key exchange
5268      is the most expensive) there is little difference between the two.
5269
5270      To get OpenSSL to support MS SGC we have to permit a second client
5271      hello message after we have sent server done. In addition we have to
5272      reset the MAC if we do get this second client hello.
5273      [Steve Henson]
5274
5275   *) Add a function 'd2i_AutoPrivateKey()' this will automatically decide
5276      if a DER encoded private key is RSA or DSA traditional format. Changed
5277      d2i_PrivateKey_bio() to use it. This is only needed for the "traditional"
5278      format DER encoded private key. Newer code should use PKCS#8 format which
5279      has the key type encoded in the ASN1 structure. Added DER private key
5280      support to pkcs8 application.
5281      [Steve Henson]
5282
5283   *) SSL 3/TLS 1 servers now don't request certificates when an anonymous
5284      ciphersuites has been selected (as required by the SSL 3/TLS 1
5285      specifications).  Exception: When SSL_VERIFY_FAIL_IF_NO_PEER_CERT
5286      is set, we interpret this as a request to violate the specification
5287      (the worst that can happen is a handshake failure, and 'correct'
5288      behaviour would result in a handshake failure anyway).
5289      [Bodo Moeller]
5290
5291   *) In SSL_CTX_add_session, take into account that there might be multiple
5292      SSL_SESSION structures with the same session ID (e.g. when two threads
5293      concurrently obtain them from an external cache).
5294      The internal cache can handle only one SSL_SESSION with a given ID,
5295      so if there's a conflict, we now throw out the old one to achieve
5296      consistency.
5297      [Bodo Moeller]
5298
5299   *) Add OIDs for idea and blowfish in CBC mode. This will allow both
5300      to be used in PKCS#5 v2.0 and S/MIME.  Also add checking to
5301      some routines that use cipher OIDs: some ciphers do not have OIDs
5302      defined and so they cannot be used for S/MIME and PKCS#5 v2.0 for
5303      example.
5304      [Steve Henson]
5305
5306   *) Simplify the trust setting structure and code. Now we just have
5307      two sequences of OIDs for trusted and rejected settings. These will
5308      typically have values the same as the extended key usage extension
5309      and any application specific purposes.
5310
5311      The trust checking code now has a default behaviour: it will just
5312      check for an object with the same NID as the passed id. Functions can
5313      be provided to override either the default behaviour or the behaviour
5314      for a given id. SSL client, server and email already have functions
5315      in place for compatibility: they check the NID and also return "trusted"
5316      if the certificate is self signed.
5317      [Steve Henson]
5318
5319   *) Add d2i,i2d bio/fp functions for PrivateKey: these convert the
5320      traditional format into an EVP_PKEY structure.
5321      [Steve Henson]
5322
5323   *) Add a password callback function PEM_cb() which either prompts for
5324      a password if usr_data is NULL or otherwise assumes it is a null
5325      terminated password. Allow passwords to be passed on command line
5326      environment or config files in a few more utilities.
5327      [Steve Henson]
5328
5329   *) Add a bunch of DER and PEM functions to handle PKCS#8 format private
5330      keys. Add some short names for PKCS#8 PBE algorithms and allow them
5331      to be specified on the command line for the pkcs8 and pkcs12 utilities.
5332      Update documentation.
5333      [Steve Henson]
5334
5335   *) Support for ASN1 "NULL" type. This could be handled before by using
5336      ASN1_TYPE but there wasn't any function that would try to read a NULL
5337      and produce an error if it couldn't. For compatibility we also have
5338      ASN1_NULL_new() and ASN1_NULL_free() functions but these are faked and
5339      don't allocate anything because they don't need to.
5340      [Steve Henson]
5341
5342   *) Initial support for MacOS is now provided. Examine INSTALL.MacOS
5343      for details.
5344      [Andy Polyakov, Roy Woods <roy@centicsystems.ca>]
5345
5346   *) Rebuild of the memory allocation routines used by OpenSSL code and
5347      possibly others as well.  The purpose is to make an interface that
5348      provide hooks so anyone can build a separate set of allocation and
5349      deallocation routines to be used by OpenSSL, for example memory
5350      pool implementations, or something else, which was previously hard
5351      since Malloc(), Realloc() and Free() were defined as macros having
5352      the values malloc, realloc and free, respectively (except for Win32
5353      compilations).  The same is provided for memory debugging code.
5354      OpenSSL already comes with functionality to find memory leaks, but
5355      this gives people a chance to debug other memory problems.
5356
5357      With these changes, a new set of functions and macros have appeared:
5358
5359        CRYPTO_set_mem_debug_functions()         [F]
5360        CRYPTO_get_mem_debug_functions()         [F]
5361        CRYPTO_dbg_set_options()                 [F]
5362        CRYPTO_dbg_get_options()                 [F]
5363        CRYPTO_malloc_debug_init()               [M]
5364
5365      The memory debug functions are NULL by default, unless the library
5366      is compiled with CRYPTO_MDEBUG or friends is defined.  If someone
5367      wants to debug memory anyway, CRYPTO_malloc_debug_init() (which
5368      gives the standard debugging functions that come with OpenSSL) or
5369      CRYPTO_set_mem_debug_functions() (tells OpenSSL to use functions
5370      provided by the library user) must be used.  When the standard
5371      debugging functions are used, CRYPTO_dbg_set_options can be used to
5372      request additional information:
5373      CRYPTO_dbg_set_options(V_CYRPTO_MDEBUG_xxx) corresponds to setting
5374      the CRYPTO_MDEBUG_xxx macro when compiling the library.   
5375
5376      Also, things like CRYPTO_set_mem_functions will always give the
5377      expected result (the new set of functions is used for allocation
5378      and deallocation) at all times, regardless of platform and compiler
5379      options.
5380
5381      To finish it up, some functions that were never use in any other
5382      way than through macros have a new API and new semantic:
5383
5384        CRYPTO_dbg_malloc()
5385        CRYPTO_dbg_realloc()
5386        CRYPTO_dbg_free()
5387
5388      All macros of value have retained their old syntax.
5389      [Richard Levitte and Bodo Moeller]
5390
5391   *) Some S/MIME fixes. The OID for SMIMECapabilities was wrong, the
5392      ordering of SMIMECapabilities wasn't in "strength order" and there
5393      was a missing NULL in the AlgorithmIdentifier for the SHA1 signature
5394      algorithm.
5395      [Steve Henson]
5396
5397   *) Some ASN1 types with illegal zero length encoding (INTEGER,
5398      ENUMERATED and OBJECT IDENTIFIER) choked the ASN1 routines.
5399      [Frans Heymans <fheymans@isaserver.be>, modified by Steve Henson]
5400
5401   *) Merge in my S/MIME library for OpenSSL. This provides a simple
5402      S/MIME API on top of the PKCS#7 code, a MIME parser (with enough
5403      functionality to handle multipart/signed properly) and a utility
5404      called 'smime' to call all this stuff. This is based on code I
5405      originally wrote for Celo who have kindly allowed it to be
5406      included in OpenSSL.
5407      [Steve Henson]
5408
5409   *) Add variants des_set_key_checked and des_set_key_unchecked of
5410      des_set_key (aka des_key_sched).  Global variable des_check_key
5411      decides which of these is called by des_set_key; this way
5412      des_check_key behaves as it always did, but applications and
5413      the library itself, which was buggy for des_check_key == 1,
5414      have a cleaner way to pick the version they need.
5415      [Bodo Moeller]
5416
5417   *) New function PKCS12_newpass() which changes the password of a
5418      PKCS12 structure.
5419      [Steve Henson]
5420
5421   *) Modify X509_TRUST and X509_PURPOSE so it also uses a static and
5422      dynamic mix. In both cases the ids can be used as an index into the
5423      table. Also modified the X509_TRUST_add() and X509_PURPOSE_add()
5424      functions so they accept a list of the field values and the
5425      application doesn't need to directly manipulate the X509_TRUST
5426      structure.
5427      [Steve Henson]
5428
5429   *) Modify the ASN1_STRING_TABLE stuff so it also uses bsearch and doesn't
5430      need initialising.
5431      [Steve Henson]
5432
5433   *) Modify the way the V3 extension code looks up extensions. This now
5434      works in a similar way to the object code: we have some "standard"
5435      extensions in a static table which is searched with OBJ_bsearch()
5436      and the application can add dynamic ones if needed. The file
5437      crypto/x509v3/ext_dat.h now has the info: this file needs to be
5438      updated whenever a new extension is added to the core code and kept
5439      in ext_nid order. There is a simple program 'tabtest.c' which checks
5440      this. New extensions are not added too often so this file can readily
5441      be maintained manually.
5442
5443      There are two big advantages in doing things this way. The extensions
5444      can be looked up immediately and no longer need to be "added" using
5445      X509V3_add_standard_extensions(): this function now does nothing.
5446      [Side note: I get *lots* of email saying the extension code doesn't
5447       work because people forget to call this function]
5448      Also no dynamic allocation is done unless new extensions are added:
5449      so if we don't add custom extensions there is no need to call
5450      X509V3_EXT_cleanup().
5451      [Steve Henson]
5452
5453   *) Modify enc utility's salting as follows: make salting the default. Add a
5454      magic header, so unsalted files fail gracefully instead of just decrypting
5455      to garbage. This is because not salting is a big security hole, so people
5456      should be discouraged from doing it.
5457      [Ben Laurie]
5458
5459   *) Fixes and enhancements to the 'x509' utility. It allowed a message
5460      digest to be passed on the command line but it only used this
5461      parameter when signing a certificate. Modified so all relevant
5462      operations are affected by the digest parameter including the
5463      -fingerprint and -x509toreq options. Also -x509toreq choked if a
5464      DSA key was used because it didn't fix the digest.
5465      [Steve Henson]
5466
5467   *) Initial certificate chain verify code. Currently tests the untrusted
5468      certificates for consistency with the verify purpose (which is set
5469      when the X509_STORE_CTX structure is set up) and checks the pathlength.
5470
5471      There is a NO_CHAIN_VERIFY compilation option to keep the old behaviour:
5472      this is because it will reject chains with invalid extensions whereas
5473      every previous version of OpenSSL and SSLeay made no checks at all.
5474
5475      Trust code: checks the root CA for the relevant trust settings. Trust
5476      settings have an initial value consistent with the verify purpose: e.g.
5477      if the verify purpose is for SSL client use it expects the CA to be
5478      trusted for SSL client use. However the default value can be changed to
5479      permit custom trust settings: one example of this would be to only trust
5480      certificates from a specific "secure" set of CAs.
5481
5482      Also added X509_STORE_CTX_new() and X509_STORE_CTX_free() functions
5483      which should be used for version portability: especially since the
5484      verify structure is likely to change more often now.
5485
5486      SSL integration. Add purpose and trust to SSL_CTX and SSL and functions
5487      to set them. If not set then assume SSL clients will verify SSL servers
5488      and vice versa.
5489
5490      Two new options to the verify program: -untrusted allows a set of
5491      untrusted certificates to be passed in and -purpose which sets the
5492      intended purpose of the certificate. If a purpose is set then the
5493      new chain verify code is used to check extension consistency.
5494      [Steve Henson]
5495
5496   *) Support for the authority information access extension.
5497      [Steve Henson]
5498
5499   *) Modify RSA and DSA PEM read routines to transparently handle
5500      PKCS#8 format private keys. New *_PUBKEY_* functions that handle
5501      public keys in a format compatible with certificate
5502      SubjectPublicKeyInfo structures. Unfortunately there were already
5503      functions called *_PublicKey_* which used various odd formats so
5504      these are retained for compatibility: however the DSA variants were
5505      never in a public release so they have been deleted. Changed dsa/rsa
5506      utilities to handle the new format: note no releases ever handled public
5507      keys so we should be OK.
5508
5509      The primary motivation for this change is to avoid the same fiasco
5510      that dogs private keys: there are several incompatible private key
5511      formats some of which are standard and some OpenSSL specific and
5512      require various evil hacks to allow partial transparent handling and
5513      even then it doesn't work with DER formats. Given the option anything
5514      other than PKCS#8 should be dumped: but the other formats have to
5515      stay in the name of compatibility.
5516
5517      With public keys and the benefit of hindsight one standard format 
5518      is used which works with EVP_PKEY, RSA or DSA structures: though
5519      it clearly returns an error if you try to read the wrong kind of key.
5520
5521      Added a -pubkey option to the 'x509' utility to output the public key.
5522      Also rename the EVP_PKEY_get_*() to EVP_PKEY_rget_*()
5523      (renamed to EVP_PKEY_get1_*() in the OpenSSL 0.9.5 release) and add
5524      EVP_PKEY_rset_*() functions (renamed to EVP_PKEY_set1_*())
5525      that do the same as the EVP_PKEY_assign_*() except they up the
5526      reference count of the added key (they don't "swallow" the
5527      supplied key).
5528      [Steve Henson]
5529
5530   *) Fixes to crypto/x509/by_file.c the code to read in certificates and
5531      CRLs would fail if the file contained no certificates or no CRLs:
5532      added a new function to read in both types and return the number
5533      read: this means that if none are read it will be an error. The
5534      DER versions of the certificate and CRL reader would always fail
5535      because it isn't possible to mix certificates and CRLs in DER format
5536      without choking one or the other routine. Changed this to just read
5537      a certificate: this is the best we can do. Also modified the code
5538      in apps/verify.c to take notice of return codes: it was previously
5539      attempting to read in certificates from NULL pointers and ignoring
5540      any errors: this is one reason why the cert and CRL reader seemed
5541      to work. It doesn't check return codes from the default certificate
5542      routines: these may well fail if the certificates aren't installed.
5543      [Steve Henson]
5544
5545   *) Code to support otherName option in GeneralName.
5546      [Steve Henson]
5547
5548   *) First update to verify code. Change the verify utility
5549      so it warns if it is passed a self signed certificate:
5550      for consistency with the normal behaviour. X509_verify
5551      has been modified to it will now verify a self signed
5552      certificate if *exactly* the same certificate appears
5553      in the store: it was previously impossible to trust a
5554      single self signed certificate. This means that:
5555      openssl verify ss.pem
5556      now gives a warning about a self signed certificate but
5557      openssl verify -CAfile ss.pem ss.pem
5558      is OK.
5559      [Steve Henson]
5560
5561   *) For servers, store verify_result in SSL_SESSION data structure
5562      (and add it to external session representation).
5563      This is needed when client certificate verifications fails,
5564      but an application-provided verification callback (set by
5565      SSL_CTX_set_cert_verify_callback) allows accepting the session
5566      anyway (i.e. leaves x509_store_ctx->error != X509_V_OK
5567      but returns 1): When the session is reused, we have to set
5568      ssl->verify_result to the appropriate error code to avoid
5569      security holes.
5570      [Bodo Moeller, problem pointed out by Lutz Jaenicke]
5571
5572   *) Fix a bug in the new PKCS#7 code: it didn't consider the
5573      case in PKCS7_dataInit() where the signed PKCS7 structure
5574      didn't contain any existing data because it was being created.
5575      [Po-Cheng Chen <pocheng@nst.com.tw>, slightly modified by Steve Henson]
5576
5577   *) Add a salt to the key derivation routines in enc.c. This
5578      forms the first 8 bytes of the encrypted file. Also add a
5579      -S option to allow a salt to be input on the command line.
5580      [Steve Henson]
5581
5582   *) New function X509_cmp(). Oddly enough there wasn't a function
5583      to compare two certificates. We do this by working out the SHA1
5584      hash and comparing that. X509_cmp() will be needed by the trust
5585      code.
5586      [Steve Henson]
5587
5588   *) SSL_get1_session() is like SSL_get_session(), but increments
5589      the reference count in the SSL_SESSION returned.
5590      [Geoff Thorpe <geoff@eu.c2.net>]
5591
5592   *) Fix for 'req': it was adding a null to request attributes.
5593      Also change the X509_LOOKUP and X509_INFO code to handle
5594      certificate auxiliary information.
5595      [Steve Henson]
5596
5597   *) Add support for 40 and 64 bit RC2 and RC4 algorithms: document
5598      the 'enc' command.
5599      [Steve Henson]
5600
5601   *) Add the possibility to add extra information to the memory leak
5602      detecting output, to form tracebacks, showing from where each
5603      allocation was originated: CRYPTO_push_info("constant string") adds
5604      the string plus current file name and line number to a per-thread
5605      stack, CRYPTO_pop_info() does the obvious, CRYPTO_remove_all_info()
5606      is like calling CYRPTO_pop_info() until the stack is empty.
5607      Also updated memory leak detection code to be multi-thread-safe.
5608      [Richard Levitte]
5609
5610   *) Add options -text and -noout to pkcs7 utility and delete the
5611      encryption options which never did anything. Update docs.
5612      [Steve Henson]
5613
5614   *) Add options to some of the utilities to allow the pass phrase
5615      to be included on either the command line (not recommended on
5616      OSes like Unix) or read from the environment. Update the
5617      manpages and fix a few bugs.
5618      [Steve Henson]
5619
5620   *) Add a few manpages for some of the openssl commands.
5621      [Steve Henson]
5622
5623   *) Fix the -revoke option in ca. It was freeing up memory twice,
5624      leaking and not finding already revoked certificates.
5625      [Steve Henson]
5626
5627   *) Extensive changes to support certificate auxiliary information.
5628      This involves the use of X509_CERT_AUX structure and X509_AUX
5629      functions. An X509_AUX function such as PEM_read_X509_AUX()
5630      can still read in a certificate file in the usual way but it
5631      will also read in any additional "auxiliary information". By
5632      doing things this way a fair degree of compatibility can be
5633      retained: existing certificates can have this information added
5634      using the new 'x509' options. 
5635
5636      Current auxiliary information includes an "alias" and some trust
5637      settings. The trust settings will ultimately be used in enhanced
5638      certificate chain verification routines: currently a certificate
5639      can only be trusted if it is self signed and then it is trusted
5640      for all purposes.
5641      [Steve Henson]
5642
5643   *) Fix assembler for Alpha (tested only on DEC OSF not Linux or *BSD).
5644      The problem was that one of the replacement routines had not been working
5645      since SSLeay releases.  For now the offending routine has been replaced
5646      with non-optimised assembler.  Even so, this now gives around 95%
5647      performance improvement for 1024 bit RSA signs.
5648      [Mark Cox]
5649
5650   *) Hack to fix PKCS#7 decryption when used with some unorthodox RC2 
5651      handling. Most clients have the effective key size in bits equal to
5652      the key length in bits: so a 40 bit RC2 key uses a 40 bit (5 byte) key.
5653      A few however don't do this and instead use the size of the decrypted key
5654      to determine the RC2 key length and the AlgorithmIdentifier to determine
5655      the effective key length. In this case the effective key length can still
5656      be 40 bits but the key length can be 168 bits for example. This is fixed
5657      by manually forcing an RC2 key into the EVP_PKEY structure because the
5658      EVP code can't currently handle unusual RC2 key sizes: it always assumes
5659      the key length and effective key length are equal.
5660      [Steve Henson]
5661
5662   *) Add a bunch of functions that should simplify the creation of 
5663      X509_NAME structures. Now you should be able to do:
5664      X509_NAME_add_entry_by_txt(nm, "CN", MBSTRING_ASC, "Steve", -1, -1, 0);
5665      and have it automatically work out the correct field type and fill in
5666      the structures. The more adventurous can try:
5667      X509_NAME_add_entry_by_txt(nm, field, MBSTRING_UTF8, str, -1, -1, 0);
5668      and it will (hopefully) work out the correct multibyte encoding.
5669      [Steve Henson]
5670
5671   *) Change the 'req' utility to use the new field handling and multibyte
5672      copy routines. Before the DN field creation was handled in an ad hoc
5673      way in req, ca, and x509 which was rather broken and didn't support
5674      BMPStrings or UTF8Strings. Since some software doesn't implement
5675      BMPStrings or UTF8Strings yet, they can be enabled using the config file
5676      using the dirstring_type option. See the new comment in the default
5677      openssl.cnf for more info.
5678      [Steve Henson]
5679
5680   *) Make crypto/rand/md_rand.c more robust:
5681      - Assure unique random numbers after fork().
5682      - Make sure that concurrent threads access the global counter and
5683        md serializably so that we never lose entropy in them
5684        or use exactly the same state in multiple threads.
5685        Access to the large state is not always serializable because
5686        the additional locking could be a performance killer, and
5687        md should be large enough anyway.
5688      [Bodo Moeller]
5689
5690   *) New file apps/app_rand.c with commonly needed functionality
5691      for handling the random seed file.
5692
5693      Use the random seed file in some applications that previously did not:
5694           ca,
5695           dsaparam -genkey (which also ignored its '-rand' option), 
5696           s_client,
5697           s_server,
5698           x509 (when signing).
5699      Except on systems with /dev/urandom, it is crucial to have a random
5700      seed file at least for key creation, DSA signing, and for DH exchanges;
5701      for RSA signatures we could do without one.
5702
5703      gendh and gendsa (unlike genrsa) used to read only the first byte
5704      of each file listed in the '-rand' option.  The function as previously
5705      found in genrsa is now in app_rand.c and is used by all programs
5706      that support '-rand'.
5707      [Bodo Moeller]
5708
5709   *) In RAND_write_file, use mode 0600 for creating files;
5710      don't just chmod when it may be too late.
5711      [Bodo Moeller]
5712
5713   *) Report an error from X509_STORE_load_locations
5714      when X509_LOOKUP_load_file or X509_LOOKUP_add_dir failed.
5715      [Bill Perry]
5716
5717   *) New function ASN1_mbstring_copy() this copies a string in either
5718      ASCII, Unicode, Universal (4 bytes per character) or UTF8 format
5719      into an ASN1_STRING type. A mask of permissible types is passed
5720      and it chooses the "minimal" type to use or an error if not type
5721      is suitable.
5722      [Steve Henson]
5723
5724   *) Add function equivalents to the various macros in asn1.h. The old
5725      macros are retained with an M_ prefix. Code inside the library can
5726      use the M_ macros. External code (including the openssl utility)
5727      should *NOT* in order to be "shared library friendly".
5728      [Steve Henson]
5729
5730   *) Add various functions that can check a certificate's extensions
5731      to see if it usable for various purposes such as SSL client,
5732      server or S/MIME and CAs of these types. This is currently 
5733      VERY EXPERIMENTAL but will ultimately be used for certificate chain
5734      verification. Also added a -purpose flag to x509 utility to
5735      print out all the purposes.
5736      [Steve Henson]
5737
5738   *) Add a CRYPTO_EX_DATA to X509 certificate structure and associated
5739      functions.
5740      [Steve Henson]
5741
5742   *) New X509V3_{X509,CRL,REVOKED}_get_d2i() functions. These will search
5743      for, obtain and decode and extension and obtain its critical flag.
5744      This allows all the necessary extension code to be handled in a
5745      single function call.
5746      [Steve Henson]
5747
5748   *) RC4 tune-up featuring 30-40% performance improvement on most RISC
5749      platforms. See crypto/rc4/rc4_enc.c for further details.
5750      [Andy Polyakov]
5751
5752   *) New -noout option to asn1parse. This causes no output to be produced
5753      its main use is when combined with -strparse and -out to extract data
5754      from a file (which may not be in ASN.1 format).
5755      [Steve Henson]
5756
5757   *) Fix for pkcs12 program. It was hashing an invalid certificate pointer
5758      when producing the local key id.
5759      [Richard Levitte <levitte@stacken.kth.se>]
5760
5761   *) New option -dhparam in s_server. This allows a DH parameter file to be
5762      stated explicitly. If it is not stated then it tries the first server
5763      certificate file. The previous behaviour hard coded the filename
5764      "server.pem".
5765      [Steve Henson]
5766
5767   *) Add -pubin and -pubout options to the rsa and dsa commands. These allow
5768      a public key to be input or output. For example:
5769      openssl rsa -in key.pem -pubout -out pubkey.pem
5770      Also added necessary DSA public key functions to handle this.
5771      [Steve Henson]
5772
5773   *) Fix so PKCS7_dataVerify() doesn't crash if no certificates are contained
5774      in the message. This was handled by allowing
5775      X509_find_by_issuer_and_serial() to tolerate a NULL passed to it.
5776      [Steve Henson, reported by Sampo Kellomaki <sampo@mail.neuronio.pt>]
5777
5778   *) Fix for bug in d2i_ASN1_bytes(): other ASN1 functions add an extra null
5779      to the end of the strings whereas this didn't. This would cause problems
5780      if strings read with d2i_ASN1_bytes() were later modified.
5781      [Steve Henson, reported by Arne Ansper <arne@ats.cyber.ee>]
5782
5783   *) Fix for base64 decode bug. When a base64 bio reads only one line of
5784      data and it contains EOF it will end up returning an error. This is
5785      caused by input 46 bytes long. The cause is due to the way base64
5786      BIOs find the start of base64 encoded data. They do this by trying a
5787      trial decode on each line until they find one that works. When they
5788      do a flag is set and it starts again knowing it can pass all the
5789      data directly through the decoder. Unfortunately it doesn't reset
5790      the context it uses. This means that if EOF is reached an attempt
5791      is made to pass two EOFs through the context and this causes the
5792      resulting error. This can also cause other problems as well. As is
5793      usual with these problems it takes *ages* to find and the fix is
5794      trivial: move one line.
5795      [Steve Henson, reported by ian@uns.ns.ac.yu (Ivan Nejgebauer) ]
5796
5797   *) Ugly workaround to get s_client and s_server working under Windows. The
5798      old code wouldn't work because it needed to select() on sockets and the
5799      tty (for keypresses and to see if data could be written). Win32 only
5800      supports select() on sockets so we select() with a 1s timeout on the
5801      sockets and then see if any characters are waiting to be read, if none
5802      are present then we retry, we also assume we can always write data to
5803      the tty. This isn't nice because the code then blocks until we've
5804      received a complete line of data and it is effectively polling the
5805      keyboard at 1s intervals: however it's quite a bit better than not
5806      working at all :-) A dedicated Windows application might handle this
5807      with an event loop for example.
5808      [Steve Henson]
5809
5810   *) Enhance RSA_METHOD structure. Now there are two extra methods, rsa_sign
5811      and rsa_verify. When the RSA_FLAGS_SIGN_VER option is set these functions
5812      will be called when RSA_sign() and RSA_verify() are used. This is useful
5813      if rsa_pub_dec() and rsa_priv_enc() equivalents are not available.
5814      For this to work properly RSA_public_decrypt() and RSA_private_encrypt()
5815      should *not* be used: RSA_sign() and RSA_verify() must be used instead.
5816      This necessitated the support of an extra signature type NID_md5_sha1
5817      for SSL signatures and modifications to the SSL library to use it instead
5818      of calling RSA_public_decrypt() and RSA_private_encrypt().
5819      [Steve Henson]
5820
5821   *) Add new -verify -CAfile and -CApath options to the crl program, these
5822      will lookup a CRL issuers certificate and verify the signature in a
5823      similar way to the verify program. Tidy up the crl program so it
5824      no longer accesses structures directly. Make the ASN1 CRL parsing a bit
5825      less strict. It will now permit CRL extensions even if it is not
5826      a V2 CRL: this will allow it to tolerate some broken CRLs.
5827      [Steve Henson]
5828
5829   *) Initialize all non-automatic variables each time one of the openssl
5830      sub-programs is started (this is necessary as they may be started
5831      multiple times from the "OpenSSL>" prompt).
5832      [Lennart Bang, Bodo Moeller]
5833
5834   *) Preliminary compilation option RSA_NULL which disables RSA crypto without
5835      removing all other RSA functionality (this is what NO_RSA does). This
5836      is so (for example) those in the US can disable those operations covered
5837      by the RSA patent while allowing storage and parsing of RSA keys and RSA
5838      key generation.
5839      [Steve Henson]
5840
5841   *) Non-copying interface to BIO pairs.
5842      (still largely untested)
5843      [Bodo Moeller]
5844
5845   *) New function ANS1_tag2str() to convert an ASN1 tag to a descriptive
5846      ASCII string. This was handled independently in various places before.
5847      [Steve Henson]
5848
5849   *) New functions UTF8_getc() and UTF8_putc() that parse and generate
5850      UTF8 strings a character at a time.
5851      [Steve Henson]
5852
5853   *) Use client_version from client hello to select the protocol
5854      (s23_srvr.c) and for RSA client key exchange verification
5855      (s3_srvr.c), as required by the SSL 3.0/TLS 1.0 specifications.
5856      [Bodo Moeller]
5857
5858   *) Add various utility functions to handle SPKACs, these were previously
5859      handled by poking round in the structure internals. Added new function
5860      NETSCAPE_SPKI_print() to print out SPKAC and a new utility 'spkac' to
5861      print, verify and generate SPKACs. Based on an original idea from
5862      Massimiliano Pala <madwolf@comune.modena.it> but extensively modified.
5863      [Steve Henson]
5864
5865   *) RIPEMD160 is operational on all platforms and is back in 'make test'.
5866      [Andy Polyakov]
5867
5868   *) Allow the config file extension section to be overwritten on the
5869      command line. Based on an original idea from Massimiliano Pala
5870      <madwolf@comune.modena.it>. The new option is called -extensions
5871      and can be applied to ca, req and x509. Also -reqexts to override
5872      the request extensions in req and -crlexts to override the crl extensions
5873      in ca.
5874      [Steve Henson]
5875
5876   *) Add new feature to the SPKAC handling in ca.  Now you can include
5877      the same field multiple times by preceding it by "XXXX." for example:
5878      1.OU="Unit name 1"
5879      2.OU="Unit name 2"
5880      this is the same syntax as used in the req config file.
5881      [Steve Henson]
5882
5883   *) Allow certificate extensions to be added to certificate requests. These
5884      are specified in a 'req_extensions' option of the req section of the
5885      config file. They can be printed out with the -text option to req but
5886      are otherwise ignored at present.
5887      [Steve Henson]
5888
5889   *) Fix a horrible bug in enc_read() in crypto/evp/bio_enc.c: if the first
5890      data read consists of only the final block it would not decrypted because
5891      EVP_CipherUpdate() would correctly report zero bytes had been decrypted.
5892      A misplaced 'break' also meant the decrypted final block might not be
5893      copied until the next read.
5894      [Steve Henson]
5895
5896   *) Initial support for DH_METHOD. Again based on RSA_METHOD. Also added
5897      a few extra parameters to the DH structure: these will be useful if
5898      for example we want the value of 'q' or implement X9.42 DH.
5899      [Steve Henson]
5900
5901   *) Initial support for DSA_METHOD. This is based on the RSA_METHOD and
5902      provides hooks that allow the default DSA functions or functions on a
5903      "per key" basis to be replaced. This allows hardware acceleration and
5904      hardware key storage to be handled without major modification to the
5905      library. Also added low level modexp hooks and CRYPTO_EX structure and 
5906      associated functions.
5907      [Steve Henson]
5908
5909   *) Add a new flag to memory BIOs, BIO_FLAG_MEM_RDONLY. This marks the BIO
5910      as "read only": it can't be written to and the buffer it points to will
5911      not be freed. Reading from a read only BIO is much more efficient than
5912      a normal memory BIO. This was added because there are several times when
5913      an area of memory needs to be read from a BIO. The previous method was
5914      to create a memory BIO and write the data to it, this results in two
5915      copies of the data and an O(n^2) reading algorithm. There is a new
5916      function BIO_new_mem_buf() which creates a read only memory BIO from
5917      an area of memory. Also modified the PKCS#7 routines to use read only
5918      memory BIOs.
5919      [Steve Henson]
5920
5921   *) Bugfix: ssl23_get_client_hello did not work properly when called in
5922      state SSL23_ST_SR_CLNT_HELLO_B, i.e. when the first 7 bytes of
5923      a SSLv2-compatible client hello for SSLv3 or TLSv1 could be read,
5924      but a retry condition occured while trying to read the rest.
5925      [Bodo Moeller]
5926
5927   *) The PKCS7_ENC_CONTENT_new() function was setting the content type as
5928      NID_pkcs7_encrypted by default: this was wrong since this should almost
5929      always be NID_pkcs7_data. Also modified the PKCS7_set_type() to handle
5930      the encrypted data type: this is a more sensible place to put it and it
5931      allows the PKCS#12 code to be tidied up that duplicated this
5932      functionality.
5933      [Steve Henson]
5934
5935   *) Changed obj_dat.pl script so it takes its input and output files on
5936      the command line. This should avoid shell escape redirection problems
5937      under Win32.
5938      [Steve Henson]
5939
5940   *) Initial support for certificate extension requests, these are included
5941      in things like Xenroll certificate requests. Included functions to allow
5942      extensions to be obtained and added.
5943      [Steve Henson]
5944
5945   *) -crlf option to s_client and s_server for sending newlines as
5946      CRLF (as required by many protocols).
5947      [Bodo Moeller]
5948
5949  Changes between 0.9.3a and 0.9.4  [09 Aug 1999]
5950   
5951   *) Install libRSAglue.a when OpenSSL is built with RSAref.
5952      [Ralf S. Engelschall]
5953
5954   *) A few more ``#ifndef NO_FP_API / #endif'' pairs for consistency.
5955      [Andrija Antonijevic <TheAntony2@bigfoot.com>]
5956
5957   *) Fix -startdate and -enddate (which was missing) arguments to 'ca'
5958      program.
5959      [Steve Henson]
5960
5961   *) New function DSA_dup_DH, which duplicates DSA parameters/keys as
5962      DH parameters/keys (q is lost during that conversion, but the resulting
5963      DH parameters contain its length).
5964
5965      For 1024-bit p, DSA_generate_parameters followed by DSA_dup_DH is
5966      much faster than DH_generate_parameters (which creates parameters
5967      where p = 2*q + 1), and also the smaller q makes DH computations
5968      much more efficient (160-bit exponentiation instead of 1024-bit
5969      exponentiation); so this provides a convenient way to support DHE
5970      ciphersuites in SSL/TLS servers (see ssl/ssltest.c).  It is of
5971      utter importance to use
5972          SSL_CTX_set_options(s_ctx, SSL_OP_SINGLE_DH_USE);
5973      or
5974          SSL_set_options(s_ctx, SSL_OP_SINGLE_DH_USE);
5975      when such DH parameters are used, because otherwise small subgroup
5976      attacks may become possible!
5977      [Bodo Moeller]
5978
5979   *) Avoid memory leak in i2d_DHparams.
5980      [Bodo Moeller]
5981
5982   *) Allow the -k option to be used more than once in the enc program:
5983      this allows the same encrypted message to be read by multiple recipients.
5984      [Steve Henson]
5985
5986   *) New function OBJ_obj2txt(buf, buf_len, a, no_name), this converts
5987      an ASN1_OBJECT to a text string. If the "no_name" parameter is set then
5988      it will always use the numerical form of the OID, even if it has a short
5989      or long name.
5990      [Steve Henson]
5991
5992   *) Added an extra RSA flag: RSA_FLAG_EXT_PKEY. Previously the rsa_mod_exp
5993      method only got called if p,q,dmp1,dmq1,iqmp components were present,
5994      otherwise bn_mod_exp was called. In the case of hardware keys for example
5995      no private key components need be present and it might store extra data
5996      in the RSA structure, which cannot be accessed from bn_mod_exp.
5997      By setting RSA_FLAG_EXT_PKEY rsa_mod_exp will always be called for
5998      private key operations.
5999      [Steve Henson]
6000
6001   *) Added support for SPARC Linux.
6002      [Andy Polyakov]
6003
6004   *) pem_password_cb function type incompatibly changed from
6005           typedef int pem_password_cb(char *buf, int size, int rwflag);
6006      to
6007           ....(char *buf, int size, int rwflag, void *userdata);
6008      so that applications can pass data to their callbacks:
6009      The PEM[_ASN1]_{read,write}... functions and macros now take an
6010      additional void * argument, which is just handed through whenever
6011      the password callback is called.
6012      [Damien Miller <dmiller@ilogic.com.au>; tiny changes by Bodo Moeller]
6013
6014      New function SSL_CTX_set_default_passwd_cb_userdata.
6015
6016      Compatibility note: As many C implementations push function arguments
6017      onto the stack in reverse order, the new library version is likely to
6018      interoperate with programs that have been compiled with the old
6019      pem_password_cb definition (PEM_whatever takes some data that
6020      happens to be on the stack as its last argument, and the callback
6021      just ignores this garbage); but there is no guarantee whatsoever that
6022      this will work.
6023
6024   *) The -DPLATFORM="\"$(PLATFORM)\"" definition and the similar -DCFLAGS=...
6025      (both in crypto/Makefile.ssl for use by crypto/cversion.c) caused
6026      problems not only on Windows, but also on some Unix platforms.
6027      To avoid problematic command lines, these definitions are now in an
6028      auto-generated file crypto/buildinf.h (created by crypto/Makefile.ssl
6029      for standard "make" builds, by util/mk1mf.pl for "mk1mf" builds).
6030      [Bodo Moeller]
6031
6032   *) MIPS III/IV assembler module is reimplemented.
6033      [Andy Polyakov]
6034
6035   *) More DES library cleanups: remove references to srand/rand and
6036      delete an unused file.
6037      [Ulf Möller]
6038
6039   *) Add support for the the free Netwide assembler (NASM) under Win32,
6040      since not many people have MASM (ml) and it can be hard to obtain.
6041      This is currently experimental but it seems to work OK and pass all
6042      the tests. Check out INSTALL.W32 for info.
6043      [Steve Henson]
6044
6045   *) Fix memory leaks in s3_clnt.c: All non-anonymous SSL3/TLS1 connections
6046      without temporary keys kept an extra copy of the server key,
6047      and connections with temporary keys did not free everything in case
6048      of an error.
6049      [Bodo Moeller]
6050
6051   *) New function RSA_check_key and new openssl rsa option -check
6052      for verifying the consistency of RSA keys.
6053      [Ulf Moeller, Bodo Moeller]
6054
6055   *) Various changes to make Win32 compile work: 
6056      1. Casts to avoid "loss of data" warnings in p5_crpt2.c
6057      2. Change unsigned int to int in b_dump.c to avoid "signed/unsigned
6058         comparison" warnings.
6059      3. Add sk_<TYPE>_sort to DEF file generator and do make update.
6060      [Steve Henson]
6061
6062   *) Add a debugging option to PKCS#5 v2 key generation function: when
6063      you #define DEBUG_PKCS5V2 passwords, salts, iteration counts and
6064      derived keys are printed to stderr.
6065      [Steve Henson]
6066
6067   *) Copy the flags in ASN1_STRING_dup().
6068      [Roman E. Pavlov <pre@mo.msk.ru>]
6069
6070   *) The x509 application mishandled signing requests containing DSA
6071      keys when the signing key was also DSA and the parameters didn't match.
6072
6073      It was supposed to omit the parameters when they matched the signing key:
6074      the verifying software was then supposed to automatically use the CA's
6075      parameters if they were absent from the end user certificate.
6076
6077      Omitting parameters is no longer recommended. The test was also
6078      the wrong way round! This was probably due to unusual behaviour in
6079      EVP_cmp_parameters() which returns 1 if the parameters match. 
6080      This meant that parameters were omitted when they *didn't* match and
6081      the certificate was useless. Certificates signed with 'ca' didn't have
6082      this bug.
6083      [Steve Henson, reported by Doug Erickson <Doug.Erickson@Part.NET>]
6084
6085   *) Memory leak checking (-DCRYPTO_MDEBUG) had some problems.
6086      The interface is as follows:
6087      Applications can use
6088          CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON) aka MemCheck_start(),
6089          CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_OFF) aka MemCheck_stop();
6090      "off" is now the default.
6091      The library internally uses
6092          CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_DISABLE) aka MemCheck_off(),
6093          CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ENABLE) aka MemCheck_on()
6094      to disable memory-checking temporarily.
6095
6096      Some inconsistent states that previously were possible (and were
6097      even the default) are now avoided.
6098
6099      -DCRYPTO_MDEBUG_TIME is new and additionally stores the current time
6100      with each memory chunk allocated; this is occasionally more helpful
6101      than just having a counter.
6102
6103      -DCRYPTO_MDEBUG_THREAD is also new and adds the thread ID.
6104
6105      -DCRYPTO_MDEBUG_ALL enables all of the above, plus any future
6106      extensions.
6107      [Bodo Moeller]
6108
6109   *) Introduce "mode" for SSL structures (with defaults in SSL_CTX),
6110      which largely parallels "options", but is for changing API behaviour,
6111      whereas "options" are about protocol behaviour.
6112      Initial "mode" flags are:
6113
6114      SSL_MODE_ENABLE_PARTIAL_WRITE   Allow SSL_write to report success when
6115                                      a single record has been written.
6116      SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER  Don't insist that SSL_write
6117                                      retries use the same buffer location.
6118                                      (But all of the contents must be
6119                                      copied!)
6120      [Bodo Moeller]
6121
6122   *) Bugfix: SSL_set_options ignored its parameter, only SSL_CTX_set_options
6123      worked.
6124
6125   *) Fix problems with no-hmac etc.
6126      [Ulf Möller, pointed out by Brian Wellington <bwelling@tislabs.com>]
6127
6128   *) New functions RSA_get_default_method(), RSA_set_method() and
6129      RSA_get_method(). These allows replacement of RSA_METHODs without having
6130      to mess around with the internals of an RSA structure.
6131      [Steve Henson]
6132
6133   *) Fix memory leaks in DSA_do_sign and DSA_is_prime.
6134      Also really enable memory leak checks in openssl.c and in some
6135      test programs.
6136      [Chad C. Mulligan, Bodo Moeller]
6137
6138   *) Fix a bug in d2i_ASN1_INTEGER() and i2d_ASN1_INTEGER() which can mess
6139      up the length of negative integers. This has now been simplified to just
6140      store the length when it is first determined and use it later, rather
6141      than trying to keep track of where data is copied and updating it to
6142      point to the end.
6143      [Steve Henson, reported by Brien Wheeler
6144       <bwheeler@authentica-security.com>]
6145
6146   *) Add a new function PKCS7_signatureVerify. This allows the verification
6147      of a PKCS#7 signature but with the signing certificate passed to the
6148      function itself. This contrasts with PKCS7_dataVerify which assumes the
6149      certificate is present in the PKCS#7 structure. This isn't always the
6150      case: certificates can be omitted from a PKCS#7 structure and be
6151      distributed by "out of band" means (such as a certificate database).
6152      [Steve Henson]
6153
6154   *) Complete the PEM_* macros with DECLARE_PEM versions to replace the
6155      function prototypes in pem.h, also change util/mkdef.pl to add the
6156      necessary function names. 
6157      [Steve Henson]
6158
6159   *) mk1mf.pl (used by Windows builds) did not properly read the
6160      options set by Configure in the top level Makefile, and Configure
6161      was not even able to write more than one option correctly.
6162      Fixed, now "no-idea no-rc5 -DCRYPTO_MDEBUG" etc. works as intended.
6163      [Bodo Moeller]
6164
6165   *) New functions CONF_load_bio() and CONF_load_fp() to allow a config
6166      file to be loaded from a BIO or FILE pointer. The BIO version will
6167      for example allow memory BIOs to contain config info.
6168      [Steve Henson]
6169
6170   *) New function "CRYPTO_num_locks" that returns CRYPTO_NUM_LOCKS.
6171      Whoever hopes to achieve shared-library compatibility across versions
6172      must use this, not the compile-time macro.
6173      (Exercise 0.9.4: Which is the minimum library version required by
6174      such programs?)
6175      Note: All this applies only to multi-threaded programs, others don't
6176      need locks.
6177      [Bodo Moeller]
6178
6179   *) Add missing case to s3_clnt.c state machine -- one of the new SSL tests
6180      through a BIO pair triggered the default case, i.e.
6181      SSLerr(...,SSL_R_UNKNOWN_STATE).
6182      [Bodo Moeller]
6183
6184   *) New "BIO pair" concept (crypto/bio/bss_bio.c) so that applications
6185      can use the SSL library even if none of the specific BIOs is
6186      appropriate.
6187      [Bodo Moeller]
6188
6189   *) Fix a bug in i2d_DSAPublicKey() which meant it returned the wrong value
6190      for the encoded length.
6191      [Jeon KyoungHo <khjeon@sds.samsung.co.kr>]
6192
6193   *) Add initial documentation of the X509V3 functions.
6194      [Steve Henson]
6195
6196   *) Add a new pair of functions PEM_write_PKCS8PrivateKey() and 
6197      PEM_write_bio_PKCS8PrivateKey() that are equivalent to
6198      PEM_write_PrivateKey() and PEM_write_bio_PrivateKey() but use the more
6199      secure PKCS#8 private key format with a high iteration count.
6200      [Steve Henson]
6201
6202   *) Fix determination of Perl interpreter: A perl or perl5
6203      _directory_ in $PATH was also accepted as the interpreter.
6204      [Ralf S. Engelschall]
6205
6206   *) Fix demos/sign/sign.c: well there wasn't anything strictly speaking
6207      wrong with it but it was very old and did things like calling
6208      PEM_ASN1_read() directly and used MD5 for the hash not to mention some
6209      unusual formatting.
6210      [Steve Henson]
6211
6212   *) Fix demos/selfsign.c: it used obsolete and deleted functions, changed
6213      to use the new extension code.
6214      [Steve Henson]
6215
6216   *) Implement the PEM_read/PEM_write functions in crypto/pem/pem_all.c
6217      with macros. This should make it easier to change their form, add extra
6218      arguments etc. Fix a few PEM prototypes which didn't have cipher as a
6219      constant.
6220      [Steve Henson]
6221
6222   *) Add to configuration table a new entry that can specify an alternative
6223      name for unistd.h (for pre-POSIX systems); we need this for NeXTstep,
6224      according to Mark Crispin <MRC@Panda.COM>.
6225      [Bodo Moeller]
6226
6227 #if 0
6228   *) DES CBC did not update the IV. Weird.
6229      [Ben Laurie]
6230 #else
6231      des_cbc_encrypt does not update the IV, but des_ncbc_encrypt does.
6232      Changing the behaviour of the former might break existing programs --
6233      where IV updating is needed, des_ncbc_encrypt can be used.
6234 #endif
6235
6236   *) When bntest is run from "make test" it drives bc to check its
6237      calculations, as well as internally checking them. If an internal check
6238      fails, it needs to cause bc to give a non-zero result or make test carries
6239      on without noticing the failure. Fixed.
6240      [Ben Laurie]
6241
6242   *) DES library cleanups.
6243      [Ulf Möller]
6244
6245   *) Add support for PKCS#5 v2.0 PBE algorithms. This will permit PKCS#8 to be
6246      used with any cipher unlike PKCS#5 v1.5 which can at most handle 64 bit
6247      ciphers. NOTE: although the key derivation function has been verified
6248      against some published test vectors it has not been extensively tested
6249      yet. Added a -v2 "cipher" option to pkcs8 application to allow the use
6250      of v2.0.
6251      [Steve Henson]
6252
6253   *) Instead of "mkdir -p", which is not fully portable, use new
6254      Perl script "util/mkdir-p.pl".
6255      [Bodo Moeller]
6256
6257   *) Rewrite the way password based encryption (PBE) is handled. It used to
6258      assume that the ASN1 AlgorithmIdentifier parameter was a PBEParameter
6259      structure. This was true for the PKCS#5 v1.5 and PKCS#12 PBE algorithms
6260      but doesn't apply to PKCS#5 v2.0 where it can be something else. Now
6261      the 'parameter' field of the AlgorithmIdentifier is passed to the
6262      underlying key generation function so it must do its own ASN1 parsing.
6263      This has also changed the EVP_PBE_CipherInit() function which now has a
6264      'parameter' argument instead of literal salt and iteration count values
6265      and the function EVP_PBE_ALGOR_CipherInit() has been deleted.
6266      [Steve Henson]
6267
6268   *) Support for PKCS#5 v1.5 compatible password based encryption algorithms
6269      and PKCS#8 functionality. New 'pkcs8' application linked to openssl.
6270      Needed to change the PEM_STRING_EVP_PKEY value which was just "PRIVATE
6271      KEY" because this clashed with PKCS#8 unencrypted string. Since this
6272      value was just used as a "magic string" and not used directly its
6273      value doesn't matter.
6274      [Steve Henson]
6275
6276   *) Introduce some semblance of const correctness to BN. Shame C doesn't
6277      support mutable.
6278      [Ben Laurie]
6279
6280   *) "linux-sparc64" configuration (ultrapenguin).
6281      [Ray Miller <ray.miller@oucs.ox.ac.uk>]
6282      "linux-sparc" configuration.
6283      [Christian Forster <fo@hawo.stw.uni-erlangen.de>]
6284
6285   *) config now generates no-xxx options for missing ciphers.
6286      [Ulf Möller]
6287
6288   *) Support the EBCDIC character set (work in progress).
6289      File ebcdic.c not yet included because it has a different license.
6290      [Martin Kraemer <Martin.Kraemer@MchP.Siemens.De>]
6291
6292   *) Support BS2000/OSD-POSIX.
6293      [Martin Kraemer <Martin.Kraemer@MchP.Siemens.De>]
6294
6295   *) Make callbacks for key generation use void * instead of char *.
6296      [Ben Laurie]
6297
6298   *) Make S/MIME samples compile (not yet tested).
6299      [Ben Laurie]
6300
6301   *) Additional typesafe stacks.
6302      [Ben Laurie]
6303
6304   *) New configuration variants "bsdi-elf-gcc" (BSD/OS 4.x).
6305      [Bodo Moeller]
6306
6307
6308  Changes between 0.9.3 and 0.9.3a  [29 May 1999]
6309
6310   *) New configuration variant "sco5-gcc".
6311
6312   *) Updated some demos.
6313      [Sean O Riordain, Wade Scholine]
6314
6315   *) Add missing BIO_free at exit of pkcs12 application.
6316      [Wu Zhigang]
6317
6318   *) Fix memory leak in conf.c.
6319      [Steve Henson]
6320
6321   *) Updates for Win32 to assembler version of MD5.
6322      [Steve Henson]
6323
6324   *) Set #! path to perl in apps/der_chop to where we found it
6325      instead of using a fixed path.
6326      [Bodo Moeller]
6327
6328   *) SHA library changes for irix64-mips4-cc.
6329      [Andy Polyakov]
6330
6331   *) Improvements for VMS support.
6332      [Richard Levitte]
6333
6334
6335  Changes between 0.9.2b and 0.9.3  [24 May 1999]
6336
6337   *) Bignum library bug fix. IRIX 6 passes "make test" now!
6338      This also avoids the problems with SC4.2 and unpatched SC5.  
6339      [Andy Polyakov <appro@fy.chalmers.se>]
6340
6341   *) New functions sk_num, sk_value and sk_set to replace the previous macros.
6342      These are required because of the typesafe stack would otherwise break 
6343      existing code. If old code used a structure member which used to be STACK
6344      and is now STACK_OF (for example cert in a PKCS7_SIGNED structure) with
6345      sk_num or sk_value it would produce an error because the num, data members
6346      are not present in STACK_OF. Now it just produces a warning. sk_set
6347      replaces the old method of assigning a value to sk_value
6348      (e.g. sk_value(x, i) = y) which the library used in a few cases. Any code
6349      that does this will no longer work (and should use sk_set instead) but
6350      this could be regarded as a "questionable" behaviour anyway.
6351      [Steve Henson]
6352
6353   *) Fix most of the other PKCS#7 bugs. The "experimental" code can now
6354      correctly handle encrypted S/MIME data.
6355      [Steve Henson]
6356
6357   *) Change type of various DES function arguments from des_cblock
6358      (which means, in function argument declarations, pointer to char)
6359      to des_cblock * (meaning pointer to array with 8 char elements),
6360      which allows the compiler to do more typechecking; it was like
6361      that back in SSLeay, but with lots of ugly casts.
6362
6363      Introduce new type const_des_cblock.
6364      [Bodo Moeller]
6365
6366   *) Reorganise the PKCS#7 library and get rid of some of the more obvious
6367      problems: find RecipientInfo structure that matches recipient certificate
6368      and initialise the ASN1 structures properly based on passed cipher.
6369      [Steve Henson]
6370
6371   *) Belatedly make the BN tests actually check the results.
6372      [Ben Laurie]
6373
6374   *) Fix the encoding and decoding of negative ASN1 INTEGERS and conversion
6375      to and from BNs: it was completely broken. New compilation option
6376      NEG_PUBKEY_BUG to allow for some broken certificates that encode public
6377      key elements as negative integers.
6378      [Steve Henson]
6379
6380   *) Reorganize and speed up MD5.
6381      [Andy Polyakov <appro@fy.chalmers.se>]
6382
6383   *) VMS support.
6384      [Richard Levitte <richard@levitte.org>]
6385
6386   *) New option -out to asn1parse to allow the parsed structure to be
6387      output to a file. This is most useful when combined with the -strparse
6388      option to examine the output of things like OCTET STRINGS.
6389      [Steve Henson]
6390
6391   *) Make SSL library a little more fool-proof by not requiring any longer
6392      that SSL_set_{accept,connect}_state be called before
6393      SSL_{accept,connect} may be used (SSL_set_..._state is omitted
6394      in many applications because usually everything *appeared* to work as
6395      intended anyway -- now it really works as intended).
6396      [Bodo Moeller]
6397
6398   *) Move openssl.cnf out of lib/.
6399      [Ulf Möller]
6400
6401   *) Fix various things to let OpenSSL even pass ``egcc -pipe -O2 -Wall
6402      -Wshadow -Wpointer-arith -Wcast-align -Wmissing-prototypes
6403      -Wmissing-declarations -Wnested-externs -Winline'' with EGCS 1.1.2+ 
6404      [Ralf S. Engelschall]
6405
6406   *) Various fixes to the EVP and PKCS#7 code. It may now be able to
6407      handle PKCS#7 enveloped data properly.
6408      [Sebastian Akerman <sak@parallelconsulting.com>, modified by Steve]
6409
6410   *) Create a duplicate of the SSL_CTX's CERT in SSL_new instead of
6411      copying pointers.  The cert_st handling is changed by this in
6412      various ways (and thus what used to be known as ctx->default_cert
6413      is now called ctx->cert, since we don't resort to s->ctx->[default_]cert
6414      any longer when s->cert does not give us what we need).
6415      ssl_cert_instantiate becomes obsolete by this change.
6416      As soon as we've got the new code right (possibly it already is?),
6417      we have solved a couple of bugs of the earlier code where s->cert
6418      was used as if it could not have been shared with other SSL structures.
6419
6420      Note that using the SSL API in certain dirty ways now will result
6421      in different behaviour than observed with earlier library versions:
6422      Changing settings for an SSL_CTX *ctx after having done s = SSL_new(ctx)
6423      does not influence s as it used to.
6424      
6425      In order to clean up things more thoroughly, inside SSL_SESSION
6426      we don't use CERT any longer, but a new structure SESS_CERT
6427      that holds per-session data (if available); currently, this is
6428      the peer's certificate chain and, for clients, the server's certificate
6429      and temporary key.  CERT holds only those values that can have
6430      meaningful defaults in an SSL_CTX.
6431      [Bodo Moeller]
6432
6433   *) New function X509V3_EXT_i2d() to create an X509_EXTENSION structure
6434      from the internal representation. Various PKCS#7 fixes: remove some
6435      evil casts and set the enc_dig_alg field properly based on the signing
6436      key type.
6437      [Steve Henson]
6438
6439   *) Allow PKCS#12 password to be set from the command line or the
6440      environment. Let 'ca' get its config file name from the environment
6441      variables "OPENSSL_CONF" or "SSLEAY_CONF" (for consistency with 'req'
6442      and 'x509').
6443      [Steve Henson]
6444
6445   *) Allow certificate policies extension to use an IA5STRING for the
6446      organization field. This is contrary to the PKIX definition but
6447      VeriSign uses it and IE5 only recognises this form. Document 'x509'
6448      extension option.
6449      [Steve Henson]
6450
6451   *) Add PEDANTIC compiler flag to allow compilation with gcc -pedantic,
6452      without disallowing inline assembler and the like for non-pedantic builds.
6453      [Ben Laurie]
6454
6455   *) Support Borland C++ builder.
6456      [Janez Jere <jj@void.si>, modified by Ulf Möller]
6457
6458   *) Support Mingw32.
6459      [Ulf Möller]
6460
6461   *) SHA-1 cleanups and performance enhancements.
6462      [Andy Polyakov <appro@fy.chalmers.se>]
6463
6464   *) Sparc v8plus assembler for the bignum library.
6465      [Andy Polyakov <appro@fy.chalmers.se>]
6466
6467   *) Accept any -xxx and +xxx compiler options in Configure.
6468      [Ulf Möller]
6469
6470   *) Update HPUX configuration.
6471      [Anonymous]
6472   
6473   *) Add missing sk_<type>_unshift() function to safestack.h
6474      [Ralf S. Engelschall]
6475
6476   *) New function SSL_CTX_use_certificate_chain_file that sets the
6477      "extra_cert"s in addition to the certificate.  (This makes sense
6478      only for "PEM" format files, as chains as a whole are not
6479      DER-encoded.)
6480      [Bodo Moeller]
6481
6482   *) Support verify_depth from the SSL API.
6483      x509_vfy.c had what can be considered an off-by-one-error:
6484      Its depth (which was not part of the external interface)
6485      was actually counting the number of certificates in a chain;
6486      now it really counts the depth.
6487      [Bodo Moeller]
6488
6489   *) Bugfix in crypto/x509/x509_cmp.c: The SSLerr macro was used
6490      instead of X509err, which often resulted in confusing error
6491      messages since the error codes are not globally unique
6492      (e.g. an alleged error in ssl3_accept when a certificate
6493      didn't match the private key).
6494
6495   *) New function SSL_CTX_set_session_id_context that allows to set a default
6496      value (so that you don't need SSL_set_session_id_context for each
6497      connection using the SSL_CTX).
6498      [Bodo Moeller]
6499
6500   *) OAEP decoding bug fix.
6501      [Ulf Möller]
6502
6503   *) Support INSTALL_PREFIX for package builders, as proposed by
6504      David Harris.
6505      [Bodo Moeller]
6506
6507   *) New Configure options "threads" and "no-threads".  For systems
6508      where the proper compiler options are known (currently Solaris
6509      and Linux), "threads" is the default.
6510      [Bodo Moeller]
6511
6512   *) New script util/mklink.pl as a faster substitute for util/mklink.sh.
6513      [Bodo Moeller]
6514
6515   *) Install various scripts to $(OPENSSLDIR)/misc, not to
6516      $(INSTALLTOP)/bin -- they shouldn't clutter directories
6517      such as /usr/local/bin.
6518      [Bodo Moeller]
6519
6520   *) "make linux-shared" to build shared libraries.
6521      [Niels Poppe <niels@netbox.org>]
6522
6523   *) New Configure option no-<cipher> (rsa, idea, rc5, ...).
6524      [Ulf Möller]
6525
6526   *) Add the PKCS#12 API documentation to openssl.txt. Preliminary support for
6527      extension adding in x509 utility.
6528      [Steve Henson]
6529
6530   *) Remove NOPROTO sections and error code comments.
6531      [Ulf Möller]
6532
6533   *) Partial rewrite of the DEF file generator to now parse the ANSI
6534      prototypes.
6535      [Steve Henson]
6536
6537   *) New Configure options --prefix=DIR and --openssldir=DIR.
6538      [Ulf Möller]
6539
6540   *) Complete rewrite of the error code script(s). It is all now handled
6541      by one script at the top level which handles error code gathering,
6542      header rewriting and C source file generation. It should be much better
6543      than the old method: it now uses a modified version of Ulf's parser to
6544      read the ANSI prototypes in all header files (thus the old K&R definitions
6545      aren't needed for error creation any more) and do a better job of
6546      translating function codes into names. The old 'ASN1 error code imbedded
6547      in a comment' is no longer necessary and it doesn't use .err files which
6548      have now been deleted. Also the error code call doesn't have to appear all
6549      on one line (which resulted in some large lines...).
6550      [Steve Henson]
6551
6552   *) Change #include filenames from <foo.h> to <openssl/foo.h>.
6553      [Bodo Moeller]
6554
6555   *) Change behaviour of ssl2_read when facing length-0 packets: Don't return
6556      0 (which usually indicates a closed connection), but continue reading.
6557      [Bodo Moeller]
6558
6559   *) Fix some race conditions.
6560      [Bodo Moeller]
6561
6562   *) Add support for CRL distribution points extension. Add Certificate
6563      Policies and CRL distribution points documentation.
6564      [Steve Henson]
6565
6566   *) Move the autogenerated header file parts to crypto/opensslconf.h.
6567      [Ulf Möller]
6568
6569   *) Fix new 56-bit DES export ciphersuites: they were using 7 bytes instead of
6570      8 of keying material. Merlin has also confirmed interop with this fix
6571      between OpenSSL and Baltimore C/SSL 2.0 and J/SSL 2.0.
6572      [Merlin Hughes <merlin@baltimore.ie>]
6573
6574   *) Fix lots of warnings.
6575      [Richard Levitte <levitte@stacken.kth.se>]
6576  
6577   *) In add_cert_dir() in crypto/x509/by_dir.c, break out of the loop if
6578      the directory spec didn't end with a LIST_SEPARATOR_CHAR.
6579      [Richard Levitte <levitte@stacken.kth.se>]
6580  
6581   *) Fix problems with sizeof(long) == 8.
6582      [Andy Polyakov <appro@fy.chalmers.se>]
6583
6584   *) Change functions to ANSI C.
6585      [Ulf Möller]
6586
6587   *) Fix typos in error codes.
6588      [Martin Kraemer <Martin.Kraemer@MchP.Siemens.De>, Ulf Möller]
6589
6590   *) Remove defunct assembler files from Configure.
6591      [Ulf Möller]
6592
6593   *) SPARC v8 assembler BIGNUM implementation.
6594      [Andy Polyakov <appro@fy.chalmers.se>]
6595
6596   *) Support for Certificate Policies extension: both print and set.
6597      Various additions to support the r2i method this uses.
6598      [Steve Henson]
6599
6600   *) A lot of constification, and fix a bug in X509_NAME_oneline() that could
6601      return a const string when you are expecting an allocated buffer.
6602      [Ben Laurie]
6603
6604   *) Add support for ASN1 types UTF8String and VISIBLESTRING, also the CHOICE
6605      types DirectoryString and DisplayText.
6606      [Steve Henson]
6607
6608   *) Add code to allow r2i extensions to access the configuration database,
6609      add an LHASH database driver and add several ctx helper functions.
6610      [Steve Henson]
6611
6612   *) Fix an evil bug in bn_expand2() which caused various BN functions to
6613      fail when they extended the size of a BIGNUM.
6614      [Steve Henson]
6615
6616   *) Various utility functions to handle SXNet extension. Modify mkdef.pl to
6617      support typesafe stack.
6618      [Steve Henson]
6619
6620   *) Fix typo in SSL_[gs]et_options().
6621      [Nils Frostberg <nils@medcom.se>]
6622
6623   *) Delete various functions and files that belonged to the (now obsolete)
6624      old X509V3 handling code.
6625      [Steve Henson]
6626
6627   *) New Configure option "rsaref".
6628      [Ulf Möller]
6629
6630   *) Don't auto-generate pem.h.
6631      [Bodo Moeller]
6632
6633   *) Introduce type-safe ASN.1 SETs.
6634      [Ben Laurie]
6635
6636   *) Convert various additional casted stacks to type-safe STACK_OF() variants.
6637      [Ben Laurie, Ralf S. Engelschall, Steve Henson]
6638
6639   *) Introduce type-safe STACKs. This will almost certainly break lots of code
6640      that links with OpenSSL (well at least cause lots of warnings), but fear
6641      not: the conversion is trivial, and it eliminates loads of evil casts. A
6642      few STACKed things have been converted already. Feel free to convert more.
6643      In the fullness of time, I'll do away with the STACK type altogether.
6644      [Ben Laurie]
6645
6646   *) Add `openssl ca -revoke <certfile>' facility which revokes a certificate
6647      specified in <certfile> by updating the entry in the index.txt file.
6648      This way one no longer has to edit the index.txt file manually for
6649      revoking a certificate. The -revoke option does the gory details now.
6650      [Massimiliano Pala <madwolf@openca.org>, Ralf S. Engelschall]
6651
6652   *) Fix `openssl crl -noout -text' combination where `-noout' killed the
6653      `-text' option at all and this way the `-noout -text' combination was
6654      inconsistent in `openssl crl' with the friends in `openssl x509|rsa|dsa'.
6655      [Ralf S. Engelschall]
6656
6657   *) Make sure a corresponding plain text error message exists for the
6658      X509_V_ERR_CERT_REVOKED/23 error number which can occur when a
6659      verify callback function determined that a certificate was revoked.
6660      [Ralf S. Engelschall]
6661
6662   *) Bugfix: In test/testenc, don't test "openssl <cipher>" for
6663      ciphers that were excluded, e.g. by -DNO_IDEA.  Also, test
6664      all available cipers including rc5, which was forgotten until now.
6665      In order to let the testing shell script know which algorithms
6666      are available, a new (up to now undocumented) command
6667      "openssl list-cipher-commands" is used.
6668      [Bodo Moeller]
6669
6670   *) Bugfix: s_client occasionally would sleep in select() when
6671      it should have checked SSL_pending() first.
6672      [Bodo Moeller]
6673
6674   *) New functions DSA_do_sign and DSA_do_verify to provide access to
6675      the raw DSA values prior to ASN.1 encoding.
6676      [Ulf Möller]
6677
6678   *) Tweaks to Configure
6679      [Niels Poppe <niels@netbox.org>]
6680
6681   *) Add support for PKCS#5 v2.0 ASN1 PBES2 structures. No other support,
6682      yet...
6683      [Steve Henson]
6684
6685   *) New variables $(RANLIB) and $(PERL) in the Makefiles.
6686      [Ulf Möller]
6687
6688   *) New config option to avoid instructions that are illegal on the 80386.
6689      The default code is faster, but requires at least a 486.
6690      [Ulf Möller]
6691   
6692   *) Got rid of old SSL2_CLIENT_VERSION (inconsistently used) and
6693      SSL2_SERVER_VERSION (not used at all) macros, which are now the
6694      same as SSL2_VERSION anyway.
6695      [Bodo Moeller]
6696
6697   *) New "-showcerts" option for s_client.
6698      [Bodo Moeller]
6699
6700   *) Still more PKCS#12 integration. Add pkcs12 application to openssl
6701      application. Various cleanups and fixes.
6702      [Steve Henson]
6703
6704   *) More PKCS#12 integration. Add new pkcs12 directory with Makefile.ssl and
6705      modify error routines to work internally. Add error codes and PBE init
6706      to library startup routines.
6707      [Steve Henson]
6708
6709   *) Further PKCS#12 integration. Added password based encryption, PKCS#8 and
6710      packing functions to asn1 and evp. Changed function names and error
6711      codes along the way.
6712      [Steve Henson]
6713
6714   *) PKCS12 integration: and so it begins... First of several patches to
6715      slowly integrate PKCS#12 functionality into OpenSSL. Add PKCS#12
6716      objects to objects.h
6717      [Steve Henson]
6718
6719   *) Add a new 'indent' option to some X509V3 extension code. Initial ASN1
6720      and display support for Thawte strong extranet extension.
6721      [Steve Henson]
6722
6723   *) Add LinuxPPC support.
6724      [Jeff Dubrule <igor@pobox.org>]
6725
6726   *) Get rid of redundant BN file bn_mulw.c, and rename bn_div64 to
6727      bn_div_words in alpha.s.
6728      [Hannes Reinecke <H.Reinecke@hw.ac.uk> and Ben Laurie]
6729
6730   *) Make sure the RSA OAEP test is skipped under -DRSAref because
6731      OAEP isn't supported when OpenSSL is built with RSAref.
6732      [Ulf Moeller <ulf@fitug.de>]
6733
6734   *) Move definitions of IS_SET/IS_SEQUENCE inside crypto/asn1/asn1.h 
6735      so they no longer are missing under -DNOPROTO. 
6736      [Soren S. Jorvang <soren@t.dk>]
6737
6738
6739  Changes between 0.9.1c and 0.9.2b  [22 Mar 1999]
6740
6741   *) Make SSL_get_peer_cert_chain() work in servers. Unfortunately, it still
6742      doesn't work when the session is reused. Coming soon!
6743      [Ben Laurie]
6744
6745   *) Fix a security hole, that allows sessions to be reused in the wrong
6746      context thus bypassing client cert protection! All software that uses
6747      client certs and session caches in multiple contexts NEEDS PATCHING to
6748      allow session reuse! A fuller solution is in the works.
6749      [Ben Laurie, problem pointed out by Holger Reif, Bodo Moeller (and ???)]
6750
6751   *) Some more source tree cleanups (removed obsolete files
6752      crypto/bf/asm/bf586.pl, test/test.txt and crypto/sha/asm/f.s; changed
6753      permission on "config" script to be executable) and a fix for the INSTALL
6754      document.
6755      [Ulf Moeller <ulf@fitug.de>]
6756
6757   *) Remove some legacy and erroneous uses of malloc, free instead of
6758      Malloc, Free.
6759      [Lennart Bang <lob@netstream.se>, with minor changes by Steve]
6760
6761   *) Make rsa_oaep_test return non-zero on error.
6762      [Ulf Moeller <ulf@fitug.de>]
6763
6764   *) Add support for native Solaris shared libraries. Configure
6765      solaris-sparc-sc4-pic, make, then run shlib/solaris-sc4.sh. It'd be nice
6766      if someone would make that last step automatic.
6767      [Matthias Loepfe <Matthias.Loepfe@AdNovum.CH>]
6768
6769   *) ctx_size was not built with the right compiler during "make links". Fixed.
6770      [Ben Laurie]
6771
6772   *) Change the meaning of 'ALL' in the cipher list. It now means "everything
6773      except NULL ciphers". This means the default cipher list will no longer
6774      enable NULL ciphers. They need to be specifically enabled e.g. with
6775      the string "DEFAULT:eNULL".
6776      [Steve Henson]
6777
6778   *) Fix to RSA private encryption routines: if p < q then it would
6779      occasionally produce an invalid result. This will only happen with
6780      externally generated keys because OpenSSL (and SSLeay) ensure p > q.
6781      [Steve Henson]
6782
6783   *) Be less restrictive and allow also `perl util/perlpath.pl
6784      /path/to/bin/perl' in addition to `perl util/perlpath.pl /path/to/bin',
6785      because this way one can also use an interpreter named `perl5' (which is
6786      usually the name of Perl 5.xxx on platforms where an Perl 4.x is still
6787      installed as `perl').
6788      [Matthias Loepfe <Matthias.Loepfe@adnovum.ch>]
6789
6790   *) Let util/clean-depend.pl work also with older Perl 5.00x versions.
6791      [Matthias Loepfe <Matthias.Loepfe@adnovum.ch>]
6792
6793   *) Fix Makefile.org so CC,CFLAG etc are passed to 'make links' add
6794      advapi32.lib to Win32 build and change the pem test comparision
6795      to fc.exe (thanks to Ulrich Kroener <kroneru@yahoo.com> for the
6796      suggestion). Fix misplaced ASNI prototypes and declarations in evp.h
6797      and crypto/des/ede_cbcm_enc.c.
6798      [Steve Henson]
6799
6800   *) DES quad checksum was broken on big-endian architectures. Fixed.
6801      [Ben Laurie]
6802
6803   *) Comment out two functions in bio.h that aren't implemented. Fix up the
6804      Win32 test batch file so it (might) work again. The Win32 test batch file
6805      is horrible: I feel ill....
6806      [Steve Henson]
6807
6808   *) Move various #ifdefs around so NO_SYSLOG, NO_DIRENT etc are now selected
6809      in e_os.h. Audit of header files to check ANSI and non ANSI
6810      sections: 10 functions were absent from non ANSI section and not exported
6811      from Windows DLLs. Fixed up libeay.num for new functions.
6812      [Steve Henson]
6813
6814   *) Make `openssl version' output lines consistent.
6815      [Ralf S. Engelschall]
6816
6817   *) Fix Win32 symbol export lists for BIO functions: Added
6818      BIO_get_ex_new_index, BIO_get_ex_num, BIO_get_ex_data and BIO_set_ex_data
6819      to ms/libeay{16,32}.def.
6820      [Ralf S. Engelschall]
6821
6822   *) Second round of fixing the OpenSSL perl/ stuff. It now at least compiled
6823      fine under Unix and passes some trivial tests I've now added. But the
6824      whole stuff is horribly incomplete, so a README.1ST with a disclaimer was
6825      added to make sure no one expects that this stuff really works in the
6826      OpenSSL 0.9.2 release.  Additionally I've started to clean the XS sources
6827      up and fixed a few little bugs and inconsistencies in OpenSSL.{pm,xs} and
6828      openssl_bio.xs.
6829      [Ralf S. Engelschall]
6830
6831   *) Fix the generation of two part addresses in perl.
6832      [Kenji Miyake <kenji@miyake.org>, integrated by Ben Laurie]
6833
6834   *) Add config entry for Linux on MIPS.
6835      [John Tobey <jtobey@channel1.com>]
6836
6837   *) Make links whenever Configure is run, unless we are on Windoze.
6838      [Ben Laurie]
6839
6840   *) Permit extensions to be added to CRLs using crl_section in openssl.cnf.
6841      Currently only issuerAltName and AuthorityKeyIdentifier make any sense
6842      in CRLs.
6843      [Steve Henson]
6844
6845   *) Add a useful kludge to allow package maintainers to specify compiler and
6846      other platforms details on the command line without having to patch the
6847      Configure script everytime: One now can use ``perl Configure
6848      <id>:<details>'', i.e. platform ids are allowed to have details appended
6849      to them (seperated by colons). This is treated as there would be a static
6850      pre-configured entry in Configure's %table under key <id> with value
6851      <details> and ``perl Configure <id>'' is called.  So, when you want to
6852      perform a quick test-compile under FreeBSD 3.1 with pgcc and without
6853      assembler stuff you can use ``perl Configure "FreeBSD-elf:pgcc:-O6:::"''
6854      now, which overrides the FreeBSD-elf entry on-the-fly.
6855      [Ralf S. Engelschall]
6856
6857   *) Disable new TLS1 ciphersuites by default: they aren't official yet.
6858      [Ben Laurie]
6859
6860   *) Allow DSO flags like -fpic, -fPIC, -KPIC etc. to be specified
6861      on the `perl Configure ...' command line. This way one can compile
6862      OpenSSL libraries with Position Independent Code (PIC) which is needed
6863      for linking it into DSOs.
6864      [Ralf S. Engelschall]
6865
6866   *) Remarkably, export ciphers were totally broken and no-one had noticed!
6867      Fixed.
6868      [Ben Laurie]
6869
6870   *) Cleaned up the LICENSE document: The official contact for any license
6871      questions now is the OpenSSL core team under openssl-core@openssl.org.
6872      And add a paragraph about the dual-license situation to make sure people
6873      recognize that _BOTH_ the OpenSSL license _AND_ the SSLeay license apply
6874      to the OpenSSL toolkit.
6875      [Ralf S. Engelschall]
6876
6877   *) General source tree makefile cleanups: Made `making xxx in yyy...'
6878      display consistent in the source tree and replaced `/bin/rm' by `rm'.
6879      Additonally cleaned up the `make links' target: Remove unnecessary
6880      semicolons, subsequent redundant removes, inline point.sh into mklink.sh
6881      to speed processing and no longer clutter the display with confusing
6882      stuff. Instead only the actually done links are displayed.
6883      [Ralf S. Engelschall]
6884
6885   *) Permit null encryption ciphersuites, used for authentication only. It used
6886      to be necessary to set the preprocessor define SSL_ALLOW_ENULL to do this.
6887      It is now necessary to set SSL_FORBID_ENULL to prevent the use of null
6888      encryption.
6889      [Ben Laurie]
6890
6891   *) Add a bunch of fixes to the PKCS#7 stuff. It used to sometimes reorder
6892      signed attributes when verifying signatures (this would break them), 
6893      the detached data encoding was wrong and public keys obtained using
6894      X509_get_pubkey() weren't freed.
6895      [Steve Henson]
6896
6897   *) Add text documentation for the BUFFER functions. Also added a work around
6898      to a Win95 console bug. This was triggered by the password read stuff: the
6899      last character typed gets carried over to the next fread(). If you were 
6900      generating a new cert request using 'req' for example then the last
6901      character of the passphrase would be CR which would then enter the first
6902      field as blank.
6903      [Steve Henson]
6904
6905   *) Added the new `Includes OpenSSL Cryptography Software' button as
6906      doc/openssl_button.{gif,html} which is similar in style to the old SSLeay
6907      button and can be used by applications based on OpenSSL to show the
6908      relationship to the OpenSSL project.  
6909      [Ralf S. Engelschall]
6910
6911   *) Remove confusing variables in function signatures in files
6912      ssl/ssl_lib.c and ssl/ssl.h.
6913      [Lennart Bong <lob@kulthea.stacken.kth.se>]
6914
6915   *) Don't install bss_file.c under PREFIX/include/
6916      [Lennart Bong <lob@kulthea.stacken.kth.se>]
6917
6918   *) Get the Win32 compile working again. Modify mkdef.pl so it can handle
6919      functions that return function pointers and has support for NT specific
6920      stuff. Fix mk1mf.pl and VC-32.pl to support NT differences also. Various
6921      #ifdef WIN32 and WINNTs sprinkled about the place and some changes from
6922      unsigned to signed types: this was killing the Win32 compile.
6923      [Steve Henson]
6924
6925   *) Add new certificate file to stack functions,
6926      SSL_add_dir_cert_subjects_to_stack() and
6927      SSL_add_file_cert_subjects_to_stack().  These largely supplant
6928      SSL_load_client_CA_file(), and can be used to add multiple certs easily
6929      to a stack (usually this is then handed to SSL_CTX_set_client_CA_list()).
6930      This means that Apache-SSL and similar packages don't have to mess around
6931      to add as many CAs as they want to the preferred list.
6932      [Ben Laurie]
6933
6934   *) Experiment with doxygen documentation. Currently only partially applied to
6935      ssl/ssl_lib.c.
6936      See http://www.stack.nl/~dimitri/doxygen/index.html, and run doxygen with
6937      openssl.doxy as the configuration file.
6938      [Ben Laurie]
6939   
6940   *) Get rid of remaining C++-style comments which strict C compilers hate.
6941      [Ralf S. Engelschall, pointed out by Carlos Amengual]
6942
6943   *) Changed BN_RECURSION in bn_mont.c to BN_RECURSION_MONT so it is not
6944      compiled in by default: it has problems with large keys.
6945      [Steve Henson]
6946
6947   *) Add a bunch of SSL_xxx() functions for configuring the temporary RSA and
6948      DH private keys and/or callback functions which directly correspond to
6949      their SSL_CTX_xxx() counterparts but work on a per-connection basis. This
6950      is needed for applications which have to configure certificates on a
6951      per-connection basis (e.g. Apache+mod_ssl) instead of a per-context basis
6952      (e.g. s_server). 
6953         For the RSA certificate situation is makes no difference, but
6954      for the DSA certificate situation this fixes the "no shared cipher"
6955      problem where the OpenSSL cipher selection procedure failed because the
6956      temporary keys were not overtaken from the context and the API provided
6957      no way to reconfigure them. 
6958         The new functions now let applications reconfigure the stuff and they
6959      are in detail: SSL_need_tmp_RSA, SSL_set_tmp_rsa, SSL_set_tmp_dh,
6960      SSL_set_tmp_rsa_callback and SSL_set_tmp_dh_callback.  Additionally a new
6961      non-public-API function ssl_cert_instantiate() is used as a helper
6962      function and also to reduce code redundancy inside ssl_rsa.c.
6963      [Ralf S. Engelschall]
6964
6965   *) Move s_server -dcert and -dkey options out of the undocumented feature
6966      area because they are useful for the DSA situation and should be
6967      recognized by the users.
6968      [Ralf S. Engelschall]
6969
6970   *) Fix the cipher decision scheme for export ciphers: the export bits are
6971      *not* within SSL_MKEY_MASK or SSL_AUTH_MASK, they are within
6972      SSL_EXP_MASK.  So, the original variable has to be used instead of the
6973      already masked variable.
6974      [Richard Levitte <levitte@stacken.kth.se>]
6975
6976   *) Fix 'port' variable from `int' to `unsigned int' in crypto/bio/b_sock.c
6977      [Richard Levitte <levitte@stacken.kth.se>]
6978
6979   *) Change type of another md_len variable in pk7_doit.c:PKCS7_dataFinal()
6980      from `int' to `unsigned int' because it's a length and initialized by
6981      EVP_DigestFinal() which expects an `unsigned int *'.
6982      [Richard Levitte <levitte@stacken.kth.se>]
6983
6984   *) Don't hard-code path to Perl interpreter on shebang line of Configure
6985      script. Instead use the usual Shell->Perl transition trick.
6986      [Ralf S. Engelschall]
6987
6988   *) Make `openssl x509 -noout -modulus' functional also for DSA certificates
6989      (in addition to RSA certificates) to match the behaviour of `openssl dsa
6990      -noout -modulus' as it's already the case for `openssl rsa -noout
6991      -modulus'.  For RSA the -modulus is the real "modulus" while for DSA
6992      currently the public key is printed (a decision which was already done by
6993      `openssl dsa -modulus' in the past) which serves a similar purpose.
6994      Additionally the NO_RSA no longer completely removes the whole -modulus
6995      option; it now only avoids using the RSA stuff. Same applies to NO_DSA
6996      now, too.
6997      [Ralf S.  Engelschall]
6998
6999   *) Add Arne Ansper's reliable BIO - this is an encrypted, block-digested
7000      BIO. See the source (crypto/evp/bio_ok.c) for more info.
7001      [Arne Ansper <arne@ats.cyber.ee>]
7002
7003   *) Dump the old yucky req code that tried (and failed) to allow raw OIDs
7004      to be added. Now both 'req' and 'ca' can use new objects defined in the
7005      config file.
7006      [Steve Henson]
7007
7008   *) Add cool BIO that does syslog (or event log on NT).
7009      [Arne Ansper <arne@ats.cyber.ee>, integrated by Ben Laurie]
7010
7011   *) Add support for new TLS ciphersuites, TLS_RSA_EXPORT56_WITH_RC4_56_MD5,
7012      TLS_RSA_EXPORT56_WITH_RC2_CBC_56_MD5 and
7013      TLS_RSA_EXPORT56_WITH_DES_CBC_SHA, as specified in "56-bit Export Cipher
7014      Suites For TLS", draft-ietf-tls-56-bit-ciphersuites-00.txt.
7015      [Ben Laurie]
7016
7017   *) Add preliminary config info for new extension code.
7018      [Steve Henson]
7019
7020   *) Make RSA_NO_PADDING really use no padding.
7021      [Ulf Moeller <ulf@fitug.de>]
7022
7023   *) Generate errors when private/public key check is done.
7024      [Ben Laurie]
7025
7026   *) Overhaul for 'crl' utility. New function X509_CRL_print. Partial support
7027      for some CRL extensions and new objects added.
7028      [Steve Henson]
7029
7030   *) Really fix the ASN1 IMPLICIT bug this time... Partial support for private
7031      key usage extension and fuller support for authority key id.
7032      [Steve Henson]
7033
7034   *) Add OAEP encryption for the OpenSSL crypto library. OAEP is the improved
7035      padding method for RSA, which is recommended for new applications in PKCS
7036      #1 v2.0 (RFC 2437, October 1998).
7037      OAEP (Optimal Asymmetric Encryption Padding) has better theoretical
7038      foundations than the ad-hoc padding used in PKCS #1 v1.5. It is secure
7039      against Bleichbacher's attack on RSA.
7040      [Ulf Moeller <ulf@fitug.de>, reformatted, corrected and integrated by
7041       Ben Laurie]
7042
7043   *) Updates to the new SSL compression code
7044      [Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)]
7045
7046   *) Fix so that the version number in the master secret, when passed
7047      via RSA, checks that if TLS was proposed, but we roll back to SSLv3
7048      (because the server will not accept higher), that the version number
7049      is 0x03,0x01, not 0x03,0x00
7050      [Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)]
7051
7052   *) Run extensive memory leak checks on SSL apps. Fixed *lots* of memory
7053      leaks in ssl/ relating to new X509_get_pubkey() behaviour. Also fixes
7054      in apps/ and an unrelated leak in crypto/dsa/dsa_vrf.c
7055      [Steve Henson]
7056
7057   *) Support for RAW extensions where an arbitrary extension can be
7058      created by including its DER encoding. See apps/openssl.cnf for
7059      an example.
7060      [Steve Henson]
7061
7062   *) Make sure latest Perl versions don't interpret some generated C array
7063      code as Perl array code in the crypto/err/err_genc.pl script.
7064      [Lars Weber <3weber@informatik.uni-hamburg.de>]
7065
7066   *) Modify ms/do_ms.bat to not generate assembly language makefiles since
7067      not many people have the assembler. Various Win32 compilation fixes and
7068      update to the INSTALL.W32 file with (hopefully) more accurate Win32
7069      build instructions.
7070      [Steve Henson]
7071
7072   *) Modify configure script 'Configure' to automatically create crypto/date.h
7073      file under Win32 and also build pem.h from pem.org. New script
7074      util/mkfiles.pl to create the MINFO file on environments that can't do a
7075      'make files': perl util/mkfiles.pl >MINFO should work.
7076      [Steve Henson]
7077
7078   *) Major rework of DES function declarations, in the pursuit of correctness
7079      and purity. As a result, many evil casts evaporated, and some weirdness,
7080      too. You may find this causes warnings in your code. Zapping your evil
7081      casts will probably fix them. Mostly.
7082      [Ben Laurie]
7083
7084   *) Fix for a typo in asn1.h. Bug fix to object creation script
7085      obj_dat.pl. It considered a zero in an object definition to mean
7086      "end of object": none of the objects in objects.h have any zeros
7087      so it wasn't spotted.
7088      [Steve Henson, reported by Erwann ABALEA <eabalea@certplus.com>]
7089
7090   *) Add support for Triple DES Cipher Block Chaining with Output Feedback
7091      Masking (CBCM). In the absence of test vectors, the best I have been able
7092      to do is check that the decrypt undoes the encrypt, so far. Send me test
7093      vectors if you have them.
7094      [Ben Laurie]
7095
7096   *) Correct calculation of key length for export ciphers (too much space was
7097      allocated for null ciphers). This has not been tested!
7098      [Ben Laurie]
7099
7100   *) Modifications to the mkdef.pl for Win32 DEF file creation. The usage
7101      message is now correct (it understands "crypto" and "ssl" on its
7102      command line). There is also now an "update" option. This will update
7103      the util/ssleay.num and util/libeay.num files with any new functions.
7104      If you do a: 
7105      perl util/mkdef.pl crypto ssl update
7106      it will update them.
7107      [Steve Henson]
7108
7109   *) Overhauled the Perl interface (perl/*):
7110      - ported BN stuff to OpenSSL's different BN library
7111      - made the perl/ source tree CVS-aware
7112      - renamed the package from SSLeay to OpenSSL (the files still contain
7113        their history because I've copied them in the repository)
7114      - removed obsolete files (the test scripts will be replaced
7115        by better Test::Harness variants in the future)
7116      [Ralf S. Engelschall]
7117
7118   *) First cut for a very conservative source tree cleanup:
7119      1. merge various obsolete readme texts into doc/ssleay.txt
7120      where we collect the old documents and readme texts.
7121      2. remove the first part of files where I'm already sure that we no
7122      longer need them because of three reasons: either they are just temporary
7123      files which were left by Eric or they are preserved original files where
7124      I've verified that the diff is also available in the CVS via "cvs diff
7125      -rSSLeay_0_8_1b" or they were renamed (as it was definitely the case for
7126      the crypto/md/ stuff).
7127      [Ralf S. Engelschall]
7128
7129   *) More extension code. Incomplete support for subject and issuer alt
7130      name, issuer and authority key id. Change the i2v function parameters
7131      and add an extra 'crl' parameter in the X509V3_CTX structure: guess
7132      what that's for :-) Fix to ASN1 macro which messed up
7133      IMPLICIT tag and add f_enum.c which adds a2i, i2a for ENUMERATED.
7134      [Steve Henson]
7135
7136   *) Preliminary support for ENUMERATED type. This is largely copied from the
7137      INTEGER code.
7138      [Steve Henson]
7139
7140   *) Add new function, EVP_MD_CTX_copy() to replace frequent use of memcpy.
7141      [Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)]
7142
7143   *) Make sure `make rehash' target really finds the `openssl' program.
7144      [Ralf S. Engelschall, Matthias Loepfe <Matthias.Loepfe@adnovum.ch>]
7145
7146   *) Squeeze another 7% of speed out of MD5 assembler, at least on a P2. I'd
7147      like to hear about it if this slows down other processors.
7148      [Ben Laurie]
7149
7150   *) Add CygWin32 platform information to Configure script.
7151      [Alan Batie <batie@aahz.jf.intel.com>]
7152
7153   *) Fixed ms/32all.bat script: `no_asm' -> `no-asm'
7154      [Rainer W. Gerling <gerling@mpg-gv.mpg.de>]
7155   
7156   *) New program nseq to manipulate netscape certificate sequences
7157      [Steve Henson]
7158
7159   *) Modify crl2pkcs7 so it supports multiple -certfile arguments. Fix a
7160      few typos.
7161      [Steve Henson]
7162
7163   *) Fixes to BN code.  Previously the default was to define BN_RECURSION
7164      but the BN code had some problems that would cause failures when
7165      doing certificate verification and some other functions.
7166      [Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)]
7167
7168   *) Add ASN1 and PEM code to support netscape certificate sequences.
7169      [Steve Henson]
7170
7171   *) Add ASN1 and PEM code to support netscape certificate sequences.
7172      [Steve Henson]
7173
7174   *) Add several PKIX and private extended key usage OIDs.
7175      [Steve Henson]
7176
7177   *) Modify the 'ca' program to handle the new extension code. Modify
7178      openssl.cnf for new extension format, add comments.
7179      [Steve Henson]
7180
7181   *) More X509 V3 changes. Fix typo in v3_bitstr.c. Add support to 'req'
7182      and add a sample to openssl.cnf so req -x509 now adds appropriate
7183      CA extensions.
7184      [Steve Henson]
7185
7186   *) Continued X509 V3 changes. Add to other makefiles, integrate with the
7187      error code, add initial support to X509_print() and x509 application.
7188      [Steve Henson]
7189
7190   *) Takes a deep breath and start addding X509 V3 extension support code. Add
7191      files in crypto/x509v3. Move original stuff to crypto/x509v3/old. All this
7192      stuff is currently isolated and isn't even compiled yet.
7193      [Steve Henson]
7194
7195   *) Continuing patches for GeneralizedTime. Fix up certificate and CRL
7196      ASN1 to use ASN1_TIME and modify print routines to use ASN1_TIME_print.
7197      Removed the versions check from X509 routines when loading extensions:
7198      this allows certain broken certificates that don't set the version
7199      properly to be processed.
7200      [Steve Henson]
7201
7202   *) Deal with irritating shit to do with dependencies, in YAAHW (Yet Another
7203      Ad Hoc Way) - Makefile.ssls now all contain local dependencies, which
7204      can still be regenerated with "make depend".
7205      [Ben Laurie]
7206
7207   *) Spelling mistake in C version of CAST-128.
7208      [Ben Laurie, reported by Jeremy Hylton <jeremy@cnri.reston.va.us>]
7209
7210   *) Changes to the error generation code. The perl script err-code.pl 
7211      now reads in the old error codes and retains the old numbers, only
7212      adding new ones if necessary. It also only changes the .err files if new
7213      codes are added. The makefiles have been modified to only insert errors
7214      when needed (to avoid needlessly modifying header files). This is done
7215      by only inserting errors if the .err file is newer than the auto generated
7216      C file. To rebuild all the error codes from scratch (the old behaviour)
7217      either modify crypto/Makefile.ssl to pass the -regen flag to err_code.pl
7218      or delete all the .err files.
7219      [Steve Henson]
7220
7221   *) CAST-128 was incorrectly implemented for short keys. The C version has
7222      been fixed, but is untested. The assembler versions are also fixed, but
7223      new assembler HAS NOT BEEN GENERATED FOR WIN32 - the Makefile needs fixing
7224      to regenerate it if needed.
7225      [Ben Laurie, reported (with fix for C version) by Jun-ichiro itojun
7226       Hagino <itojun@kame.net>]
7227
7228   *) File was opened incorrectly in randfile.c.
7229      [Ulf Möller <ulf@fitug.de>]
7230
7231   *) Beginning of support for GeneralizedTime. d2i, i2d, check and print
7232      functions. Also ASN1_TIME suite which is a CHOICE of UTCTime or
7233      GeneralizedTime. ASN1_TIME is the proper type used in certificates et
7234      al: it's just almost always a UTCTime. Note this patch adds new error
7235      codes so do a "make errors" if there are problems.
7236      [Steve Henson]
7237
7238   *) Correct Linux 1 recognition in config.
7239      [Ulf Möller <ulf@fitug.de>]
7240
7241   *) Remove pointless MD5 hash when using DSA keys in ca.
7242      [Anonymous <nobody@replay.com>]
7243
7244   *) Generate an error if given an empty string as a cert directory. Also
7245      generate an error if handed NULL (previously returned 0 to indicate an
7246      error, but didn't set one).
7247      [Ben Laurie, reported by Anonymous <nobody@replay.com>]
7248
7249   *) Add prototypes to SSL methods. Make SSL_write's buffer const, at last.
7250      [Ben Laurie]
7251
7252   *) Fix the dummy function BN_ref_mod_exp() in rsaref.c to have the correct
7253      parameters. This was causing a warning which killed off the Win32 compile.
7254      [Steve Henson]
7255
7256   *) Remove C++ style comments from crypto/bn/bn_local.h.
7257      [Neil Costigan <neil.costigan@celocom.com>]
7258
7259   *) The function OBJ_txt2nid was broken. It was supposed to return a nid
7260      based on a text string, looking up short and long names and finally
7261      "dot" format. The "dot" format stuff didn't work. Added new function
7262      OBJ_txt2obj to do the same but return an ASN1_OBJECT and rewrote 
7263      OBJ_txt2nid to use it. OBJ_txt2obj can also return objects even if the
7264      OID is not part of the table.
7265      [Steve Henson]
7266
7267   *) Add prototypes to X509 lookup/verify methods, fixing a bug in
7268      X509_LOOKUP_by_alias().
7269      [Ben Laurie]
7270
7271   *) Sort openssl functions by name.
7272      [Ben Laurie]
7273
7274   *) Get the gendsa program working (hopefully) and add it to app list. Remove
7275      encryption from sample DSA keys (in case anyone is interested the password
7276      was "1234").
7277      [Steve Henson]
7278
7279   *) Make _all_ *_free functions accept a NULL pointer.
7280      [Frans Heymans <fheymans@isaserver.be>]
7281
7282   *) If a DH key is generated in s3_srvr.c, don't blow it by trying to use
7283      NULL pointers.
7284      [Anonymous <nobody@replay.com>]
7285
7286   *) s_server should send the CAfile as acceptable CAs, not its own cert.
7287      [Bodo Moeller <3moeller@informatik.uni-hamburg.de>]
7288
7289   *) Don't blow it for numeric -newkey arguments to apps/req.
7290      [Bodo Moeller <3moeller@informatik.uni-hamburg.de>]
7291
7292   *) Temp key "for export" tests were wrong in s3_srvr.c.
7293      [Anonymous <nobody@replay.com>]
7294
7295   *) Add prototype for temp key callback functions
7296      SSL_CTX_set_tmp_{rsa,dh}_callback().
7297      [Ben Laurie]
7298
7299   *) Make DH_free() tolerate being passed a NULL pointer (like RSA_free() and
7300      DSA_free()). Make X509_PUBKEY_set() check for errors in d2i_PublicKey().
7301      [Steve Henson]
7302
7303   *) X509_name_add_entry() freed the wrong thing after an error.
7304      [Arne Ansper <arne@ats.cyber.ee>]
7305
7306   *) rsa_eay.c would attempt to free a NULL context.
7307      [Arne Ansper <arne@ats.cyber.ee>]
7308
7309   *) BIO_s_socket() had a broken should_retry() on Windoze.
7310      [Arne Ansper <arne@ats.cyber.ee>]
7311
7312   *) BIO_f_buffer() didn't pass on BIO_CTRL_FLUSH.
7313      [Arne Ansper <arne@ats.cyber.ee>]
7314
7315   *) Make sure the already existing X509_STORE->depth variable is initialized
7316      in X509_STORE_new(), but document the fact that this variable is still
7317      unused in the certificate verification process.
7318      [Ralf S. Engelschall]
7319
7320   *) Fix the various library and apps files to free up pkeys obtained from
7321      X509_PUBKEY_get() et al. Also allow x509.c to handle netscape extensions.
7322      [Steve Henson]
7323
7324   *) Fix reference counting in X509_PUBKEY_get(). This makes
7325      demos/maurice/example2.c work, amongst others, probably.
7326      [Steve Henson and Ben Laurie]
7327
7328   *) First cut of a cleanup for apps/. First the `ssleay' program is now named
7329      `openssl' and second, the shortcut symlinks for the `openssl <command>'
7330      are no longer created. This way we have a single and consistent command
7331      line interface `openssl <command>', similar to `cvs <command>'.
7332      [Ralf S. Engelschall, Paul Sutton and Ben Laurie]
7333
7334   *) ca.c: move test for DSA keys inside #ifndef NO_DSA. Make pubkey
7335      BIT STRING wrapper always have zero unused bits.
7336      [Steve Henson]
7337
7338   *) Add CA.pl, perl version of CA.sh, add extended key usage OID.
7339      [Steve Henson]
7340
7341   *) Make the top-level INSTALL documentation easier to understand.
7342      [Paul Sutton]
7343
7344   *) Makefiles updated to exit if an error occurs in a sub-directory
7345      make (including if user presses ^C) [Paul Sutton]
7346
7347   *) Make Montgomery context stuff explicit in RSA data structure.
7348      [Ben Laurie]
7349
7350   *) Fix build order of pem and err to allow for generated pem.h.
7351      [Ben Laurie]
7352
7353   *) Fix renumbering bug in X509_NAME_delete_entry().
7354      [Ben Laurie]
7355
7356   *) Enhanced the err-ins.pl script so it makes the error library number 
7357      global and can add a library name. This is needed for external ASN1 and
7358      other error libraries.
7359      [Steve Henson]
7360
7361   *) Fixed sk_insert which never worked properly.
7362      [Steve Henson]
7363
7364   *) Fix ASN1 macros so they can handle indefinite length construted 
7365      EXPLICIT tags. Some non standard certificates use these: they can now
7366      be read in.
7367      [Steve Henson]
7368
7369   *) Merged the various old/obsolete SSLeay documentation files (doc/xxx.doc)
7370      into a single doc/ssleay.txt bundle. This way the information is still
7371      preserved but no longer messes up this directory. Now it's new room for
7372      the new set of documenation files.
7373      [Ralf S. Engelschall]
7374
7375   *) SETs were incorrectly DER encoded. This was a major pain, because they
7376      shared code with SEQUENCEs, which aren't coded the same. This means that
7377      almost everything to do with SETs or SEQUENCEs has either changed name or
7378      number of arguments.
7379      [Ben Laurie, based on a partial fix by GP Jayan <gp@nsj.co.jp>]
7380
7381   *) Fix test data to work with the above.
7382      [Ben Laurie]
7383
7384   *) Fix the RSA header declarations that hid a bug I fixed in 0.9.0b but
7385      was already fixed by Eric for 0.9.1 it seems.
7386      [Ben Laurie - pointed out by Ulf Möller <ulf@fitug.de>]
7387
7388   *) Autodetect FreeBSD3.
7389      [Ben Laurie]
7390
7391   *) Fix various bugs in Configure. This affects the following platforms:
7392      nextstep
7393      ncr-scde
7394      unixware-2.0
7395      unixware-2.0-pentium
7396      sco5-cc.
7397      [Ben Laurie]
7398
7399   *) Eliminate generated files from CVS. Reorder tests to regenerate files
7400      before they are needed.
7401      [Ben Laurie]
7402
7403   *) Generate Makefile.ssl from Makefile.org (to keep CVS happy).
7404      [Ben Laurie]
7405
7406
7407  Changes between 0.9.1b and 0.9.1c  [23-Dec-1998]
7408
7409   *) Added OPENSSL_VERSION_NUMBER to crypto/crypto.h and 
7410      changed SSLeay to OpenSSL in version strings.
7411      [Ralf S. Engelschall]
7412   
7413   *) Some fixups to the top-level documents.
7414      [Paul Sutton]
7415
7416   *) Fixed the nasty bug where rsaref.h was not found under compile-time
7417      because the symlink to include/ was missing.
7418      [Ralf S. Engelschall]
7419
7420   *) Incorporated the popular no-RSA/DSA-only patches 
7421      which allow to compile a RSA-free SSLeay.
7422      [Andrew Cooke / Interrader Ldt., Ralf S. Engelschall]
7423
7424   *) Fixed nasty rehash problem under `make -f Makefile.ssl links'
7425      when "ssleay" is still not found.
7426      [Ralf S. Engelschall]
7427
7428   *) Added more platforms to Configure: Cray T3E, HPUX 11, 
7429      [Ralf S. Engelschall, Beckmann <beckman@acl.lanl.gov>]
7430
7431   *) Updated the README file.
7432      [Ralf S. Engelschall]
7433
7434   *) Added various .cvsignore files in the CVS repository subdirs
7435      to make a "cvs update" really silent.
7436      [Ralf S. Engelschall]
7437
7438   *) Recompiled the error-definition header files and added
7439      missing symbols to the Win32 linker tables.
7440      [Ralf S. Engelschall]
7441
7442   *) Cleaned up the top-level documents;
7443      o new files: CHANGES and LICENSE
7444      o merged VERSION, HISTORY* and README* files a CHANGES.SSLeay 
7445      o merged COPYRIGHT into LICENSE
7446      o removed obsolete TODO file
7447      o renamed MICROSOFT to INSTALL.W32
7448      [Ralf S. Engelschall]
7449
7450   *) Removed dummy files from the 0.9.1b source tree: 
7451      crypto/asn1/x crypto/bio/cd crypto/bio/fg crypto/bio/grep crypto/bio/vi
7452      crypto/bn/asm/......add.c crypto/bn/asm/a.out crypto/dsa/f crypto/md5/f
7453      crypto/pem/gmon.out crypto/perlasm/f crypto/pkcs7/build crypto/rsa/f
7454      crypto/sha/asm/f crypto/threads/f ms/zzz ssl/f ssl/f.mak test/f
7455      util/f.mak util/pl/f util/pl/f.mak crypto/bf/bf_locl.old apps/f
7456      [Ralf S. Engelschall]
7457
7458   *) Added various platform portability fixes.
7459      [Mark J. Cox]
7460
7461   *) The Genesis of the OpenSSL rpject:
7462      We start with the latest (unreleased) SSLeay version 0.9.1b which Eric A.
7463      Young and Tim J. Hudson created while they were working for C2Net until
7464      summer 1998.
7465      [The OpenSSL Project]
7466  
7467
7468  Changes between 0.9.0b and 0.9.1b  [not released]
7469
7470   *) Updated a few CA certificates under certs/
7471      [Eric A. Young]
7472
7473   *) Changed some BIGNUM api stuff.
7474      [Eric A. Young]
7475
7476   *) Various platform ports: OpenBSD, Ultrix, IRIX 64bit, NetBSD, 
7477      DGUX x86, Linux Alpha, etc.
7478      [Eric A. Young]
7479
7480   *) New COMP library [crypto/comp/] for SSL Record Layer Compression: 
7481      RLE (dummy implemented) and ZLIB (really implemented when ZLIB is
7482      available).
7483      [Eric A. Young]
7484
7485   *) Add -strparse option to asn1pars program which parses nested 
7486      binary structures 
7487      [Dr Stephen Henson <shenson@bigfoot.com>]
7488
7489   *) Added "oid_file" to ssleay.cnf for "ca" and "req" programs.
7490      [Eric A. Young]
7491
7492   *) DSA fix for "ca" program.
7493      [Eric A. Young]
7494
7495   *) Added "-genkey" option to "dsaparam" program.
7496      [Eric A. Young]
7497
7498   *) Added RIPE MD160 (rmd160) message digest.
7499      [Eric A. Young]
7500
7501   *) Added -a (all) option to "ssleay version" command.
7502      [Eric A. Young]
7503
7504   *) Added PLATFORM define which is the id given to Configure.
7505      [Eric A. Young]
7506
7507   *) Added MemCheck_XXXX functions to crypto/mem.c for memory checking.
7508      [Eric A. Young]
7509
7510   *) Extended the ASN.1 parser routines.
7511      [Eric A. Young]
7512
7513   *) Extended BIO routines to support REUSEADDR, seek, tell, etc.
7514      [Eric A. Young]
7515
7516   *) Added a BN_CTX to the BN library.
7517      [Eric A. Young]
7518
7519   *) Fixed the weak key values in DES library
7520      [Eric A. Young]
7521
7522   *) Changed API in EVP library for cipher aliases.
7523      [Eric A. Young]
7524
7525   *) Added support for RC2/64bit cipher.
7526      [Eric A. Young]
7527
7528   *) Converted the lhash library to the crypto/mem.c functions.
7529      [Eric A. Young]
7530
7531   *) Added more recognized ASN.1 object ids.
7532      [Eric A. Young]
7533
7534   *) Added more RSA padding checks for SSL/TLS.
7535      [Eric A. Young]
7536
7537   *) Added BIO proxy/filter functionality.
7538      [Eric A. Young]
7539
7540   *) Added extra_certs to SSL_CTX which can be used
7541      send extra CA certificates to the client in the CA cert chain sending
7542      process. It can be configured with SSL_CTX_add_extra_chain_cert().
7543      [Eric A. Young]
7544
7545   *) Now Fortezza is denied in the authentication phase because
7546      this is key exchange mechanism is not supported by SSLeay at all.
7547      [Eric A. Young]
7548
7549   *) Additional PKCS1 checks.
7550      [Eric A. Young]
7551
7552   *) Support the string "TLSv1" for all TLS v1 ciphers.
7553      [Eric A. Young]
7554
7555   *) Added function SSL_get_ex_data_X509_STORE_CTX_idx() which gives the
7556      ex_data index of the SSL context in the X509_STORE_CTX ex_data.
7557      [Eric A. Young]
7558
7559   *) Fixed a few memory leaks.
7560      [Eric A. Young]
7561
7562   *) Fixed various code and comment typos.
7563      [Eric A. Young]
7564
7565   *) A minor bug in ssl/s3_clnt.c where there would always be 4 0 
7566      bytes sent in the client random.
7567      [Edward Bishop <ebishop@spyglass.com>]
7568