Ensure we check i2d_X509 return val
[openssl.git] / CHANGES
diff --git a/CHANGES b/CHANGES
index 343d847061f75e3411fce7afaafe8d7519197b7f..2d73627aaa9ed875e4063be381594ca761b59b74 100644 (file)
--- a/CHANGES
+++ b/CHANGES
  OpenSSL CHANGES
  _______________
 
- Changes between 1.0.2d and 1.0.2e [xx XXX xxxx]
+ Changes between 1.0.2g and 1.0.2h [xx XXX xxxx]
 
-  *) In DSA_generate_parameters_ex, if the provided seed is too short,
-     return an error
-     [Rich Salz and Ismo Puustinen <ismo.puustinen@intel.com>]
-
-  *) Rewrite PSK to support ECDHE_PSK, DHE_PSK and RSA_PSK. Add ciphersuites
-     from RFC4279, RFC4785, RFC5487, RFC5489.
+  *) Modify behavior of ALPN to invoke callback after SNI/servername
+     callback, such that updates to the SSL_CTX affect ALPN.
+     [Todd Short]
 
-     Thanks to Christian J. Dietrich and Giuseppe D'Angelo for the
-     original RSA_PSK patch.
-     [Steve Henson]
+  *) Remove LOW from the DEFAULT cipher list.  This removes singles DES from the
+     default.
+     [Kurt Roeckx]
 
-  *) Dropped support for the SSL3_FLAGS_DELAY_CLIENT_FINISHED flag. This SSLeay
-     era flag was never set throughout the codebase (only read). Also removed
-     SSL3_FLAGS_POP_BUFFER which was only used if
-     SSL3_FLAGS_DELAY_CLIENT_FINISHED was also set.
-     [Matt Caswell]
+  *) Only remove the SSLv2 methods with the no-ssl2-method option. When the
+     methods are enabled and ssl2 is disabled the methods return NULL.
+     [Kurt Roeckx]
 
-  *) Changed the default name options in the "ca", "crl", "req" and "x509"
-     to be "oneline" instead of "compat".
-     [Richard Levitte]
+ Changes between 1.0.2f and 1.0.2g [1 Mar 2016]
+
+  * Disable weak ciphers in SSLv3 and up in default builds of OpenSSL.
+    Builds that are not configured with "enable-weak-ssl-ciphers" will not
+    provide any "EXPORT" or "LOW" strength ciphers.
+    [Viktor Dukhovni]
+
+  * Disable SSLv2 default build, default negotiation and weak ciphers.  SSLv2
+    is by default disabled at build-time.  Builds that are not configured with
+    "enable-ssl2" will not support SSLv2.  Even if "enable-ssl2" is used,
+    users who want to negotiate SSLv2 via the version-flexible SSLv23_method()
+    will need to explicitly call either of:
+
+        SSL_CTX_clear_options(ctx, SSL_OP_NO_SSLv2);
+    or
+        SSL_clear_options(ssl, SSL_OP_NO_SSLv2);
+
+    as appropriate.  Even if either of those is used, or the application
+    explicitly uses the version-specific SSLv2_method() or its client and
+    server variants, SSLv2 ciphers vulnerable to exhaustive search key
+    recovery have been removed.  Specifically, the SSLv2 40-bit EXPORT
+    ciphers, and SSLv2 56-bit DES are no longer available.
+    (CVE-2016-0800)
+    [Viktor Dukhovni]
+
+  *) Fix a double-free in DSA code
+
+     A double free bug was discovered when OpenSSL parses malformed DSA private
+     keys and could lead to a DoS attack or memory corruption for applications
+     that receive DSA private keys from untrusted sources.  This scenario is
+     considered rare.
+
+     This issue was reported to OpenSSL by Adam Langley(Google/BoringSSL) using
+     libFuzzer.
+     (CVE-2016-0705)
+     [Stephen Henson]
 
-  *) Remove SSL_OP_TLS_BLOCK_PADDING_BUG. This is SSLeay legacy, we're
-     not aware of clients that still exhibit this bug, and the workaround
-     hasn't been working properly for a while.
-     [Emilia Käsper]
+  *) Disable SRP fake user seed to address a server memory leak.
 
