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