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