-  *) The return type of BIO_number_read() and BIO_number_written() as well as
-     the corresponding num_read and num_write members in the BIO structure has
-     changed from unsigned long to uint64_t. On platforms where an unsigned
-     long is 32 bits (e.g. Windows) these counters could overflow if >4Gb is
-     transferred.
-     [Matt Caswell]
+     Add a new method SRP_VBASE_get1_by_user that handles the seed properly.
 
-  *) Given the pervasive nature of TLS extensions it is inadvisable to run
-     OpenSSL without support for them. It also means that maintaining
-     the OPENSSL_NO_TLSEXT option within the code is very invasive (and probably
-     not well tested). Therefore the OPENSSL_NO_TLSEXT option has been removed.
-     [Matt Caswell]
+     SRP_VBASE_get_by_user had inconsistent memory management behaviour.
+     In order to fix an unavoidable memory leak, SRP_VBASE_get_by_user
+     was changed to ignore the "fake user" SRP seed, even if the seed
+     is configured.
 
-  *) Removed support for the two export grade static DH ciphersuites
-     EXP-DH-RSA-DES-CBC-SHA and EXP-DH-DSS-DES-CBC-SHA. These two ciphersuites
-     were newly added (along with a number of other static DH ciphersuites) to
-     1.0.2. However the two export ones have *never* worked since they were
-     introduced. It seems strange in any case to be adding new export
-     ciphersuites, and given "logjam" it also does not seem correct to fix them.
-     [Matt Caswell]
+     Users should use SRP_VBASE_get1_by_user instead. Note that in
+     SRP_VBASE_get1_by_user, caller must free the returned value. Note
+     also that even though configuring the SRP seed attempts to hide
+     invalid usernames by continuing the handshake with fake
+     credentials, this behaviour is not constant time and no strong
+     guarantees are made that the handshake is indistinguishable from
+     that of a valid user.
+     (CVE-2016-0798)
+     [Emilia Käsper]
 
-  *) Version negotiation has been rewritten. In particular SSLv23_method(),
-     SSLv23_client_method() and SSLv23_server_method() have been deprecated,
-     and turned into macros which simply call the new preferred function names
-     TLS_method(), TLS_client_method() and TLS_server_method(). All new code
-     should use the new names instead. Also as part of this change the ssl23.h
-     header file has been removed.
+  *) Fix BN_hex2bn/BN_dec2bn NULL pointer deref/heap corruption
+
+     In the BN_hex2bn function the number of hex digits is calculated using an
+     int value |i|. Later |bn_expand| is called with a value of |i * 4|. For
+     large values of |i| this can result in |bn_expand| not allocating any
+     memory because |i * 4| is negative. This can leave the internal BIGNUM data
+     field as NULL leading to a subsequent NULL ptr deref. For very large values
+     of |i|, the calculation |i * 4| could be a positive value smaller than |i|.
+     In this case memory is allocated to the internal BIGNUM data field, but it
+     is insufficiently sized leading to heap corruption. A similar issue exists
+     in BN_dec2bn. This could have security consequences if BN_hex2bn/BN_dec2bn
+     is ever called by user applications with very large untrusted hex/dec data.
+     This is anticipated to be a rare occurrence.
+
+     All OpenSSL internal usage of these functions use data that is not expected
+     to be untrusted, e.g. config file data or application command line
+     arguments. If user developed applications generate config file data based
+     on untrusted data then it is possible that this could also lead to security
+     consequences. This is also anticipated to be rare.
+
+     This issue was reported to OpenSSL by Guido Vranken.
+     (CVE-2016-0797)
      [Matt Caswell]
 
