Fix ./Configure reconf
[openssl.git] / CHANGES
1
2  OpenSSL CHANGES
3  _______________
4
5  Changes between 1.0.2 and 1.1.0  [xx XXX xxxx]
6
7   *) Added ASYNC support. Libcrypto now includes the async sub-library to enable
8      cryptographic operations to be performed asynchronously as long as an
9      asynchronous capable engine is used. See the ASYNC_start_job() man page for
10      further details. Libssl has also had this capability integrated with the
11      introduction of the new mode SSL_MODE_ASYNC and associated error
12      SSL_ERROR_WANT_ASYNC. See the SSL_CTX_set_mode() and SSL_get_error() man
13      pages. This work was developed in partnership with Intel Corp.
14      [Matt Caswell]
15
16   *) State machine rewrite. The state machine code has been significantly
17      refactored in order to remove much duplication of code and solve issues
18      with the old code (see ssl/statem/README for further details). This change
19      does have some associated API changes. Notably the SSL_state() function
20      has been removed and replaced by SSL_get_state which now returns an
21      "OSSL_HANDSHAKE_STATE" instead of an int. SSL_set_state() has been removed
22      altogether. The previous handshake states defined in ssl.h and ssl3.h have
23      also been removed.
24      [Matt Caswell]
25
26   *) All instances of the string "ssleay" in the public API were replaced
27      with OpenSSL (case-matching; e.g., OPENSSL_VERSION for #define's)
28      Some error codes related to internal RSA_eay API's were renamed.
29      [Rich Salz]
30
31   *) The demo files in crypto/threads were moved to demo/threads.
32      [Rich Salz]
33
34   *) Removed obsolete engines: 4758cca, aep, atalla, cswift, nuron and sureware.
35      [Matt Caswell]
36
37   *) New ASN.1 embed macro.
38
39      New ASN.1 macro ASN1_EMBED. This is the same as ASN1_SIMPLE except the
40      structure is not allocated: it is part of the parent. That is instead of
41
42      FOO *x;
43
44      it must be:
45
46      FOO x;
47
48      This reduces memory fragmentation and make it impossible to accidentally
49      set a mandatory field to NULL.
50
51      This currently only works for some fields specifically a SEQUENCE, CHOICE,
52      or ASN1_STRING type which is part of a parent SEQUENCE. Since it is
53      equivalent to ASN1_SIMPLE it cannot be tagged, OPTIONAL, SET OF or
54      SEQUENCE OF.
55      [Steve Henson]
56
57   *) Remove EVP_CHECK_DES_KEY, a compile-time option that never compiled.
58      [Emilia Käsper]
59
60   *) Removed DES and RC4 ciphersuites from DEFAULT. Also removed RC2 although
61      in 1.0.2 EXPORT was already removed and the only RC2 ciphersuite is also
62      an EXPORT one. COMPLEMENTOFDEFAULT has been updated accordingly to add
63      DES and RC4 ciphersuites.
64      [Matt Caswell]
65
66   *) Rewrite EVP_DecodeUpdate (base64 decoding) to fix several bugs.
67      This changes the decoding behaviour for some invalid messages,
68      though the change is mostly in the more lenient direction, and
69      legacy behaviour is preserved as much as possible.
70      [Emilia Käsper]
71
72   *) Fix no-stdio build.
73     [ David Woodhouse <David.Woodhouse@intel.com> and also
74       Ivan Nestlerode <ivan.nestlerode@sonos.com> ]
75
76   *) New testing framework
77      The testing framework has been largely rewritten and is now using
78      perl and the perl modules Test::Harness and an extended variant of
79      Test::More called OpenSSL::Test to do its work.  All test scripts in
80      test/ have been rewritten into test recipes, and all direct calls to
81      executables in test/Makefile have become individual recipes using the
82      simplified testing OpenSSL::Test::Simple.
83
84      For documentation on our testing modules, do:
85
86         perldoc test/testlib/OpenSSL/Test/Simple.pm
87         perldoc test/testlib/OpenSSL/Test.pm
88
89      [Richard Levitte]
90
91   *) In DSA_generate_parameters_ex, if the provided seed is too short,
92      return an error
93      [Rich Salz and Ismo Puustinen <ismo.puustinen@intel.com>]
94
95   *) Rewrite PSK to support ECDHE_PSK, DHE_PSK and RSA_PSK. Add ciphersuites
96      from RFC4279, RFC4785, RFC5487, RFC5489.
97
98      Thanks to Christian J. Dietrich and Giuseppe D'Angelo for the
99      original RSA_PSK patch.
100      [Steve Henson]
101
102   *) Dropped support for the SSL3_FLAGS_DELAY_CLIENT_FINISHED flag. This SSLeay
103      era flag was never set throughout the codebase (only read). Also removed
104      SSL3_FLAGS_POP_BUFFER which was only used if
105      SSL3_FLAGS_DELAY_CLIENT_FINISHED was also set.
106      [Matt Caswell]
107
108   *) Changed the default name options in the "ca", "crl", "req" and "x509"
109      to be "oneline" instead of "compat".
110      [Richard Levitte]
111
112   *) Remove SSL_OP_TLS_BLOCK_PADDING_BUG. This is SSLeay legacy, we're
113      not aware of clients that still exhibit this bug, and the workaround
114      hasn't been working properly for a while.
115      [Emilia Käsper]
116
117   *) The return type of BIO_number_read() and BIO_number_written() as well as
118      the corresponding num_read and num_write members in the BIO structure has
119      changed from unsigned long to uint64_t. On platforms where an unsigned
120      long is 32 bits (e.g. Windows) these counters could overflow if >4Gb is
121      transferred.
122      [Matt Caswell]
123
124   *) Given the pervasive nature of TLS extensions it is inadvisable to run
125      OpenSSL without support for them. It also means that maintaining
126      the OPENSSL_NO_TLSEXT option within the code is very invasive (and probably
127      not well tested). Therefore the OPENSSL_NO_TLSEXT option has been removed.
128      [Matt Caswell]
129
130   *) Removed support for the two export grade static DH ciphersuites
131      EXP-DH-RSA-DES-CBC-SHA and EXP-DH-DSS-DES-CBC-SHA. These two ciphersuites
132      were newly added (along with a number of other static DH ciphersuites) to
133      1.0.2. However the two export ones have *never* worked since they were
134      introduced. It seems strange in any case to be adding new export
135      ciphersuites, and given "logjam" it also does not seem correct to fix them.
136      [Matt Caswell]
137
138   *) Version negotiation has been rewritten. In particular SSLv23_method(),
139      SSLv23_client_method() and SSLv23_server_method() have been deprecated,
140      and turned into macros which simply call the new preferred function names
141      TLS_method(), TLS_client_method() and TLS_server_method(). All new code
142      should use the new names instead. Also as part of this change the ssl23.h
143      header file has been removed.
144      [Matt Caswell]
145
146   *) Support for Kerberos ciphersuites in TLS (RFC2712) has been removed. This
147      code and the associated standard is no longer considered fit-for-purpose.
148      [Matt Caswell]
149
150   *) RT2547 was closed.  When generating a private key, try to make the
151      output file readable only by the owner.  This behavior change might
152      be noticeable when interacting with other software.
153
154   *) Documented all exdata functions.  Added CRYPTO_free_ex_index.
155      Added a test.
156      [Rich Salz]
157
158   *) Added HTTP GET support to the ocsp command.
159      [Rich Salz]
160
161   *) RAND_pseudo_bytes has been deprecated. Users should use RAND_bytes instead.
162      [Matt Caswell]
163
164   *) Added support for TLS extended master secret from
165      draft-ietf-tls-session-hash-03.txt. Thanks for Alfredo Pironti for an
166      initial patch which was a great help during development.
167      [Steve Henson]
168
169   *) All libssl internal structures have been removed from the public header
170      files, and the OPENSSL_NO_SSL_INTERN option has been removed (since it is
171      now redundant). Users should not attempt to access internal structures
172      directly. Instead they should use the provided API functions.
173      [Matt Caswell]
174
175   *) config has been changed so that by default OPENSSL_NO_DEPRECATED is used.
176      Access to deprecated functions can be re-enabled by running config with
177      "enable-deprecated". In addition applications wishing to use deprecated
178      functions must define OPENSSL_USE_DEPRECATED. Note that this new behaviour
179      will, by default, disable some transitive includes that previously existed
180      in the header files (e.g. ec.h will no longer, by default, include bn.h)
181      [Matt Caswell]
182
183   *) Added support for OCB mode. OpenSSL has been granted a patent license
184      compatible with the OpenSSL license for use of OCB. Details are available
185      at https://www.openssl.org/docs/misc/OCB-patent-grant-OpenSSL.pdf. Support
186      for OCB can be removed by calling config with no-ocb.
187      [Matt Caswell]
188
189   *) SSLv2 support has been removed.  It still supports receiving a SSLv2
190      compatible client hello.
191      [Kurt Roeckx]
192
193   *) Increased the minimal RSA keysize from 256 to 512 bits [Rich Salz],
194      done while fixing the error code for the key-too-small case.
195      [Annie Yousar <a.yousar@informatik.hu-berlin.de>]
196
197   *) CA.sh has been removmed; use CA.pl instead.
198      [Rich Salz]
199
200   *) Removed old DES API.
201      [Rich Salz]
202
203   *) Remove various unsupported platforms:
204         Sony NEWS4
205         BEOS and BEOS_R5
206         NeXT
207         SUNOS
208         MPE/iX
209         Sinix/ReliantUNIX RM400
210         DGUX
211         NCR
212         Tandem
213         Cray
214         16-bit platforms such as WIN16
215      [Rich Salz]
216
217   *) Clean up OPENSSL_NO_xxx #define's
218         Use setbuf() and remove OPENSSL_NO_SETVBUF_IONBF
219         Rename OPENSSL_SYSNAME_xxx to OPENSSL_SYS_xxx
220         OPENSSL_NO_EC{DH,DSA} merged into OPENSSL_NO_EC
221         OPENSSL_NO_RIPEMD160, OPENSSL_NO_RIPEMD merged into OPENSSL_NO_RMD160
222         OPENSSL_NO_FP_API merged into OPENSSL_NO_STDIO
223         Remove OPENSSL_NO_BIO OPENSSL_NO_BUFFER OPENSSL_NO_CHAIN_VERIFY
224         OPENSSL_NO_EVP OPENSSL_NO_FIPS_ERR OPENSSL_NO_HASH_COMP
225         OPENSSL_NO_LHASH OPENSSL_NO_OBJECT OPENSSL_NO_SPEED OPENSSL_NO_STACK
226         OPENSSL_NO_X509 OPENSSL_NO_X509_VERIFY
227         Remove MS_STATIC; it's a relic from platforms <32 bits.
228      [Rich Salz]
229
230   *) Cleaned up dead code
231         Remove all but one '#ifdef undef' which is to be looked at.
232      [Rich Salz]
233
234   *) Clean up calling of xxx_free routines.
235         Just like free(), fix most of the xxx_free routines to accept
236         NULL.  Remove the non-null checks from callers.  Save much code.
237      [Rich Salz]
238
239   *) Add secure heap for storage of private keys (when possible).
240      Add BIO_s_secmem(), CBIGNUM, etc.
241      Contributed by Akamai Technologies under our Corporate CLA.
242      [Rich Salz]
243
244   *) Experimental support for a new, fast, unbiased prime candidate generator,
245      bn_probable_prime_dh_coprime(). Not currently used by any prime generator.
246      [Felix Laurie von Massenbach <felix@erbridge.co.uk>]
247
248   *) New output format NSS in the sess_id command line tool. This allows
249      exporting the session id and the master key in NSS keylog format.
250      [Martin Kaiser <martin@kaiser.cx>]
251
252   *) Harmonize version and its documentation. -f flag is used to display
253      compilation flags.
254      [mancha <mancha1@zoho.com>]
255
256   *) Fix eckey_priv_encode so it immediately returns an error upon a failure
257      in i2d_ECPrivateKey.  Thanks to Ted Unangst for feedback on this issue.
258      [mancha <mancha1@zoho.com>]
259
260   *) Fix some double frees. These are not thought to be exploitable.
261      [mancha <mancha1@zoho.com>]
262
263   *) A missing bounds check in the handling of the TLS heartbeat extension
264      can be used to reveal up to 64k of memory to a connected client or
265      server.
266
267      Thanks for Neel Mehta of Google Security for discovering this bug and to
268      Adam Langley <agl@chromium.org> and Bodo Moeller <bmoeller@acm.org> for
269      preparing the fix (CVE-2014-0160)
270      [Adam Langley, Bodo Moeller]
271
272   *) Fix for the attack described in the paper "Recovering OpenSSL
273      ECDSA Nonces Using the FLUSH+RELOAD Cache Side-channel Attack"
274      by Yuval Yarom and Naomi Benger. Details can be obtained from:
275      http://eprint.iacr.org/2014/140
276
277      Thanks to Yuval Yarom and Naomi Benger for discovering this
278      flaw and to Yuval Yarom for supplying a fix (CVE-2014-0076)
279      [Yuval Yarom and Naomi Benger]
280
281   *) Use algorithm specific chains in SSL_CTX_use_certificate_chain_file():
282      this fixes a limitation in previous versions of OpenSSL.
283      [Steve Henson]
284
285   *) Experimental encrypt-then-mac support.
286     
287      Experimental support for encrypt then mac from
288      draft-gutmann-tls-encrypt-then-mac-02.txt
289
290      To enable it set the appropriate extension number (0x42 for the test
291      server) using e.g. -DTLSEXT_TYPE_encrypt_then_mac=0x42
292  
293      For non-compliant peers (i.e. just about everything) this should have no
294      effect.
295
296      WARNING: EXPERIMENTAL, SUBJECT TO CHANGE.
297
298      [Steve Henson]
299
300   *) Add EVP support for key wrapping algorithms, to avoid problems with
301      existing code the flag EVP_CIPHER_CTX_WRAP_ALLOW has to be set in
302      the EVP_CIPHER_CTX or an error is returned. Add AES and DES3 wrap
303      algorithms and include tests cases.
304      [Steve Henson]
305
306   *) Extend CMS code to support RSA-PSS signatures and RSA-OAEP for
307      enveloped data.
308      [Steve Henson]
309
310   *) Extended RSA OAEP support via EVP_PKEY API. Options to specify digest,
311      MGF1 digest and OAEP label.
312      [Steve Henson]
313
314   *) Make openssl verify return errors.
315      [Chris Palmer <palmer@google.com> and Ben Laurie]
316
317   *) New function ASN1_TIME_diff to calculate the difference between two
318      ASN1_TIME structures or one structure and the current time.
319      [Steve Henson]
320
321   *) Update fips_test_suite to support multiple command line options. New
322      test to induce all self test errors in sequence and check expected
323      failures.
324      [Steve Henson]
325
326   *) Add FIPS_{rsa,dsa,ecdsa}_{sign,verify} functions which digest and
327      sign or verify all in one operation.
328      [Steve Henson]
329
330   *) Add fips_algvs: a multicall fips utility incorporating all the algorithm
331      test programs and fips_test_suite. Includes functionality to parse
332      the minimal script output of fipsalgest.pl directly.
333      [Steve Henson]
334
335   *) Add authorisation parameter to FIPS_module_mode_set().
336      [Steve Henson]
337
338   *) Add FIPS selftest for ECDH algorithm using P-224 and B-233 curves.
339      [Steve Henson]
340
341   *) Use separate DRBG fields for internal and external flags. New function
342      FIPS_drbg_health_check() to perform on demand health checking. Add
343      generation tests to fips_test_suite with reduced health check interval to 
344      demonstrate periodic health checking. Add "nodh" option to
345      fips_test_suite to skip very slow DH test.
346      [Steve Henson]
347
348   *) New function FIPS_get_cipherbynid() to lookup FIPS supported ciphers
349      based on NID.
350      [Steve Henson]
351
352   *) More extensive health check for DRBG checking many more failure modes.
353      New function FIPS_selftest_drbg_all() to handle every possible DRBG
354      combination: call this in fips_test_suite.
355      [Steve Henson]
356
357   *) Add support for Dual EC DRBG from SP800-90. Update DRBG algorithm test
358      and POST to handle Dual EC cases.
359      [Steve Henson]
360
361   *) Add support for canonical generation of DSA parameter 'g'. See 
362      FIPS 186-3 A.2.3.
363
364   *) Add support for HMAC DRBG from SP800-90. Update DRBG algorithm test and
365      POST to handle HMAC cases.
366      [Steve Henson]
367
368   *) Add functions FIPS_module_version() and FIPS_module_version_text()
369      to return numerical and string versions of the FIPS module number.
370      [Steve Henson]
371
372   *) Rename FIPS_mode_set and FIPS_mode to FIPS_module_mode_set and
373      FIPS_module_mode. FIPS_mode and FIPS_mode_set will be implemented
374      outside the validated module in the FIPS capable OpenSSL.
375      [Steve Henson]
376
377   *) Minor change to DRBG entropy callback semantics. In some cases
378      there is no multiple of the block length between min_len and
379      max_len. Allow the callback to return more than max_len bytes
380      of entropy but discard any extra: it is the callback's responsibility
381      to ensure that the extra data discarded does not impact the
382      requested amount of entropy.
383      [Steve Henson]
384
385   *) Add PRNG security strength checks to RSA, DSA and ECDSA using 
386      information in FIPS186-3, SP800-57 and SP800-131A.
387      [Steve Henson]
388
389   *) CCM support via EVP. Interface is very similar to GCM case except we
390      must supply all data in one chunk (i.e. no update, final) and the
391      message length must be supplied if AAD is used. Add algorithm test
392      support.
393      [Steve Henson]
394
395   *) Initial version of POST overhaul. Add POST callback to allow the status
396      of POST to be monitored and/or failures induced. Modify fips_test_suite
397      to use callback. Always run all selftests even if one fails.
398      [Steve Henson]
399
400   *) XTS support including algorithm test driver in the fips_gcmtest program.
401      Note: this does increase the maximum key length from 32 to 64 bytes but
402      there should be no binary compatibility issues as existing applications
403      will never use XTS mode.
404      [Steve Henson]
405
406   *) Extensive reorganisation of FIPS PRNG behaviour. Remove all dependencies
407      to OpenSSL RAND code and replace with a tiny FIPS RAND API which also
408      performs algorithm blocking for unapproved PRNG types. Also do not
409      set PRNG type in FIPS_mode_set(): leave this to the application.
410      Add default OpenSSL DRBG handling: sets up FIPS PRNG and seeds with
411      the standard OpenSSL PRNG: set additional data to a date time vector.
412      [Steve Henson]
413
414   *) Rename old X9.31 PRNG functions of the form FIPS_rand* to FIPS_x931*.
415      This shouldn't present any incompatibility problems because applications
416      shouldn't be using these directly and any that are will need to rethink
417      anyway as the X9.31 PRNG is now deprecated by FIPS 140-2
418      [Steve Henson]
419
420   *) Extensive self tests and health checking required by SP800-90 DRBG.
421      Remove strength parameter from FIPS_drbg_instantiate and always
422      instantiate at maximum supported strength.
423      [Steve Henson]
424
425   *) Add ECDH code to fips module and fips_ecdhvs for primitives only testing.
426      [Steve Henson]
427
428   *) New algorithm test program fips_dhvs to handle DH primitives only testing.
429      [Steve Henson]
430
431   *) New function DH_compute_key_padded() to compute a DH key and pad with
432      leading zeroes if needed: this complies with SP800-56A et al.
433      [Steve Henson]
434
435   *) Initial implementation of SP800-90 DRBGs for Hash and CTR. Not used by
436      anything, incomplete, subject to change and largely untested at present.
437      [Steve Henson]
438
439   *) Modify fipscanisteronly build option to only build the necessary object
440      files by filtering FIPS_EX_OBJ through a perl script in crypto/Makefile.
441      [Steve Henson]
442
443   *) Add experimental option FIPSSYMS to give all symbols in
444      fipscanister.o and FIPS or fips prefix. This will avoid
445      conflicts with future versions of OpenSSL. Add perl script
446      util/fipsas.pl to preprocess assembly language source files
447      and rename any affected symbols.
448      [Steve Henson]
449
450   *) Add selftest checks and algorithm block of non-fips algorithms in
451      FIPS mode. Remove DES2 from selftests.
452      [Steve Henson]
453
454   *) Add ECDSA code to fips module. Add tiny fips_ecdsa_check to just
455      return internal method without any ENGINE dependencies. Add new
456      tiny fips sign and verify functions.
457      [Steve Henson]
458
459   *) New build option no-ec2m to disable characteristic 2 code.
460      [Steve Henson]
461
462   *) New build option "fipscanisteronly". This only builds fipscanister.o
463      and (currently) associated fips utilities. Uses the file Makefile.fips
464      instead of Makefile.org as the prototype.
465      [Steve Henson]
466
467   *) Add some FIPS mode restrictions to GCM. Add internal IV generator.
468      Update fips_gcmtest to use IV generator.
469      [Steve Henson]
470
471   *) Initial, experimental EVP support for AES-GCM. AAD can be input by
472      setting output buffer to NULL. The *Final function must be
473      called although it will not retrieve any additional data. The tag
474      can be set or retrieved with a ctrl. The IV length is by default 12
475      bytes (96 bits) but can be set to an alternative value. If the IV
476      length exceeds the maximum IV length (currently 16 bytes) it cannot be
477      set before the key. 
478      [Steve Henson]
479
480   *) New flag in ciphers: EVP_CIPH_FLAG_CUSTOM_CIPHER. This means the
481      underlying do_cipher function handles all cipher semantics itself
482      including padding and finalisation. This is useful if (for example)
483      an ENGINE cipher handles block padding itself. The behaviour of
484      do_cipher is subtly changed if this flag is set: the return value
485      is the number of characters written to the output buffer (zero is
486      no longer an error code) or a negative error code. Also if the
487      input buffer is NULL and length 0 finalisation should be performed.
488      [Steve Henson]
489
490   *) If a candidate issuer certificate is already part of the constructed
491      path ignore it: new debug notification X509_V_ERR_PATH_LOOP for this case.
492      [Steve Henson]
493
494   *) Improve forward-security support: add functions
495
496        void SSL_CTX_set_not_resumable_session_callback(SSL_CTX *ctx, int (*cb)(SSL *ssl, int is_forward_secure))
497        void SSL_set_not_resumable_session_callback(SSL *ssl, int (*cb)(SSL *ssl, int is_forward_secure))
498
499      for use by SSL/TLS servers; the callback function will be called whenever a
500      new session is created, and gets to decide whether the session may be
501      cached to make it resumable (return 0) or not (return 1).  (As by the
502      SSL/TLS protocol specifications, the session_id sent by the server will be
503      empty to indicate that the session is not resumable; also, the server will
504      not generate RFC 4507 (RFC 5077) session tickets.)
505
506      A simple reasonable callback implementation is to return is_forward_secure.
507      This parameter will be set to 1 or 0 depending on the ciphersuite selected
508      by the SSL/TLS server library, indicating whether it can provide forward
509      security.
510      [Emilia Käsper <emilia.kasper@esat.kuleuven.be> (Google)]
511
512   *) New -verify_name option in command line utilities to set verification
513      parameters by name.
514      [Steve Henson]
515
516   *) Initial CMAC implementation. WARNING: EXPERIMENTAL, API MAY CHANGE.
517      Add CMAC pkey methods.
518      [Steve Henson]
519
520   *) Experimental renegotiation in s_server -www mode. If the client 
521      browses /reneg connection is renegotiated. If /renegcert it is
522      renegotiated requesting a certificate.
523      [Steve Henson]
524
525   *) Add an "external" session cache for debugging purposes to s_server. This
526      should help trace issues which normally are only apparent in deployed
527      multi-process servers.
528      [Steve Henson]
529
530   *) Extensive audit of libcrypto with DEBUG_UNUSED. Fix many cases where
531      return value is ignored. NB. The functions RAND_add(), RAND_seed(),
532      BIO_set_cipher() and some obscure PEM functions were changed so they
533      can now return an error. The RAND changes required a change to the
534      RAND_METHOD structure.
535      [Steve Henson]
536
537   *) New macro __owur for "OpenSSL Warn Unused Result". This makes use of
538      a gcc attribute to warn if the result of a function is ignored. This
539      is enable if DEBUG_UNUSED is set. Add to several functions in evp.h
540      whose return value is often ignored. 
541      [Steve Henson]
542
543  Changes between 1.0.2c and 1.0.2d [9 Jul 2015]
544
545   *) Alternate chains certificate forgery
546
547      During certificate verfification, OpenSSL will attempt to find an
548      alternative certificate chain if the first attempt to build such a chain
549      fails. An error in the implementation of this logic can mean that an
550      attacker could cause certain checks on untrusted certificates to be
551      bypassed, such as the CA flag, enabling them to use a valid leaf
552      certificate to act as a CA and "issue" an invalid certificate.
553
554      This issue was reported to OpenSSL by Adam Langley/David Benjamin
555      (Google/BoringSSL).
556      [Matt Caswell]
557
558  Changes between 1.0.2b and 1.0.2c [12 Jun 2015]
559
560   *) Fix HMAC ABI incompatibility. The previous version introduced an ABI
561      incompatibility in the handling of HMAC. The previous ABI has now been
562      restored.
563      [Matt Caswell]
564
565  Changes between 1.0.2a and 1.0.2b [11 Jun 2015]
566
567   *) Malformed ECParameters causes infinite loop
568
569      When processing an ECParameters structure OpenSSL enters an infinite loop
570      if the curve specified is over a specially malformed binary polynomial
571      field.
572
573      This can be used to perform denial of service against any
574      system which processes public keys, certificate requests or
575      certificates.  This includes TLS clients and TLS servers with
576      client authentication enabled.
577
578      This issue was reported to OpenSSL by Joseph Barr-Pixton.
579      (CVE-2015-1788)
580      [Andy Polyakov]
581
582   *) Exploitable out-of-bounds read in X509_cmp_time
583
584      X509_cmp_time does not properly check the length of the ASN1_TIME
585      string and can read a few bytes out of bounds. In addition,
586      X509_cmp_time accepts an arbitrary number of fractional seconds in the
587      time string.
588
589      An attacker can use this to craft malformed certificates and CRLs of
590      various sizes and potentially cause a segmentation fault, resulting in
591      a DoS on applications that verify certificates or CRLs. TLS clients
592      that verify CRLs are affected. TLS clients and servers with client
593      authentication enabled may be affected if they use custom verification
594      callbacks.
595
596      This issue was reported to OpenSSL by Robert Swiecki (Google), and
597      independently by Hanno Böck.
598      (CVE-2015-1789)
599      [Emilia Käsper]
600
601   *) PKCS7 crash with missing EnvelopedContent
602
603      The PKCS#7 parsing code does not handle missing inner EncryptedContent
604      correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs
605      with missing content and trigger a NULL pointer dereference on parsing.
606
607      Applications that decrypt PKCS#7 data or otherwise parse PKCS#7
608      structures from untrusted sources are affected. OpenSSL clients and
609      servers are not affected.
610
611      This issue was reported to OpenSSL by Michal Zalewski (Google).
612      (CVE-2015-1790)
613      [Emilia Käsper]
614
615   *) CMS verify infinite loop with unknown hash function
616
617      When verifying a signedData message the CMS code can enter an infinite loop
618      if presented with an unknown hash function OID. This can be used to perform
619      denial of service against any system which verifies signedData messages using
620      the CMS code.
621      This issue was reported to OpenSSL by Johannes Bauer.
622      (CVE-2015-1792)
623      [Stephen Henson]
624
625   *) Race condition handling NewSessionTicket
626
627      If a NewSessionTicket is received by a multi-threaded client when attempting to
628      reuse a previous ticket then a race condition can occur potentially leading to
629      a double free of the ticket data.
630      (CVE-2015-1791)
631      [Matt Caswell]
632
633   *) Only support 256-bit or stronger elliptic curves with the
634      'ecdh_auto' setting (server) or by default (client). Of supported
635      curves, prefer P-256 (both).
636      [Emilia Kasper]
637
638  Changes between 1.0.2 and 1.0.2a [19 Mar 2015]
639
640   *) ClientHello sigalgs DoS fix
641
642      If a client connects to an OpenSSL 1.0.2 server and renegotiates with an
643      invalid signature algorithms extension a NULL pointer dereference will
644      occur. This can be exploited in a DoS attack against the server.
645
646      This issue was was reported to OpenSSL by David Ramos of Stanford
647      University.
648      (CVE-2015-0291)
649      [Stephen Henson and Matt Caswell]
650
651   *) Multiblock corrupted pointer fix
652
653      OpenSSL 1.0.2 introduced the "multiblock" performance improvement. This
654      feature only applies on 64 bit x86 architecture platforms that support AES
655      NI instructions. A defect in the implementation of "multiblock" can cause
656      OpenSSL's internal write buffer to become incorrectly set to NULL when
657      using non-blocking IO. Typically, when the user application is using a
658      socket BIO for writing, this will only result in a failed connection.
659      However if some other BIO is used then it is likely that a segmentation
660      fault will be triggered, thus enabling a potential DoS attack.
661
662      This issue was reported to OpenSSL by Daniel Danner and Rainer Mueller.
663      (CVE-2015-0290)
664      [Matt Caswell]
665
666   *) Segmentation fault in DTLSv1_listen fix
667
668      The DTLSv1_listen function is intended to be stateless and processes the
669      initial ClientHello from many peers. It is common for user code to loop
670      over the call to DTLSv1_listen until a valid ClientHello is received with
671      an associated cookie. A defect in the implementation of DTLSv1_listen means
672      that state is preserved in the SSL object from one invocation to the next
673      that can lead to a segmentation fault. Errors processing the initial
674      ClientHello can trigger this scenario. An example of such an error could be
675      that a DTLS1.0 only client is attempting to connect to a DTLS1.2 only
676      server.
677
678      This issue was reported to OpenSSL by Per Allansson.
679      (CVE-2015-0207)
680      [Matt Caswell]
681
682   *) Segmentation fault in ASN1_TYPE_cmp fix
683
684      The function ASN1_TYPE_cmp will crash with an invalid read if an attempt is
685      made to compare ASN.1 boolean types. Since ASN1_TYPE_cmp is used to check
686      certificate signature algorithm consistency this can be used to crash any
687      certificate verification operation and exploited in a DoS attack. Any
688      application which performs certificate verification is vulnerable including
689      OpenSSL clients and servers which enable client authentication.
690      (CVE-2015-0286)
691      [Stephen Henson]
692
693   *) Segmentation fault for invalid PSS parameters fix
694
695      The signature verification routines will crash with a NULL pointer
696      dereference if presented with an ASN.1 signature using the RSA PSS
697      algorithm and invalid parameters. Since these routines are used to verify
698      certificate signature algorithms this can be used to crash any
699      certificate verification operation and exploited in a DoS attack. Any
700      application which performs certificate verification is vulnerable including
701      OpenSSL clients and servers which enable client authentication.
702
703      This issue was was reported to OpenSSL by Brian Carpenter.
704      (CVE-2015-0208)
705      [Stephen Henson]
706
707   *) ASN.1 structure reuse memory corruption fix
708
709      Reusing a structure in ASN.1 parsing may allow an attacker to cause
710      memory corruption via an invalid write. Such reuse is and has been
711      strongly discouraged and is believed to be rare.
712
713      Applications that parse structures containing CHOICE or ANY DEFINED BY
714      components may be affected. Certificate parsing (d2i_X509 and related
715      functions) are however not affected. OpenSSL clients and servers are
716      not affected.
717      (CVE-2015-0287)
718      [Stephen Henson]
719
720   *) PKCS7 NULL pointer dereferences fix
721
722      The PKCS#7 parsing code does not handle missing outer ContentInfo
723      correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs with
724      missing content and trigger a NULL pointer dereference on parsing.
725
726      Applications that verify PKCS#7 signatures, decrypt PKCS#7 data or
727      otherwise parse PKCS#7 structures from untrusted sources are
728      affected. OpenSSL clients and servers are not affected.
729
730      This issue was reported to OpenSSL by Michal Zalewski (Google).
731      (CVE-2015-0289)
732      [Emilia Käsper]
733
734   *) DoS via reachable assert in SSLv2 servers fix
735
736      A malicious client can trigger an OPENSSL_assert (i.e., an abort) in
737      servers that both support SSLv2 and enable export cipher suites by sending
738      a specially crafted SSLv2 CLIENT-MASTER-KEY message.
739
740      This issue was discovered by Sean Burford (Google) and Emilia Käsper
741      (OpenSSL development team).
742      (CVE-2015-0293)
743      [Emilia Käsper]
744
745   *) Empty CKE with client auth and DHE fix
746
747      If client auth is used then a server can seg fault in the event of a DHE
748      ciphersuite being selected and a zero length ClientKeyExchange message
749      being sent by the client. This could be exploited in a DoS attack.
750      (CVE-2015-1787)
751      [Matt Caswell]
752
753   *) Handshake with unseeded PRNG fix
754
755      Under certain conditions an OpenSSL 1.0.2 client can complete a handshake
756      with an unseeded PRNG. The conditions are:
757      - The client is on a platform where the PRNG has not been seeded
758      automatically, and the user has not seeded manually
759      - A protocol specific client method version has been used (i.e. not
760      SSL_client_methodv23)
761      - A ciphersuite is used that does not require additional random data from
762      the PRNG beyond the initial ClientHello client random (e.g. PSK-RC4-SHA).
763
764      If the handshake succeeds then the client random that has been used will
765      have been generated from a PRNG with insufficient entropy and therefore the
766      output may be predictable.
767
768      For example using the following command with an unseeded openssl will
769      succeed on an unpatched platform:
770
771      openssl s_client -psk 1a2b3c4d -tls1_2 -cipher PSK-RC4-SHA
772      (CVE-2015-0285)
773      [Matt Caswell]
774
775   *) Use After Free following d2i_ECPrivatekey error fix
776
777      A malformed EC private key file consumed via the d2i_ECPrivateKey function
778      could cause a use after free condition. This, in turn, could cause a double
779      free in several private key parsing functions (such as d2i_PrivateKey
780      or EVP_PKCS82PKEY) and could lead to a DoS attack or memory corruption
781      for applications that receive EC private keys from untrusted
782      sources. This scenario is considered rare.
783
784      This issue was discovered by the BoringSSL project and fixed in their
785      commit 517073cd4b.
786      (CVE-2015-0209)
787      [Matt Caswell]
788
789   *) X509_to_X509_REQ NULL pointer deref fix
790
791      The function X509_to_X509_REQ will crash with a NULL pointer dereference if
792      the certificate key is invalid. This function is rarely used in practice.
793
794      This issue was discovered by Brian Carpenter.
795      (CVE-2015-0288)
796      [Stephen Henson]
797
798   *) Removed the export ciphers from the DEFAULT ciphers
799      [Kurt Roeckx]
800
801  Changes between 1.0.1l and 1.0.2 [22 Jan 2015]
802
803   *) Facilitate "universal" ARM builds targeting range of ARM ISAs, e.g.
804      ARMv5 through ARMv8, as opposite to "locking" it to single one.
805      So far those who have to target multiple plaforms would compromise
806      and argue that binary targeting say ARMv5 would still execute on
807      ARMv8. "Universal" build resolves this compromise by providing
808      near-optimal performance even on newer platforms.
809      [Andy Polyakov]
810
811   *) Accelerated NIST P-256 elliptic curve implementation for x86_64
812      (other platforms pending).
813      [Shay Gueron & Vlad Krasnov (Intel Corp), Andy Polyakov]
814
815   *) Add support for the SignedCertificateTimestampList certificate and
816      OCSP response extensions from RFC6962.
817      [Rob Stradling]
818
819   *) Fix ec_GFp_simple_points_make_affine (thus, EC_POINTs_mul etc.)
820      for corner cases. (Certain input points at infinity could lead to
821      bogus results, with non-infinity inputs mapped to infinity too.)
822      [Bodo Moeller]
823
824   *) Initial support for PowerISA 2.0.7, first implemented in POWER8.
825      This covers AES, SHA256/512 and GHASH. "Initial" means that most
826      common cases are optimized and there still is room for further
827      improvements. Vector Permutation AES for Altivec is also added.
828      [Andy Polyakov]
829
830   *) Add support for little-endian ppc64 Linux target.
831      [Marcelo Cerri (IBM)]
832
833   *) Initial support for AMRv8 ISA crypto extensions. This covers AES,
834      SHA1, SHA256 and GHASH. "Initial" means that most common cases
835      are optimized and there still is room for further improvements.
836      Both 32- and 64-bit modes are supported.
837      [Andy Polyakov, Ard Biesheuvel (Linaro)]
838
839   *) Improved ARMv7 NEON support.
840      [Andy Polyakov]
841
842   *) Support for SPARC Architecture 2011 crypto extensions, first
843      implemented in SPARC T4. This covers AES, DES, Camellia, SHA1,
844      SHA256/512, MD5, GHASH and modular exponentiation.
845      [Andy Polyakov, David Miller]
846
847   *) Accelerated modular exponentiation for Intel processors, a.k.a.
848      RSAZ.
849      [Shay Gueron & Vlad Krasnov (Intel Corp)]
850
851   *) Support for new and upcoming Intel processors, including AVX2,
852      BMI and SHA ISA extensions. This includes additional "stitched"
853      implementations, AESNI-SHA256 and GCM, and multi-buffer support
854      for TLS encrypt.
855
856      This work was sponsored by Intel Corp.
857      [Andy Polyakov]
858
859   *) Support for DTLS 1.2. This adds two sets of DTLS methods: DTLS_*_method()
860      supports both DTLS 1.2 and 1.0 and should use whatever version the peer
861      supports and DTLSv1_2_*_method() which supports DTLS 1.2 only.
862      [Steve Henson]
863
864   *) Use algorithm specific chains in SSL_CTX_use_certificate_chain_file():
865      this fixes a limiation in previous versions of OpenSSL.
866      [Steve Henson]
867
868   *) Extended RSA OAEP support via EVP_PKEY API. Options to specify digest,
869      MGF1 digest and OAEP label.
870      [Steve Henson]
871
872   *) Add EVP support for key wrapping algorithms, to avoid problems with
873      existing code the flag EVP_CIPHER_CTX_WRAP_ALLOW has to be set in
874      the EVP_CIPHER_CTX or an error is returned. Add AES and DES3 wrap
875      algorithms and include tests cases.
876      [Steve Henson]
877
878   *) Add functions to allocate and set the fields of an ECDSA_METHOD
879      structure.
880      [Douglas E. Engert, Steve Henson]
881
882   *) New functions OPENSSL_gmtime_diff and ASN1_TIME_diff to find the
883      difference in days and seconds between two tm or ASN1_TIME structures.
884      [Steve Henson]
885
886   *) Add -rev test option to s_server to just reverse order of characters
887      received by client and send back to server. Also prints an abbreviated
888      summary of the connection parameters.
889      [Steve Henson]
890
891   *) New option -brief for s_client and s_server to print out a brief summary
892      of connection parameters.
893      [Steve Henson]
894
895   *) Add callbacks for arbitrary TLS extensions.
896      [Trevor Perrin <trevp@trevp.net> and Ben Laurie]
897
898   *) New option -crl_download in several openssl utilities to download CRLs
899      from CRLDP extension in certificates.
900      [Steve Henson]
901
902   *) New options -CRL and -CRLform for s_client and s_server for CRLs.
903      [Steve Henson]
904
905   *) New function X509_CRL_diff to generate a delta CRL from the difference
906      of two full CRLs. Add support to "crl" utility.
907      [Steve Henson]
908
909   *) New functions to set lookup_crls function and to retrieve
910      X509_STORE from X509_STORE_CTX.
911      [Steve Henson]
912
913   *) Print out deprecated issuer and subject unique ID fields in
914      certificates.
915      [Steve Henson]
916
917   *) Extend OCSP I/O functions so they can be used for simple general purpose
918      HTTP as well as OCSP. New wrapper function which can be used to download
919      CRLs using the OCSP API.
920      [Steve Henson]
921
922   *) Delegate command line handling in s_client/s_server to SSL_CONF APIs.
923      [Steve Henson]
924
925   *) SSL_CONF* functions. These provide a common framework for application
926      configuration using configuration files or command lines.
927      [Steve Henson]
928
929   *) SSL/TLS tracing code. This parses out SSL/TLS records using the
930      message callback and prints the results. Needs compile time option
931      "enable-ssl-trace". New options to s_client and s_server to enable
932      tracing.
933      [Steve Henson]
934
935   *) New ctrl and macro to retrieve supported points extensions.
936      Print out extension in s_server and s_client.
937      [Steve Henson]
938
939   *) New functions to retrieve certificate signature and signature
940      OID NID.
941      [Steve Henson]
942
943   *) Add functions to retrieve and manipulate the raw cipherlist sent by a
944      client to OpenSSL.
945      [Steve Henson]
946
947   *) New Suite B modes for TLS code. These use and enforce the requirements
948      of RFC6460: restrict ciphersuites, only permit Suite B algorithms and
949      only use Suite B curves. The Suite B modes can be set by using the
950      strings "SUITEB128", "SUITEB192" or "SUITEB128ONLY" for the cipherstring.
951      [Steve Henson]
952
953   *) New chain verification flags for Suite B levels of security. Check
954      algorithms are acceptable when flags are set in X509_verify_cert.
955      [Steve Henson]
956
957   *) Make tls1_check_chain return a set of flags indicating checks passed
958      by a certificate chain. Add additional tests to handle client
959      certificates: checks for matching certificate type and issuer name
960      comparison.
961      [Steve Henson]
962
963   *) If an attempt is made to use a signature algorithm not in the peer
964      preference list abort the handshake. If client has no suitable
965      signature algorithms in response to a certificate request do not
966      use the certificate.
967      [Steve Henson]
968
969   *) If server EC tmp key is not in client preference list abort handshake.
970      [Steve Henson]
971
972   *) Add support for certificate stores in CERT structure. This makes it
973      possible to have different stores per SSL structure or one store in
974      the parent SSL_CTX. Include distint stores for certificate chain
975      verification and chain building. New ctrl SSL_CTRL_BUILD_CERT_CHAIN
976      to build and store a certificate chain in CERT structure: returing
977      an error if the chain cannot be built: this will allow applications
978      to test if a chain is correctly configured.
979
980      Note: if the CERT based stores are not set then the parent SSL_CTX
981      store is used to retain compatibility with existing behaviour.
982
983      [Steve Henson]
984
985   *) New function ssl_set_client_disabled to set a ciphersuite disabled
986      mask based on the current session, check mask when sending client
987      hello and checking the requested ciphersuite.
988      [Steve Henson]
989
990   *) New ctrls to retrieve and set certificate types in a certificate
991      request message. Print out received values in s_client. If certificate
992      types is not set with custom values set sensible values based on
993      supported signature algorithms.
994      [Steve Henson]
995
996   *) Support for distinct client and server supported signature algorithms.
997      [Steve Henson]
998
999   *) Add certificate callback. If set this is called whenever a certificate
1000      is required by client or server. An application can decide which
1001      certificate chain to present based on arbitrary criteria: for example
1002      supported signature algorithms. Add very simple example to s_server.
1003      This fixes many of the problems and restrictions of the existing client
1004      certificate callback: for example you can now clear an existing
1005      certificate and specify the whole chain.
1006      [Steve Henson]
1007
1008   *) Add new "valid_flags" field to CERT_PKEY structure which determines what
1009      the certificate can be used for (if anything). Set valid_flags field 
1010      in new tls1_check_chain function. Simplify ssl_set_cert_masks which used
1011      to have similar checks in it.
1012
1013      Add new "cert_flags" field to CERT structure and include a "strict mode".
1014      This enforces some TLS certificate requirements (such as only permitting
1015      certificate signature algorithms contained in the supported algorithms
1016      extension) which some implementations ignore: this option should be used
1017      with caution as it could cause interoperability issues.
1018      [Steve Henson]
1019
1020   *) Update and tidy signature algorithm extension processing. Work out
1021      shared signature algorithms based on preferences and peer algorithms
1022      and print them out in s_client and s_server. Abort handshake if no
1023      shared signature algorithms.
1024      [Steve Henson]
1025
1026   *) Add new functions to allow customised supported signature algorithms
1027      for SSL and SSL_CTX structures. Add options to s_client and s_server
1028      to support them.
1029      [Steve Henson]
1030
1031   *) New function SSL_certs_clear() to delete all references to certificates
1032      from an SSL structure. Before this once a certificate had been added
1033      it couldn't be removed.
1034      [Steve Henson]
1035
1036   *) Integrate hostname, email address and IP address checking with certificate
1037      verification. New verify options supporting checking in opensl utility.
1038      [Steve Henson]
1039
1040   *) Fixes and wildcard matching support to hostname and email checking
1041      functions. Add manual page.
1042      [Florian Weimer (Red Hat Product Security Team)]
1043
1044   *) New functions to check a hostname email or IP address against a
1045      certificate. Add options x509 utility to print results of checks against
1046      a certificate.
1047      [Steve Henson]
1048
1049   *) Fix OCSP checking.
1050      [Rob Stradling <rob.stradling@comodo.com> and Ben Laurie]
1051
1052   *) Initial experimental support for explicitly trusted non-root CAs. 
1053      OpenSSL still tries to build a complete chain to a root but if an
1054      intermediate CA has a trust setting included that is used. The first
1055      setting is used: whether to trust (e.g., -addtrust option to the x509
1056      utility) or reject.
1057      [Steve Henson]
1058
1059   *) Add -trusted_first option which attempts to find certificates in the
1060      trusted store even if an untrusted chain is also supplied.
1061      [Steve Henson]
1062
1063   *) MIPS assembly pack updates: support for MIPS32r2 and SmartMIPS ASE,
1064      platform support for Linux and Android.
1065      [Andy Polyakov]
1066
1067   *) Support for linux-x32, ILP32 environment in x86_64 framework.
1068      [Andy Polyakov]
1069
1070   *) Experimental multi-implementation support for FIPS capable OpenSSL.
1071      When in FIPS mode the approved implementations are used as normal,
1072      when not in FIPS mode the internal unapproved versions are used instead.
1073      This means that the FIPS capable OpenSSL isn't forced to use the
1074      (often lower performance) FIPS implementations outside FIPS mode.
1075      [Steve Henson]
1076
1077   *) Transparently support X9.42 DH parameters when calling
1078      PEM_read_bio_DHparameters. This means existing applications can handle
1079      the new parameter format automatically.
1080      [Steve Henson]
1081
1082   *) Initial experimental support for X9.42 DH parameter format: mainly
1083      to support use of 'q' parameter for RFC5114 parameters.
1084      [Steve Henson]
1085
1086   *) Add DH parameters from RFC5114 including test data to dhtest.
1087      [Steve Henson]
1088
1089   *) Support for automatic EC temporary key parameter selection. If enabled
1090      the most preferred EC parameters are automatically used instead of
1091      hardcoded fixed parameters. Now a server just has to call:
1092      SSL_CTX_set_ecdh_auto(ctx, 1) and the server will automatically
1093      support ECDH and use the most appropriate parameters.
1094      [Steve Henson]
1095
1096   *) Enhance and tidy EC curve and point format TLS extension code. Use
1097      static structures instead of allocation if default values are used.
1098      New ctrls to set curves we wish to support and to retrieve shared curves.
1099      Print out shared curves in s_server. New options to s_server and s_client
1100      to set list of supported curves.
1101      [Steve Henson]
1102
1103   *) New ctrls to retrieve supported signature algorithms and 
1104      supported curve values as an array of NIDs. Extend openssl utility
1105      to print out received values.
1106      [Steve Henson]
1107
1108   *) Add new APIs EC_curve_nist2nid and EC_curve_nid2nist which convert
1109      between NIDs and the more common NIST names such as "P-256". Enhance
1110      ecparam utility and ECC method to recognise the NIST names for curves.
1111      [Steve Henson]
1112
1113   *) Enhance SSL/TLS certificate chain handling to support different
1114      chains for each certificate instead of one chain in the parent SSL_CTX.
1115      [Steve Henson]
1116
1117   *) Support for fixed DH ciphersuite client authentication: where both
1118      server and client use DH certificates with common parameters.
1119      [Steve Henson]
1120
1121   *) Support for fixed DH ciphersuites: those requiring DH server
1122      certificates.
1123      [Steve Henson]
1124
1125   *) New function i2d_re_X509_tbs for re-encoding the TBS portion of
1126      the certificate.
1127      Note: Related 1.0.2-beta specific macros X509_get_cert_info,
1128      X509_CINF_set_modified, X509_CINF_get_issuer, X509_CINF_get_extensions and
1129      X509_CINF_get_signature were reverted post internal team review.
1130
1131  Changes between 1.0.1k and 1.0.1l [15 Jan 2015]
1132
1133   *) Build fixes for the Windows and OpenVMS platforms
1134      [Matt Caswell and Richard Levitte]
1135
1136  Changes between 1.0.1j and 1.0.1k [8 Jan 2015]
1137
1138   *) Fix DTLS segmentation fault in dtls1_get_record. A carefully crafted DTLS
1139      message can cause a segmentation fault in OpenSSL due to a NULL pointer
1140      dereference. This could lead to a Denial Of Service attack. Thanks to
1141      Markus Stenberg of Cisco Systems, Inc. for reporting this issue.
1142      (CVE-2014-3571)
1143      [Steve Henson]
1144
1145   *) Fix DTLS memory leak in dtls1_buffer_record. A memory leak can occur in the
1146      dtls1_buffer_record function under certain conditions. In particular this
1147      could occur if an attacker sent repeated DTLS records with the same
1148      sequence number but for the next epoch. The memory leak could be exploited
1149      by an attacker in a Denial of Service attack through memory exhaustion.
1150      Thanks to Chris Mueller for reporting this issue.
1151      (CVE-2015-0206)
1152      [Matt Caswell]
1153
1154   *) Fix issue where no-ssl3 configuration sets method to NULL. When openssl is
1155      built with the no-ssl3 option and a SSL v3 ClientHello is received the ssl
1156      method would be set to NULL which could later result in a NULL pointer
1157      dereference. Thanks to Frank Schmirler for reporting this issue.
1158      (CVE-2014-3569)
1159      [Kurt Roeckx]
1160
1161   *) Abort handshake if server key exchange message is omitted for ephemeral
1162      ECDH ciphersuites.
1163
1164      Thanks to Karthikeyan Bhargavan of the PROSECCO team at INRIA for
1165      reporting this issue.
1166      (CVE-2014-3572)
1167      [Steve Henson]
1168
1169   *) Remove non-export ephemeral RSA code on client and server. This code
1170      violated the TLS standard by allowing the use of temporary RSA keys in
1171      non-export ciphersuites and could be used by a server to effectively
1172      downgrade the RSA key length used to a value smaller than the server
1173      certificate. Thanks for Karthikeyan Bhargavan of the PROSECCO team at
1174      INRIA or reporting this issue.
1175      (CVE-2015-0204)
1176      [Steve Henson]
1177
1178   *) Fixed issue where DH client certificates are accepted without verification.
1179      An OpenSSL server will accept a DH certificate for client authentication
1180      without the certificate verify message. This effectively allows a client to
1181      authenticate without the use of a private key. This only affects servers
1182      which trust a client certificate authority which issues certificates
1183      containing DH keys: these are extremely rare and hardly ever encountered.
1184      Thanks for Karthikeyan Bhargavan of the PROSECCO team at INRIA or reporting
1185      this issue.
1186      (CVE-2015-0205)
1187      [Steve Henson]
1188
1189   *) Ensure that the session ID context of an SSL is updated when its
1190      SSL_CTX is updated via SSL_set_SSL_CTX.
1191
1192      The session ID context is typically set from the parent SSL_CTX,
1193      and can vary with the CTX.
1194      [Adam Langley]
1195
1196   *) Fix various certificate fingerprint issues.
1197
1198      By using non-DER or invalid encodings outside the signed portion of a
1199      certificate the fingerprint can be changed without breaking the signature.
1200      Although no details of the signed portion of the certificate can be changed
1201      this can cause problems with some applications: e.g. those using the
1202      certificate fingerprint for blacklists.
1203
1204      1. Reject signatures with non zero unused bits.
1205
1206      If the BIT STRING containing the signature has non zero unused bits reject
1207      the signature. All current signature algorithms require zero unused bits.
1208
1209      2. Check certificate algorithm consistency.
1210
1211      Check the AlgorithmIdentifier inside TBS matches the one in the
1212      certificate signature. NB: this will result in signature failure
1213      errors for some broken certificates.
1214
1215      Thanks to Konrad Kraszewski from Google for reporting this issue.
1216
1217      3. Check DSA/ECDSA signatures use DER.
1218
1219      Reencode DSA/ECDSA signatures and compare with the original received
1220      signature. Return an error if there is a mismatch.
1221
1222      This will reject various cases including garbage after signature
1223      (thanks to Antti Karjalainen and Tuomo Untinen from the Codenomicon CROSS
1224      program for discovering this case) and use of BER or invalid ASN.1 INTEGERs
1225      (negative or with leading zeroes).
1226
1227      Further analysis was conducted and fixes were developed by Stephen Henson
1228      of the OpenSSL core team.
1229
1230      (CVE-2014-8275)
1231      [Steve Henson]
1232
1233    *) Correct Bignum squaring. Bignum squaring (BN_sqr) may produce incorrect
1234       results on some platforms, including x86_64. This bug occurs at random
1235       with a very low probability, and is not known to be exploitable in any
1236       way, though its exact impact is difficult to determine. Thanks to Pieter
1237       Wuille (Blockstream) who reported this issue and also suggested an initial
1238       fix. Further analysis was conducted by the OpenSSL development team and
1239       Adam Langley of Google. The final fix was developed by Andy Polyakov of
1240       the OpenSSL core team.
1241       (CVE-2014-3570)
1242       [Andy Polyakov]
1243
1244    *) Do not resume sessions on the server if the negotiated protocol
1245       version does not match the session's version. Resuming with a different
1246       version, while not strictly forbidden by the RFC, is of questionable
1247       sanity and breaks all known clients.
1248       [David Benjamin, Emilia Käsper]
1249
1250    *) Tighten handling of the ChangeCipherSpec (CCS) message: reject
1251       early CCS messages during renegotiation. (Note that because
1252       renegotiation is encrypted, this early CCS was not exploitable.)
1253       [Emilia Käsper]
1254
1255    *) Tighten client-side session ticket handling during renegotiation:
1256       ensure that the client only accepts a session ticket if the server sends
1257       the extension anew in the ServerHello. Previously, a TLS client would
1258       reuse the old extension state and thus accept a session ticket if one was
1259       announced in the initial ServerHello.
1260
1261       Similarly, ensure that the client requires a session ticket if one
1262       was advertised in the ServerHello. Previously, a TLS client would
1263       ignore a missing NewSessionTicket message.
1264       [Emilia Käsper]
1265
1266  Changes between 1.0.1i and 1.0.1j [15 Oct 2014]
1267
1268   *) SRTP Memory Leak.
1269
1270      A flaw in the DTLS SRTP extension parsing code allows an attacker, who
1271      sends a carefully crafted handshake message, to cause OpenSSL to fail
1272      to free up to 64k of memory causing a memory leak. This could be
1273      exploited in a Denial Of Service attack. This issue affects OpenSSL
1274      1.0.1 server implementations for both SSL/TLS and DTLS regardless of
1275      whether SRTP is used or configured. Implementations of OpenSSL that
1276      have been compiled with OPENSSL_NO_SRTP defined are not affected.
1277
1278      The fix was developed by the OpenSSL team.
1279      (CVE-2014-3513)
1280      [OpenSSL team]
1281
1282   *) Session Ticket Memory Leak.
1283
1284      When an OpenSSL SSL/TLS/DTLS server receives a session ticket the
1285      integrity of that ticket is first verified. In the event of a session
1286      ticket integrity check failing, OpenSSL will fail to free memory
1287      causing a memory leak. By sending a large number of invalid session
1288      tickets an attacker could exploit this issue in a Denial Of Service
1289      attack.
1290      (CVE-2014-3567)
1291      [Steve Henson]
1292
1293   *) Build option no-ssl3 is incomplete.
1294
1295      When OpenSSL is configured with "no-ssl3" as a build option, servers
1296      could accept and complete a SSL 3.0 handshake, and clients could be
1297      configured to send them.
1298      (CVE-2014-3568)
1299      [Akamai and the OpenSSL team]
1300
1301   *) Add support for TLS_FALLBACK_SCSV.
1302      Client applications doing fallback retries should call
1303      SSL_set_mode(s, SSL_MODE_SEND_FALLBACK_SCSV).
1304      (CVE-2014-3566)
1305      [Adam Langley, Bodo Moeller]
1306
1307   *) Add additional DigestInfo checks.
1308  
1309      Reencode DigestInto in DER and check against the original when
1310      verifying RSA signature: this will reject any improperly encoded
1311      DigestInfo structures.
1312
1313      Note: this is a precautionary measure and no attacks are currently known.
1314
1315      [Steve Henson]
1316
1317  Changes between 1.0.1h and 1.0.1i [6 Aug 2014]
1318
1319   *) Fix SRP buffer overrun vulnerability. Invalid parameters passed to the
1320      SRP code can be overrun an internal buffer. Add sanity check that
1321      g, A, B < N to SRP code.
1322
1323      Thanks to Sean Devlin and Watson Ladd of Cryptography Services, NCC
1324      Group for discovering this issue.
1325      (CVE-2014-3512)
1326      [Steve Henson]
1327
1328   *) A flaw in the OpenSSL SSL/TLS server code causes the server to negotiate
1329      TLS 1.0 instead of higher protocol versions when the ClientHello message
1330      is badly fragmented. This allows a man-in-the-middle attacker to force a
1331      downgrade to TLS 1.0 even if both the server and the client support a
1332      higher protocol version, by modifying the client's TLS records.
1333
1334      Thanks to David Benjamin and Adam Langley (Google) for discovering and
1335      researching this issue.
1336      (CVE-2014-3511)
1337      [David Benjamin]
1338
1339   *) OpenSSL DTLS clients enabling anonymous (EC)DH ciphersuites are subject
1340      to a denial of service attack. A malicious server can crash the client
1341      with a null pointer dereference (read) by specifying an anonymous (EC)DH
1342      ciphersuite and sending carefully crafted handshake messages.
1343
1344      Thanks to Felix Gröbert (Google) for discovering and researching this
1345      issue.
1346      (CVE-2014-3510)
1347      [Emilia Käsper]
1348
1349   *) By sending carefully crafted DTLS packets an attacker could cause openssl
1350      to leak memory. This can be exploited through a Denial of Service attack.
1351      Thanks to Adam Langley for discovering and researching this issue.
1352      (CVE-2014-3507)
1353      [Adam Langley]
1354
1355   *) An attacker can force openssl to consume large amounts of memory whilst
1356      processing DTLS handshake messages. This can be exploited through a
1357      Denial of Service attack.
1358      Thanks to Adam Langley for discovering and researching this issue.
1359      (CVE-2014-3506)
1360      [Adam Langley]
1361
1362   *) An attacker can force an error condition which causes openssl to crash
1363      whilst processing DTLS packets due to memory being freed twice. This
1364      can be exploited through a Denial of Service attack.
1365      Thanks to Adam Langley and Wan-Teh Chang for discovering and researching
1366      this issue.
1367      (CVE-2014-3505)
1368      [Adam Langley]
1369
1370   *) If a multithreaded client connects to a malicious server using a resumed
1371      session and the server sends an ec point format extension it could write
1372      up to 255 bytes to freed memory.
1373
1374      Thanks to Gabor Tyukasz (LogMeIn Inc) for discovering and researching this
1375      issue.
1376      (CVE-2014-3509)
1377      [Gabor Tyukasz]
1378
1379   *) A malicious server can crash an OpenSSL client with a null pointer
1380      dereference (read) by specifying an SRP ciphersuite even though it was not
1381      properly negotiated with the client. This can be exploited through a
1382      Denial of Service attack.
1383
1384      Thanks to Joonas Kuorilehto and Riku Hietamäki (Codenomicon) for
1385      discovering and researching this issue.
1386      (CVE-2014-5139)
1387      [Steve Henson]
1388
1389   *) A flaw in OBJ_obj2txt may cause pretty printing functions such as
1390      X509_name_oneline, X509_name_print_ex et al. to leak some information
1391      from the stack. Applications may be affected if they echo pretty printing
1392      output to the attacker.
1393
1394      Thanks to Ivan Fratric (Google) for discovering this issue.
1395      (CVE-2014-3508)
1396      [Emilia Käsper, and Steve Henson]
1397
1398   *) Fix ec_GFp_simple_points_make_affine (thus, EC_POINTs_mul etc.)
1399      for corner cases. (Certain input points at infinity could lead to
1400      bogus results, with non-infinity inputs mapped to infinity too.)
1401      [Bodo Moeller]
1402
1403  Changes between 1.0.1g and 1.0.1h [5 Jun 2014]
1404
1405   *) Fix for SSL/TLS MITM flaw. An attacker using a carefully crafted
1406      handshake can force the use of weak keying material in OpenSSL
1407      SSL/TLS clients and servers.
1408
1409      Thanks to KIKUCHI Masashi (Lepidum Co. Ltd.) for discovering and
1410      researching this issue. (CVE-2014-0224)
1411      [KIKUCHI Masashi, Steve Henson]
1412
1413   *) Fix DTLS recursion flaw. By sending an invalid DTLS handshake to an
1414      OpenSSL DTLS client the code can be made to recurse eventually crashing
1415      in a DoS attack.
1416
1417      Thanks to Imre Rad (Search-Lab Ltd.) for discovering this issue.
1418      (CVE-2014-0221)
1419      [Imre Rad, Steve Henson]
1420
1421   *) Fix DTLS invalid fragment vulnerability. A buffer overrun attack can
1422      be triggered by sending invalid DTLS fragments to an OpenSSL DTLS
1423      client or server. This is potentially exploitable to run arbitrary
1424      code on a vulnerable client or server.
1425
1426      Thanks to Jüri Aedla for reporting this issue. (CVE-2014-0195)
1427      [Jüri Aedla, Steve Henson]
1428
1429   *) Fix bug in TLS code where clients enable anonymous ECDH ciphersuites
1430      are subject to a denial of service attack.
1431
1432      Thanks to Felix Gröbert and Ivan Fratric at Google for discovering
1433      this issue. (CVE-2014-3470)
1434      [Felix Gröbert, Ivan Fratric, Steve Henson]
1435
1436   *) Harmonize version and its documentation. -f flag is used to display
1437      compilation flags.
1438      [mancha <mancha1@zoho.com>]
1439
1440   *) Fix eckey_priv_encode so it immediately returns an error upon a failure
1441      in i2d_ECPrivateKey.
1442      [mancha <mancha1@zoho.com>]
1443
1444   *) Fix some double frees. These are not thought to be exploitable.
1445      [mancha <mancha1@zoho.com>]
1446
1447  Changes between 1.0.1f and 1.0.1g [7 Apr 2014]
1448
1449   *) A missing bounds check in the handling of the TLS heartbeat extension
1450      can be used to reveal up to 64k of memory to a connected client or
1451      server.
1452
1453      Thanks for Neel Mehta of Google Security for discovering this bug and to
1454      Adam Langley <agl@chromium.org> and Bodo Moeller <bmoeller@acm.org> for
1455      preparing the fix (CVE-2014-0160)
1456      [Adam Langley, Bodo Moeller]
1457
1458   *) Fix for the attack described in the paper "Recovering OpenSSL
1459      ECDSA Nonces Using the FLUSH+RELOAD Cache Side-channel Attack"
1460      by Yuval Yarom and Naomi Benger. Details can be obtained from:
1461      http://eprint.iacr.org/2014/140
1462
1463      Thanks to Yuval Yarom and Naomi Benger for discovering this
1464      flaw and to Yuval Yarom for supplying a fix (CVE-2014-0076)
1465      [Yuval Yarom and Naomi Benger]
1466
1467   *) TLS pad extension: draft-agl-tls-padding-03
1468
1469      Workaround for the "TLS hang bug" (see FAQ and PR#2771): if the
1470      TLS client Hello record length value would otherwise be > 255 and
1471      less that 512 pad with a dummy extension containing zeroes so it
1472      is at least 512 bytes long.
1473
1474      [Adam Langley, Steve Henson]
1475
1476  Changes between 1.0.1e and 1.0.1f [6 Jan 2014]
1477
1478   *) Fix for TLS record tampering bug. A carefully crafted invalid 
1479      handshake could crash OpenSSL with a NULL pointer exception.
1480      Thanks to Anton Johansson for reporting this issues.
1481      (CVE-2013-4353)
1482
1483   *) Keep original DTLS digest and encryption contexts in retransmission
1484      structures so we can use the previous session parameters if they need
1485      to be resent. (CVE-2013-6450)
1486      [Steve Henson]
1487
1488   *) Add option SSL_OP_SAFARI_ECDHE_ECDSA_BUG (part of SSL_OP_ALL) which
1489      avoids preferring ECDHE-ECDSA ciphers when the client appears to be
1490      Safari on OS X.  Safari on OS X 10.8..10.8.3 advertises support for
1491      several ECDHE-ECDSA ciphers, but fails to negotiate them.  The bug
1492      is fixed in OS X 10.8.4, but Apple have ruled out both hot fixing
1493      10.8..10.8.3 and forcing users to upgrade to 10.8.4 or newer.
1494      [Rob Stradling, Adam Langley]
1495
1496  Changes between 1.0.1d and 1.0.1e [11 Feb 2013]
1497
1498   *) Correct fix for CVE-2013-0169. The original didn't work on AES-NI
1499      supporting platforms or when small records were transferred.
1500      [Andy Polyakov, Steve Henson]
1501
1502  Changes between 1.0.1c and 1.0.1d [5 Feb 2013]
1503
1504   *) Make the decoding of SSLv3, TLS and DTLS CBC records constant time.
1505
1506      This addresses the flaw in CBC record processing discovered by 
1507      Nadhem Alfardan and Kenny Paterson. Details of this attack can be found
1508      at: http://www.isg.rhul.ac.uk/tls/     
1509
1510      Thanks go to Nadhem Alfardan and Kenny Paterson of the Information
1511      Security Group at Royal Holloway, University of London
1512      (www.isg.rhul.ac.uk) for discovering this flaw and Adam Langley and
1513      Emilia Käsper for the initial patch.
1514      (CVE-2013-0169)
1515      [Emilia Käsper, Adam Langley, Ben Laurie, Andy Polyakov, Steve Henson]
1516
1517   *) Fix flaw in AESNI handling of TLS 1.2 and 1.1 records for CBC mode
1518      ciphersuites which can be exploited in a denial of service attack.
1519      Thanks go to and to Adam Langley <agl@chromium.org> for discovering
1520      and detecting this bug and to Wolfgang Ettlinger
1521      <wolfgang.ettlinger@gmail.com> for independently discovering this issue.
1522      (CVE-2012-2686)
1523      [Adam Langley]
1524
1525   *) Return an error when checking OCSP signatures when key is NULL.
1526      This fixes a DoS attack. (CVE-2013-0166)
1527      [Steve Henson]
1528
1529   *) Make openssl verify return errors.
1530      [Chris Palmer <palmer@google.com> and Ben Laurie]
1531
1532   *) Call OCSP Stapling callback after ciphersuite has been chosen, so
1533      the right response is stapled. Also change SSL_get_certificate()
1534      so it returns the certificate actually sent.
1535      See http://rt.openssl.org/Ticket/Display.html?id=2836.
1536      [Rob Stradling <rob.stradling@comodo.com>]
1537
1538   *) Fix possible deadlock when decoding public keys.
1539      [Steve Henson]
1540
1541   *) Don't use TLS 1.0 record version number in initial client hello
1542      if renegotiating.
1543      [Steve Henson]
1544
1545  Changes between 1.0.1b and 1.0.1c [10 May 2012]
1546
1547   *) Sanity check record length before skipping explicit IV in TLS
1548      1.2, 1.1 and DTLS to fix DoS attack.
1549
1550      Thanks to Codenomicon for discovering this issue using Fuzz-o-Matic
1551      fuzzing as a service testing platform.
1552      (CVE-2012-2333)
1553      [Steve Henson]
1554
1555   *) Initialise tkeylen properly when encrypting CMS messages.
1556      Thanks to Solar Designer of Openwall for reporting this issue.
1557      [Steve Henson]
1558
1559   *) In FIPS mode don't try to use composite ciphers as they are not
1560      approved.
1561      [Steve Henson]
1562
1563  Changes between 1.0.1a and 1.0.1b [26 Apr 2012]
1564
1565   *) OpenSSL 1.0.0 sets SSL_OP_ALL to 0x80000FFFL and OpenSSL 1.0.1 and
1566      1.0.1a set SSL_OP_NO_TLSv1_1 to 0x00000400L which would unfortunately
1567      mean any application compiled against OpenSSL 1.0.0 headers setting
1568      SSL_OP_ALL would also set SSL_OP_NO_TLSv1_1, unintentionally disablng
1569      TLS 1.1 also. Fix this by changing the value of SSL_OP_NO_TLSv1_1 to
1570      0x10000000L Any application which was previously compiled against
1571      OpenSSL 1.0.1 or 1.0.1a headers and which cares about SSL_OP_NO_TLSv1_1
1572      will need to be recompiled as a result. Letting be results in
1573      inability to disable specifically TLS 1.1 and in client context,
1574      in unlike event, limit maximum offered version to TLS 1.0 [see below].
1575      [Steve Henson]
1576
1577   *) In order to ensure interoperabilty SSL_OP_NO_protocolX does not
1578      disable just protocol X, but all protocols above X *if* there are
1579      protocols *below* X still enabled. In more practical terms it means
1580      that if application wants to disable TLS1.0 in favor of TLS1.1 and
1581      above, it's not sufficient to pass SSL_OP_NO_TLSv1, one has to pass
1582      SSL_OP_NO_TLSv1|SSL_OP_NO_SSLv3|SSL_OP_NO_SSLv2. This applies to
1583      client side.
1584      [Andy Polyakov]
1585
1586  Changes between 1.0.1 and 1.0.1a [19 Apr 2012]
1587
1588   *) Check for potentially exploitable overflows in asn1_d2i_read_bio
1589      BUF_mem_grow and BUF_mem_grow_clean. Refuse attempts to shrink buffer
1590      in CRYPTO_realloc_clean.
1591
1592      Thanks to Tavis Ormandy, Google Security Team, for discovering this
1593      issue and to Adam Langley <agl@chromium.org> for fixing it.
1594      (CVE-2012-2110)
1595      [Adam Langley (Google), Tavis Ormandy, Google Security Team]
1596
1597   *) Don't allow TLS 1.2 SHA-256 ciphersuites in TLS 1.0, 1.1 connections.
1598      [Adam Langley]
1599
1600   *) Workarounds for some broken servers that "hang" if a client hello
1601      record length exceeds 255 bytes.
1602
1603      1. Do not use record version number > TLS 1.0 in initial client
1604         hello: some (but not all) hanging servers will now work.
1605      2. If we set OPENSSL_MAX_TLS1_2_CIPHER_LENGTH this will truncate
1606         the number of ciphers sent in the client hello. This should be
1607         set to an even number, such as 50, for example by passing:
1608         -DOPENSSL_MAX_TLS1_2_CIPHER_LENGTH=50 to config or Configure.
1609         Most broken servers should now work.
1610      3. If all else fails setting OPENSSL_NO_TLS1_2_CLIENT will disable
1611         TLS 1.2 client support entirely.
1612      [Steve Henson]
1613
1614   *) Fix SEGV in Vector Permutation AES module observed in OpenSSH.
1615      [Andy Polyakov]
1616
1617  Changes between 1.0.0h and 1.0.1  [14 Mar 2012]
1618
1619   *) Add compatibility with old MDC2 signatures which use an ASN1 OCTET
1620      STRING form instead of a DigestInfo.
1621      [Steve Henson]
1622
1623   *) The format used for MDC2 RSA signatures is inconsistent between EVP
1624      and the RSA_sign/RSA_verify functions. This was made more apparent when
1625      OpenSSL used RSA_sign/RSA_verify for some RSA signatures in particular
1626      those which went through EVP_PKEY_METHOD in 1.0.0 and later. Detect 
1627      the correct format in RSA_verify so both forms transparently work.
1628      [Steve Henson]
1629
1630   *) Some servers which support TLS 1.0 can choke if we initially indicate
1631      support for TLS 1.2 and later renegotiate using TLS 1.0 in the RSA
1632      encrypted premaster secret. As a workaround use the maximum permitted
1633      client version in client hello, this should keep such servers happy
1634      and still work with previous versions of OpenSSL.
1635      [Steve Henson]
1636
1637   *) Add support for TLS/DTLS heartbeats.
1638      [Robin Seggelmann <seggelmann@fh-muenster.de>]
1639
1640   *) Add support for SCTP.
1641      [Robin Seggelmann <seggelmann@fh-muenster.de>]
1642
1643   *) Improved PRNG seeding for VOS.
1644      [Paul Green <Paul.Green@stratus.com>]
1645
1646   *) Extensive assembler packs updates, most notably:
1647
1648         - x86[_64]:     AES-NI, PCLMULQDQ, RDRAND support;
1649         - x86[_64]:     SSSE3 support (SHA1, vector-permutation AES);
1650         - x86_64:       bit-sliced AES implementation;
1651         - ARM:          NEON support, contemporary platforms optimizations;
1652         - s390x:        z196 support;
1653         - *:            GHASH and GF(2^m) multiplication implementations;
1654
1655      [Andy Polyakov]
1656
1657   *) Make TLS-SRP code conformant with RFC 5054 API cleanup
1658      (removal of unnecessary code)
1659      [Peter Sylvester <peter.sylvester@edelweb.fr>]
1660
1661   *) Add TLS key material exporter from RFC 5705.
1662      [Eric Rescorla]
1663
1664   *) Add DTLS-SRTP negotiation from RFC 5764.
1665      [Eric Rescorla]
1666
1667   *) Add Next Protocol Negotiation,
1668      http://tools.ietf.org/html/draft-agl-tls-nextprotoneg-00. Can be
1669      disabled with a no-npn flag to config or Configure. Code donated
1670      by Google.
1671      [Adam Langley <agl@google.com> and Ben Laurie]
1672
1673   *) Add optional 64-bit optimized implementations of elliptic curves NIST-P224,
1674      NIST-P256, NIST-P521, with constant-time single point multiplication on
1675      typical inputs. Compiler support for the nonstandard type __uint128_t is
1676      required to use this (present in gcc 4.4 and later, for 64-bit builds).
1677      Code made available under Apache License version 2.0.
1678
1679      Specify "enable-ec_nistp_64_gcc_128" on the Configure (or config) command
1680      line to include this in your build of OpenSSL, and run "make depend" (or
1681      "make update"). This enables the following EC_METHODs:
1682
1683          EC_GFp_nistp224_method()
1684          EC_GFp_nistp256_method()
1685          EC_GFp_nistp521_method()
1686
1687      EC_GROUP_new_by_curve_name() will automatically use these (while
1688      EC_GROUP_new_curve_GFp() currently prefers the more flexible
1689      implementations).
1690      [Emilia Käsper, Adam Langley, Bodo Moeller (Google)]
1691
1692   *) Use type ossl_ssize_t instad of ssize_t which isn't available on
1693      all platforms. Move ssize_t definition from e_os.h to the public
1694      header file e_os2.h as it now appears in public header file cms.h
1695      [Steve Henson]
1696
1697   *) New -sigopt option to the ca, req and x509 utilities. Additional
1698      signature parameters can be passed using this option and in
1699      particular PSS. 
1700      [Steve Henson]
1701
1702   *) Add RSA PSS signing function. This will generate and set the
1703      appropriate AlgorithmIdentifiers for PSS based on those in the
1704      corresponding EVP_MD_CTX structure. No application support yet.
1705      [Steve Henson]
1706
1707   *) Support for companion algorithm specific ASN1 signing routines.
1708      New function ASN1_item_sign_ctx() signs a pre-initialised
1709      EVP_MD_CTX structure and sets AlgorithmIdentifiers based on
1710      the appropriate parameters.
1711      [Steve Henson]
1712
1713   *) Add new algorithm specific ASN1 verification initialisation function
1714      to EVP_PKEY_ASN1_METHOD: this is not in EVP_PKEY_METHOD since the ASN1
1715      handling will be the same no matter what EVP_PKEY_METHOD is used.
1716      Add a PSS handler to support verification of PSS signatures: checked
1717      against a number of sample certificates.
1718      [Steve Henson]
1719
1720   *) Add signature printing for PSS. Add PSS OIDs.
1721      [Steve Henson, Martin Kaiser <lists@kaiser.cx>]
1722
1723   *) Add algorithm specific signature printing. An individual ASN1 method
1724      can now print out signatures instead of the standard hex dump. 
1725
1726      More complex signatures (e.g. PSS) can print out more meaningful
1727      information. Include DSA version that prints out the signature
1728      parameters r, s.
1729      [Steve Henson]
1730
1731   *) Password based recipient info support for CMS library: implementing
1732      RFC3211.
1733      [Steve Henson]
1734
1735   *) Split password based encryption into PBES2 and PBKDF2 functions. This
1736      neatly separates the code into cipher and PBE sections and is required
1737      for some algorithms that split PBES2 into separate pieces (such as
1738      password based CMS).
1739      [Steve Henson]
1740
1741   *) Session-handling fixes:
1742      - Fix handling of connections that are resuming with a session ID,
1743        but also support Session Tickets.
1744      - Fix a bug that suppressed issuing of a new ticket if the client
1745        presented a ticket with an expired session.
1746      - Try to set the ticket lifetime hint to something reasonable.
1747      - Make tickets shorter by excluding irrelevant information.
1748      - On the client side, don't ignore renewed tickets.
1749      [Adam Langley, Bodo Moeller (Google)]
1750
1751   *) Fix PSK session representation.
1752      [Bodo Moeller]
1753
1754   *) Add RC4-MD5 and AESNI-SHA1 "stitched" implementations.
1755
1756      This work was sponsored by Intel.
1757      [Andy Polyakov]
1758
1759   *) Add GCM support to TLS library. Some custom code is needed to split
1760      the IV between the fixed (from PRF) and explicit (from TLS record)
1761      portions. This adds all GCM ciphersuites supported by RFC5288 and 
1762      RFC5289. Generalise some AES* cipherstrings to include GCM and
1763      add a special AESGCM string for GCM only.
1764      [Steve Henson]
1765
1766   *) Expand range of ctrls for AES GCM. Permit setting invocation
1767      field on decrypt and retrieval of invocation field only on encrypt.
1768      [Steve Henson]
1769
1770   *) Add HMAC ECC ciphersuites from RFC5289. Include SHA384 PRF support.
1771      As required by RFC5289 these ciphersuites cannot be used if for
1772      versions of TLS earlier than 1.2.
1773      [Steve Henson]
1774
1775   *) For FIPS capable OpenSSL interpret a NULL default public key method
1776      as unset and return the appropriate default but do *not* set the default.
1777      This means we can return the appropriate method in applications that
1778      switch between FIPS and non-FIPS modes.
1779      [Steve Henson]
1780
1781   *) Redirect HMAC and CMAC operations to FIPS module in FIPS mode. If an
1782      ENGINE is used then we cannot handle that in the FIPS module so we
1783      keep original code iff non-FIPS operations are allowed.
1784      [Steve Henson]
1785
1786   *) Add -attime option to openssl utilities.
1787      [Peter Eckersley <pde@eff.org>, Ben Laurie and Steve Henson]
1788
1789   *) Redirect DSA and DH operations to FIPS module in FIPS mode.
1790      [Steve Henson]
1791
1792   *) Redirect ECDSA and ECDH operations to FIPS module in FIPS mode. Also use
1793      FIPS EC methods unconditionally for now.
1794      [Steve Henson]
1795
1796   *) New build option no-ec2m to disable characteristic 2 code.
1797      [Steve Henson]
1798
1799   *) Backport libcrypto audit of return value checking from 1.1.0-dev; not
1800      all cases can be covered as some introduce binary incompatibilities.
1801      [Steve Henson]
1802
1803   *) Redirect RSA operations to FIPS module including keygen,
1804      encrypt, decrypt, sign and verify. Block use of non FIPS RSA methods.
1805      [Steve Henson]
1806
1807   *) Add similar low level API blocking to ciphers.
1808      [Steve Henson]
1809
1810   *) Low level digest APIs are not approved in FIPS mode: any attempt
1811      to use these will cause a fatal error. Applications that *really* want
1812      to use them can use the private_* version instead.
1813      [Steve Henson]
1814
1815   *) Redirect cipher operations to FIPS module for FIPS builds. 
1816      [Steve Henson]
1817
1818   *) Redirect digest operations to FIPS module for FIPS builds. 
1819      [Steve Henson]
1820
1821   *) Update build system to add "fips" flag which will link in fipscanister.o
1822      for static and shared library builds embedding a signature if needed.
1823      [Steve Henson]
1824
1825   *) Output TLS supported curves in preference order instead of numerical
1826      order. This is currently hardcoded for the highest order curves first.
1827      This should be configurable so applications can judge speed vs strength.
1828      [Steve Henson]
1829
1830   *) Add TLS v1.2 server support for client authentication. 
1831      [Steve Henson]
1832
1833   *) Add support for FIPS mode in ssl library: disable SSLv3, non-FIPS ciphers
1834      and enable MD5.
1835      [Steve Henson]
1836
1837   *) Functions FIPS_mode_set() and FIPS_mode() which call the underlying
1838      FIPS modules versions.
1839      [Steve Henson]
1840
1841   *) Add TLS v1.2 client side support for client authentication. Keep cache
1842      of handshake records longer as we don't know the hash algorithm to use
1843      until after the certificate request message is received.
1844      [Steve Henson]
1845
1846   *) Initial TLS v1.2 client support. Add a default signature algorithms
1847      extension including all the algorithms we support. Parse new signature
1848      format in client key exchange. Relax some ECC signing restrictions for
1849      TLS v1.2 as indicated in RFC5246.
1850      [Steve Henson]
1851
1852   *) Add server support for TLS v1.2 signature algorithms extension. Switch
1853      to new signature format when needed using client digest preference.
1854      All server ciphersuites should now work correctly in TLS v1.2. No client
1855      support yet and no support for client certificates.
1856      [Steve Henson]
1857
1858   *) Initial TLS v1.2 support. Add new SHA256 digest to ssl code, switch
1859      to SHA256 for PRF when using TLS v1.2 and later. Add new SHA256 based
1860      ciphersuites. At present only RSA key exchange ciphersuites work with
1861      TLS v1.2. Add new option for TLS v1.2 replacing the old and obsolete
1862      SSL_OP_PKCS1_CHECK flags with SSL_OP_NO_TLSv1_2. New TLSv1.2 methods
1863      and version checking.
1864      [Steve Henson]
1865
1866   *) New option OPENSSL_NO_SSL_INTERN. If an application can be compiled
1867      with this defined it will not be affected by any changes to ssl internal
1868      structures. Add several utility functions to allow openssl application
1869      to work with OPENSSL_NO_SSL_INTERN defined.
1870      [Steve Henson]
1871
1872   *) Add SRP support.
1873      [Tom Wu <tjw@cs.stanford.edu> and Ben Laurie]
1874
1875   *) Add functions to copy EVP_PKEY_METHOD and retrieve flags and id.
1876      [Steve Henson]
1877
1878   *) Permit abbreviated handshakes when renegotiating using the function
1879      SSL_renegotiate_abbreviated().
1880      [Robin Seggelmann <seggelmann@fh-muenster.de>]
1881
1882   *) Add call to ENGINE_register_all_complete() to
1883      ENGINE_load_builtin_engines(), so some implementations get used
1884      automatically instead of needing explicit application support.
1885      [Steve Henson]
1886
1887   *) Add support for TLS key exporter as described in RFC5705.
1888      [Robin Seggelmann <seggelmann@fh-muenster.de>, Steve Henson]
1889
1890   *) Initial TLSv1.1 support. Since TLSv1.1 is very similar to TLS v1.0 only
1891      a few changes are required:
1892
1893        Add SSL_OP_NO_TLSv1_1 flag.
1894        Add TLSv1_1 methods.
1895        Update version checking logic to handle version 1.1.
1896        Add explicit IV handling (ported from DTLS code).
1897        Add command line options to s_client/s_server.
1898      [Steve Henson]
1899
1900  Changes between 1.0.0g and 1.0.0h [12 Mar 2012]
1901
1902   *) Fix MMA (Bleichenbacher's attack on PKCS #1 v1.5 RSA padding) weakness
1903      in CMS and PKCS7 code. When RSA decryption fails use a random key for
1904      content decryption and always return the same error. Note: this attack
1905      needs on average 2^20 messages so it only affects automated senders. The
1906      old behaviour can be reenabled in the CMS code by setting the
1907      CMS_DEBUG_DECRYPT flag: this is useful for debugging and testing where
1908      an MMA defence is not necessary.
1909      Thanks to Ivan Nestlerode <inestlerode@us.ibm.com> for discovering
1910      this issue. (CVE-2012-0884)
1911      [Steve Henson]
1912
1913   *) Fix CVE-2011-4619: make sure we really are receiving a 
1914      client hello before rejecting multiple SGC restarts. Thanks to
1915      Ivan Nestlerode <inestlerode@us.ibm.com> for discovering this bug.
1916      [Steve Henson]
1917
1918  Changes between 1.0.0f and 1.0.0g [18 Jan 2012]
1919
1920   *) Fix for DTLS DoS issue introduced by fix for CVE-2011-4109.
1921      Thanks to Antonio Martin, Enterprise Secure Access Research and
1922      Development, Cisco Systems, Inc. for discovering this bug and
1923      preparing a fix. (CVE-2012-0050)
1924      [Antonio Martin]
1925
1926  Changes between 1.0.0e and 1.0.0f [4 Jan 2012]
1927
1928   *) Nadhem Alfardan and Kenny Paterson have discovered an extension
1929      of the Vaudenay padding oracle attack on CBC mode encryption
1930      which enables an efficient plaintext recovery attack against
1931      the OpenSSL implementation of DTLS. Their attack exploits timing
1932      differences arising during decryption processing. A research
1933      paper describing this attack can be found at:
1934                   http://www.isg.rhul.ac.uk/~kp/dtls.pdf
1935      Thanks go to Nadhem Alfardan and Kenny Paterson of the Information
1936      Security Group at Royal Holloway, University of London
1937      (www.isg.rhul.ac.uk) for discovering this flaw and to Robin Seggelmann
1938      <seggelmann@fh-muenster.de> and Michael Tuexen <tuexen@fh-muenster.de>
1939      for preparing the fix. (CVE-2011-4108)
1940      [Robin Seggelmann, Michael Tuexen]
1941
1942   *) Clear bytes used for block padding of SSL 3.0 records.
1943      (CVE-2011-4576)
1944      [Adam Langley (Google)]
1945
1946   *) Only allow one SGC handshake restart for SSL/TLS. Thanks to George
1947      Kadianakis <desnacked@gmail.com> for discovering this issue and
1948      Adam Langley for preparing the fix. (CVE-2011-4619)
1949      [Adam Langley (Google)]
1950
1951   *) Check parameters are not NULL in GOST ENGINE. (CVE-2012-0027)
1952      [Andrey Kulikov <amdeich@gmail.com>]
1953
1954   *) Prevent malformed RFC3779 data triggering an assertion failure.
1955      Thanks to Andrew Chi, BBN Technologies, for discovering the flaw
1956      and Rob Austein <sra@hactrn.net> for fixing it. (CVE-2011-4577)
1957      [Rob Austein <sra@hactrn.net>]
1958
1959   *) Improved PRNG seeding for VOS.
1960      [Paul Green <Paul.Green@stratus.com>]
1961
1962   *) Fix ssl_ciph.c set-up race.
1963      [Adam Langley (Google)]
1964
1965   *) Fix spurious failures in ecdsatest.c.
1966      [Emilia Käsper (Google)]
1967
1968   *) Fix the BIO_f_buffer() implementation (which was mixing different
1969      interpretations of the '..._len' fields).
1970      [Adam Langley (Google)]
1971
1972   *) Fix handling of BN_BLINDING: now BN_BLINDING_invert_ex (rather than
1973      BN_BLINDING_invert_ex) calls BN_BLINDING_update, ensuring that concurrent
1974      threads won't reuse the same blinding coefficients.
1975
1976      This also avoids the need to obtain the CRYPTO_LOCK_RSA_BLINDING
1977      lock to call BN_BLINDING_invert_ex, and avoids one use of
1978      BN_BLINDING_update for each BN_BLINDING structure (previously,
1979      the last update always remained unused).
1980      [Emilia Käsper (Google)]
1981
1982   *) In ssl3_clear, preserve s3->init_extra along with s3->rbuf.
1983      [Bob Buckholz (Google)]
1984
1985  Changes between 1.0.0d and 1.0.0e [6 Sep 2011]
1986
1987   *) Fix bug where CRLs with nextUpdate in the past are sometimes accepted
1988      by initialising X509_STORE_CTX properly. (CVE-2011-3207)
1989      [Kaspar Brand <ossl@velox.ch>]
1990
1991   *) Fix SSL memory handling for (EC)DH ciphersuites, in particular
1992      for multi-threaded use of ECDH. (CVE-2011-3210)
1993      [Adam Langley (Google)]
1994
1995   *) Fix x509_name_ex_d2i memory leak on bad inputs.
1996      [Bodo Moeller]
1997
1998   *) Remove hard coded ecdsaWithSHA1 signature tests in ssl code and check
1999      signature public key algorithm by using OID xref utilities instead.
2000      Before this you could only use some ECC ciphersuites with SHA1 only.
2001      [Steve Henson]
2002
2003   *) Add protection against ECDSA timing attacks as mentioned in the paper
2004      by Billy Bob Brumley and Nicola Tuveri, see:
2005
2006         http://eprint.iacr.org/2011/232.pdf
2007
2008      [Billy Bob Brumley and Nicola Tuveri]
2009
2010  Changes between 1.0.0c and 1.0.0d [8 Feb 2011]
2011
2012   *) Fix parsing of OCSP stapling ClientHello extension. CVE-2011-0014
2013      [Neel Mehta, Adam Langley, Bodo Moeller (Google)]
2014
2015   *) Fix bug in string printing code: if *any* escaping is enabled we must
2016      escape the escape character (backslash) or the resulting string is
2017      ambiguous.
2018      [Steve Henson]
2019
2020  Changes between 1.0.0b and 1.0.0c  [2 Dec 2010]
2021
2022   *) Disable code workaround for ancient and obsolete Netscape browsers
2023      and servers: an attacker can use it in a ciphersuite downgrade attack.
2024      Thanks to Martin Rex for discovering this bug. CVE-2010-4180
2025      [Steve Henson]
2026
2027   *) Fixed J-PAKE implementation error, originally discovered by
2028      Sebastien Martini, further info and confirmation from Stefan
2029      Arentz and Feng Hao. Note that this fix is a security fix. CVE-2010-4252
2030      [Ben Laurie]
2031
2032  Changes between 1.0.0a and 1.0.0b  [16 Nov 2010]
2033
2034   *) Fix extension code to avoid race conditions which can result in a buffer
2035      overrun vulnerability: resumed sessions must not be modified as they can
2036      be shared by multiple threads. CVE-2010-3864
2037      [Steve Henson]
2038
2039   *) Fix WIN32 build system to correctly link an ENGINE directory into
2040      a DLL. 
2041      [Steve Henson]
2042
2043  Changes between 1.0.0 and 1.0.0a  [01 Jun 2010]
2044
2045   *) Check return value of int_rsa_verify in pkey_rsa_verifyrecover 
2046      (CVE-2010-1633)
2047      [Steve Henson, Peter-Michael Hager <hager@dortmund.net>]
2048
2049  Changes between 0.9.8n and 1.0.0  [29 Mar 2010]
2050
2051   *) Add "missing" function EVP_CIPHER_CTX_copy(). This copies a cipher
2052      context. The operation can be customised via the ctrl mechanism in
2053      case ENGINEs want to include additional functionality.
2054      [Steve Henson]
2055
2056   *) Tolerate yet another broken PKCS#8 key format: private key value negative.
2057      [Steve Henson]
2058
2059   *) Add new -subject_hash_old and -issuer_hash_old options to x509 utility to
2060      output hashes compatible with older versions of OpenSSL.
2061      [Willy Weisz <weisz@vcpc.univie.ac.at>]
2062
2063   *) Fix compression algorithm handling: if resuming a session use the
2064      compression algorithm of the resumed session instead of determining
2065      it from client hello again. Don't allow server to change algorithm.
2066      [Steve Henson]
2067
2068   *) Add load_crls() function to apps tidying load_certs() too. Add option
2069      to verify utility to allow additional CRLs to be included.
2070      [Steve Henson]
2071
2072   *) Update OCSP request code to permit adding custom headers to the request:
2073      some responders need this.
2074      [Steve Henson]
2075
2076   *) The function EVP_PKEY_sign() returns <=0 on error: check return code
2077      correctly.
2078      [Julia Lawall <julia@diku.dk>]
2079
2080   *) Update verify callback code in apps/s_cb.c and apps/verify.c, it
2081      needlessly dereferenced structures, used obsolete functions and
2082      didn't handle all updated verify codes correctly.
2083      [Steve Henson]
2084
2085   *) Disable MD2 in the default configuration.
2086      [Steve Henson]
2087
2088   *) In BIO_pop() and BIO_push() use the ctrl argument (which was NULL) to
2089      indicate the initial BIO being pushed or popped. This makes it possible
2090      to determine whether the BIO is the one explicitly called or as a result
2091      of the ctrl being passed down the chain. Fix BIO_pop() and SSL BIOs so
2092      it handles reference counts correctly and doesn't zero out the I/O bio
2093      when it is not being explicitly popped. WARNING: applications which
2094      included workarounds for the old buggy behaviour will need to be modified
2095      or they could free up already freed BIOs.
2096      [Steve Henson]
2097
2098   *) Extend the uni2asc/asc2uni => OPENSSL_uni2asc/OPENSSL_asc2uni
2099      renaming to all platforms (within the 0.9.8 branch, this was
2100      done conditionally on Netware platforms to avoid a name clash).
2101      [Guenter <lists@gknw.net>]
2102
2103   *) Add ECDHE and PSK support to DTLS.
2104      [Michael Tuexen <tuexen@fh-muenster.de>]
2105
2106   *) Add CHECKED_STACK_OF macro to safestack.h, otherwise safestack can't
2107      be used on C++.
2108      [Steve Henson]
2109
2110   *) Add "missing" function EVP_MD_flags() (without this the only way to
2111      retrieve a digest flags is by accessing the structure directly. Update
2112      EVP_MD_do_all*() and EVP_CIPHER_do_all*() to include the name a digest
2113      or cipher is registered as in the "from" argument. Print out all
2114      registered digests in the dgst usage message instead of manually 
2115      attempting to work them out.
2116      [Steve Henson]
2117
2118   *) If no SSLv2 ciphers are used don't use an SSLv2 compatible client hello:
2119      this allows the use of compression and extensions. Change default cipher
2120      string to remove SSLv2 ciphersuites. This effectively avoids ancient SSLv2
2121      by default unless an application cipher string requests it.
2122      [Steve Henson]
2123
2124   *) Alter match criteria in PKCS12_parse(). It used to try to use local
2125      key ids to find matching certificates and keys but some PKCS#12 files
2126      don't follow the (somewhat unwritten) rules and this strategy fails.
2127      Now just gather all certificates together and the first private key
2128      then look for the first certificate that matches the key.
2129      [Steve Henson]
2130
2131   *) Support use of registered digest and cipher names for dgst and cipher
2132      commands instead of having to add each one as a special case. So now
2133      you can do:
2134
2135         openssl sha256 foo
2136
2137      as well as:
2138
2139         openssl dgst -sha256 foo
2140
2141      and this works for ENGINE based algorithms too.
2142
2143      [Steve Henson]
2144
2145   *) Update Gost ENGINE to support parameter files.
2146      [Victor B. Wagner <vitus@cryptocom.ru>]
2147
2148   *) Support GeneralizedTime in ca utility. 
2149      [Oliver Martin <oliver@volatilevoid.net>, Steve Henson]
2150
2151   *) Enhance the hash format used for certificate directory links. The new
2152      form uses the canonical encoding (meaning equivalent names will work
2153      even if they aren't identical) and uses SHA1 instead of MD5. This form
2154      is incompatible with the older format and as a result c_rehash should
2155      be used to rebuild symbolic links.
2156      [Steve Henson]
2157
2158   *) Make PKCS#8 the default write format for private keys, replacing the
2159      traditional format. This form is standardised, more secure and doesn't
2160      include an implicit MD5 dependency.
2161      [Steve Henson]
2162
2163   *) Add a $gcc_devteam_warn option to Configure. The idea is that any code
2164      committed to OpenSSL should pass this lot as a minimum.
2165      [Steve Henson]
2166
2167   *) Add session ticket override functionality for use by EAP-FAST.
2168      [Jouni Malinen <j@w1.fi>]
2169
2170   *) Modify HMAC functions to return a value. Since these can be implemented
2171      in an ENGINE errors can occur.
2172      [Steve Henson]
2173
2174   *) Type-checked OBJ_bsearch_ex.
2175      [Ben Laurie]
2176
2177   *) Type-checked OBJ_bsearch. Also some constification necessitated
2178      by type-checking.  Still to come: TXT_DB, bsearch(?),
2179      OBJ_bsearch_ex, qsort, CRYPTO_EX_DATA, ASN1_VALUE, ASN1_STRING,
2180      CONF_VALUE.
2181      [Ben Laurie]
2182
2183   *) New function OPENSSL_gmtime_adj() to add a specific number of days and
2184      seconds to a tm structure directly, instead of going through OS
2185      specific date routines. This avoids any issues with OS routines such
2186      as the year 2038 bug. New *_adj() functions for ASN1 time structures
2187      and X509_time_adj_ex() to cover the extended range. The existing
2188      X509_time_adj() is still usable and will no longer have any date issues.
2189      [Steve Henson]
2190
2191   *) Delta CRL support. New use deltas option which will attempt to locate
2192      and search any appropriate delta CRLs available.
2193
2194      This work was sponsored by Google.
2195      [Steve Henson]
2196
2197   *) Support for CRLs partitioned by reason code. Reorganise CRL processing
2198      code and add additional score elements. Validate alternate CRL paths
2199      as part of the CRL checking and indicate a new error "CRL path validation
2200      error" in this case. Applications wanting additional details can use
2201      the verify callback and check the new "parent" field. If this is not
2202      NULL CRL path validation is taking place. Existing applications wont
2203      see this because it requires extended CRL support which is off by
2204      default.
2205
2206      This work was sponsored by Google.
2207      [Steve Henson]
2208
2209   *) Support for freshest CRL extension.
2210
2211      This work was sponsored by Google.
2212      [Steve Henson]
2213
2214   *) Initial indirect CRL support. Currently only supported in the CRLs
2215      passed directly and not via lookup. Process certificate issuer
2216      CRL entry extension and lookup CRL entries by bother issuer name
2217      and serial number. Check and process CRL issuer entry in IDP extension.
2218
2219      This work was sponsored by Google.
2220      [Steve Henson]
2221
2222   *) Add support for distinct certificate and CRL paths. The CRL issuer
2223      certificate is validated separately in this case. Only enabled if
2224      an extended CRL support flag is set: this flag will enable additional
2225      CRL functionality in future.
2226
2227      This work was sponsored by Google.
2228      [Steve Henson]
2229
2230   *) Add support for policy mappings extension.
2231
2232      This work was sponsored by Google.
2233      [Steve Henson]
2234
2235   *) Fixes to pathlength constraint, self issued certificate handling,
2236      policy processing to align with RFC3280 and PKITS tests.
2237
2238      This work was sponsored by Google.
2239      [Steve Henson]
2240
2241   *) Support for name constraints certificate extension. DN, email, DNS
2242      and URI types are currently supported.
2243
2244      This work was sponsored by Google.
2245      [Steve Henson]
2246
2247   *) To cater for systems that provide a pointer-based thread ID rather
2248      than numeric, deprecate the current numeric thread ID mechanism and
2249      replace it with a structure and associated callback type. This
2250      mechanism allows a numeric "hash" to be extracted from a thread ID in
2251      either case, and on platforms where pointers are larger than 'long',
2252      mixing is done to help ensure the numeric 'hash' is usable even if it
2253      can't be guaranteed unique. The default mechanism is to use "&errno"
2254      as a pointer-based thread ID to distinguish between threads.
2255
2256      Applications that want to provide their own thread IDs should now use
2257      CRYPTO_THREADID_set_callback() to register a callback that will call
2258      either CRYPTO_THREADID_set_numeric() or CRYPTO_THREADID_set_pointer().
2259
2260      Note that ERR_remove_state() is now deprecated, because it is tied
2261      to the assumption that thread IDs are numeric.  ERR_remove_state(0)
2262      to free the current thread's error state should be replaced by
2263      ERR_remove_thread_state(NULL).
2264
2265      (This new approach replaces the functions CRYPTO_set_idptr_callback(),
2266      CRYPTO_get_idptr_callback(), and CRYPTO_thread_idptr() that existed in
2267      OpenSSL 0.9.9-dev between June 2006 and August 2008. Also, if an
2268      application was previously providing a numeric thread callback that
2269      was inappropriate for distinguishing threads, then uniqueness might
2270      have been obtained with &errno that happened immediately in the
2271      intermediate development versions of OpenSSL; this is no longer the
2272      case, the numeric thread callback will now override the automatic use
2273      of &errno.)
2274      [Geoff Thorpe, with help from Bodo Moeller]
2275
2276   *) Initial support for different CRL issuing certificates. This covers a
2277      simple case where the self issued certificates in the chain exist and
2278      the real CRL issuer is higher in the existing chain.
2279
2280      This work was sponsored by Google.
2281      [Steve Henson]
2282
2283   *) Removed effectively defunct crypto/store from the build.
2284      [Ben Laurie]
2285
2286   *) Revamp of STACK to provide stronger type-checking. Still to come:
2287      TXT_DB, bsearch(?), OBJ_bsearch, qsort, CRYPTO_EX_DATA, ASN1_VALUE,
2288      ASN1_STRING, CONF_VALUE.
2289      [Ben Laurie]
2290
2291   *) Add a new SSL_MODE_RELEASE_BUFFERS mode flag to release unused buffer
2292      RAM on SSL connections.  This option can save about 34k per idle SSL.
2293      [Nick Mathewson]
2294
2295   *) Revamp of LHASH to provide stronger type-checking. Still to come:
2296      STACK, TXT_DB, bsearch, qsort.
2297      [Ben Laurie]
2298
2299   *) Initial support for Cryptographic Message Syntax (aka CMS) based
2300      on RFC3850, RFC3851 and RFC3852. New cms directory and cms utility,
2301      support for data, signedData, compressedData, digestedData and
2302      encryptedData, envelopedData types included. Scripts to check against
2303      RFC4134 examples draft and interop and consistency checks of many
2304      content types and variants.
2305      [Steve Henson]
2306
2307   *) Add options to enc utility to support use of zlib compression BIO.
2308      [Steve Henson]
2309
2310   *) Extend mk1mf to support importing of options and assembly language
2311      files from Configure script, currently only included in VC-WIN32.
2312      The assembly language rules can now optionally generate the source
2313      files from the associated perl scripts.
2314      [Steve Henson]
2315
2316   *) Implement remaining functionality needed to support GOST ciphersuites.
2317      Interop testing has been performed using CryptoPro implementations.
2318      [Victor B. Wagner <vitus@cryptocom.ru>]
2319
2320   *) s390x assembler pack.
2321      [Andy Polyakov]
2322
2323   *) ARMv4 assembler pack. ARMv4 refers to v4 and later ISA, not CPU
2324      "family."
2325      [Andy Polyakov]
2326
2327   *) Implement Opaque PRF Input TLS extension as specified in
2328      draft-rescorla-tls-opaque-prf-input-00.txt.  Since this is not an
2329      official specification yet and no extension type assignment by
2330      IANA exists, this extension (for now) will have to be explicitly
2331      enabled when building OpenSSL by providing the extension number
2332      to use.  For example, specify an option
2333
2334          -DTLSEXT_TYPE_opaque_prf_input=0x9527
2335
2336      to the "config" or "Configure" script to enable the extension,
2337      assuming extension number 0x9527 (which is a completely arbitrary
2338      and unofficial assignment based on the MD5 hash of the Internet
2339      Draft).  Note that by doing so, you potentially lose
2340      interoperability with other TLS implementations since these might
2341      be using the same extension number for other purposes.
2342
2343      SSL_set_tlsext_opaque_prf_input(ssl, src, len) is used to set the
2344      opaque PRF input value to use in the handshake.  This will create
2345      an interal copy of the length-'len' string at 'src', and will
2346      return non-zero for success.
2347
2348      To get more control and flexibility, provide a callback function
2349      by using
2350
2351           SSL_CTX_set_tlsext_opaque_prf_input_callback(ctx, cb)
2352           SSL_CTX_set_tlsext_opaque_prf_input_callback_arg(ctx, arg)
2353
2354      where
2355
2356           int (*cb)(SSL *, void *peerinput, size_t len, void *arg);
2357           void *arg;
2358
2359      Callback function 'cb' will be called in handshakes, and is
2360      expected to use SSL_set_tlsext_opaque_prf_input() as appropriate.
2361      Argument 'arg' is for application purposes (the value as given to
2362      SSL_CTX_set_tlsext_opaque_prf_input_callback_arg() will directly
2363      be provided to the callback function).  The callback function
2364      has to return non-zero to report success: usually 1 to use opaque
2365      PRF input just if possible, or 2 to enforce use of the opaque PRF
2366      input.  In the latter case, the library will abort the handshake
2367      if opaque PRF input is not successfully negotiated.
2368
2369      Arguments 'peerinput' and 'len' given to the callback function
2370      will always be NULL and 0 in the case of a client.  A server will
2371      see the client's opaque PRF input through these variables if
2372      available (NULL and 0 otherwise).  Note that if the server
2373      provides an opaque PRF input, the length must be the same as the
2374      length of the client's opaque PRF input.
2375
2376      Note that the callback function will only be called when creating
2377      a new session (session resumption can resume whatever was
2378      previously negotiated), and will not be called in SSL 2.0
2379      handshakes; thus, SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2) or
2380      SSL_set_options(ssl, SSL_OP_NO_SSLv2) is especially recommended
2381      for applications that need to enforce opaque PRF input.
2382
2383      [Bodo Moeller]
2384
2385   *) Update ssl code to support digests other than SHA1+MD5 for handshake
2386      MAC. 
2387
2388      [Victor B. Wagner <vitus@cryptocom.ru>]
2389
2390   *) Add RFC4507 support to OpenSSL. This includes the corrections in
2391      RFC4507bis. The encrypted ticket format is an encrypted encoded
2392      SSL_SESSION structure, that way new session features are automatically
2393      supported.
2394
2395      If a client application caches session in an SSL_SESSION structure
2396      support is transparent because tickets are now stored in the encoded
2397      SSL_SESSION.
2398      
2399      The SSL_CTX structure automatically generates keys for ticket
2400      protection in servers so again support should be possible
2401      with no application modification.
2402
2403      If a client or server wishes to disable RFC4507 support then the option
2404      SSL_OP_NO_TICKET can be set.
2405
2406      Add a TLS extension debugging callback to allow the contents of any client
2407      or server extensions to be examined.
2408
2409      This work was sponsored by Google.
2410      [Steve Henson]
2411
2412   *) Final changes to avoid use of pointer pointer casts in OpenSSL.
2413      OpenSSL should now compile cleanly on gcc 4.2
2414      [Peter Hartley <pdh@utter.chaos.org.uk>, Steve Henson]
2415
2416   *) Update SSL library to use new EVP_PKEY MAC API. Include generic MAC
2417      support including streaming MAC support: this is required for GOST
2418      ciphersuite support.
2419      [Victor B. Wagner <vitus@cryptocom.ru>, Steve Henson]
2420
2421   *) Add option -stream to use PKCS#7 streaming in smime utility. New
2422      function i2d_PKCS7_bio_stream() and PEM_write_PKCS7_bio_stream()
2423      to output in BER and PEM format.
2424      [Steve Henson]
2425
2426   *) Experimental support for use of HMAC via EVP_PKEY interface. This
2427      allows HMAC to be handled via the EVP_DigestSign*() interface. The
2428      EVP_PKEY "key" in this case is the HMAC key, potentially allowing
2429      ENGINE support for HMAC keys which are unextractable. New -mac and
2430      -macopt options to dgst utility.
2431      [Steve Henson]
2432
2433   *) New option -sigopt to dgst utility. Update dgst to use
2434      EVP_Digest{Sign,Verify}*. These two changes make it possible to use
2435      alternative signing paramaters such as X9.31 or PSS in the dgst 
2436      utility.
2437      [Steve Henson]
2438
2439   *) Change ssl_cipher_apply_rule(), the internal function that does
2440      the work each time a ciphersuite string requests enabling
2441      ("foo+bar"), moving ("+foo+bar"), disabling ("-foo+bar", or
2442      removing ("!foo+bar") a class of ciphersuites: Now it maintains
2443      the order of disabled ciphersuites such that those ciphersuites
2444      that most recently went from enabled to disabled not only stay
2445      in order with respect to each other, but also have higher priority
2446      than other disabled ciphersuites the next time ciphersuites are
2447      enabled again.
2448
2449      This means that you can now say, e.g., "PSK:-PSK:HIGH" to enable
2450      the same ciphersuites as with "HIGH" alone, but in a specific
2451      order where the PSK ciphersuites come first (since they are the
2452      most recently disabled ciphersuites when "HIGH" is parsed).
2453
2454      Also, change ssl_create_cipher_list() (using this new
2455      funcionality) such that between otherwise identical
2456      cihpersuites, ephemeral ECDH is preferred over ephemeral DH in
2457      the default order.
2458      [Bodo Moeller]
2459
2460   *) Change ssl_create_cipher_list() so that it automatically
2461      arranges the ciphersuites in reasonable order before starting
2462      to process the rule string.  Thus, the definition for "DEFAULT"
2463      (SSL_DEFAULT_CIPHER_LIST) now is just "ALL:!aNULL:!eNULL", but
2464      remains equivalent to "AES:ALL:!aNULL:!eNULL:+aECDH:+kRSA:+RC4:@STRENGTH".
2465      This makes it much easier to arrive at a reasonable default order
2466      in applications for which anonymous ciphers are OK (meaning
2467      that you can't actually use DEFAULT).
2468      [Bodo Moeller; suggested by Victor Duchovni]
2469
2470   *) Split the SSL/TLS algorithm mask (as used for ciphersuite string
2471      processing) into multiple integers instead of setting
2472      "SSL_MKEY_MASK" bits, "SSL_AUTH_MASK" bits, "SSL_ENC_MASK",
2473      "SSL_MAC_MASK", and "SSL_SSL_MASK" bits all in a single integer.
2474      (These masks as well as the individual bit definitions are hidden
2475      away into the non-exported interface ssl/ssl_locl.h, so this
2476      change to the definition of the SSL_CIPHER structure shouldn't
2477      affect applications.)  This give us more bits for each of these
2478      categories, so there is no longer a need to coagulate AES128 and
2479      AES256 into a single algorithm bit, and to coagulate Camellia128
2480      and Camellia256 into a single algorithm bit, which has led to all
2481      kinds of kludges.
2482
2483      Thus, among other things, the kludge introduced in 0.9.7m and
2484      0.9.8e for masking out AES256 independently of AES128 or masking
2485      out Camellia256 independently of AES256 is not needed here in 0.9.9.
2486
2487      With the change, we also introduce new ciphersuite aliases that
2488      so far were missing: "AES128", "AES256", "CAMELLIA128", and
2489      "CAMELLIA256".
2490      [Bodo Moeller]
2491
2492   *) Add support for dsa-with-SHA224 and dsa-with-SHA256.
2493      Use the leftmost N bytes of the signature input if the input is
2494      larger than the prime q (with N being the size in bytes of q).
2495      [Nils Larsch]
2496
2497   *) Very *very* experimental PKCS#7 streaming encoder support. Nothing uses
2498      it yet and it is largely untested.
2499      [Steve Henson]
2500
2501   *) Add support for the ecdsa-with-SHA224/256/384/512 signature types.
2502      [Nils Larsch]
2503
2504   *) Initial incomplete changes to avoid need for function casts in OpenSSL
2505      some compilers (gcc 4.2 and later) reject their use. Safestack is
2506      reimplemented.  Update ASN1 to avoid use of legacy functions. 
2507      [Steve Henson]
2508
2509   *) Win32/64 targets are linked with Winsock2.
2510      [Andy Polyakov]
2511
2512   *) Add an X509_CRL_METHOD structure to allow CRL processing to be redirected
2513      to external functions. This can be used to increase CRL handling 
2514      efficiency especially when CRLs are very large by (for example) storing
2515      the CRL revoked certificates in a database.
2516      [Steve Henson]
2517
2518   *) Overhaul of by_dir code. Add support for dynamic loading of CRLs so
2519      new CRLs added to a directory can be used. New command line option
2520      -verify_return_error to s_client and s_server. This causes real errors
2521      to be returned by the verify callback instead of carrying on no matter
2522      what. This reflects the way a "real world" verify callback would behave.
2523      [Steve Henson]
2524
2525   *) GOST engine, supporting several GOST algorithms and public key formats.
2526      Kindly donated by Cryptocom.
2527      [Cryptocom]
2528
2529   *) Partial support for Issuing Distribution Point CRL extension. CRLs
2530      partitioned by DP are handled but no indirect CRL or reason partitioning
2531      (yet). Complete overhaul of CRL handling: now the most suitable CRL is
2532      selected via a scoring technique which handles IDP and AKID in CRLs.
2533      [Steve Henson]
2534
2535   *) New X509_STORE_CTX callbacks lookup_crls() and lookup_certs() which
2536      will ultimately be used for all verify operations: this will remove the
2537      X509_STORE dependency on certificate verification and allow alternative
2538      lookup methods.  X509_STORE based implementations of these two callbacks.
2539      [Steve Henson]
2540
2541   *) Allow multiple CRLs to exist in an X509_STORE with matching issuer names.
2542      Modify get_crl() to find a valid (unexpired) CRL if possible.
2543      [Steve Henson]
2544
2545   *) New function X509_CRL_match() to check if two CRLs are identical. Normally
2546      this would be called X509_CRL_cmp() but that name is already used by
2547      a function that just compares CRL issuer names. Cache several CRL 
2548      extensions in X509_CRL structure and cache CRLDP in X509.
2549      [Steve Henson]
2550
2551   *) Store a "canonical" representation of X509_NAME structure (ASN1 Name)
2552      this maps equivalent X509_NAME structures into a consistent structure.
2553      Name comparison can then be performed rapidly using memcmp().
2554      [Steve Henson]
2555
2556   *) Non-blocking OCSP request processing. Add -timeout option to ocsp 
2557      utility.
2558      [Steve Henson]
2559
2560   *) Allow digests to supply their own micalg string for S/MIME type using
2561      the ctrl EVP_MD_CTRL_MICALG.
2562      [Steve Henson]
2563
2564   *) During PKCS7 signing pass the PKCS7 SignerInfo structure to the
2565      EVP_PKEY_METHOD before and after signing via the EVP_PKEY_CTRL_PKCS7_SIGN
2566      ctrl. It can then customise the structure before and/or after signing
2567      if necessary.
2568      [Steve Henson]
2569
2570   *) New function OBJ_add_sigid() to allow application defined signature OIDs
2571      to be added to OpenSSLs internal tables. New function OBJ_sigid_free()
2572      to free up any added signature OIDs.
2573      [Steve Henson]
2574
2575   *) New functions EVP_CIPHER_do_all(), EVP_CIPHER_do_all_sorted(),
2576      EVP_MD_do_all() and EVP_MD_do_all_sorted() to enumerate internal
2577      digest and cipher tables. New options added to openssl utility:
2578      list-message-digest-algorithms and list-cipher-algorithms.
2579      [Steve Henson]
2580
2581   *) Change the array representation of binary polynomials: the list
2582      of degrees of non-zero coefficients is now terminated with -1.
2583      Previously it was terminated with 0, which was also part of the
2584      value; thus, the array representation was not applicable to
2585      polynomials where t^0 has coefficient zero.  This change makes
2586      the array representation useful in a more general context.
2587      [Douglas Stebila]
2588
2589   *) Various modifications and fixes to SSL/TLS cipher string
2590      handling.  For ECC, the code now distinguishes between fixed ECDH
2591      with RSA certificates on the one hand and with ECDSA certificates
2592      on the other hand, since these are separate ciphersuites.  The
2593      unused code for Fortezza ciphersuites has been removed.
2594
2595      For consistency with EDH, ephemeral ECDH is now called "EECDH"
2596      (not "ECDHE").  For consistency with the code for DH
2597      certificates, use of ECDH certificates is now considered ECDH
2598      authentication, not RSA or ECDSA authentication (the latter is
2599      merely the CA's signing algorithm and not actively used in the
2600      protocol).
2601
2602      The temporary ciphersuite alias "ECCdraft" is no longer
2603      available, and ECC ciphersuites are no longer excluded from "ALL"
2604      and "DEFAULT".  The following aliases now exist for RFC 4492
2605      ciphersuites, most of these by analogy with the DH case:
2606
2607          kECDHr   - ECDH cert, signed with RSA
2608          kECDHe   - ECDH cert, signed with ECDSA
2609          kECDH    - ECDH cert (signed with either RSA or ECDSA)
2610          kEECDH   - ephemeral ECDH
2611          ECDH     - ECDH cert or ephemeral ECDH
2612
2613          aECDH    - ECDH cert
2614          aECDSA   - ECDSA cert
2615          ECDSA    - ECDSA cert
2616
2617          AECDH    - anonymous ECDH
2618          EECDH    - non-anonymous ephemeral ECDH (equivalent to "kEECDH:-AECDH")
2619
2620      [Bodo Moeller]
2621
2622   *) Add additional S/MIME capabilities for AES and GOST ciphers if supported.
2623      Use correct micalg parameters depending on digest(s) in signed message.
2624      [Steve Henson]
2625
2626   *) Add engine support for EVP_PKEY_ASN1_METHOD. Add functions to process
2627      an ENGINE asn1 method. Support ENGINE lookups in the ASN1 code.
2628      [Steve Henson]
2629
2630   *) Initial engine support for EVP_PKEY_METHOD. New functions to permit
2631      an engine to register a method. Add ENGINE lookups for methods and
2632      functional reference processing.
2633      [Steve Henson]
2634
2635   *) New functions EVP_Digest{Sign,Verify)*. These are enchance versions of
2636      EVP_{Sign,Verify}* which allow an application to customise the signature
2637      process.
2638      [Steve Henson]
2639
2640   *) New -resign option to smime utility. This adds one or more signers
2641      to an existing PKCS#7 signedData structure. Also -md option to use an
2642      alternative message digest algorithm for signing.
2643      [Steve Henson]
2644
2645   *) Tidy up PKCS#7 routines and add new functions to make it easier to
2646      create PKCS7 structures containing multiple signers. Update smime
2647      application to support multiple signers.
2648      [Steve Henson]
2649
2650   *) New -macalg option to pkcs12 utility to allow setting of an alternative
2651      digest MAC.
2652      [Steve Henson]
2653
2654   *) Initial support for PKCS#5 v2.0 PRFs other than default SHA1 HMAC.
2655      Reorganize PBE internals to lookup from a static table using NIDs,
2656      add support for HMAC PBE OID translation. Add a EVP_CIPHER ctrl:
2657      EVP_CTRL_PBE_PRF_NID this allows a cipher to specify an alternative
2658      PRF which will be automatically used with PBES2.
2659      [Steve Henson]
2660
2661   *) Replace the algorithm specific calls to generate keys in "req" with the
2662      new API.
2663      [Steve Henson]
2664
2665   *) Update PKCS#7 enveloped data routines to use new API. This is now
2666      supported by any public key method supporting the encrypt operation. A
2667      ctrl is added to allow the public key algorithm to examine or modify
2668      the PKCS#7 RecipientInfo structure if it needs to: for RSA this is
2669      a no op.
2670      [Steve Henson]
2671
2672   *) Add a ctrl to asn1 method to allow a public key algorithm to express
2673      a default digest type to use. In most cases this will be SHA1 but some
2674      algorithms (such as GOST) need to specify an alternative digest. The
2675      return value indicates how strong the preference is 1 means optional and
2676      2 is mandatory (that is it is the only supported type). Modify
2677      ASN1_item_sign() to accept a NULL digest argument to indicate it should
2678      use the default md. Update openssl utilities to use the default digest
2679      type for signing if it is not explicitly indicated.
2680      [Steve Henson]
2681
2682   *) Use OID cross reference table in ASN1_sign() and ASN1_verify(). New 
2683      EVP_MD flag EVP_MD_FLAG_PKEY_METHOD_SIGNATURE. This uses the relevant
2684      signing method from the key type. This effectively removes the link
2685      between digests and public key types.
2686      [Steve Henson]
2687
2688   *) Add an OID cross reference table and utility functions. Its purpose is to
2689      translate between signature OIDs such as SHA1WithrsaEncryption and SHA1,
2690      rsaEncryption. This will allow some of the algorithm specific hackery
2691      needed to use the correct OID to be removed. 
2692      [Steve Henson]
2693
2694   *) Remove algorithm specific dependencies when setting PKCS7_SIGNER_INFO
2695      structures for PKCS7_sign(). They are now set up by the relevant public
2696      key ASN1 method.
2697      [Steve Henson]
2698
2699   *) Add provisional EC pkey method with support for ECDSA and ECDH.
2700      [Steve Henson]
2701
2702   *) Add support for key derivation (agreement) in the API, DH method and
2703      pkeyutl.
2704      [Steve Henson]
2705
2706   *) Add DSA pkey method and DH pkey methods, extend DH ASN1 method to support
2707      public and private key formats. As a side effect these add additional 
2708      command line functionality not previously available: DSA signatures can be
2709      generated and verified using pkeyutl and DH key support and generation in
2710      pkey, genpkey.
2711      [Steve Henson]
2712
2713   *) BeOS support.
2714      [Oliver Tappe <zooey@hirschkaefer.de>]
2715
2716   *) New make target "install_html_docs" installs HTML renditions of the
2717      manual pages.
2718      [Oliver Tappe <zooey@hirschkaefer.de>]
2719
2720   *) New utility "genpkey" this is analogous to "genrsa" etc except it can
2721      generate keys for any algorithm. Extend and update EVP_PKEY_METHOD to
2722      support key and parameter generation and add initial key generation
2723      functionality for RSA.
2724      [Steve Henson]
2725
2726   *) Add functions for main EVP_PKEY_method operations. The undocumented
2727      functions EVP_PKEY_{encrypt,decrypt} have been renamed to
2728      EVP_PKEY_{encrypt,decrypt}_old. 
2729      [Steve Henson]
2730
2731   *) Initial definitions for EVP_PKEY_METHOD. This will be a high level public
2732      key API, doesn't do much yet.
2733      [Steve Henson]
2734
2735   *) New function EVP_PKEY_asn1_get0_info() to retrieve information about
2736      public key algorithms. New option to openssl utility:
2737      "list-public-key-algorithms" to print out info.
2738      [Steve Henson]
2739
2740   *) Implement the Supported Elliptic Curves Extension for
2741      ECC ciphersuites from draft-ietf-tls-ecc-12.txt.
2742      [Douglas Stebila]
2743
2744   *) Don't free up OIDs in OBJ_cleanup() if they are in use by EVP_MD or
2745      EVP_CIPHER structures to avoid later problems in EVP_cleanup().
2746      [Steve Henson]
2747
2748   *) New utilities pkey and pkeyparam. These are similar to algorithm specific
2749      utilities such as rsa, dsa, dsaparam etc except they process any key
2750      type.
2751      [Steve Henson]
2752
2753   *) Transfer public key printing routines to EVP_PKEY_ASN1_METHOD. New 
2754      functions EVP_PKEY_print_public(), EVP_PKEY_print_private(),
2755      EVP_PKEY_print_param() to print public key data from an EVP_PKEY
2756      structure.
2757      [Steve Henson]
2758
2759   *) Initial support for pluggable public key ASN1.
2760      De-spaghettify the public key ASN1 handling. Move public and private
2761      key ASN1 handling to a new EVP_PKEY_ASN1_METHOD structure. Relocate
2762      algorithm specific handling to a single module within the relevant
2763      algorithm directory. Add functions to allow (near) opaque processing
2764      of public and private key structures.
2765      [Steve Henson]
2766
2767   *) Implement the Supported Point Formats Extension for
2768      ECC ciphersuites from draft-ietf-tls-ecc-12.txt.
2769      [Douglas Stebila]
2770
2771   *) Add initial support for RFC 4279 PSK TLS ciphersuites. Add members
2772      for the psk identity [hint] and the psk callback functions to the
2773      SSL_SESSION, SSL and SSL_CTX structure.
2774      
2775      New ciphersuites:
2776          PSK-RC4-SHA, PSK-3DES-EDE-CBC-SHA, PSK-AES128-CBC-SHA,
2777          PSK-AES256-CBC-SHA
2778  
2779      New functions:
2780          SSL_CTX_use_psk_identity_hint
2781          SSL_get_psk_identity_hint
2782          SSL_get_psk_identity
2783          SSL_use_psk_identity_hint
2784
2785      [Mika Kousa and Pasi Eronen of Nokia Corporation]
2786
2787   *) Add RFC 3161 compliant time stamp request creation, response generation
2788      and response verification functionality.
2789      [Zoltán Glózik <zglozik@opentsa.org>, The OpenTSA Project]
2790
2791   *) Add initial support for TLS extensions, specifically for the server_name
2792      extension so far.  The SSL_SESSION, SSL_CTX, and SSL data structures now
2793      have new members for a host name.  The SSL data structure has an
2794      additional member SSL_CTX *initial_ctx so that new sessions can be
2795      stored in that context to allow for session resumption, even after the
2796      SSL has been switched to a new SSL_CTX in reaction to a client's
2797      server_name extension.
2798
2799      New functions (subject to change):
2800
2801          SSL_get_servername()
2802          SSL_get_servername_type()
2803          SSL_set_SSL_CTX()
2804
2805      New CTRL codes and macros (subject to change):
2806
2807          SSL_CTRL_SET_TLSEXT_SERVERNAME_CB
2808                                  - SSL_CTX_set_tlsext_servername_callback()
2809          SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG
2810                                       - SSL_CTX_set_tlsext_servername_arg()
2811          SSL_CTRL_SET_TLSEXT_HOSTNAME           - SSL_set_tlsext_host_name()
2812
2813      openssl s_client has a new '-servername ...' option.
2814
2815      openssl s_server has new options '-servername_host ...', '-cert2 ...',
2816      '-key2 ...', '-servername_fatal' (subject to change).  This allows
2817      testing the HostName extension for a specific single host name ('-cert'
2818      and '-key' remain fallbacks for handshakes without HostName
2819      negotiation).  If the unrecognized_name alert has to be sent, this by
2820      default is a warning; it becomes fatal with the '-servername_fatal'
2821      option.
2822
2823      [Peter Sylvester,  Remy Allais, Christophe Renou]
2824
2825   *) Whirlpool hash implementation is added.
2826      [Andy Polyakov]
2827
2828   *) BIGNUM code on 64-bit SPARCv9 targets is switched from bn(64,64) to
2829      bn(64,32). Because of instruction set limitations it doesn't have
2830      any negative impact on performance. This was done mostly in order
2831      to make it possible to share assembler modules, such as bn_mul_mont
2832      implementations, between 32- and 64-bit builds without hassle.
2833      [Andy Polyakov]
2834
2835   *) Move code previously exiled into file crypto/ec/ec2_smpt.c
2836      to ec2_smpl.c, and no longer require the OPENSSL_EC_BIN_PT_COMP
2837      macro.
2838      [Bodo Moeller]
2839
2840   *) New candidate for BIGNUM assembler implementation, bn_mul_mont,
2841      dedicated Montgomery multiplication procedure, is introduced.
2842      BN_MONT_CTX is modified to allow bn_mul_mont to reach for higher
2843      "64-bit" performance on certain 32-bit targets.
2844      [Andy Polyakov]
2845
2846   *) New option SSL_OP_NO_COMP to disable use of compression selectively
2847      in SSL structures. New SSL ctrl to set maximum send fragment size. 
2848      Save memory by seeting the I/O buffer sizes dynamically instead of
2849      using the maximum available value.
2850      [Steve Henson]
2851
2852   *) New option -V for 'openssl ciphers'. This prints the ciphersuite code
2853      in addition to the text details.
2854      [Bodo Moeller]
2855
2856   *) Very, very preliminary EXPERIMENTAL support for printing of general
2857      ASN1 structures. This currently produces rather ugly output and doesn't
2858      handle several customised structures at all.
2859      [Steve Henson]
2860
2861   *) Integrated support for PVK file format and some related formats such
2862      as MS PUBLICKEYBLOB and PRIVATEKEYBLOB. Command line switches to support
2863      these in the 'rsa' and 'dsa' utilities.
2864      [Steve Henson]
2865
2866   *) Support for PKCS#1 RSAPublicKey format on rsa utility command line.
2867      [Steve Henson]
2868
2869   *) Remove the ancient ASN1_METHOD code. This was only ever used in one
2870      place for the (very old) "NETSCAPE" format certificates which are now
2871      handled using new ASN1 code equivalents.
2872      [Steve Henson]
2873
2874   *) Let the TLSv1_method() etc. functions return a 'const' SSL_METHOD
2875      pointer and make the SSL_METHOD parameter in SSL_CTX_new,
2876      SSL_CTX_set_ssl_version and SSL_set_ssl_method 'const'.
2877      [Nils Larsch]
2878
2879   *) Modify CRL distribution points extension code to print out previously
2880      unsupported fields. Enhance extension setting code to allow setting of
2881      all fields.
2882      [Steve Henson]
2883
2884   *) Add print and set support for Issuing Distribution Point CRL extension.
2885      [Steve Henson]
2886
2887   *) Change 'Configure' script to enable Camellia by default.
2888      [NTT]
2889
2890  Changes between 0.9.8m and 0.9.8n [24 Mar 2010]
2891
2892   *) When rejecting SSL/TLS records due to an incorrect version number, never
2893      update s->server with a new major version number.  As of
2894      - OpenSSL 0.9.8m if 'short' is a 16-bit type,
2895      - OpenSSL 0.9.8f if 'short' is longer than 16 bits,
2896      the previous behavior could result in a read attempt at NULL when
2897      receiving specific incorrect SSL/TLS records once record payload
2898      protection is active.  (CVE-2010-0740)
2899      [Bodo Moeller, Adam Langley <agl@chromium.org>]
2900
2901   *) Fix for CVE-2010-0433 where some kerberos enabled versions of OpenSSL 
2902      could be crashed if the relevant tables were not present (e.g. chrooted).
2903      [Tomas Hoger <thoger@redhat.com>]
2904
2905  Changes between 0.9.8l and 0.9.8m [25 Feb 2010]
2906
2907   *) Always check bn_wexpend() return values for failure.  (CVE-2009-3245)
2908      [Martin Olsson, Neel Mehta]
2909
2910   *) Fix X509_STORE locking: Every 'objs' access requires a lock (to
2911      accommodate for stack sorting, always a write lock!).
2912      [Bodo Moeller]
2913
2914   *) On some versions of WIN32 Heap32Next is very slow. This can cause
2915      excessive delays in the RAND_poll(): over a minute. As a workaround
2916      include a time check in the inner Heap32Next loop too.
2917      [Steve Henson]
2918
2919   *) The code that handled flushing of data in SSL/TLS originally used the
2920      BIO_CTRL_INFO ctrl to see if any data was pending first. This caused
2921      the problem outlined in PR#1949. The fix suggested there however can
2922      trigger problems with buggy BIO_CTRL_WPENDING (e.g. some versions
2923      of Apache). So instead simplify the code to flush unconditionally.
2924      This should be fine since flushing with no data to flush is a no op.
2925      [Steve Henson]
2926
2927   *) Handle TLS versions 2.0 and later properly and correctly use the
2928      highest version of TLS/SSL supported. Although TLS >= 2.0 is some way
2929      off ancient servers have a habit of sticking around for a while...
2930      [Steve Henson]
2931
2932   *) Modify compression code so it frees up structures without using the
2933      ex_data callbacks. This works around a problem where some applications
2934      call CRYPTO_cleanup_all_ex_data() before application exit (e.g. when
2935      restarting) then use compression (e.g. SSL with compression) later.
2936      This results in significant per-connection memory leaks and
2937      has caused some security issues including CVE-2008-1678 and
2938      CVE-2009-4355.
2939      [Steve Henson]
2940
2941   *) Constify crypto/cast (i.e., <openssl/cast.h>): a CAST_KEY doesn't
2942      change when encrypting or decrypting.
2943      [Bodo Moeller]
2944
2945   *) Add option SSL_OP_LEGACY_SERVER_CONNECT which will allow clients to
2946      connect and renegotiate with servers which do not support RI.
2947      Until RI is more widely deployed this option is enabled by default.
2948      [Steve Henson]
2949
2950   *) Add "missing" ssl ctrls to clear options and mode.
2951      [Steve Henson]
2952
2953   *) If client attempts to renegotiate and doesn't support RI respond with
2954      a no_renegotiation alert as required by RFC5746.  Some renegotiating
2955      TLS clients will continue a connection gracefully when they receive
2956      the alert. Unfortunately OpenSSL mishandled this alert and would hang
2957      waiting for a server hello which it will never receive. Now we treat a
2958      received no_renegotiation alert as a fatal error. This is because
2959      applications requesting a renegotiation might well expect it to succeed
2960      and would have no code in place to handle the server denying it so the
2961      only safe thing to do is to terminate the connection.
2962      [Steve Henson]
2963
2964   *) Add ctrl macro SSL_get_secure_renegotiation_support() which returns 1 if
2965      peer supports secure renegotiation and 0 otherwise. Print out peer
2966      renegotiation support in s_client/s_server.
2967      [Steve Henson]
2968
2969   *) Replace the highly broken and deprecated SPKAC certification method with
2970      the updated NID creation version. This should correctly handle UTF8.
2971      [Steve Henson]
2972
2973   *) Implement RFC5746. Re-enable renegotiation but require the extension
2974      as needed. Unfortunately, SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION
2975      turns out to be a bad idea. It has been replaced by
2976      SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION which can be set with
2977      SSL_CTX_set_options(). This is really not recommended unless you
2978      know what you are doing.
2979      [Eric Rescorla <ekr@networkresonance.com>, Ben Laurie, Steve Henson]
2980
2981   *) Fixes to stateless session resumption handling. Use initial_ctx when
2982      issuing and attempting to decrypt tickets in case it has changed during
2983      servername handling. Use a non-zero length session ID when attempting
2984      stateless session resumption: this makes it possible to determine if
2985      a resumption has occurred immediately after receiving server hello
2986      (several places in OpenSSL subtly assume this) instead of later in
2987      the handshake.
2988      [Steve Henson]
2989
2990   *) The functions ENGINE_ctrl(), OPENSSL_isservice(),
2991      CMS_get1_RecipientRequest() and RAND_bytes() can return <=0 on error
2992      fixes for a few places where the return code is not checked
2993      correctly.
2994      [Julia Lawall <julia@diku.dk>]
2995
2996   *) Add --strict-warnings option to Configure script to include devteam
2997      warnings in other configurations.
2998      [Steve Henson]
2999
3000   *) Add support for --libdir option and LIBDIR variable in makefiles. This
3001      makes it possible to install openssl libraries in locations which
3002      have names other than "lib", for example "/usr/lib64" which some
3003      systems need.
3004      [Steve Henson, based on patch from Jeremy Utley]
3005
3006   *) Don't allow the use of leading 0x80 in OIDs. This is a violation of
3007      X690 8.9.12 and can produce some misleading textual output of OIDs.
3008      [Steve Henson, reported by Dan Kaminsky]
3009
3010   *) Delete MD2 from algorithm tables. This follows the recommendation in
3011      several standards that it is not used in new applications due to
3012      several cryptographic weaknesses. For binary compatibility reasons
3013      the MD2 API is still compiled in by default.
3014      [Steve Henson]
3015
3016   *) Add compression id to {d2i,i2d}_SSL_SESSION so it is correctly saved
3017      and restored.
3018      [Steve Henson]
3019
3020   *) Rename uni2asc and asc2uni functions to OPENSSL_uni2asc and
3021      OPENSSL_asc2uni conditionally on Netware platforms to avoid a name
3022      clash.
3023      [Guenter <lists@gknw.net>]
3024
3025   *) Fix the server certificate chain building code to use X509_verify_cert(),
3026      it used to have an ad-hoc builder which was unable to cope with anything
3027      other than a simple chain.
3028      [David Woodhouse <dwmw2@infradead.org>, Steve Henson]
3029
3030   *) Don't check self signed certificate signatures in X509_verify_cert()
3031      by default (a flag can override this): it just wastes time without
3032      adding any security. As a useful side effect self signed root CAs
3033      with non-FIPS digests are now usable in FIPS mode.
3034      [Steve Henson]
3035
3036   *) In dtls1_process_out_of_seq_message() the check if the current message
3037      is already buffered was missing. For every new message was memory
3038      allocated, allowing an attacker to perform an denial of service attack
3039      with sending out of seq handshake messages until there is no memory
3040      left. Additionally every future messege was buffered, even if the
3041      sequence number made no sense and would be part of another handshake.
3042      So only messages with sequence numbers less than 10 in advance will be
3043      buffered.  (CVE-2009-1378)
3044      [Robin Seggelmann, discovered by Daniel Mentz]     
3045
3046   *) Records are buffered if they arrive with a future epoch to be
3047      processed after finishing the corresponding handshake. There is
3048      currently no limitation to this buffer allowing an attacker to perform
3049      a DOS attack with sending records with future epochs until there is no
3050      memory left. This patch adds the pqueue_size() function to determine
3051      the size of a buffer and limits the record buffer to 100 entries.
3052      (CVE-2009-1377)
3053      [Robin Seggelmann, discovered by Daniel Mentz]     
3054
3055   *) Keep a copy of frag->msg_header.frag_len so it can be used after the
3056      parent structure is freed.  (CVE-2009-1379)
3057      [Daniel Mentz]     
3058
3059   *) Handle non-blocking I/O properly in SSL_shutdown() call.
3060      [Darryl Miles <darryl-mailinglists@netbauds.net>]
3061
3062   *) Add 2.5.4.* OIDs
3063      [Ilya O. <vrghost@gmail.com>]
3064
3065  Changes between 0.9.8k and 0.9.8l  [5 Nov 2009]
3066
3067   *) Disable renegotiation completely - this fixes a severe security
3068      problem (CVE-2009-3555) at the cost of breaking all
3069      renegotiation. Renegotiation can be re-enabled by setting
3070      SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION in s3->flags at
3071      run-time. This is really not recommended unless you know what
3072      you're doing.
3073      [Ben Laurie]
3074
3075  Changes between 0.9.8j and 0.9.8k  [25 Mar 2009]
3076
3077   *) Don't set val to NULL when freeing up structures, it is freed up by
3078      underlying code. If sizeof(void *) > sizeof(long) this can result in
3079      zeroing past the valid field. (CVE-2009-0789)
3080      [Paolo Ganci <Paolo.Ganci@AdNovum.CH>]
3081
3082   *) Fix bug where return value of CMS_SignerInfo_verify_content() was not
3083      checked correctly. This would allow some invalid signed attributes to
3084      appear to verify correctly. (CVE-2009-0591)
3085      [Ivan Nestlerode <inestlerode@us.ibm.com>]
3086
3087   *) Reject UniversalString and BMPString types with invalid lengths. This
3088      prevents a crash in ASN1_STRING_print_ex() which assumes the strings have
3089      a legal length. (CVE-2009-0590)
3090      [Steve Henson]
3091
3092   *) Set S/MIME signing as the default purpose rather than setting it 
3093      unconditionally. This allows applications to override it at the store
3094      level.
3095      [Steve Henson]
3096
3097   *) Permit restricted recursion of ASN1 strings. This is needed in practice
3098      to handle some structures.
3099      [Steve Henson]
3100
3101   *) Improve efficiency of mem_gets: don't search whole buffer each time
3102      for a '\n'
3103      [Jeremy Shapiro <jnshapir@us.ibm.com>]
3104
3105   *) New -hex option for openssl rand.
3106      [Matthieu Herrb]
3107
3108   *) Print out UTF8String and NumericString when parsing ASN1.
3109      [Steve Henson]
3110
3111   *) Support NumericString type for name components.
3112      [Steve Henson]
3113
3114   *) Allow CC in the environment to override the automatically chosen
3115      compiler. Note that nothing is done to ensure flags work with the
3116      chosen compiler.
3117      [Ben Laurie]
3118
3119  Changes between 0.9.8i and 0.9.8j  [07 Jan 2009]
3120
3121   *) Properly check EVP_VerifyFinal() and similar return values
3122      (CVE-2008-5077).
3123      [Ben Laurie, Bodo Moeller, Google Security Team]
3124
3125   *) Enable TLS extensions by default.
3126      [Ben Laurie]
3127
3128   *) Allow the CHIL engine to be loaded, whether the application is
3129      multithreaded or not. (This does not release the developer from the
3130      obligation to set up the dynamic locking callbacks.)
3131      [Sander Temme <sander@temme.net>]
3132
3133   *) Use correct exit code if there is an error in dgst command.
3134      [Steve Henson; problem pointed out by Roland Dirlewanger]
3135
3136   *) Tweak Configure so that you need to say "experimental-jpake" to enable
3137      JPAKE, and need to use -DOPENSSL_EXPERIMENTAL_JPAKE in applications.
3138      [Bodo Moeller]
3139
3140   *) Add experimental JPAKE support, including demo authentication in
3141      s_client and s_server.
3142      [Ben Laurie]
3143
3144   *) Set the comparison function in v3_addr_canonize().
3145      [Rob Austein <sra@hactrn.net>]
3146
3147   *) Add support for XMPP STARTTLS in s_client.
3148      [Philip Paeps <philip@freebsd.org>]
3149
3150   *) Change the server-side SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG behavior
3151      to ensure that even with this option, only ciphersuites in the
3152      server's preference list will be accepted.  (Note that the option
3153      applies only when resuming a session, so the earlier behavior was
3154      just about the algorithm choice for symmetric cryptography.)
3155      [Bodo Moeller]
3156
3157  Changes between 0.9.8h and 0.9.8i  [15 Sep 2008]
3158
3159   *) Fix NULL pointer dereference if a DTLS server received
3160      ChangeCipherSpec as first record (CVE-2009-1386).
3161      [PR #1679]
3162
3163   *) Fix a state transition in s3_srvr.c and d1_srvr.c
3164      (was using SSL3_ST_CW_CLNT_HELLO_B, should be ..._ST_SW_SRVR_...).
3165      [Nagendra Modadugu]
3166
3167   *) The fix in 0.9.8c that supposedly got rid of unsafe
3168      double-checked locking was incomplete for RSA blinding,
3169      addressing just one layer of what turns out to have been
3170      doubly unsafe triple-checked locking.
3171
3172      So now fix this for real by retiring the MONT_HELPER macro
3173      in crypto/rsa/rsa_eay.c.
3174
3175      [Bodo Moeller; problem pointed out by Marius Schilder]
3176
3177   *) Various precautionary measures:
3178
3179      - Avoid size_t integer overflow in HASH_UPDATE (md32_common.h).
3180
3181      - Avoid a buffer overflow in d2i_SSL_SESSION() (ssl_asn1.c).
3182        (NB: This would require knowledge of the secret session ticket key
3183        to exploit, in which case you'd be SOL either way.)
3184
3185      - Change bn_nist.c so that it will properly handle input BIGNUMs
3186        outside the expected range.
3187
3188      - Enforce the 'num' check in BN_div() (bn_div.c) for non-BN_DEBUG
3189        builds.
3190
3191      [Neel Mehta, Bodo Moeller]
3192
3193   *) Allow engines to be "soft loaded" - i.e. optionally don't die if
3194      the load fails. Useful for distros.
3195      [Ben Laurie and the FreeBSD team]
3196
3197   *) Add support for Local Machine Keyset attribute in PKCS#12 files.
3198      [Steve Henson]
3199
3200   *) Fix BN_GF2m_mod_arr() top-bit cleanup code.
3201      [Huang Ying]
3202
3203   *) Expand ENGINE to support engine supplied SSL client certificate functions.
3204
3205      This work was sponsored by Logica.
3206      [Steve Henson]
3207
3208   *) Add CryptoAPI ENGINE to support use of RSA and DSA keys held in Windows
3209      keystores. Support for SSL/TLS client authentication too.
3210      Not compiled unless enable-capieng specified to Configure.
3211
3212      This work was sponsored by Logica.
3213      [Steve Henson]
3214
3215   *) Fix bug in X509_ATTRIBUTE creation: dont set attribute using
3216      ASN1_TYPE_set1 if MBSTRING flag set. This bug would crash certain
3217      attribute creation routines such as certifcate requests and PKCS#12
3218      files.
3219      [Steve Henson]
3220
3221  Changes between 0.9.8g and 0.9.8h  [28 May 2008]
3222
3223   *) Fix flaw if 'Server Key exchange message' is omitted from a TLS
3224      handshake which could lead to a cilent crash as found using the
3225      Codenomicon TLS test suite (CVE-2008-1672) 
3226      [Steve Henson, Mark Cox]
3227
3228   *) Fix double free in TLS server name extensions which could lead to
3229      a remote crash found by Codenomicon TLS test suite (CVE-2008-0891) 
3230      [Joe Orton]
3231
3232   *) Clear error queue in SSL_CTX_use_certificate_chain_file()
3233
3234      Clear the error queue to ensure that error entries left from
3235      older function calls do not interfere with the correct operation.
3236      [Lutz Jaenicke, Erik de Castro Lopo]
3237
3238   *) Remove root CA certificates of commercial CAs:
3239
3240      The OpenSSL project does not recommend any specific CA and does not
3241      have any policy with respect to including or excluding any CA.
3242      Therefore it does not make any sense to ship an arbitrary selection
3243      of root CA certificates with the OpenSSL software.
3244      [Lutz Jaenicke]
3245
3246   *) RSA OAEP patches to fix two separate invalid memory reads.
3247      The first one involves inputs when 'lzero' is greater than
3248      'SHA_DIGEST_LENGTH' (it would read about SHA_DIGEST_LENGTH bytes
3249      before the beginning of from). The second one involves inputs where
3250      the 'db' section contains nothing but zeroes (there is a one-byte
3251      invalid read after the end of 'db').
3252      [Ivan Nestlerode <inestlerode@us.ibm.com>]
3253
3254   *) Partial backport from 0.9.9-dev:
3255
3256      Introduce bn_mul_mont (dedicated Montgomery multiplication
3257      procedure) as a candidate for BIGNUM assembler implementation.
3258      While 0.9.9-dev uses assembler for various architectures, only
3259      x86_64 is available by default here in the 0.9.8 branch, and
3260      32-bit x86 is available through a compile-time setting.
3261
3262      To try the 32-bit x86 assembler implementation, use Configure
3263      option "enable-montasm" (which exists only for this backport).
3264
3265      As "enable-montasm" for 32-bit x86 disclaims code stability
3266      anyway, in this constellation we activate additional code
3267      backported from 0.9.9-dev for further performance improvements,
3268      namely BN_from_montgomery_word.  (To enable this otherwise,
3269      e.g. x86_64, try "-DMONT_FROM_WORD___NON_DEFAULT_0_9_8_BUILD".)
3270
3271      [Andy Polyakov (backport partially by Bodo Moeller)]
3272
3273   *) Add TLS session ticket callback. This allows an application to set
3274      TLS ticket cipher and HMAC keys rather than relying on hardcoded fixed
3275      values. This is useful for key rollover for example where several key
3276      sets may exist with different names.
3277      [Steve Henson]
3278
3279   *) Reverse ENGINE-internal logic for caching default ENGINE handles.
3280      This was broken until now in 0.9.8 releases, such that the only way
3281      a registered ENGINE could be used (assuming it initialises
3282      successfully on the host) was to explicitly set it as the default
3283      for the relevant algorithms. This is in contradiction with 0.9.7
3284      behaviour and the documentation. With this fix, when an ENGINE is
3285      registered into a given algorithm's table of implementations, the
3286      'uptodate' flag is reset so that auto-discovery will be used next
3287      time a new context for that algorithm attempts to select an
3288      implementation.
3289      [Ian Lister (tweaked by Geoff Thorpe)]
3290
3291   *) Backport of CMS code to OpenSSL 0.9.8. This differs from the 0.9.9
3292      implemention in the following ways:
3293
3294      Lack of EVP_PKEY_ASN1_METHOD means algorithm parameters have to be
3295      hard coded.
3296
3297      Lack of BER streaming support means one pass streaming processing is
3298      only supported if data is detached: setting the streaming flag is
3299      ignored for embedded content.
3300
3301      CMS support is disabled by default and must be explicitly enabled
3302      with the enable-cms configuration option.
3303      [Steve Henson]
3304
3305   *) Update the GMP engine glue to do direct copies between BIGNUM and
3306      mpz_t when openssl and GMP use the same limb size. Otherwise the
3307      existing "conversion via a text string export" trick is still used.
3308      [Paul Sheer <paulsheer@gmail.com>]
3309
3310   *) Zlib compression BIO. This is a filter BIO which compressed and
3311      uncompresses any data passed through it.
3312      [Steve Henson]
3313
3314   *) Add AES_wrap_key() and AES_unwrap_key() functions to implement
3315      RFC3394 compatible AES key wrapping.
3316      [Steve Henson]
3317
3318   *) Add utility functions to handle ASN1 structures. ASN1_STRING_set0():
3319      sets string data without copying. X509_ALGOR_set0() and
3320      X509_ALGOR_get0(): set and retrieve X509_ALGOR (AlgorithmIdentifier)
3321      data. Attribute function X509at_get0_data_by_OBJ(): retrieves data
3322      from an X509_ATTRIBUTE structure optionally checking it occurs only
3323      once. ASN1_TYPE_set1(): set and ASN1_TYPE structure copying supplied
3324      data.
3325      [Steve Henson]
3326
3327   *) Fix BN flag handling in RSA_eay_mod_exp() and BN_MONT_CTX_set()
3328      to get the expected BN_FLG_CONSTTIME behavior.
3329      [Bodo Moeller (Google)]
3330   
3331   *) Netware support:
3332
3333      - fixed wrong usage of ioctlsocket() when build for LIBC BSD sockets
3334      - fixed do_tests.pl to run the test suite with CLIB builds too (CLIB_OPT)
3335      - added some more tests to do_tests.pl
3336      - fixed RunningProcess usage so that it works with newer LIBC NDKs too
3337      - removed usage of BN_LLONG for CLIB builds to avoid runtime dependency
3338      - added new Configure targets netware-clib-bsdsock, netware-clib-gcc,
3339        netware-clib-bsdsock-gcc, netware-libc-bsdsock-gcc
3340      - various changes to netware.pl to enable gcc-cross builds on Win32
3341        platform
3342      - changed crypto/bio/b_sock.c to work with macro functions (CLIB BSD)
3343      - various changes to fix missing prototype warnings
3344      - fixed x86nasm.pl to create correct asm files for NASM COFF output
3345      - added AES, WHIRLPOOL and CPUID assembler code to build files
3346      - added missing AES assembler make rules to mk1mf.pl
3347      - fixed order of includes in apps/ocsp.c so that e_os.h settings apply
3348      [Guenter Knauf <eflash@gmx.net>]
3349
3350   *) Implement certificate status request TLS extension defined in RFC3546.
3351      A client can set the appropriate parameters and receive the encoded
3352      OCSP response via a callback. A server can query the supplied parameters
3353      and set the encoded OCSP response in the callback. Add simplified examples
3354      to s_client and s_server.
3355      [Steve Henson]
3356
3357  Changes between 0.9.8f and 0.9.8g  [19 Oct 2007]
3358
3359   *) Fix various bugs:
3360      + Binary incompatibility of ssl_ctx_st structure
3361      + DTLS interoperation with non-compliant servers
3362      + Don't call get_session_cb() without proposed session
3363      + Fix ia64 assembler code
3364      [Andy Polyakov, Steve Henson]
3365
3366  Changes between 0.9.8e and 0.9.8f  [11 Oct 2007]
3367
3368   *) DTLS Handshake overhaul. There were longstanding issues with
3369      OpenSSL DTLS implementation, which were making it impossible for
3370      RFC 4347 compliant client to communicate with OpenSSL server.
3371      Unfortunately just fixing these incompatibilities would "cut off"
3372      pre-0.9.8f clients. To allow for hassle free upgrade post-0.9.8e
3373      server keeps tolerating non RFC compliant syntax. The opposite is
3374      not true, 0.9.8f client can not communicate with earlier server.
3375      This update even addresses CVE-2007-4995.
3376      [Andy Polyakov]
3377
3378   *) Changes to avoid need for function casts in OpenSSL: some compilers
3379      (gcc 4.2 and later) reject their use.
3380      [Kurt Roeckx <kurt@roeckx.be>, Peter Hartley <pdh@utter.chaos.org.uk>,
3381       Steve Henson]
3382   
3383   *) Add RFC4507 support to OpenSSL. This includes the corrections in
3384      RFC4507bis. The encrypted ticket format is an encrypted encoded
3385      SSL_SESSION structure, that way new session features are automatically
3386      supported.
3387
3388      If a client application caches session in an SSL_SESSION structure
3389      support is transparent because tickets are now stored in the encoded
3390      SSL_SESSION.
3391      
3392      The SSL_CTX structure automatically generates keys for ticket
3393      protection in servers so again support should be possible
3394      with no application modification.
3395
3396      If a client or server wishes to disable RFC4507 support then the option
3397      SSL_OP_NO_TICKET can be set.
3398
3399      Add a TLS extension debugging callback to allow the contents of any client
3400      or server extensions to be examined.
3401
3402      This work was sponsored by Google.
3403      [Steve Henson]
3404
3405   *) Add initial support for TLS extensions, specifically for the server_name
3406      extension so far.  The SSL_SESSION, SSL_CTX, and SSL data structures now
3407      have new members for a host name.  The SSL data structure has an
3408      additional member SSL_CTX *initial_ctx so that new sessions can be
3409      stored in that context to allow for session resumption, even after the
3410      SSL has been switched to a new SSL_CTX in reaction to a client's
3411      server_name extension.
3412
3413      New functions (subject to change):
3414
3415          SSL_get_servername()
3416          SSL_get_servername_type()
3417          SSL_set_SSL_CTX()
3418
3419      New CTRL codes and macros (subject to change):
3420
3421          SSL_CTRL_SET_TLSEXT_SERVERNAME_CB
3422                                  - SSL_CTX_set_tlsext_servername_callback()
3423          SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG
3424                                       - SSL_CTX_set_tlsext_servername_arg()
3425          SSL_CTRL_SET_TLSEXT_HOSTNAME           - SSL_set_tlsext_host_name()
3426
3427      openssl s_client has a new '-servername ...' option.
3428
3429      openssl s_server has new options '-servername_host ...', '-cert2 ...',
3430      '-key2 ...', '-servername_fatal' (subject to change).  This allows
3431      testing the HostName extension for a specific single host name ('-cert'
3432      and '-key' remain fallbacks for handshakes without HostName
3433      negotiation).  If the unrecognized_name alert has to be sent, this by
3434      default is a warning; it becomes fatal with the '-servername_fatal'
3435      option.
3436
3437      [Peter Sylvester,  Remy Allais, Christophe Renou, Steve Henson]
3438
3439   *) Add AES and SSE2 assembly language support to VC++ build.
3440      [Steve Henson]
3441
3442   *) Mitigate attack on final subtraction in Montgomery reduction.
3443      [Andy Polyakov]
3444
3445   *) Fix crypto/ec/ec_mult.c to work properly with scalars of value 0
3446      (which previously caused an internal error).
3447      [Bodo Moeller]
3448
3449   *) Squeeze another 10% out of IGE mode when in != out.
3450      [Ben Laurie]
3451
3452   *) AES IGE mode speedup.
3453      [Dean Gaudet (Google)]
3454
3455   *) Add the Korean symmetric 128-bit cipher SEED (see
3456      http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp) and
3457      add SEED ciphersuites from RFC 4162:
3458
3459         TLS_RSA_WITH_SEED_CBC_SHA      =  "SEED-SHA"
3460         TLS_DHE_DSS_WITH_SEED_CBC_SHA  =  "DHE-DSS-SEED-SHA"
3461         TLS_DHE_RSA_WITH_SEED_CBC_SHA  =  "DHE-RSA-SEED-SHA"
3462         TLS_DH_anon_WITH_SEED_CBC_SHA  =  "ADH-SEED-SHA"
3463
3464      To minimize changes between patchlevels in the OpenSSL 0.9.8
3465      series, SEED remains excluded from compilation unless OpenSSL
3466      is configured with 'enable-seed'.
3467      [KISA, Bodo Moeller]
3468
3469   *) Mitigate branch prediction attacks, which can be practical if a
3470      single processor is shared, allowing a spy process to extract
3471      information.  For detailed background information, see
3472      http://eprint.iacr.org/2007/039 (O. Aciicmez, S. Gueron,
3473      J.-P. Seifert, "New Branch Prediction Vulnerabilities in OpenSSL
3474      and Necessary Software Countermeasures").  The core of the change
3475      are new versions BN_div_no_branch() and
3476      BN_mod_inverse_no_branch() of BN_div() and BN_mod_inverse(),
3477      respectively, which are slower, but avoid the security-relevant
3478      conditional branches.  These are automatically called by BN_div()
3479      and BN_mod_inverse() if the flag BN_FLG_CONSTTIME is set for one
3480      of the input BIGNUMs.  Also, BN_is_bit_set() has been changed to
3481      remove a conditional branch.
3482
3483      BN_FLG_CONSTTIME is the new name for the previous
3484      BN_FLG_EXP_CONSTTIME flag, since it now affects more than just
3485      modular exponentiation.  (Since OpenSSL 0.9.7h, setting this flag
3486      in the exponent causes BN_mod_exp_mont() to use the alternative
3487      implementation in BN_mod_exp_mont_consttime().)  The old name
3488      remains as a deprecated alias.
3489
3490      Similary, RSA_FLAG_NO_EXP_CONSTTIME is replaced by a more general
3491      RSA_FLAG_NO_CONSTTIME flag since the RSA implementation now uses
3492      constant-time implementations for more than just exponentiation.
3493      Here too the old name is kept as a deprecated alias.
3494
3495      BN_BLINDING_new() will now use BN_dup() for the modulus so that
3496      the BN_BLINDING structure gets an independent copy of the
3497      modulus.  This means that the previous "BIGNUM *m" argument to
3498      BN_BLINDING_new() and to BN_BLINDING_create_param() now
3499      essentially becomes "const BIGNUM *m", although we can't actually
3500      change this in the header file before 0.9.9.  It allows
3501      RSA_setup_blinding() to use BN_with_flags() on the modulus to
3502      enable BN_FLG_CONSTTIME.
3503
3504      [Matthew D Wood (Intel Corp)]
3505
3506   *) In the SSL/TLS server implementation, be strict about session ID
3507      context matching (which matters if an application uses a single
3508      external cache for different purposes).  Previously,
3509      out-of-context reuse was forbidden only if SSL_VERIFY_PEER was
3510      set.  This did ensure strict client verification, but meant that,
3511      with applications using a single external cache for quite
3512      different requirements, clients could circumvent ciphersuite
3513      restrictions for a given session ID context by starting a session
3514      in a different context.
3515      [Bodo Moeller]
3516
3517   *) Include "!eNULL" in SSL_DEFAULT_CIPHER_LIST to make sure that
3518      a ciphersuite string such as "DEFAULT:RSA" cannot enable
3519      authentication-only ciphersuites.
3520      [Bodo Moeller]
3521
3522   *) Update the SSL_get_shared_ciphers() fix CVE-2006-3738 which was
3523      not complete and could lead to a possible single byte overflow
3524      (CVE-2007-5135) [Ben Laurie]
3525
3526  Changes between 0.9.8d and 0.9.8e  [23 Feb 2007]
3527
3528   *) Since AES128 and AES256 (and similarly Camellia128 and
3529      Camellia256) share a single mask bit in the logic of
3530      ssl/ssl_ciph.c, the code for masking out disabled ciphers needs a
3531      kludge to work properly if AES128 is available and AES256 isn't
3532      (or if Camellia128 is available and Camellia256 isn't).
3533      [Victor Duchovni]
3534
3535   *) Fix the BIT STRING encoding generated by crypto/ec/ec_asn1.c
3536      (within i2d_ECPrivateKey, i2d_ECPKParameters, i2d_ECParameters):
3537      When a point or a seed is encoded in a BIT STRING, we need to
3538      prevent the removal of trailing zero bits to get the proper DER
3539      encoding.  (By default, crypto/asn1/a_bitstr.c assumes the case
3540      of a NamedBitList, for which trailing 0 bits need to be removed.)
3541      [Bodo Moeller]
3542
3543   *) Have SSL/TLS server implementation tolerate "mismatched" record
3544      protocol version while receiving ClientHello even if the
3545      ClientHello is fragmented.  (The server can't insist on the
3546      particular protocol version it has chosen before the ServerHello
3547      message has informed the client about his choice.)
3548      [Bodo Moeller]
3549
3550   *) Add RFC 3779 support.
3551      [Rob Austein for ARIN, Ben Laurie]
3552
3553   *) Load error codes if they are not already present instead of using a
3554      static variable. This allows them to be cleanly unloaded and reloaded.
3555      Improve header file function name parsing.
3556      [Steve Henson]
3557
3558   *) extend SMTP and IMAP protocol emulation in s_client to use EHLO
3559      or CAPABILITY handshake as required by RFCs.
3560      [Goetz Babin-Ebell]
3561
3562  Changes between 0.9.8c and 0.9.8d  [28 Sep 2006]
3563
3564   *) Introduce limits to prevent malicious keys being able to
3565      cause a denial of service.  (CVE-2006-2940)
3566      [Steve Henson, Bodo Moeller]
3567
3568   *) Fix ASN.1 parsing of certain invalid structures that can result
3569      in a denial of service.  (CVE-2006-2937)  [Steve Henson]
3570
3571   *) Fix buffer overflow in SSL_get_shared_ciphers() function. 
3572      (CVE-2006-3738) [Tavis Ormandy and Will Drewry, Google Security Team]
3573
3574   *) Fix SSL client code which could crash if connecting to a
3575      malicious SSLv2 server.  (CVE-2006-4343)
3576      [Tavis Ormandy and Will Drewry, Google Security Team]
3577
3578   *) Since 0.9.8b, ciphersuite strings naming explicit ciphersuites
3579      match only those.  Before that, "AES256-SHA" would be interpreted
3580      as a pattern and match "AES128-SHA" too (since AES128-SHA got
3581      the same strength classification in 0.9.7h) as we currently only
3582      have a single AES bit in the ciphersuite description bitmap.
3583      That change, however, also applied to ciphersuite strings such as
3584      "RC4-MD5" that intentionally matched multiple ciphersuites --
3585      namely, SSL 2.0 ciphersuites in addition to the more common ones
3586      from SSL 3.0/TLS 1.0.
3587
3588      So we change the selection algorithm again: Naming an explicit
3589      ciphersuite selects this one ciphersuite, and any other similar
3590      ciphersuite (same bitmap) from *other* protocol versions.
3591      Thus, "RC4-MD5" again will properly select both the SSL 2.0
3592      ciphersuite and the SSL 3.0/TLS 1.0 ciphersuite.
3593
3594      Since SSL 2.0 does not have any ciphersuites for which the
3595      128/256 bit distinction would be relevant, this works for now.
3596      The proper fix will be to use different bits for AES128 and
3597      AES256, which would have avoided the problems from the beginning;
3598      however, bits are scarce, so we can only do this in a new release
3599      (not just a patchlevel) when we can change the SSL_CIPHER
3600      definition to split the single 'unsigned long mask' bitmap into
3601      multiple values to extend the available space.
3602
3603      [Bodo Moeller]
3604
3605  Changes between 0.9.8b and 0.9.8c  [05 Sep 2006]
3606
3607   *) Avoid PKCS #1 v1.5 signature attack discovered by Daniel Bleichenbacher
3608      (CVE-2006-4339)  [Ben Laurie and Google Security Team]
3609
3610   *) Add AES IGE and biIGE modes.
3611      [Ben Laurie]
3612
3613   *) Change the Unix randomness entropy gathering to use poll() when
3614      possible instead of select(), since the latter has some
3615      undesirable limitations.
3616      [Darryl Miles via Richard Levitte and Bodo Moeller]
3617
3618   *) Disable "ECCdraft" ciphersuites more thoroughly.  Now special
3619      treatment in ssl/ssl_ciph.s makes sure that these ciphersuites
3620      cannot be implicitly activated as part of, e.g., the "AES" alias.
3621      However, please upgrade to OpenSSL 0.9.9[-dev] for
3622      non-experimental use of the ECC ciphersuites to get TLS extension
3623      support, which is required for curve and point format negotiation
3624      to avoid potential handshake problems.
3625      [Bodo Moeller]
3626
3627   *) Disable rogue ciphersuites:
3628
3629       - SSLv2 0x08 0x00 0x80 ("RC4-64-MD5")
3630       - SSLv3/TLSv1 0x00 0x61 ("EXP1024-RC2-CBC-MD5")
3631       - SSLv3/TLSv1 0x00 0x60 ("EXP1024-RC4-MD5")
3632
3633      The latter two were purportedly from
3634      draft-ietf-tls-56-bit-ciphersuites-0[01].txt, but do not really
3635      appear there.
3636
3637      Also deactivate the remaining ciphersuites from
3638      draft-ietf-tls-56-bit-ciphersuites-01.txt.  These are just as
3639      unofficial, and the ID has long expired.
3640      [Bodo Moeller]
3641
3642   *) Fix RSA blinding Heisenbug (problems sometimes occured on
3643      dual-core machines) and other potential thread-safety issues.
3644    &n