-  *) Support for Kerberos ciphersuites in TLS (RFC2712) has been removed. This
-     code and the associated standard is no longer considered fit-for-purpose.
+  *) Fix memory issues in BIO_*printf functions
+
+     The internal |fmtstr| function used in processing a "%s" format string in
+     the BIO_*printf functions could overflow while calculating the length of a
+     string and cause an OOB read when printing very long strings.
+
+     Additionally the internal |doapr_outch| function can attempt to write to an
+     OOB memory location (at an offset from the NULL pointer) in the event of a
+     memory allocation failure. In 1.0.2 and below this could be caused where
+     the size of a buffer to be allocated is greater than INT_MAX. E.g. this
+     could be in processing a very long "%s" format string. Memory leaks can
+     also occur.
+
+     The first issue may mask the second issue dependent on compiler behaviour.
+     These problems could enable attacks where large amounts of untrusted data
+     is passed to the BIO_*printf functions. If applications use these functions
+     in this way then they could be vulnerable. OpenSSL itself uses these
+     functions when printing out human-readable dumps of ASN.1 data. Therefore
+     applications that print this data could be vulnerable if the data is from
+     untrusted sources. OpenSSL command line applications could also be
+     vulnerable where they print out ASN.1 data, or if untrusted data is passed
+     as command line arguments.
+
+     Libssl is not considered directly vulnerable. Additionally certificates etc
+     received via remote connections via libssl are also unlikely to be able to
+     trigger these issues because of message size limits enforced within libssl.
+
+     This issue was reported to OpenSSL Guido Vranken.
+     (CVE-2016-0799)
      [Matt Caswell]
 
-  *) RT2547 was closed.  When generating a private key, try to make the
-     output file readable only by the owner.  This behavior change might
-     be noticeable when interacting with other software.
-
-  *) Added HTTP GET support to the ocsp command.
-     [Rich Salz]
+  *) Side channel attack on modular exponentiation
 
-  *) RAND_pseudo_bytes has been deprecated. Users should use RAND_bytes instead.
-     [Matt Caswell]
-
-  *) Added support for TLS extended master secret from
-     draft-ietf-tls-session-hash-03.txt. Thanks for Alfredo Pironti for an
-     initial patch which was a great help during development.
-     [Steve Henson]
+     A side-channel attack was found which makes use of cache-bank conflicts on
+     the Intel Sandy-Bridge microarchitecture which could lead to the recovery
+     of RSA keys.  The ability to exploit this issue is limited as it relies on
+     an attacker who has control of code in a thread running on the same
+     hyper-threaded core as the victim thread which is performing decryptions.
 
-  *) All libssl internal structures have been removed from the public header
-     files, and the OPENSSL_NO_SSL_INTERN option has been removed (since it is
-     now redundant). Users should not attempt to access internal structures
-     directly. Instead they should use the provided API functions.
-     [Matt Caswell]
+     This issue was reported to OpenSSL by Yuval Yarom, The University of
+     Adelaide and NICTA, Daniel Genkin, Technion and Tel Aviv University, and
+     Nadia Heninger, University of Pennsylvania with more information at
+     http://cachebleed.info.
+     (CVE-2016-0702)
+     [Andy Polyakov]
 
-  *) config has been changed so that by default OPENSSL_NO_DEPRECATED is used.
-     Access to deprecated functions can be re-enabled by running config with
-     "enable-deprecated". In addition applications wishing to use deprecated
-     functions must define OPENSSL_USE_DEPRECATED. Note that this new behaviour
-     will, by default, disable some transitive includes that previously existed
-     in the header files (e.g. ec.h will no longer, by default, include bn.h)
-     [Matt Caswell]
+  *) Change the req app to generate a 2048-bit RSA/DSA key by default,
+     if no keysize is specified with default_bits. This fixes an
+     omission in an earlier change that changed all RSA/DSA key generation
+     apps to use 2048 bits by default.
+     [Emilia Käsper]
 
-  *) Added support for OCB mode. OpenSSL has been granted a patent license
-     compatible with the OpenSSL license for use of OCB. Details are available
-     at https://www.openssl.org/docs/misc/OCB-patent-grant-OpenSSL.pdf. Support
-     for OCB can be removed by calling config with no-ocb.
+ Changes between 1.0.2e and 1.0.2f [28 Jan 2016]
+
+  *) DH small subgroups
+
+     Historically OpenSSL only ever generated DH parameters based on "safe"
+     primes. More recently (in version 1.0.2) support was provided for
+     generating X9.42 style parameter files such as those required for RFC 5114
+     support. The primes used in such files may not be "safe". Where an
+     application is using DH configured with parameters based on primes that are
+     not "safe" then an attacker could use this fact to find a peer's private
+     DH exponent. This attack requires that the attacker complete multiple
+     handshakes in which the peer uses the same private DH exponent. For example
+     this could be used to discover a TLS server's private DH exponent if it's
+     reusing the private DH exponent or it's using a static DH ciphersuite.
+
+     OpenSSL provides the option SSL_OP_SINGLE_DH_USE for ephemeral DH (DHE) in
+     TLS. It is not on by default. If the option is not set then the server
+     reuses the same private DH exponent for the life of the server process and
+     would be vulnerable to this attack. It is believed that many popular
+     applications do set this option and would therefore not be at risk.
+
+     The fix for this issue adds an additional check where a "q" parameter is
+     available (as is the case in X9.42 based parameters). This detects the
+     only known attack, and is the only possible defense for static DH
+     ciphersuites. This could have some performance impact.
+
+     Additionally the SSL_OP_SINGLE_DH_USE option has been switched on by
+     default and cannot be disabled. This could have some performance impact.
+
+     This issue was reported to OpenSSL by Antonio Sanso (Adobe).
+     (CVE-2016-0701)
      [Matt Caswell]
 
-  *) SSLv2 support has been removed.  It still supports receiving a SSLv2
-     compatible client hello.
-     [Kurt Roeckx]
-
-  *) Increased the minimal RSA keysize from 256 to 512 bits [Rich Salz],
-     done while fixing the error code for the key-too-small case.
-     [Annie Yousar <a.yousar@informatik.hu-berlin.de>]
-
-  *) CA.sh has been removmed; use CA.pl instead.
-     [Rich Salz]
-
-  *) Removed old DES API.
-     [Rich Salz]
-
-  *) Remove various unsupported platforms:
-        Sony NEWS4
-        BEOS and BEOS_R5
-        NeXT
-        SUNOS
-        MPE/iX
-        Sinix/ReliantUNIX RM400
-        DGUX
-        NCR
-        Tandem
-        Cray
-        16-bit platforms such as WIN16
-     [Rich Salz]
-
-  *) Clean up OPENSSL_NO_xxx #define's
-        Use setbuf() and remove OPENSSL_NO_SETVBUF_IONBF
-        Rename OPENSSL_SYSNAME_xxx to OPENSSL_SYS_xxx
-        OPENSSL_NO_EC{DH,DSA} merged into OPENSSL_NO_EC
-        OPENSSL_NO_RIPEMD160, OPENSSL_NO_RIPEMD merged into OPENSSL_NO_RMD160
-        OPENSSL_NO_FP_API merged into OPENSSL_NO_STDIO
-        Remove OPENSSL_NO_BIO OPENSSL_NO_BUFFER OPENSSL_NO_CHAIN_VERIFY
-        OPENSSL_NO_EVP OPENSSL_NO_FIPS_ERR OPENSSL_NO_HASH_COMP
-        OPENSSL_NO_LHASH OPENSSL_NO_OBJECT OPENSSL_NO_SPEED OPENSSL_NO_STACK
-        OPENSSL_NO_X509 OPENSSL_NO_X509_VERIFY
-        Remove MS_STATIC; it's a relic from platforms <32 bits.
-     [Rich Salz]
-
-  *) Cleaned up dead code
-        Remove all but one '#ifdef undef' which is to be looked at.
-     [Rich Salz]
-
-  *) Clean up calling of xxx_free routines.
-        Just like free(), fix most of the xxx_free routines to accept
-        NULL.  Remove the non-null checks from callers.  Save much code.
-     [Rich Salz]
-
-  *) Add secure heap for storage of private keys (when possible).
-     Add BIO_s_secmem(), CBIGNUM, etc.
-     Contributed by Akamai Technologies under our Corporate CLA.
-     [Rich Salz]
-
-  *) Experimental support for a new, fast, unbiased prime candidate generator,
-     bn_probable_prime_dh_coprime(). Not currently used by any prime generator.
-     [Felix Laurie von Massenbach <felix@erbridge.co.uk>]
-
-  *) New output format NSS in the sess_id command line tool. This allows
-     exporting the session id and the master key in NSS keylog format.
-     [Martin Kaiser <martin@kaiser.cx>]
-
-  *) Harmonize version and its documentation. -f flag is used to display
-     compilation flags.
-     [mancha <mancha1@zoho.com>]
-
-  *) Fix eckey_priv_encode so it immediately returns an error upon a failure
-     in i2d_ECPrivateKey.  Thanks to Ted Unangst for feedback on this issue.
-     [mancha <mancha1@zoho.com>]
+  *) SSLv2 doesn't block disabled ciphers
 
-  *) Fix some double frees. These are not thought to be exploitable.
-     [mancha <mancha1@zoho.com>]
+     A malicious client can negotiate SSLv2 ciphers that have been disabled on
+     the server and complete SSLv2 handshakes even if all SSLv2 ciphers have
+     been disabled, provided that the SSLv2 protocol was not also disabled via
+     SSL_OP_NO_SSLv2.
 
-  *) A missing bounds check in the handling of the TLS heartbeat extension
-     can be used to reveal up to 64k of memory to a connected client or
-     server.
+     This issue was reported to OpenSSL on 26th December 2015 by Nimrod Aviram
+     and Sebastian Schinzel.
+     (CVE-2015-3197)
+     [Viktor Dukhovni]
 
-     Thanks for Neel Mehta of Google Security for discovering this bug and to
-     Adam Langley <agl@chromium.org> and Bodo Moeller <bmoeller@acm.org> for
-     preparing the fix (CVE-2014-0160)
-     [Adam Langley, Bodo Moeller]
-
-  *) Fix for the attack described in the paper "Recovering OpenSSL
-     ECDSA Nonces Using the FLUSH+RELOAD Cache Side-channel Attack"
-     by Yuval Yarom and Naomi Benger. Details can be obtained from:
-     http://eprint.iacr.org/2014/140
-
-     Thanks to Yuval Yarom and Naomi Benger for discovering this
-     flaw and to Yuval Yarom for supplying a fix (CVE-2014-0076)
-     [Yuval Yarom and Naomi Benger]
-
-  *) Use algorithm specific chains in SSL_CTX_use_certificate_chain_file():
-     this fixes a limitation in previous versions of OpenSSL.
-     [Steve Henson]
-
-  *) Experimental encrypt-then-mac support.
-    
-     Experimental support for encrypt then mac from
-     draft-gutmann-tls-encrypt-then-mac-02.txt
-
-     To enable it set the appropriate extension number (0x42 for the test
-     server) using e.g. -DTLSEXT_TYPE_encrypt_then_mac=0x42
-     For non-compliant peers (i.e. just about everything) this should have no
-     effect.
-
-     WARNING: EXPERIMENTAL, SUBJECT TO CHANGE.
-
-     [Steve Henson]
-
-  *) Add EVP support for key wrapping algorithms, to avoid problems with
-     existing code the flag EVP_CIPHER_CTX_WRAP_ALLOW has to be set in
-     the EVP_CIPHER_CTX or an error is returned. Add AES and DES3 wrap
-     algorithms and include tests cases.
-     [Steve Henson]
-
-  *) Extend CMS code to support RSA-PSS signatures and RSA-OAEP for
-     enveloped data.
-     [Steve Henson]
-
-  *) Extended RSA OAEP support via EVP_PKEY API. Options to specify digest,
-     MGF1 digest and OAEP label.
-     [Steve Henson]
-
-  *) Make openssl verify return errors.
-     [Chris Palmer <palmer@google.com> and Ben Laurie]
-
-  *) New function ASN1_TIME_diff to calculate the difference between two
-     ASN1_TIME structures or one structure and the current time.
-     [Steve Henson]
-
-  *) Update fips_test_suite to support multiple command line options. New
-     test to induce all self test errors in sequence and check expected
-     failures.
-     [Steve Henson]
-
-  *) Add FIPS_{rsa,dsa,ecdsa}_{sign,verify} functions which digest and
-     sign or verify all in one operation.
-     [Steve Henson]
-
-  *) Add fips_algvs: a multicall fips utility incorporating all the algorithm
-     test programs and fips_test_suite. Includes functionality to parse
-     the minimal script output of fipsalgest.pl directly.
-     [Steve Henson]
-
-  *) Add authorisation parameter to FIPS_module_mode_set().
-     [Steve Henson]
-
-  *) Add FIPS selftest for ECDH algorithm using P-224 and B-233 curves.
-     [Steve Henson]
-
-  *) Use separate DRBG fields for internal and external flags. New function
-     FIPS_drbg_health_check() to perform on demand health checking. Add
-     generation tests to fips_test_suite with reduced health check interval to 
-     demonstrate periodic health checking. Add "nodh" option to
-     fips_test_suite to skip very slow DH test.
-     [Steve Henson]
-
-  *) New function FIPS_get_cipherbynid() to lookup FIPS supported ciphers
-     based on NID.
-     [Steve Henson]
-
-  *) More extensive health check for DRBG checking many more failure modes.
-     New function FIPS_selftest_drbg_all() to handle every possible DRBG
-     combination: call this in fips_test_suite.
-     [Steve Henson]
-
-  *) Add support for Dual EC DRBG from SP800-90. Update DRBG algorithm test
-     and POST to handle Dual EC cases.
-     [Steve Henson]
-
-  *) Add support for canonical generation of DSA parameter 'g'. See 
-     FIPS 186-3 A.2.3.
-
-  *) Add support for HMAC DRBG from SP800-90. Update DRBG algorithm test and
-     POST to handle HMAC cases.
-     [Steve Henson]
-
-  *) Add functions FIPS_module_version() and FIPS_module_version_text()
-     to return numerical and string versions of the FIPS module number.
-     [Steve Henson]
-
-  *) Rename FIPS_mode_set and FIPS_mode to FIPS_module_mode_set and
-     FIPS_module_mode. FIPS_mode and FIPS_mode_set will be implemented
-     outside the validated module in the FIPS capable OpenSSL.
-     [Steve Henson]
-
-  *) Minor change to DRBG entropy callback semantics. In some cases
-     there is no multiple of the block length between min_len and
-     max_len. Allow the callback to return more than max_len bytes
-     of entropy but discard any extra: it is the callback's responsibility
-     to ensure that the extra data discarded does not impact the
-     requested amount of entropy.
-     [Steve Henson]
-
-  *) Add PRNG security strength checks to RSA, DSA and ECDSA using 
-     information in FIPS186-3, SP800-57 and SP800-131A.
-     [Steve Henson]
-
-  *) CCM support via EVP. Interface is very similar to GCM case except we
-     must supply all data in one chunk (i.e. no update, final) and the
-     message length must be supplied if AAD is used. Add algorithm test
-     support.
-     [Steve Henson]
-
-  *) Initial version of POST overhaul. Add POST callback to allow the status
-     of POST to be monitored and/or failures induced. Modify fips_test_suite
-     to use callback. Always run all selftests even if one fails.
-     [Steve Henson]
-
-  *) XTS support including algorithm test driver in the fips_gcmtest program.
-     Note: this does increase the maximum key length from 32 to 64 bytes but
-     there should be no binary compatibility issues as existing applications
-     will never use XTS mode.
-     [Steve Henson]
-
-  *) Extensive reorganisation of FIPS PRNG behaviour. Remove all dependencies
-     to OpenSSL RAND code and replace with a tiny FIPS RAND API which also
-     performs algorithm blocking for unapproved PRNG types. Also do not
-     set PRNG type in FIPS_mode_set(): leave this to the application.
-     Add default OpenSSL DRBG handling: sets up FIPS PRNG and seeds with
-     the standard OpenSSL PRNG: set additional data to a date time vector.
-     [Steve Henson]
-
-  *) Rename old X9.31 PRNG functions of the form FIPS_rand* to FIPS_x931*.
-     This shouldn't present any incompatibility problems because applications
-     shouldn't be using these directly and any that are will need to rethink
-     anyway as the X9.31 PRNG is now deprecated by FIPS 140-2
-     [Steve Henson]
-
-  *) Extensive self tests and health checking required by SP800-90 DRBG.
-     Remove strength parameter from FIPS_drbg_instantiate and always
-     instantiate at maximum supported strength.
-     [Steve Henson]
-
-  *) Add ECDH code to fips module and fips_ecdhvs for primitives only testing.
-     [Steve Henson]
-
-  *) New algorithm test program fips_dhvs to handle DH primitives only testing.
-     [Steve Henson]
-
-  *) New function DH_compute_key_padded() to compute a DH key and pad with
-     leading zeroes if needed: this complies with SP800-56A et al.
-     [Steve Henson]
-
-  *) Initial implementation of SP800-90 DRBGs for Hash and CTR. Not used by
-     anything, incomplete, subject to change and largely untested at present.
-     [Steve Henson]
-
-  *) Modify fipscanisteronly build option to only build the necessary object
-     files by filtering FIPS_EX_OBJ through a perl script in crypto/Makefile.
-     [Steve Henson]
-
-  *) Add experimental option FIPSSYMS to give all symbols in
-     fipscanister.o and FIPS or fips prefix. This will avoid
-     conflicts with future versions of OpenSSL. Add perl script
-     util/fipsas.pl to preprocess assembly language source files
-     and rename any affected symbols.
-     [Steve Henson]
-
-  *) Add selftest checks and algorithm block of non-fips algorithms in
-     FIPS mode. Remove DES2 from selftests.
-     [Steve Henson]
-
-  *) Add ECDSA code to fips module. Add tiny fips_ecdsa_check to just
-     return internal method without any ENGINE dependencies. Add new
-     tiny fips sign and verify functions.
-     [Steve Henson]
-
-  *) New build option no-ec2m to disable characteristic 2 code.
-     [Steve Henson]
-
-  *) New build option "fipscanisteronly". This only builds fipscanister.o
-     and (currently) associated fips utilities. Uses the file Makefile.fips
-     instead of Makefile.org as the prototype.
-     [Steve Henson]
-
-  *) Add some FIPS mode restrictions to GCM. Add internal IV generator.
-     Update fips_gcmtest to use IV generator.
-     [Steve Henson]
-
-  *) Initial, experimental EVP support for AES-GCM. AAD can be input by
-     setting output buffer to NULL. The *Final function must be
-     called although it will not retrieve any additional data. The tag
-     can be set or retrieved with a ctrl. The IV length is by default 12
-     bytes (96 bits) but can be set to an alternative value. If the IV
-     length exceeds the maximum IV length (currently 16 bytes) it cannot be
-     set before the key. 
-     [Steve Henson]
-
-  *) New flag in ciphers: EVP_CIPH_FLAG_CUSTOM_CIPHER. This means the
-     underlying do_cipher function handles all cipher semantics itself
-     including padding and finalisation. This is useful if (for example)
-     an ENGINE cipher handles block padding itself. The behaviour of
-     do_cipher is subtly changed if this flag is set: the return value
-     is the number of characters written to the output buffer (zero is
-     no longer an error code) or a negative error code. Also if the
-     input buffer is NULL and length 0 finalisation should be performed.
-     [Steve Henson]
-
-  *) If a candidate issuer certificate is already part of the constructed
-     path ignore it: new debug notification X509_V_ERR_PATH_LOOP for this case.
-     [Steve Henson]
-
-  *) Improve forward-security support: add functions
-
-       void SSL_CTX_set_not_resumable_session_callback(SSL_CTX *ctx, int (*cb)(SSL *ssl, int is_forward_secure))
-       void SSL_set_not_resumable_session_callback(SSL *ssl, int (*cb)(SSL *ssl, int is_forward_secure))
+  *) Reject DH handshakes with parameters shorter than 1024 bits.
+     [Kurt Roeckx]
 
-     for use by SSL/TLS servers; the callback function will be called whenever a
-     new session is created, and gets to decide whether the session may be
-     cached to make it resumable (return 0) or not (return 1).  (As by the
-     SSL/TLS protocol specifications, the session_id sent by the server will be
-     empty to indicate that the session is not resumable; also, the server will
-     not generate RFC 4507 (RFC 5077) session tickets.)
+ Changes between 1.0.2d and 1.0.2e [3 Dec 2015]
+
+  *) BN_mod_exp may produce incorrect results on x86_64
+
+     There is a carry propagating bug in the x86_64 Montgomery squaring
+     procedure. No EC algorithms are affected. Analysis suggests that attacks
+     against RSA and DSA as a result of this defect would be very difficult to
+     perform and are not believed likely. Attacks against DH are considered just
+     feasible (although very difficult) because most of the work necessary to
+     deduce information about a private key may be performed offline. The amount
+     of resources required for such an attack would be very significant and
+     likely only accessible to a limited number of attackers. An attacker would
+     additionally need online access to an unpatched system using the target
+     private key in a scenario with persistent DH parameters and a private
+     key that is shared between multiple clients. For example this can occur by
+     default in OpenSSL DHE based SSL/TLS ciphersuites.
+
+     This issue was reported to OpenSSL by Hanno Böck.
+     (CVE-2015-3193)
+     [Andy Polyakov]
 
-     A simple reasonable callback implementation is to return is_forward_secure.
-     This parameter will be set to 1 or 0 depending on the ciphersuite selected
-     by the SSL/TLS server library, indicating whether it can provide forward
-     security.
-     [Emilia Käsper <emilia.kasper@esat.kuleuven.be> (Google)]
+  *) Certificate verify crash with missing PSS parameter
 
-  *) New -verify_name option in command line utilities to set verification
-     parameters by name.
-     [Steve Henson]
+     The signature verification routines will crash with a NULL pointer
+     dereference if presented with an ASN.1 signature using the RSA PSS
+     algorithm and absent mask generation function parameter. Since these
+     routines are used to verify certificate signature algorithms this can be
+     used to crash any certificate verification operation and exploited in a
+     DoS attack. Any application which performs certificate verification is
+     vulnerable including OpenSSL clients and servers which enable client
+     authentication.
+
+     This issue was reported to OpenSSL by Loïc Jonas Etienne (Qnective AG).
+     (CVE-2015-3194)
+     [Stephen Henson]
 
-  *) Initial CMAC implementation. WARNING: EXPERIMENTAL, API MAY CHANGE.
-     Add CMAC pkey methods.
-     [Steve Henson]
+  *) X509_ATTRIBUTE memory leak
 
-  *) Experimental renegotiation in s_server -www mode. If the client 
-     browses /reneg connection is renegotiated. If /renegcert it is
-     renegotiated requesting a certificate.
-     [Steve Henson]
+     When presented with a malformed X509_ATTRIBUTE structure OpenSSL will leak
+     memory. This structure is used by the PKCS#7 and CMS routines so any
+     application which reads PKCS#7 or CMS data from untrusted sources is
+     affected. SSL/TLS is not affected.
 
-  *) Add an "external" session cache for debugging purposes to s_server. This
-     should help trace issues which normally are only apparent in deployed
-     multi-process servers.
-     [Steve Henson]
+     This issue was reported to OpenSSL by Adam Langley (Google/BoringSSL) using
+     libFuzzer.
+     (CVE-2015-3195)
+     [Stephen Henson]
 
-  *) Extensive audit of libcrypto with DEBUG_UNUSED. Fix many cases where
-     return value is ignored. NB. The functions RAND_add(), RAND_seed(),
-     BIO_set_cipher() and some obscure PEM functions were changed so they
-     can now return an error. The RAND changes required a change to the
-     RAND_METHOD structure.
-     [Steve Henson]
+  *) Rewrite EVP_DecodeUpdate (base64 decoding) to fix several bugs.
+     This changes the decoding behaviour for some invalid messages,
+     though the change is mostly in the more lenient direction, and
+     legacy behaviour is preserved as much as possible.
+     [Emilia Käsper]
 
-  *) New macro __owur for "OpenSSL Warn Unused Result". This makes use of
-     a gcc attribute to warn if the result of a function is ignored. This
-     is enable if DEBUG_UNUSED is set. Add to several functions in evp.h
-     whose return value is often ignored. 
-     [Steve Henson]
->>>>>>> f00a10b... GH367: Fix dsa keygen for too-short seed
+  *) In DSA_generate_parameters_ex, if the provided seed is too short,
+     use a random seed, as already documented.
+     [Rich Salz and Ismo Puustinen <ismo.puustinen@intel.com>]
 
  Changes between 1.0.2c and 1.0.2d [9 Jul 2015]
 
 
      This issue was reported to OpenSSL by Adam Langley/David Benjamin
      (Google/BoringSSL).
+     (CVE-2015-1793)
      [Matt Caswell]
 
+  *) Race condition handling PSK identify hint
+
+     If PSK identity hints are received by a multi-threaded client then
+     the values are wrongly updated in the parent SSL_CTX structure. This can
+     result in a race condition potentially leading to a double free of the
+     identify hint data.
+     (CVE-2015-3196)
+     [Stephen Henson]
+
  Changes between 1.0.2b and 1.0.2c [12 Jun 2015]
 
   *) Fix HMAC ABI incompatibility. The previous version introduced an ABI