Correct the Extended Master Secret string for EBCDIC
[openssl.git] / CHANGES
1
2  OpenSSL CHANGES
3  _______________
4
5  This is a high-level summary of the most important changes.
6  For a full list of changes, see the git commit log; for example,
7  https://github.com/openssl/openssl/commits/ and pick the appropriate
8  release branch.
9
10  Changes between 1.1.1 and 3.0.0 [xx XXX xxxx]
11
12   *) Correct the extended master secret constant on EBCDIC systems. Without this
13      fix TLS connections between an EBCDIC system and a non-EBCDIC system that
14      negotiate EMS will fail. Unfortunately this also means that TLS connections
15      between EBCDIC systems with this fix, and EBCDIC systems without this
16      fix will fail if they negotiate EMS.
17      [Matt Caswell]
18
19   *) Changed the library initialisation so that the config file is now loaded
20      by default. This was already the case for libssl. It now occurs for both
21      libcrypto and libssl. Use the OPENSSL_INIT_NO_LOAD_CONFIG option to
22      OPENSSL_init_crypto() to suppress automatic loading of a config file.
23      [Matt Caswell]
24
25   *) Introduced new error raising macros, ERR_raise() and ERR_raise_data(),
26      where the former acts as a replacement for ERR_put_error(), and the
27      latter replaces the combination ERR_put_error()+ERR_add_error_data().
28      ERR_raise_data() adds more flexibility by taking a format string and
29      an arbitrary number of arguments following it, to be processed with
30      BIO_snprintf().
31      [Richard Levitte]
32
33   *) Introduced a new function, OSSL_PROVIDER_available(), which can be used
34      to check if a named provider is loaded and available.  When called, it
35      will also activate all fallback providers if such are still present.
36      [Richard Levitte]
37
38   *) Enforce a minimum DH modulus size of 512 bits.
39      [Bernd Edlinger]
40
41   *) Changed DH parameters to generate the order q subgroup instead of 2q.
42      Previously generated DH parameters are still accepted by DH_check
43      but DH_generate_key works around that by clearing bit 0 of the
44      private key for those. This avoids leaking bit 0 of the private key.
45      [Bernd Edlinger]
46
47   *) Significantly reduce secure memory usage by the randomness pools.
48      [Paul Dale]
49
50   *) {CRYPTO,OPENSSL}_mem_debug_{push,pop} are now no-ops and have been
51      deprecated.
52      [Rich Salz]
53
54   *) A new type, EVP_KEYEXCH, has been introduced to represent key exchange
55      algorithms. An implementation of a key exchange algorithm can be obtained
56      by using the function EVP_KEYEXCH_fetch(). An EVP_KEYEXCH algorithm can be
57      used in a call to EVP_PKEY_derive_init_ex() which works in a similar way to
58      the older EVP_PKEY_derive_init() function. See the man pages for the new
59      functions for further details.
60      [Matt Caswell]
61
62   *) The EVP_PKEY_CTX_set_dh_pad() macro has now been converted to a function.
63      [Matt Caswell]
64
65   *) Removed the function names from error messages and deprecated the
66      xxx_F_xxx define's.
67
68   *) Removed NextStep support and the macro OPENSSL_UNISTD
69      [Rich Salz]
70
71   *) Removed DES_check_key.  Also removed OPENSSL_IMPLEMENT_GLOBAL,
72      OPENSSL_GLOBAL_REF, OPENSSL_DECLARE_GLOBAL.
73      Also removed "export var as function" capability; we do not export
74      variables, only functions.
75      [Rich Salz]
76
77   *) RC5_32_set_key has been changed to return an int type, with 0 indicating
78      an error and 1 indicating success. In previous versions of OpenSSL this
79      was a void type. If a key was set longer than the maximum possible this
80      would crash.
81      [Matt Caswell]
82
83   *) Support SM2 signing and verification schemes with X509 certificate.
84      [Paul Yang]
85
86   *) Use SHA256 as the default digest for TS query in the ts app.
87      [Tomas Mraz]
88
89   *) Change PBKDF2 to conform to SP800-132 instead of the older PKCS5 RFC2898.
90      This checks that the salt length is at least 128 bits, the derived key
91      length is at least 112 bits, and that the iteration count is at least 1000.
92      For backwards compatibility these checks are disabled by default in the
93      default provider, but are enabled by default in the fips provider.
94      To enable or disable these checks use the control
95      EVP_KDF_CTRL_SET_PBKDF2_PKCS5_MODE.
96      [Shane Lontis]
97
98   *) Default cipher lists/suites are now available via a function, the
99      #defines are deprecated.
100      [Todd Short]
101
102   *) Add target VC-WIN32-UWP, VC-WIN64A-UWP, VC-WIN32-ARM-UWP and
103      VC-WIN64-ARM-UWP in Windows OneCore target for making building libraries
104      for Windows Store apps easier. Also, the "no-uplink" option has been added.
105      [Kenji Mouri]
106
107   *) Join the directories crypto/x509 and crypto/x509v3
108      [Richard Levitte]
109
110   *) Change the default RSA, DSA and DH size to 2048 bit instead of 1024.
111      This changes the size when using the genpkey app when no size is given. It
112      fixes an omission in earlier changes that changed all RSA, DSA and DH
113      generation apps to use 2048 bits by default.
114      [Kurt Roeckx]
115
116   *) Added command 'openssl kdf' that uses the EVP_KDF API.
117      [Shane Lontis]
118
119   *) Added command 'openssl mac' that uses the EVP_MAC API.
120      [Shane Lontis]
121
122   *) Added OPENSSL_info() to get diverse built-in OpenSSL data, such
123      as default directories.  Also added the command 'openssl info'
124      for scripting purposes.
125      [Richard Levitte]
126
127   *) The functions AES_ige_encrypt() and AES_bi_ige_encrypt() have been
128      deprecated. These undocumented functions were never integrated into the EVP
129      layer and implement the AES Infinite Garble Extension (IGE) mode and AES
130      Bi-directional IGE mode. These modes were never formally standardised and
131      usage of these functions is believed to be very small. In particular
132      AES_bi_ige_encrypt() has a known bug. It accepts 2 AES keys, but only one
133      is ever used. The security implications are believed to be minimal, but
134      this issue was never fixed for backwards compatibility reasons. New code
135      should not use these modes.
136      [Matt Caswell]
137
138   *) Add prediction resistance to the DRBG reseeding process.
139      [Paul Dale]
140
141   *) Limit the number of blocks in a data unit for AES-XTS to 2^20 as
142      mandated by IEEE Std 1619-2018.
143      [Paul Dale]
144
145   *) Added newline escaping functionality to a filename when using openssl dgst.
146      This output format is to replicate the output format found in the '*sum'
147      checksum programs. This aims to preserve backward compatibility.
148      [Matt Eaton, Richard Levitte, and Paul Dale]
149
150   *) Removed the heartbeat message in DTLS feature, as it has very
151      little usage and doesn't seem to fulfill a valuable purpose.
152      The configuration option is now deprecated.
153      [Richard Levitte]
154
155   *) Changed the output of 'openssl {digestname} < file' to display the
156      digest name in its output.
157      [Richard Levitte]
158
159   *) Added a new generic trace API which provides support for enabling
160      instrumentation through trace output. This feature is mainly intended
161      as an aid for developers and is disabled by default. To utilize it,
162      OpenSSL needs to be configured with the `enable-trace` option.
163
164      If the tracing API is enabled, the application can activate trace output
165      by registering BIOs as trace channels for a number of tracing and debugging
166      categories.
167
168      The 'openssl' application has been expanded to enable any of the types
169      available via environment variables defined by the user, and serves as
170      one possible example on how to use this functionality.
171      [Richard Levitte & Matthias St. Pierre]
172
173   *) Added build tests for C++.  These are generated files that only do one
174      thing, to include one public OpenSSL head file each.  This tests that
175      the public header files can be usefully included in a C++ application.
176
177      This test isn't enabled by default.  It can be enabled with the option
178      'enable-buildtest-c++'.
179      [Richard Levitte]
180
181   *) Add Single Step KDF (EVP_KDF_SS) to EVP_KDF.
182      [Shane Lontis]
183
184   *) Add KMAC to EVP_MAC.
185      [Shane Lontis]
186
187   *) Added property based algorithm implementation selection framework to
188      the core.
189      [Paul Dale]
190
191   *) Added SCA hardening for modular field inversion in EC_GROUP through
192      a new dedicated field_inv() pointer in EC_METHOD.
193      This also addresses a leakage affecting conversions from projective
194      to affine coordinates.
195      [Billy Bob Brumley, Nicola Tuveri]
196
197   *) Added EVP_KDF, an EVP layer KDF API, to simplify adding KDF and PRF
198      implementations.  This includes an EVP_PKEY to EVP_KDF bridge for
199      those algorithms that were already supported through the EVP_PKEY API
200      (scrypt, TLS1 PRF and HKDF).  The low-level KDF functions for PBKDF2
201      and scrypt are now wrappers that call EVP_KDF.
202      [David Makepeace]
203
204   *) Build devcrypto engine as a dynamic engine.
205      [Eneas U de Queiroz]
206
207   *) Add keyed BLAKE2 to EVP_MAC.
208      [Antoine Salon]
209
210   *) Fix a bug in the computation of the endpoint-pair shared secret used
211      by DTLS over SCTP. This breaks interoperability with older versions
212      of OpenSSL like OpenSSL 1.1.0 and OpenSSL 1.0.2. There is a runtime
213      switch SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG (off by default) enabling
214      interoperability with such broken implementations. However, enabling
215      this switch breaks interoperability with correct implementations.
216
217   *) Fix a use after free bug in d2i_X509_PUBKEY when overwriting a
218      re-used X509_PUBKEY object if the second PUBKEY is malformed.
219      [Bernd Edlinger]
220
221   *) Move strictness check from EVP_PKEY_asn1_new() to EVP_PKEY_asn1_add0().
222      [Richard Levitte]
223
224   *) Change the license to the Apache License v2.0.
225      [Richard Levitte]
226
227   *) Change the possible version information given with OPENSSL_API_COMPAT.
228      It may be a pre-3.0.0 style numerical version number as it was defined
229      in 1.1.0, and it may also simply take the major version number.
230
231      Because of the version numbering of pre-3.0.0 releases, the values 0,
232      1 and 2 are equivalent to 0x00908000L (0.9.8), 0x10000000L (1.0.0) and
233      0x10100000L (1.1.0), respectively.
234      [Richard Levitte]
235
236   *) Switch to a new version scheme using three numbers MAJOR.MINOR.PATCH.
237
238      o Major releases (indicated by incrementing the MAJOR release number)
239        may introduce incompatible API/ABI changes.
240      o Minor releases (indicated by incrementing the MINOR release number)
241        may introduce new features but retain API/ABI compatibility.
242      o Patch releases (indicated by incrementing the PATCH number)
243        are intended for bug fixes and other improvements of existing
244        features only (like improving performance or adding documentation)
245        and retain API/ABI compatibility.
246      [Richard Levitte]
247
248   *) Add support for RFC5297 SIV mode (siv128), including AES-SIV.
249      [Todd Short]
250
251   *) Remove the 'dist' target and add a tarball building script.  The
252      'dist' target has fallen out of use, and it shouldn't be
253      necessary to configure just to create a source distribution.
254      [Richard Levitte]
255
256   *) Recreate the OS390-Unix config target.  It no longer relies on a
257      special script like it did for OpenSSL pre-1.1.0.
258      [Richard Levitte]
259
260   *) Instead of having the source directories listed in Configure, add
261      a 'build.info' keyword SUBDIRS to indicate what sub-directories to
262      look into.
263      [Richard Levitte]
264
265   *) Add GMAC to EVP_MAC.
266      [Paul Dale]
267
268   *) Ported the HMAC, CMAC and SipHash EVP_PKEY_METHODs to EVP_MAC.
269      [Richard Levitte]
270
271   *) Added EVP_MAC, an EVP layer MAC API, to simplify adding MAC
272      implementations.  This includes a generic EVP_PKEY to EVP_MAC bridge,
273      to facilitate the continued use of MACs through raw private keys in
274      functionality such as EVP_DigestSign* and EVP_DigestVerify*.
275      [Richard Levitte]
276
277   *) Deprecate ECDH_KDF_X9_62() and mark its replacement as internal. Users
278      should use the EVP interface instead (EVP_PKEY_CTX_set_ecdh_kdf_type).
279      [Antoine Salon]
280
281   *) Added EVP_PKEY_ECDH_KDF_X9_63 and ecdh_KDF_X9_63() as replacements for
282      the EVP_PKEY_ECDH_KDF_X9_62 KDF type and ECDH_KDF_X9_62(). The old names
283      are retained for backwards compatibility.
284      [Antoine Salon]
285
286   *) AES-XTS mode now enforces that its two keys are different to mitigate
287      the attacked described in "Efficient Instantiations of Tweakable
288      Blockciphers and Refinements to Modes OCB and PMAC" by Phillip Rogaway.
289      Details of this attack can be obtained from:
290      http://web.cs.ucdavis.edu/%7Erogaway/papers/offsets.pdf
291      [Paul Dale]
292
293   *) Rename the object files, i.e. give them other names than in previous
294      versions.  Their names now include the name of the final product, as
295      well as its type mnemonic (bin, lib, shlib).
296      [Richard Levitte]
297
298   *) Added new option for 'openssl list', '-objects', which will display the
299      list of built in objects, i.e. OIDs with names.
300      [Richard Levitte]
301
302   *) Added support for Linux Kernel TLS data-path. The Linux Kernel data-path
303      improves application performance by removing data copies and providing
304      applications with zero-copy system calls such as sendfile and splice.
305      [Boris Pismenny]
306
307  Changes between 1.1.1a and 1.1.1b [xx XXX xxxx]
308
309   *) Change the info callback signals for the start and end of a post-handshake
310      message exchange in TLSv1.3. In 1.1.1/1.1.1a we used SSL_CB_HANDSHAKE_START
311      and SSL_CB_HANDSHAKE_DONE. Experience has shown that many applications get
312      confused by this and assume that a TLSv1.2 renegotiation has started. This
313      can break KeyUpdate handling. Instead we no longer signal the start and end
314      of a post handshake message exchange (although the messages themselves are
315      still signalled). This could break some applications that were expecting
316      the old signals. However without this KeyUpdate is not usable for many
317      applications.
318      [Matt Caswell]
319
320  Changes between 1.1.1 and 1.1.1a [20 Nov 2018]
321
322   *) Timing vulnerability in DSA signature generation
323
324      The OpenSSL DSA signature algorithm has been shown to be vulnerable to a
325      timing side channel attack. An attacker could use variations in the signing
326      algorithm to recover the private key.
327
328      This issue was reported to OpenSSL on 16th October 2018 by Samuel Weiser.
329      (CVE-2018-0734)
330      [Paul Dale]
331
332   *) Timing vulnerability in ECDSA signature generation
333
334      The OpenSSL ECDSA signature algorithm has been shown to be vulnerable to a
335      timing side channel attack. An attacker could use variations in the signing
336      algorithm to recover the private key.
337
338      This issue was reported to OpenSSL on 25th October 2018 by Samuel Weiser.
339      (CVE-2018-0735)
340      [Paul Dale]
341
342   *) Fixed the issue that RAND_add()/RAND_seed() silently discards random input
343      if its length exceeds 4096 bytes. The limit has been raised to a buffer size
344      of two gigabytes and the error handling improved.
345
346      This issue was reported to OpenSSL by Dr. Falko Strenzke. It has been
347      categorized as a normal bug, not a security issue, because the DRBG reseeds
348      automatically and is fully functional even without additional randomness
349      provided by the application.
350
351  Changes between 1.1.0i and 1.1.1 [11 Sep 2018]
352
353   *) Add a new ClientHello callback. Provides a callback interface that gives
354      the application the ability to adjust the nascent SSL object at the
355      earliest stage of ClientHello processing, immediately after extensions have
356      been collected but before they have been processed. In particular, this
357      callback can adjust the supported TLS versions in response to the contents
358      of the ClientHello
359      [Benjamin Kaduk]
360
361   *) Add SM2 base algorithm support.
362      [Jack Lloyd]
363
364   *) s390x assembly pack: add (improved) hardware-support for the following
365      cryptographic primitives: sha3, shake, aes-gcm, aes-ccm, aes-ctr, aes-ofb,
366      aes-cfb/cfb8, aes-ecb.
367      [Patrick Steuer]
368
369   *) Make EVP_PKEY_asn1_new() a bit stricter about its input.  A NULL pem_str
370      parameter is no longer accepted, as it leads to a corrupt table.  NULL
371      pem_str is reserved for alias entries only.
372      [Richard Levitte]
373
374   *) Use the new ec_scalar_mul_ladder scaffold to implement a specialized ladder
375      step for prime curves. The new implementation is based on formulae from
376      differential addition-and-doubling in homogeneous projective coordinates
377      from Izu-Takagi "A fast parallel elliptic curve multiplication resistant
378      against side channel attacks" and Brier-Joye "Weierstrass Elliptic Curves
379      and Side-Channel Attacks" Eq. (8) for y-coordinate recovery, modified
380      to work in projective coordinates.
381      [Billy Bob Brumley, Nicola Tuveri]
382
383   *) Change generating and checking of primes so that the error rate of not
384      being prime depends on the intended use based on the size of the input.
385      For larger primes this will result in more rounds of Miller-Rabin.
386      The maximal error rate for primes with more than 1080 bits is lowered
387      to 2^-128.
388      [Kurt Roeckx, Annie Yousar]
389
390   *) Increase the number of Miller-Rabin rounds for DSA key generating to 64.
391      [Kurt Roeckx]
392
393   *) The 'tsget' script is renamed to 'tsget.pl', to avoid confusion when
394      moving between systems, and to avoid confusion when a Windows build is
395      done with mingw vs with MSVC.  For POSIX installs, there's still a
396      symlink or copy named 'tsget' to avoid that confusion as well.
397      [Richard Levitte]
398
399   *) Revert blinding in ECDSA sign and instead make problematic addition
400      length-invariant. Switch even to fixed-length Montgomery multiplication.
401      [Andy Polyakov]
402
403   *) Use the new ec_scalar_mul_ladder scaffold to implement a specialized ladder
404      step for binary curves. The new implementation is based on formulae from
405      differential addition-and-doubling in mixed Lopez-Dahab projective
406      coordinates, modified to independently blind the operands.
407      [Billy Bob Brumley, Sohaib ul Hassan, Nicola Tuveri]
408
409   *) Add a scaffold to optionally enhance the Montgomery ladder implementation
410      for `ec_scalar_mul_ladder` (formerly `ec_mul_consttime`) allowing
411      EC_METHODs to implement their own specialized "ladder step", to take
412      advantage of more favorable coordinate systems or more efficient
413      differential addition-and-doubling algorithms.
414      [Billy Bob Brumley, Sohaib ul Hassan, Nicola Tuveri]
415
416   *) Modified the random device based seed sources to keep the relevant
417      file descriptors open rather than reopening them on each access.
418      This allows such sources to operate in a chroot() jail without
419      the associated device nodes being available. This behaviour can be
420      controlled using RAND_keep_random_devices_open().
421      [Paul Dale]
422
423   *) Numerous side-channel attack mitigations have been applied. This may have
424      performance impacts for some algorithms for the benefit of improved
425      security. Specific changes are noted in this change log by their respective
426      authors.
427      [Matt Caswell]
428
429   *) AIX shared library support overhaul. Switch to AIX "natural" way of
430      handling shared libraries, which means collecting shared objects of
431      different versions and bitnesses in one common archive. This allows to
432      mitigate conflict between 1.0 and 1.1 side-by-side installations. It
433      doesn't affect the way 3rd party applications are linked, only how
434      multi-version installation is managed.
435      [Andy Polyakov]
436
437   *) Make ec_group_do_inverse_ord() more robust and available to other
438      EC cryptosystems, so that irrespective of BN_FLG_CONSTTIME, SCA
439      mitigations are applied to the fallback BN_mod_inverse().
440      When using this function rather than BN_mod_inverse() directly, new
441      EC cryptosystem implementations are then safer-by-default.
442      [Billy Bob Brumley]
443
444   *) Add coordinate blinding for EC_POINT and implement projective
445      coordinate blinding for generic prime curves as a countermeasure to
446      chosen point SCA attacks.
447      [Sohaib ul Hassan, Nicola Tuveri, Billy Bob Brumley]
448
449   *) Add blinding to ECDSA and DSA signatures to protect against side channel
450      attacks discovered by Keegan Ryan (NCC Group).
451      [Matt Caswell]
452
453   *) Enforce checking in the pkeyutl command line app to ensure that the input
454      length does not exceed the maximum supported digest length when performing
455      a sign, verify or verifyrecover operation.
456      [Matt Caswell]
457
458   *) SSL_MODE_AUTO_RETRY is enabled by default. Applications that use blocking
459      I/O in combination with something like select() or poll() will hang. This
460      can be turned off again using SSL_CTX_clear_mode().
461      Many applications do not properly handle non-application data records, and
462      TLS 1.3 sends more of such records. Setting SSL_MODE_AUTO_RETRY works
463      around the problems in those applications, but can also break some.
464      It's recommended to read the manpages about SSL_read(), SSL_write(),
465      SSL_get_error(), SSL_shutdown(), SSL_CTX_set_mode() and
466      SSL_CTX_set_read_ahead() again.
467      [Kurt Roeckx]
468
469   *) When unlocking a pass phrase protected PEM file or PKCS#8 container, we
470      now allow empty (zero character) pass phrases.
471      [Richard Levitte]
472
473   *) Apply blinding to binary field modular inversion and remove patent
474      pending (OPENSSL_SUN_GF2M_DIV) BN_GF2m_mod_div implementation.
475      [Billy Bob Brumley]
476
477   *) Deprecate ec2_mult.c and unify scalar multiplication code paths for
478      binary and prime elliptic curves.
479      [Billy Bob Brumley]
480
481   *) Remove ECDSA nonce padding: EC_POINT_mul is now responsible for
482      constant time fixed point multiplication.
483      [Billy Bob Brumley]
484
485   *) Revise elliptic curve scalar multiplication with timing attack
486      defenses: ec_wNAF_mul redirects to a constant time implementation
487      when computing fixed point and variable point multiplication (which
488      in OpenSSL are mostly used with secret scalars in keygen, sign,
489      ECDH derive operations).
490      [Billy Bob Brumley, Nicola Tuveri, Cesar Pereida García,
491       Sohaib ul Hassan]
492
493   *) Updated CONTRIBUTING
494      [Rich Salz]
495
496   *) Updated DRBG / RAND to request nonce and additional low entropy
497      randomness from the system.
498      [Matthias St. Pierre]
499
500   *) Updated 'openssl rehash' to use OpenSSL consistent default.
501      [Richard Levitte]
502
503   *) Moved the load of the ssl_conf module to libcrypto, which helps
504      loading engines that libssl uses before libssl is initialised.
505      [Matt Caswell]
506
507   *) Added EVP_PKEY_sign() and EVP_PKEY_verify() for EdDSA
508      [Matt Caswell]
509
510   *) Fixed X509_NAME_ENTRY_set to get multi-valued RDNs right in all cases.
511      [Ingo Schwarze, Rich Salz]
512
513   *) Added output of accepting IP address and port for 'openssl s_server'
514      [Richard Levitte]
515
516   *) Added a new API for TLSv1.3 ciphersuites:
517         SSL_CTX_set_ciphersuites()
518         SSL_set_ciphersuites()
519      [Matt Caswell]
520
521   *) Memory allocation failures consistently add an error to the error
522      stack.
523      [Rich Salz]
524
525   *) Don't use OPENSSL_ENGINES and OPENSSL_CONF environment values
526      in libcrypto when run as setuid/setgid.
527      [Bernd Edlinger]
528
529   *) Load any config file by default when libssl is used.
530      [Matt Caswell]
531
532   *) Added new public header file <openssl/rand_drbg.h> and documentation
533      for the RAND_DRBG API. See manual page RAND_DRBG(7) for an overview.
534      [Matthias St. Pierre]
535
536   *) QNX support removed (cannot find contributors to get their approval
537      for the license change).
538      [Rich Salz]
539
540   *) TLSv1.3 replay protection for early data has been implemented. See the
541      SSL_read_early_data() man page for further details.
542      [Matt Caswell]
543
544   *) Separated TLSv1.3 ciphersuite configuration out from TLSv1.2 ciphersuite
545      configuration. TLSv1.3 ciphersuites are not compatible with TLSv1.2 and
546      below. Similarly TLSv1.2 ciphersuites are not compatible with TLSv1.3.
547      In order to avoid issues where legacy TLSv1.2 ciphersuite configuration
548      would otherwise inadvertently disable all TLSv1.3 ciphersuites the
549      configuration has been separated out. See the ciphers man page or the
550      SSL_CTX_set_ciphersuites() man page for more information.
551      [Matt Caswell]
552
553   *) On POSIX (BSD, Linux, ...) systems the ocsp(1) command running
554      in responder mode now supports the new "-multi" option, which
555      spawns the specified number of child processes to handle OCSP
556      requests.  The "-timeout" option now also limits the OCSP
557      responder's patience to wait to receive the full client request
558      on a newly accepted connection. Child processes are respawned
559      as needed, and the CA index file is automatically reloaded
560      when changed.  This makes it possible to run the "ocsp" responder
561      as a long-running service, making the OpenSSL CA somewhat more
562      feature-complete.  In this mode, most diagnostic messages logged
563      after entering the event loop are logged via syslog(3) rather than
564      written to stderr.
565      [Viktor Dukhovni]
566
567   *) Added support for X448 and Ed448. Heavily based on original work by
568      Mike Hamburg.
569      [Matt Caswell]
570
571   *) Extend OSSL_STORE with capabilities to search and to narrow the set of
572      objects loaded.  This adds the functions OSSL_STORE_expect() and
573      OSSL_STORE_find() as well as needed tools to construct searches and
574      get the search data out of them.
575      [Richard Levitte]
576
577   *) Support for TLSv1.3 added. Note that users upgrading from an earlier
578      version of OpenSSL should review their configuration settings to ensure
579      that they are still appropriate for TLSv1.3. For further information see:
580      https://wiki.openssl.org/index.php/TLS1.3
581      [Matt Caswell]
582
583   *) Grand redesign of the OpenSSL random generator
584
585      The default RAND method now utilizes an AES-CTR DRBG according to
586      NIST standard SP 800-90Ar1. The new random generator is essentially
587      a port of the default random generator from the OpenSSL FIPS 2.0
588      object module. It is a hybrid deterministic random bit generator
589      using an AES-CTR bit stream and which seeds and reseeds itself
590      automatically using trusted system entropy sources.
591
592      Some of its new features are:
593       o Support for multiple DRBG instances with seed chaining.
594       o The default RAND method makes use of a DRBG.
595       o There is a public and private DRBG instance.
596       o The DRBG instances are fork-safe.
597       o Keep all global DRBG instances on the secure heap if it is enabled.
598       o The public and private DRBG instance are per thread for lock free
599         operation
600      [Paul Dale, Benjamin Kaduk, Kurt Roeckx, Rich Salz, Matthias St. Pierre]
601
602   *) Changed Configure so it only says what it does and doesn't dump
603      so much data.  Instead, ./configdata.pm should be used as a script
604      to display all sorts of configuration data.
605      [Richard Levitte]
606
607   *) Added processing of "make variables" to Configure.
608      [Richard Levitte]
609
610   *) Added SHA512/224 and SHA512/256 algorithm support.
611      [Paul Dale]
612
613   *) The last traces of Netware support, first removed in 1.1.0, have
614      now been removed.
615      [Rich Salz]
616
617   *) Get rid of Makefile.shared, and in the process, make the processing
618      of certain files (rc.obj, or the .def/.map/.opt files produced from
619      the ordinal files) more visible and hopefully easier to trace and
620      debug (or make silent).
621      [Richard Levitte]
622
623   *) Make it possible to have environment variable assignments as
624      arguments to config / Configure.
625      [Richard Levitte]
626
627   *) Add multi-prime RSA (RFC 8017) support.
628      [Paul Yang]
629
630   *) Add SM3 implemented according to GB/T 32905-2016
631      [ Jack Lloyd <jack.lloyd@ribose.com>,
632        Ronald Tse <ronald.tse@ribose.com>,
633        Erick Borsboom <erick.borsboom@ribose.com> ]
634
635   *) Add 'Maximum Fragment Length' TLS extension negotiation and support
636      as documented in RFC6066.
637      Based on a patch from Tomasz Moń
638      [Filipe Raimundo da Silva]
639
640   *) Add SM4 implemented according to GB/T 32907-2016.
641      [ Jack Lloyd <jack.lloyd@ribose.com>,
642        Ronald Tse <ronald.tse@ribose.com>,
643        Erick Borsboom <erick.borsboom@ribose.com> ]
644
645   *) Reimplement -newreq-nodes and ERR_error_string_n; the
646      original author does not agree with the license change.
647      [Rich Salz]
648
649   *) Add ARIA AEAD TLS support.
650      [Jon Spillett]
651
652   *) Some macro definitions to support VS6 have been removed.  Visual
653      Studio 6 has not worked since 1.1.0
654      [Rich Salz]
655
656   *) Add ERR_clear_last_mark(), to allow callers to clear the last mark
657      without clearing the errors.
658      [Richard Levitte]
659
660   *) Add "atfork" functions.  If building on a system that without
661      pthreads, see doc/man3/OPENSSL_fork_prepare.pod for application
662      requirements.  The RAND facility now uses/requires this.
663      [Rich Salz]
664
665   *) Add SHA3.
666      [Andy Polyakov]
667
668   *) The UI API becomes a permanent and integral part of libcrypto, i.e.
669      not possible to disable entirely.  However, it's still possible to
670      disable the console reading UI method, UI_OpenSSL() (use UI_null()
671      as a fallback).
672
673      To disable, configure with 'no-ui-console'.  'no-ui' is still
674      possible to use as an alias.  Check at compile time with the
675      macro OPENSSL_NO_UI_CONSOLE.  The macro OPENSSL_NO_UI is still
676      possible to check and is an alias for OPENSSL_NO_UI_CONSOLE.
677      [Richard Levitte]
678
679   *) Add a STORE module, which implements a uniform and URI based reader of
680      stores that can contain keys, certificates, CRLs and numerous other
681      objects.  The main API is loosely based on a few stdio functions,
682      and includes OSSL_STORE_open, OSSL_STORE_load, OSSL_STORE_eof,
683      OSSL_STORE_error and OSSL_STORE_close.
684      The implementation uses backends called "loaders" to implement arbitrary
685      URI schemes.  There is one built in "loader" for the 'file' scheme.
686      [Richard Levitte]
687
688   *) Add devcrypto engine.  This has been implemented against cryptodev-linux,
689      then adjusted to work on FreeBSD 8.4 as well.
690      Enable by configuring with 'enable-devcryptoeng'.  This is done by default
691      on BSD implementations, as cryptodev.h is assumed to exist on all of them.
692      [Richard Levitte]
693
694   *) Module names can prefixed with OSSL_ or OPENSSL_.  This affects
695      util/mkerr.pl, which is adapted to allow those prefixes, leading to
696      error code calls like this:
697
698          OSSL_FOOerr(OSSL_FOO_F_SOMETHING, OSSL_FOO_R_WHATEVER);
699
700      With this change, we claim the namespaces OSSL and OPENSSL in a manner
701      that can be encoded in C.  For the foreseeable future, this will only
702      affect new modules.
703      [Richard Levitte and Tim Hudson]
704
705   *) Removed BSD cryptodev engine.
706      [Rich Salz]
707
708   *) Add a build target 'build_all_generated', to build all generated files
709      and only that.  This can be used to prepare everything that requires
710      things like perl for a system that lacks perl and then move everything
711      to that system and do the rest of the build there.
712      [Richard Levitte]
713
714   *) In the UI interface, make it possible to duplicate the user data.  This
715      can be used by engines that need to retain the data for a longer time
716      than just the call where this user data is passed.
717      [Richard Levitte]
718
719   *) Ignore the '-named_curve auto' value for compatibility of applications
720      with OpenSSL 1.0.2.
721      [Tomas Mraz <tmraz@fedoraproject.org>]
722
723   *) Fragmented SSL/TLS alerts are no longer accepted. An alert message is 2
724      bytes long. In theory it is permissible in SSLv3 - TLSv1.2 to fragment such
725      alerts across multiple records (some of which could be empty). In practice
726      it make no sense to send an empty alert record, or to fragment one. TLSv1.3
727      prohibts this altogether and other libraries (BoringSSL, NSS) do not
728      support this at all. Supporting it adds significant complexity to the
729      record layer, and its removal is unlikely to cause inter-operability
730      issues.
731      [Matt Caswell]
732
733   *) Add the ASN.1 types INT32, UINT32, INT64, UINT64 and variants prefixed
734      with Z.  These are meant to replace LONG and ZLONG and to be size safe.
735      The use of LONG and ZLONG is discouraged and scheduled for deprecation
736      in OpenSSL 1.2.0.
737      [Richard Levitte]
738
739   *) Add the 'z' and 'j' modifiers to BIO_printf() et al formatting string,
740      'z' is to be used for [s]size_t, and 'j' - with [u]int64_t.
741      [Richard Levitte, Andy Polyakov]
742
743   *) Add EC_KEY_get0_engine(), which does for EC_KEY what RSA_get0_engine()
744      does for RSA, etc.
745      [Richard Levitte]
746
747   *) Have 'config' recognise 64-bit mingw and choose 'mingw64' as the target
748      platform rather than 'mingw'.
749      [Richard Levitte]
750
751   *) The functions X509_STORE_add_cert and X509_STORE_add_crl return
752      success if they are asked to add an object which already exists
753      in the store. This change cascades to other functions which load
754      certificates and CRLs.
755      [Paul Dale]
756
757   *) x86_64 assembly pack: annotate code with DWARF CFI directives to
758      facilitate stack unwinding even from assembly subroutines.
759      [Andy Polyakov]
760
761   *) Remove VAX C specific definitions of OPENSSL_EXPORT, OPENSSL_EXTERN.
762      Also remove OPENSSL_GLOBAL entirely, as it became a no-op.
763      [Richard Levitte]
764
765   *) Remove the VMS-specific reimplementation of gmtime from crypto/o_times.c.
766      VMS C's RTL has a fully up to date gmtime() and gmtime_r() since V7.1,
767      which is the minimum version we support.
768      [Richard Levitte]
769
770   *) Certificate time validation (X509_cmp_time) enforces stricter
771      compliance with RFC 5280. Fractional seconds and timezone offsets
772      are no longer allowed.
773      [Emilia Käsper]
774
775   *) Add support for ARIA
776      [Paul Dale]
777
778   *) s_client will now send the Server Name Indication (SNI) extension by
779      default unless the new "-noservername" option is used. The server name is
780      based on the host provided to the "-connect" option unless overridden by
781      using "-servername".
782      [Matt Caswell]
783
784   *) Add support for SipHash
785      [Todd Short]
786
787   *) OpenSSL now fails if it receives an unrecognised record type in TLS1.0
788      or TLS1.1. Previously this only happened in SSLv3 and TLS1.2. This is to
789      prevent issues where no progress is being made and the peer continually
790      sends unrecognised record types, using up resources processing them.
791      [Matt Caswell]
792
793   *) 'openssl passwd' can now produce SHA256 and SHA512 based output,
794      using the algorithm defined in
795      https://www.akkadia.org/drepper/SHA-crypt.txt
796      [Richard Levitte]
797
798   *) Heartbeat support has been removed; the ABI is changed for now.
799      [Richard Levitte, Rich Salz]
800
801   *) Support for SSL_OP_NO_ENCRYPT_THEN_MAC in SSL_CONF_cmd.
802      [Emilia Käsper]
803
804   *) The RSA "null" method, which was partially supported to avoid patent
805      issues, has been replaced to always returns NULL.
806      [Rich Salz]
807
808
809  Changes between 1.1.0h and 1.1.0i [xx XXX xxxx]
810
811   *) Client DoS due to large DH parameter
812
813      During key agreement in a TLS handshake using a DH(E) based ciphersuite a
814      malicious server can send a very large prime value to the client. This will
815      cause the client to spend an unreasonably long period of time generating a
816      key for this prime resulting in a hang until the client has finished. This
817      could be exploited in a Denial Of Service attack.
818
819      This issue was reported to OpenSSL on 5th June 2018 by Guido Vranken
820      (CVE-2018-0732)
821      [Guido Vranken]
822
823   *) Cache timing vulnerability in RSA Key Generation
824
825      The OpenSSL RSA Key generation algorithm has been shown to be vulnerable to
826      a cache timing side channel attack. An attacker with sufficient access to
827      mount cache timing attacks during the RSA key generation process could
828      recover the private key.
829
830      This issue was reported to OpenSSL on 4th April 2018 by Alejandro Cabrera
831      Aldaya, Billy Brumley, Cesar Pereida Garcia and Luis Manuel Alvarez Tapia.
832      (CVE-2018-0737)
833      [Billy Brumley]
834
835   *) Make EVP_PKEY_asn1_new() a bit stricter about its input.  A NULL pem_str
836      parameter is no longer accepted, as it leads to a corrupt table.  NULL
837      pem_str is reserved for alias entries only.
838      [Richard Levitte]
839
840   *) Revert blinding in ECDSA sign and instead make problematic addition
841      length-invariant. Switch even to fixed-length Montgomery multiplication.
842      [Andy Polyakov]
843
844   *) Change generating and checking of primes so that the error rate of not
845      being prime depends on the intended use based on the size of the input.
846      For larger primes this will result in more rounds of Miller-Rabin.
847      The maximal error rate for primes with more than 1080 bits is lowered
848      to 2^-128.
849      [Kurt Roeckx, Annie Yousar]
850
851   *) Increase the number of Miller-Rabin rounds for DSA key generating to 64.
852      [Kurt Roeckx]
853
854   *) Add blinding to ECDSA and DSA signatures to protect against side channel
855      attacks discovered by Keegan Ryan (NCC Group).
856      [Matt Caswell]
857
858   *) When unlocking a pass phrase protected PEM file or PKCS#8 container, we
859      now allow empty (zero character) pass phrases.
860      [Richard Levitte]
861
862   *) Certificate time validation (X509_cmp_time) enforces stricter
863      compliance with RFC 5280. Fractional seconds and timezone offsets
864      are no longer allowed.
865      [Emilia Käsper]
866
867   *) Fixed a text canonicalisation bug in CMS
868
869      Where a CMS detached signature is used with text content the text goes
870      through a canonicalisation process first prior to signing or verifying a
871      signature. This process strips trailing space at the end of lines, converts
872      line terminators to CRLF and removes additional trailing line terminators
873      at the end of a file. A bug in the canonicalisation process meant that
874      some characters, such as form-feed, were incorrectly treated as whitespace
875      and removed. This is contrary to the specification (RFC5485). This fix
876      could mean that detached text data signed with an earlier version of
877      OpenSSL 1.1.0 may fail to verify using the fixed version, or text data
878      signed with a fixed OpenSSL may fail to verify with an earlier version of
879      OpenSSL 1.1.0. A workaround is to only verify the canonicalised text data
880      and use the "-binary" flag (for the "cms" command line application) or set
881      the SMIME_BINARY/PKCS7_BINARY/CMS_BINARY flags (if using CMS_verify()).
882      [Matt Caswell]
883
884  Changes between 1.1.0g and 1.1.0h [27 Mar 2018]
885
886   *) Constructed ASN.1 types with a recursive definition could exceed the stack
887
888      Constructed ASN.1 types with a recursive definition (such as can be found
889      in PKCS7) could eventually exceed the stack given malicious input with
890      excessive recursion. This could result in a Denial Of Service attack. There
891      are no such structures used within SSL/TLS that come from untrusted sources
892      so this is considered safe.
893
894      This issue was reported to OpenSSL on 4th January 2018 by the OSS-fuzz
895      project.
896      (CVE-2018-0739)
897      [Matt Caswell]
898
899   *) Incorrect CRYPTO_memcmp on HP-UX PA-RISC
900
901      Because of an implementation bug the PA-RISC CRYPTO_memcmp function is
902      effectively reduced to only comparing the least significant bit of each
903      byte. This allows an attacker to forge messages that would be considered as
904      authenticated in an amount of tries lower than that guaranteed by the
905      security claims of the scheme. The module can only be compiled by the
906      HP-UX assembler, so that only HP-UX PA-RISC targets are affected.
907
908      This issue was reported to OpenSSL on 2nd March 2018 by Peter Waltenberg
909      (IBM).
910      (CVE-2018-0733)
911      [Andy Polyakov]
912
913   *) Add a build target 'build_all_generated', to build all generated files
914      and only that.  This can be used to prepare everything that requires
915      things like perl for a system that lacks perl and then move everything
916      to that system and do the rest of the build there.
917      [Richard Levitte]
918
919   *) Backport SSL_OP_NO_RENGOTIATION
920
921      OpenSSL 1.0.2 and below had the ability to disable renegotiation using the
922      (undocumented) SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS flag. Due to the opacity
923      changes this is no longer possible in 1.1.0. Therefore the new
924      SSL_OP_NO_RENEGOTIATION option from 1.1.1-dev has been backported to
925      1.1.0 to provide equivalent functionality.
926
927      Note that if an application built against 1.1.0h headers (or above) is run
928      using an older version of 1.1.0 (prior to 1.1.0h) then the option will be
929      accepted but nothing will happen, i.e. renegotiation will not be prevented.
930      [Matt Caswell]
931
932   *) Removed the OS390-Unix config target.  It relied on a script that doesn't
933      exist.
934      [Rich Salz]
935
936   *) rsaz_1024_mul_avx2 overflow bug on x86_64
937
938      There is an overflow bug in the AVX2 Montgomery multiplication procedure
939      used in exponentiation with 1024-bit moduli. No EC algorithms are affected.
940      Analysis suggests that attacks against RSA and DSA as a result of this
941      defect would be very difficult to perform and are not believed likely.
942      Attacks against DH1024 are considered just feasible, because most of the
943      work necessary to deduce information about a private key may be performed
944      offline. The amount of resources required for such an attack would be
945      significant. However, for an attack on TLS to be meaningful, the server
946      would have to share the DH1024 private key among multiple clients, which is
947      no longer an option since CVE-2016-0701.
948
949      This only affects processors that support the AVX2 but not ADX extensions
950      like Intel Haswell (4th generation).
951
952      This issue was reported to OpenSSL by David Benjamin (Google). The issue
953      was originally found via the OSS-Fuzz project.
954      (CVE-2017-3738)
955      [Andy Polyakov]
956
957  Changes between 1.1.0f and 1.1.0g [2 Nov 2017]
958
959   *) bn_sqrx8x_internal carry bug on x86_64
960
961      There is a carry propagating bug in the x86_64 Montgomery squaring
962      procedure. No EC algorithms are affected. Analysis suggests that attacks
963      against RSA and DSA as a result of this defect would be very difficult to
964      perform and are not believed likely. Attacks against DH are considered just
965      feasible (although very difficult) because most of the work necessary to
966      deduce information about a private key may be performed offline. The amount
967      of resources required for such an attack would be very significant and
968      likely only accessible to a limited number of attackers. An attacker would
969      additionally need online access to an unpatched system using the target
970      private key in a scenario with persistent DH parameters and a private
971      key that is shared between multiple clients.
972
973      This only affects processors that support the BMI1, BMI2 and ADX extensions
974      like Intel Broadwell (5th generation) and later or AMD Ryzen.
975
976      This issue was reported to OpenSSL by the OSS-Fuzz project.
977      (CVE-2017-3736)
978      [Andy Polyakov]
979
980   *) Malformed X.509 IPAddressFamily could cause OOB read
981
982      If an X.509 certificate has a malformed IPAddressFamily extension,
983      OpenSSL could do a one-byte buffer overread. The most likely result
984      would be an erroneous display of the certificate in text format.
985
986      This issue was reported to OpenSSL by the OSS-Fuzz project.
987      (CVE-2017-3735)
988      [Rich Salz]
989
990  Changes between 1.1.0e and 1.1.0f [25 May 2017]
991
992   *) Have 'config' recognise 64-bit mingw and choose 'mingw64' as the target
993      platform rather than 'mingw'.
994      [Richard Levitte]
995
996   *) Remove the VMS-specific reimplementation of gmtime from crypto/o_times.c.
997      VMS C's RTL has a fully up to date gmtime() and gmtime_r() since V7.1,
998      which is the minimum version we support.
999      [Richard Levitte]
1000
1001  Changes between 1.1.0d and 1.1.0e [16 Feb 2017]
1002
1003   *) Encrypt-Then-Mac renegotiation crash
1004
1005      During a renegotiation handshake if the Encrypt-Then-Mac extension is
1006      negotiated where it was not in the original handshake (or vice-versa) then
1007      this can cause OpenSSL to crash (dependant on ciphersuite). Both clients
1008      and servers are affected.
1009
1010      This issue was reported to OpenSSL by Joe Orton (Red Hat).
1011      (CVE-2017-3733)
1012      [Matt Caswell]
1013
1014  Changes between 1.1.0c and 1.1.0d [26 Jan 2017]
1015
1016   *) Truncated packet could crash via OOB read
1017
1018      If one side of an SSL/TLS path is running on a 32-bit host and a specific
1019      cipher is being used, then a truncated packet can cause that host to
1020      perform an out-of-bounds read, usually resulting in a crash.
1021
1022      This issue was reported to OpenSSL by Robert Święcki of Google.
1023      (CVE-2017-3731)
1024      [Andy Polyakov]
1025
1026   *) Bad (EC)DHE parameters cause a client crash
1027
1028      If a malicious server supplies bad parameters for a DHE or ECDHE key
1029      exchange then this can result in the client attempting to dereference a
1030      NULL pointer leading to a client crash. This could be exploited in a Denial
1031      of Service attack.
1032
1033      This issue was reported to OpenSSL by Guido Vranken.
1034      (CVE-2017-3730)
1035      [Matt Caswell]
1036
1037   *) BN_mod_exp may produce incorrect results on x86_64
1038
1039      There is a carry propagating bug in the x86_64 Montgomery squaring
1040      procedure. No EC algorithms are affected. Analysis suggests that attacks
1041      against RSA and DSA as a result of this defect would be very difficult to
1042      perform and are not believed likely. Attacks against DH are considered just
1043      feasible (although very difficult) because most of the work necessary to
1044      deduce information about a private key may be performed offline. The amount
1045      of resources required for such an attack would be very significant and
1046      likely only accessible to a limited number of attackers. An attacker would
1047      additionally need online access to an unpatched system using the target
1048      private key in a scenario with persistent DH parameters and a private
1049      key that is shared between multiple clients. For example this can occur by
1050      default in OpenSSL DHE based SSL/TLS ciphersuites. Note: This issue is very
1051      similar to CVE-2015-3193 but must be treated as a separate problem.
1052
1053      This issue was reported to OpenSSL by the OSS-Fuzz project.
1054      (CVE-2017-3732)
1055      [Andy Polyakov]
1056
1057  Changes between 1.1.0b and 1.1.0c [10 Nov 2016]
1058
1059   *) ChaCha20/Poly1305 heap-buffer-overflow
1060
1061      TLS connections using *-CHACHA20-POLY1305 ciphersuites are susceptible to
1062      a DoS attack by corrupting larger payloads. This can result in an OpenSSL
1063      crash. This issue is not considered to be exploitable beyond a DoS.
1064
1065      This issue was reported to OpenSSL by Robert Święcki (Google Security Team)
1066      (CVE-2016-7054)
1067      [Richard Levitte]
1068
1069   *) CMS Null dereference
1070
1071      Applications parsing invalid CMS structures can crash with a NULL pointer
1072      dereference. This is caused by a bug in the handling of the ASN.1 CHOICE
1073      type in OpenSSL 1.1.0 which can result in a NULL value being passed to the
1074      structure callback if an attempt is made to free certain invalid encodings.
1075      Only CHOICE structures using a callback which do not handle NULL value are
1076      affected.
1077
1078      This issue was reported to OpenSSL by Tyler Nighswander of ForAllSecure.
1079      (CVE-2016-7053)
1080      [Stephen Henson]
1081
1082   *) Montgomery multiplication may produce incorrect results
1083
1084      There is a carry propagating bug in the Broadwell-specific Montgomery
1085      multiplication procedure that handles input lengths divisible by, but
1086      longer than 256 bits. Analysis suggests that attacks against RSA, DSA
1087      and DH private keys are impossible. This is because the subroutine in
1088      question is not used in operations with the private key itself and an input
1089      of the attacker's direct choice. Otherwise the bug can manifest itself as
1090      transient authentication and key negotiation failures or reproducible
1091      erroneous outcome of public-key operations with specially crafted input.
1092      Among EC algorithms only Brainpool P-512 curves are affected and one
1093      presumably can attack ECDH key negotiation. Impact was not analyzed in
1094      detail, because pre-requisites for attack are considered unlikely. Namely
1095      multiple clients have to choose the curve in question and the server has to
1096      share the private key among them, neither of which is default behaviour.
1097      Even then only clients that chose the curve will be affected.
1098
1099      This issue was publicly reported as transient failures and was not
1100      initially recognized as a security issue. Thanks to Richard Morgan for
1101      providing reproducible case.
1102      (CVE-2016-7055)
1103      [Andy Polyakov]
1104
1105   *) Removed automatic addition of RPATH in shared libraries and executables,
1106      as this was a remainder from OpenSSL 1.0.x and isn't needed any more.
1107      [Richard Levitte]
1108
1109  Changes between 1.1.0a and 1.1.0b [26 Sep 2016]
1110
1111   *) Fix Use After Free for large message sizes
1112
1113      The patch applied to address CVE-2016-6307 resulted in an issue where if a
1114      message larger than approx 16k is received then the underlying buffer to
1115      store the incoming message is reallocated and moved. Unfortunately a
1116      dangling pointer to the old location is left which results in an attempt to
1117      write to the previously freed location. This is likely to result in a
1118      crash, however it could potentially lead to execution of arbitrary code.
1119
1120      This issue only affects OpenSSL 1.1.0a.
1121
1122      This issue was reported to OpenSSL by Robert Święcki.
1123      (CVE-2016-6309)
1124      [Matt Caswell]
1125
1126  Changes between 1.1.0 and 1.1.0a [22 Sep 2016]
1127
1128   *) OCSP Status Request extension unbounded memory growth
1129
1130      A malicious client can send an excessively large OCSP Status Request
1131      extension. If that client continually requests renegotiation, sending a
1132      large OCSP Status Request extension each time, then there will be unbounded
1133      memory growth on the server. This will eventually lead to a Denial Of
1134      Service attack through memory exhaustion. Servers with a default
1135      configuration are vulnerable even if they do not support OCSP. Builds using
1136      the "no-ocsp" build time option are not affected.
1137
1138      This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
1139      (CVE-2016-6304)
1140      [Matt Caswell]
1141
1142   *) SSL_peek() hang on empty record
1143
1144      OpenSSL 1.1.0 SSL/TLS will hang during a call to SSL_peek() if the peer
1145      sends an empty record. This could be exploited by a malicious peer in a
1146      Denial Of Service attack.
1147
1148      This issue was reported to OpenSSL by Alex Gaynor.
1149      (CVE-2016-6305)
1150      [Matt Caswell]
1151
1152   *) Excessive allocation of memory in tls_get_message_header() and
1153      dtls1_preprocess_fragment()
1154
1155      A (D)TLS message includes 3 bytes for its length in the header for the
1156      message. This would allow for messages up to 16Mb in length. Messages of
1157      this length are excessive and OpenSSL includes a check to ensure that a
1158      peer is sending reasonably sized messages in order to avoid too much memory
1159      being consumed to service a connection. A flaw in the logic of version
1160      1.1.0 means that memory for the message is allocated too early, prior to
1161      the excessive message length check. Due to way memory is allocated in
1162      OpenSSL this could mean an attacker could force up to 21Mb to be allocated
1163      to service a connection. This could lead to a Denial of Service through
1164      memory exhaustion. However, the excessive message length check still takes
1165      place, and this would cause the connection to immediately fail. Assuming
1166      that the application calls SSL_free() on the failed connection in a timely
1167      manner then the 21Mb of allocated memory will then be immediately freed
1168      again. Therefore the excessive memory allocation will be transitory in
1169      nature. This then means that there is only a security impact if:
1170
1171      1) The application does not call SSL_free() in a timely manner in the event
1172      that the connection fails
1173      or
1174      2) The application is working in a constrained environment where there is
1175      very little free memory
1176      or
1177      3) The attacker initiates multiple connection attempts such that there are
1178      multiple connections in a state where memory has been allocated for the
1179      connection; SSL_free() has not yet been called; and there is insufficient
1180      memory to service the multiple requests.
1181
1182      Except in the instance of (1) above any Denial Of Service is likely to be
1183      transitory because as soon as the connection fails the memory is
1184      subsequently freed again in the SSL_free() call. However there is an
1185      increased risk during this period of application crashes due to the lack of
1186      memory - which would then mean a more serious Denial of Service.
1187
1188      This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
1189      (CVE-2016-6307 and CVE-2016-6308)
1190      [Matt Caswell]
1191
1192   *) solaris-x86-cc, i.e. 32-bit configuration with vendor compiler,
1193      had to be removed. Primary reason is that vendor assembler can't
1194      assemble our modules with -KPIC flag. As result it, assembly
1195      support, was not even available as option. But its lack means
1196      lack of side-channel resistant code, which is incompatible with
1197      security by todays standards. Fortunately gcc is readily available
1198      prepackaged option, which we firmly point at...
1199      [Andy Polyakov]
1200
1201  Changes between 1.0.2h and 1.1.0  [25 Aug 2016]
1202
1203   *) Windows command-line tool supports UTF-8 opt-in option for arguments
1204      and console input. Setting OPENSSL_WIN32_UTF8 environment variable
1205      (to any value) allows Windows user to access PKCS#12 file generated
1206      with Windows CryptoAPI and protected with non-ASCII password, as well
1207      as files generated under UTF-8 locale on Linux also protected with
1208      non-ASCII password.
1209      [Andy Polyakov]
1210
1211   *) To mitigate the SWEET32 attack (CVE-2016-2183), 3DES cipher suites
1212      have been disabled by default and removed from DEFAULT, just like RC4.
1213      See the RC4 item below to re-enable both.
1214      [Rich Salz]
1215
1216   *) The method for finding the storage location for the Windows RAND seed file
1217      has changed. First we check %RANDFILE%. If that is not set then we check
1218      the directories %HOME%, %USERPROFILE% and %SYSTEMROOT% in that order. If
1219      all else fails we fall back to C:\.
1220      [Matt Caswell]
1221
1222   *) The EVP_EncryptUpdate() function has had its return type changed from void
1223      to int. A return of 0 indicates and error while a return of 1 indicates
1224      success.
1225      [Matt Caswell]
1226
1227   *) The flags RSA_FLAG_NO_CONSTTIME, DSA_FLAG_NO_EXP_CONSTTIME and
1228      DH_FLAG_NO_EXP_CONSTTIME which previously provided the ability to switch
1229      off the constant time implementation for RSA, DSA and DH have been made
1230      no-ops and deprecated.
1231      [Matt Caswell]
1232
1233   *) Windows RAND implementation was simplified to only get entropy by
1234      calling CryptGenRandom(). Various other RAND-related tickets
1235      were also closed.
1236      [Joseph Wylie Yandle, Rich Salz]
1237
1238   *) The stack and lhash API's were renamed to start with OPENSSL_SK_
1239      and OPENSSL_LH_, respectively.  The old names are available
1240      with API compatibility.  They new names are now completely documented.
1241      [Rich Salz]
1242
1243   *) Unify TYPE_up_ref(obj) methods signature.
1244      SSL_CTX_up_ref(), SSL_up_ref(), X509_up_ref(), EVP_PKEY_up_ref(),
1245      X509_CRL_up_ref(), X509_OBJECT_up_ref_count() methods are now returning an
1246      int (instead of void) like all others TYPE_up_ref() methods.
1247      So now these methods also check the return value of CRYPTO_atomic_add(),
1248      and the validity of object reference counter.
1249      [fdasilvayy@gmail.com]
1250
1251   *) With Windows Visual Studio builds, the .pdb files are installed
1252      alongside the installed libraries and executables.  For a static
1253      library installation, ossl_static.pdb is the associate compiler
1254      generated .pdb file to be used when linking programs.
1255      [Richard Levitte]
1256
1257   *) Remove openssl.spec.  Packaging files belong with the packagers.
1258      [Richard Levitte]
1259
1260   *) Automatic Darwin/OSX configuration has had a refresh, it will now
1261      recognise x86_64 architectures automatically.  You can still decide
1262      to build for a different bitness with the environment variable
1263      KERNEL_BITS (can be 32 or 64), for example:
1264
1265          KERNEL_BITS=32 ./config
1266
1267      [Richard Levitte]
1268
1269   *) Change default algorithms in pkcs8 utility to use PKCS#5 v2.0,
1270      256 bit AES and HMAC with SHA256.
1271      [Steve Henson]
1272
1273   *) Remove support for MIPS o32 ABI on IRIX (and IRIX only).
1274      [Andy Polyakov]
1275
1276   *) Triple-DES ciphers have been moved from HIGH to MEDIUM.
1277      [Rich Salz]
1278
1279   *) To enable users to have their own config files and build file templates,
1280      Configure looks in the directory indicated by the environment variable
1281      OPENSSL_LOCAL_CONFIG_DIR as well as the in-source Configurations/
1282      directory.  On VMS, OPENSSL_LOCAL_CONFIG_DIR is expected to be a logical
1283      name and is used as is.
1284      [Richard Levitte]
1285
1286   *) The following datatypes were made opaque: X509_OBJECT, X509_STORE_CTX,
1287      X509_STORE, X509_LOOKUP, and X509_LOOKUP_METHOD.  The unused type
1288      X509_CERT_FILE_CTX was removed.
1289      [Rich Salz]
1290
1291   *) "shared" builds are now the default. To create only static libraries use
1292      the "no-shared" Configure option.
1293      [Matt Caswell]
1294
1295   *) Remove the no-aes, no-hmac, no-rsa, no-sha and no-md5 Configure options.
1296      All of these option have not worked for some while and are fundamental
1297      algorithms.
1298      [Matt Caswell]
1299
1300   *) Make various cleanup routines no-ops and mark them as deprecated. Most
1301      global cleanup functions are no longer required because they are handled
1302      via auto-deinit (see OPENSSL_init_crypto and OPENSSL_init_ssl man pages).
1303      Explicitly de-initing can cause problems (e.g. where a library that uses
1304      OpenSSL de-inits, but an application is still using it). The affected
1305      functions are CONF_modules_free(), ENGINE_cleanup(), OBJ_cleanup(),
1306      EVP_cleanup(), BIO_sock_cleanup(), CRYPTO_cleanup_all_ex_data(),
1307      RAND_cleanup(), SSL_COMP_free_compression_methods(), ERR_free_strings() and
1308      COMP_zlib_cleanup().
1309      [Matt Caswell]
1310
1311   *) --strict-warnings no longer enables runtime debugging options
1312      such as REF_DEBUG. Instead, debug options are automatically
1313      enabled with '--debug' builds.
1314      [Andy Polyakov, Emilia Käsper]
1315
1316   *) Made DH and DH_METHOD opaque. The structures for managing DH objects
1317      have been moved out of the public header files. New functions for managing
1318      these have been added.
1319      [Matt Caswell]
1320
1321   *) Made RSA and RSA_METHOD opaque. The structures for managing RSA
1322      objects have been moved out of the public header files. New
1323      functions for managing these have been added.
1324      [Richard Levitte]
1325
1326   *) Made DSA and DSA_METHOD opaque. The structures for managing DSA objects
1327      have been moved out of the public header files. New functions for managing
1328      these have been added.
1329      [Matt Caswell]
1330
1331   *) Made BIO and BIO_METHOD opaque. The structures for managing BIOs have been
1332      moved out of the public header files. New functions for managing these
1333      have been added.
1334      [Matt Caswell]
1335
1336   *) Removed no-rijndael as a config option. Rijndael is an old name for AES.
1337      [Matt Caswell]
1338
1339   *) Removed the mk1mf build scripts.
1340      [Richard Levitte]
1341
1342   *) Headers are now wrapped, if necessary, with OPENSSL_NO_xxx, so
1343      it is always safe to #include a header now.
1344      [Rich Salz]
1345
1346   *) Removed the aged BC-32 config and all its supporting scripts
1347      [Richard Levitte]
1348
1349   *) Removed support for Ultrix, Netware, and OS/2.
1350      [Rich Salz]
1351
1352   *) Add support for HKDF.
1353      [Alessandro Ghedini]
1354
1355   *) Add support for blake2b and blake2s
1356      [Bill Cox]
1357
1358   *) Added support for "pipelining". Ciphers that have the
1359      EVP_CIPH_FLAG_PIPELINE flag set have a capability to process multiple
1360      encryptions/decryptions simultaneously. There are currently no built-in
1361      ciphers with this property but the expectation is that engines will be able
1362      to offer it to significantly improve throughput. Support has been extended
1363      into libssl so that multiple records for a single connection can be
1364      processed in one go (for >=TLS 1.1).
1365      [Matt Caswell]
1366
1367   *) Added the AFALG engine. This is an async capable engine which is able to
1368      offload work to the Linux kernel. In this initial version it only supports
1369      AES128-CBC. The kernel must be version 4.1.0 or greater.
1370      [Catriona Lucey]
1371
1372   *) OpenSSL now uses a new threading API. It is no longer necessary to
1373      set locking callbacks to use OpenSSL in a multi-threaded environment. There
1374      are two supported threading models: pthreads and windows threads. It is
1375      also possible to configure OpenSSL at compile time for "no-threads". The
1376      old threading API should no longer be used. The functions have been
1377      replaced with "no-op" compatibility macros.
1378      [Alessandro Ghedini, Matt Caswell]
1379
1380   *) Modify behavior of ALPN to invoke callback after SNI/servername
1381      callback, such that updates to the SSL_CTX affect ALPN.
1382      [Todd Short]
1383
1384   *) Add SSL_CIPHER queries for authentication and key-exchange.
1385      [Todd Short]
1386
1387   *) Changes to the DEFAULT cipherlist:
1388        - Prefer (EC)DHE handshakes over plain RSA.
1389        - Prefer AEAD ciphers over legacy ciphers.
1390        - Prefer ECDSA over RSA when both certificates are available.
1391        - Prefer TLSv1.2 ciphers/PRF.
1392        - Remove DSS, SEED, IDEA, CAMELLIA, and AES-CCM from the
1393          default cipherlist.
1394      [Emilia Käsper]
1395
1396   *) Change the ECC default curve list to be this, in order: x25519,
1397      secp256r1, secp521r1, secp384r1.
1398      [Rich Salz]
1399
1400   *) RC4 based libssl ciphersuites are now classed as "weak" ciphers and are
1401      disabled by default. They can be re-enabled using the
1402      enable-weak-ssl-ciphers option to Configure.
1403      [Matt Caswell]
1404
1405   *) If the server has ALPN configured, but supports no protocols that the
1406      client advertises, send a fatal "no_application_protocol" alert.
1407      This behaviour is SHALL in RFC 7301, though it isn't universally
1408      implemented by other servers.
1409      [Emilia Käsper]
1410
1411   *) Add X25519 support.
1412      Add ASN.1 and EVP_PKEY methods for X25519. This includes support
1413      for public and private key encoding using the format documented in
1414      draft-ietf-curdle-pkix-02. The corresponding EVP_PKEY method supports
1415      key generation and key derivation.
1416
1417      TLS support complies with draft-ietf-tls-rfc4492bis-08 and uses
1418      X25519(29).
1419      [Steve Henson]
1420
1421   *) Deprecate SRP_VBASE_get_by_user.
1422      SRP_VBASE_get_by_user had inconsistent memory management behaviour.
1423      In order to fix an unavoidable memory leak (CVE-2016-0798),
1424      SRP_VBASE_get_by_user was changed to ignore the "fake user" SRP
1425      seed, even if the seed is configured.
1426
1427      Users should use SRP_VBASE_get1_by_user instead. Note that in
1428      SRP_VBASE_get1_by_user, caller must free the returned value. Note
1429      also that even though configuring the SRP seed attempts to hide
1430      invalid usernames by continuing the handshake with fake
1431      credentials, this behaviour is not constant time and no strong
1432      guarantees are made that the handshake is indistinguishable from
1433      that of a valid user.
1434      [Emilia Käsper]
1435
1436   *) Configuration change; it's now possible to build dynamic engines
1437      without having to build shared libraries and vice versa.  This
1438      only applies to the engines in engines/, those in crypto/engine/
1439      will always be built into libcrypto (i.e. "static").
1440
1441      Building dynamic engines is enabled by default; to disable, use
1442      the configuration option "disable-dynamic-engine".
1443
1444      The only requirements for building dynamic engines are the
1445      presence of the DSO module and building with position independent
1446      code, so they will also automatically be disabled if configuring
1447      with "disable-dso" or "disable-pic".
1448
1449      The macros OPENSSL_NO_STATIC_ENGINE and OPENSSL_NO_DYNAMIC_ENGINE
1450      are also taken away from openssl/opensslconf.h, as they are
1451      irrelevant.
1452      [Richard Levitte]
1453
1454   *) Configuration change; if there is a known flag to compile
1455      position independent code, it will always be applied on the
1456      libcrypto and libssl object files, and never on the application
1457      object files.  This means other libraries that use routines from
1458      libcrypto / libssl can be made into shared libraries regardless
1459      of how OpenSSL was configured.
1460
1461      If this isn't desirable, the configuration options "disable-pic"
1462      or "no-pic" can be used to disable the use of PIC.  This will
1463      also disable building shared libraries and dynamic engines.
1464      [Richard Levitte]
1465
1466   *) Removed JPAKE code.  It was experimental and has no wide use.
1467      [Rich Salz]
1468
1469   *) The INSTALL_PREFIX Makefile variable has been renamed to
1470      DESTDIR.  That makes for less confusion on what this variable
1471      is for.  Also, the configuration option --install_prefix is
1472      removed.
1473      [Richard Levitte]
1474
1475   *) Heartbeat for TLS has been removed and is disabled by default
1476      for DTLS; configure with enable-heartbeats.  Code that uses the
1477      old #define's might need to be updated.
1478      [Emilia Käsper, Rich Salz]
1479
1480   *) Rename REF_CHECK to REF_DEBUG.
1481      [Rich Salz]
1482
1483   *) New "unified" build system
1484
1485      The "unified" build system is aimed to be a common system for all
1486      platforms we support.  With it comes new support for VMS.
1487
1488      This system builds supports building in a different directory tree
1489      than the source tree.  It produces one Makefile (for unix family
1490      or lookalikes), or one descrip.mms (for VMS).
1491
1492      The source of information to make the Makefile / descrip.mms is
1493      small files called 'build.info', holding the necessary
1494      information for each directory with source to compile, and a
1495      template in Configurations, like unix-Makefile.tmpl or
1496      descrip.mms.tmpl.
1497
1498      With this change, the library names were also renamed on Windows
1499      and on VMS.  They now have names that are closer to the standard
1500      on Unix, and include the major version number, and in certain
1501      cases, the architecture they are built for.  See "Notes on shared
1502      libraries" in INSTALL.
1503
1504      We rely heavily on the perl module Text::Template.
1505      [Richard Levitte]
1506
1507   *) Added support for auto-initialisation and de-initialisation of the library.
1508      OpenSSL no longer requires explicit init or deinit routines to be called,
1509      except in certain circumstances. See the OPENSSL_init_crypto() and
1510      OPENSSL_init_ssl() man pages for further information.
1511      [Matt Caswell]
1512
1513   *) The arguments to the DTLSv1_listen function have changed. Specifically the
1514      "peer" argument is now expected to be a BIO_ADDR object.
1515
1516   *) Rewrite of BIO networking library. The BIO library lacked consistent
1517      support of IPv6, and adding it required some more extensive
1518      modifications.  This introduces the BIO_ADDR and BIO_ADDRINFO types,
1519      which hold all types of addresses and chains of address information.
1520      It also introduces a new API, with functions like BIO_socket,
1521      BIO_connect, BIO_listen, BIO_lookup and a rewrite of BIO_accept.
1522      The source/sink BIOs BIO_s_connect, BIO_s_accept and BIO_s_datagram
1523      have been adapted accordingly.
1524      [Richard Levitte]
1525
1526   *) RSA_padding_check_PKCS1_type_1 now accepts inputs with and without
1527      the leading 0-byte.
1528      [Emilia Käsper]
1529
1530   *) CRIME protection: disable compression by default, even if OpenSSL is
1531      compiled with zlib enabled. Applications can still enable compression
1532      by calling SSL_CTX_clear_options(ctx, SSL_OP_NO_COMPRESSION), or by
1533      using the SSL_CONF library to configure compression.
1534      [Emilia Käsper]
1535
1536   *) The signature of the session callback configured with
1537      SSL_CTX_sess_set_get_cb was changed. The read-only input buffer
1538      was explicitly marked as 'const unsigned char*' instead of
1539      'unsigned char*'.
1540      [Emilia Käsper]
1541
1542   *) Always DPURIFY. Remove the use of uninitialized memory in the
1543      RNG, and other conditional uses of DPURIFY. This makes -DPURIFY a no-op.
1544      [Emilia Käsper]
1545
1546   *) Removed many obsolete configuration items, including
1547         DES_PTR, DES_RISC1, DES_RISC2, DES_INT
1548         MD2_CHAR, MD2_INT, MD2_LONG
1549         BF_PTR, BF_PTR2
1550         IDEA_SHORT, IDEA_LONG
1551         RC2_SHORT, RC2_LONG, RC4_LONG, RC4_CHUNK, RC4_INDEX
1552      [Rich Salz, with advice from Andy Polyakov]
1553
1554   *) Many BN internals have been moved to an internal header file.
1555      [Rich Salz with help from Andy Polyakov]
1556
1557   *) Configuration and writing out the results from it has changed.
1558      Files such as Makefile include/openssl/opensslconf.h and are now
1559      produced through general templates, such as Makefile.in and
1560      crypto/opensslconf.h.in and some help from the perl module
1561      Text::Template.
1562
1563      Also, the center of configuration information is no longer
1564      Makefile.  Instead, Configure produces a perl module in
1565      configdata.pm which holds most of the config data (in the hash
1566      table %config), the target data that comes from the target
1567      configuration in one of the Configurations/*.conf files (in
1568      %target).
1569      [Richard Levitte]
1570
1571   *) To clarify their intended purposes, the Configure options
1572      --prefix and --openssldir change their semantics, and become more
1573      straightforward and less interdependent.
1574
1575      --prefix shall be used exclusively to give the location INSTALLTOP
1576      where programs, scripts, libraries, include files and manuals are
1577      going to be installed.  The default is now /usr/local.
1578
1579      --openssldir shall be used exclusively to give the default
1580      location OPENSSLDIR where certificates, private keys, CRLs are
1581      managed.  This is also where the default openssl.cnf gets
1582      installed.
1583      If the directory given with this option is a relative path, the
1584      values of both the --prefix value and the --openssldir value will
1585      be combined to become OPENSSLDIR.
1586      The default for --openssldir is INSTALLTOP/ssl.
1587
1588      Anyone who uses --openssldir to specify where OpenSSL is to be
1589      installed MUST change to use --prefix instead.
1590      [Richard Levitte]
1591
1592   *) The GOST engine was out of date and therefore it has been removed. An up
1593      to date GOST engine is now being maintained in an external repository.
1594      See: https://wiki.openssl.org/index.php/Binaries. Libssl still retains
1595      support for GOST ciphersuites (these are only activated if a GOST engine
1596      is present).
1597      [Matt Caswell]
1598
1599   *) EGD is no longer supported by default; use enable-egd when
1600      configuring.
1601      [Ben Kaduk and Rich Salz]
1602
1603   *) The distribution now has Makefile.in files, which are used to
1604      create Makefile's when Configure is run.  *Configure must be run
1605      before trying to build now.*
1606      [Rich Salz]
1607
1608   *) The return value for SSL_CIPHER_description() for error conditions
1609      has changed.
1610      [Rich Salz]
1611
1612   *) Support for RFC6698/RFC7671 DANE TLSA peer authentication.
1613
1614      Obtaining and performing DNSSEC validation of TLSA records is
1615      the application's responsibility.  The application provides
1616      the TLSA records of its choice to OpenSSL, and these are then
1617      used to authenticate the peer.
1618
1619      The TLSA records need not even come from DNS.  They can, for
1620      example, be used to implement local end-entity certificate or
1621      trust-anchor "pinning", where the "pin" data takes the form
1622      of TLSA records, which can augment or replace verification
1623      based on the usual WebPKI public certification authorities.
1624      [Viktor Dukhovni]
1625
1626   *) Revert default OPENSSL_NO_DEPRECATED setting.  Instead OpenSSL
1627      continues to support deprecated interfaces in default builds.
1628      However, applications are strongly advised to compile their
1629      source files with -DOPENSSL_API_COMPAT=0x10100000L, which hides
1630      the declarations of all interfaces deprecated in 0.9.8, 1.0.0
1631      or the 1.1.0 releases.
1632
1633      In environments in which all applications have been ported to
1634      not use any deprecated interfaces OpenSSL's Configure script
1635      should be used with the --api=1.1.0 option to entirely remove
1636      support for the deprecated features from the library and
1637      unconditionally disable them in the installed headers.
1638      Essentially the same effect can be achieved with the "no-deprecated"
1639      argument to Configure, except that this will always restrict
1640      the build to just the latest API, rather than a fixed API
1641      version.
1642
1643      As applications are ported to future revisions of the API,
1644      they should update their compile-time OPENSSL_API_COMPAT define
1645      accordingly, but in most cases should be able to continue to
1646      compile with later releases.
1647
1648      The OPENSSL_API_COMPAT versions for 1.0.0, and 0.9.8 are
1649      0x10000000L and 0x00908000L, respectively.  However those
1650      versions did not support the OPENSSL_API_COMPAT feature, and
1651      so applications are not typically tested for explicit support
1652      of just the undeprecated features of either release.
1653      [Viktor Dukhovni]
1654
1655   *) Add support for setting the minimum and maximum supported protocol.
1656      It can bet set via the SSL_set_min_proto_version() and
1657      SSL_set_max_proto_version(), or via the SSL_CONF's MinProtocol and
1658      MaxProtocol.  It's recommended to use the new APIs to disable
1659      protocols instead of disabling individual protocols using
1660      SSL_set_options() or SSL_CONF's Protocol.  This change also
1661      removes support for disabling TLS 1.2 in the OpenSSL TLS
1662      client at compile time by defining OPENSSL_NO_TLS1_2_CLIENT.
1663      [Kurt Roeckx]
1664
1665   *) Support for ChaCha20 and Poly1305 added to libcrypto and libssl.
1666      [Andy Polyakov]
1667
1668   *) New EC_KEY_METHOD, this replaces the older ECDSA_METHOD and ECDH_METHOD
1669      and integrates ECDSA and ECDH functionality into EC. Implementations can
1670      now redirect key generation and no longer need to convert to or from
1671      ECDSA_SIG format.
1672
1673      Note: the ecdsa.h and ecdh.h headers are now no longer needed and just
1674      include the ec.h header file instead.
1675      [Steve Henson]
1676
1677   *) Remove support for all 40 and 56 bit ciphers.  This includes all the export
1678      ciphers who are no longer supported and drops support the ephemeral RSA key
1679      exchange. The LOW ciphers currently doesn't have any ciphers in it.
1680      [Kurt Roeckx]
1681
1682   *) Made EVP_MD_CTX, EVP_MD, EVP_CIPHER_CTX, EVP_CIPHER and HMAC_CTX
1683      opaque.  For HMAC_CTX, the following constructors and destructors
1684      were added:
1685
1686         HMAC_CTX *HMAC_CTX_new(void);
1687         void HMAC_CTX_free(HMAC_CTX *ctx);
1688
1689      For EVP_MD and EVP_CIPHER, complete APIs to create, fill and
1690      destroy such methods has been added.  See EVP_MD_meth_new(3) and
1691      EVP_CIPHER_meth_new(3) for documentation.
1692
1693      Additional changes:
1694      1) EVP_MD_CTX_cleanup(), EVP_CIPHER_CTX_cleanup() and
1695         HMAC_CTX_cleanup() were removed.  HMAC_CTX_reset() and
1696         EVP_MD_CTX_reset() should be called instead to reinitialise
1697         an already created structure.
1698      2) For consistency with the majority of our object creators and
1699         destructors, EVP_MD_CTX_(create|destroy) were renamed to
1700         EVP_MD_CTX_(new|free).  The old names are retained as macros
1701         for deprecated builds.
1702      [Richard Levitte]
1703
1704   *) Added ASYNC support. Libcrypto now includes the async sub-library to enable
1705      cryptographic operations to be performed asynchronously as long as an
1706      asynchronous capable engine is used. See the ASYNC_start_job() man page for
1707      further details. Libssl has also had this capability integrated with the
1708      introduction of the new mode SSL_MODE_ASYNC and associated error
1709      SSL_ERROR_WANT_ASYNC. See the SSL_CTX_set_mode() and SSL_get_error() man
1710      pages. This work was developed in partnership with Intel Corp.
1711      [Matt Caswell]
1712
1713   *) SSL_{CTX_}set_ecdh_auto() has been removed and ECDH is support is
1714      always enabled now.  If you want to disable the support you should
1715      exclude it using the list of supported ciphers. This also means that the
1716      "-no_ecdhe" option has been removed from s_server.
1717      [Kurt Roeckx]
1718
1719   *) SSL_{CTX}_set_tmp_ecdh() which can set 1 EC curve now internally calls
1720      SSL_{CTX_}set1_curves() which can set a list.
1721      [Kurt Roeckx]
1722
1723   *) Remove support for SSL_{CTX_}set_tmp_ecdh_callback().  You should set the
1724      curve you want to support using SSL_{CTX_}set1_curves().
1725      [Kurt Roeckx]
1726
1727   *) State machine rewrite. The state machine code has been significantly
1728      refactored in order to remove much duplication of code and solve issues
1729      with the old code (see ssl/statem/README for further details). This change
1730      does have some associated API changes. Notably the SSL_state() function
1731      has been removed and replaced by SSL_get_state which now returns an
1732      "OSSL_HANDSHAKE_STATE" instead of an int. SSL_set_state() has been removed
1733      altogether. The previous handshake states defined in ssl.h and ssl3.h have
1734      also been removed.
1735      [Matt Caswell]
1736
1737   *) All instances of the string "ssleay" in the public API were replaced
1738      with OpenSSL (case-matching; e.g., OPENSSL_VERSION for #define's)
1739      Some error codes related to internal RSA_eay API's were renamed.
1740      [Rich Salz]
1741
1742   *) The demo files in crypto/threads were moved to demo/threads.
1743      [Rich Salz]
1744
1745   *) Removed obsolete engines: 4758cca, aep, atalla, cswift, nuron, gmp,
1746      sureware and ubsec.
1747      [Matt Caswell, Rich Salz]
1748
1749   *) New ASN.1 embed macro.
1750
1751      New ASN.1 macro ASN1_EMBED. This is the same as ASN1_SIMPLE except the
1752      structure is not allocated: it is part of the parent. That is instead of
1753
1754      FOO *x;
1755
1756      it must be:
1757
1758      FOO x;
1759
1760      This reduces memory fragmentation and make it impossible to accidentally
1761      set a mandatory field to NULL.
1762
1763      This currently only works for some fields specifically a SEQUENCE, CHOICE,
1764      or ASN1_STRING type which is part of a parent SEQUENCE. Since it is
1765      equivalent to ASN1_SIMPLE it cannot be tagged, OPTIONAL, SET OF or
1766      SEQUENCE OF.
1767      [Steve Henson]
1768
1769   *) Remove EVP_CHECK_DES_KEY, a compile-time option that never compiled.
1770      [Emilia Käsper]
1771
1772   *) Removed DES and RC4 ciphersuites from DEFAULT. Also removed RC2 although
1773      in 1.0.2 EXPORT was already removed and the only RC2 ciphersuite is also
1774      an EXPORT one. COMPLEMENTOFDEFAULT has been updated accordingly to add
1775      DES and RC4 ciphersuites.
1776      [Matt Caswell]
1777
1778   *) Rewrite EVP_DecodeUpdate (base64 decoding) to fix several bugs.
1779      This changes the decoding behaviour for some invalid messages,
1780      though the change is mostly in the more lenient direction, and
1781      legacy behaviour is preserved as much as possible.
1782      [Emilia Käsper]
1783
1784   *) Fix no-stdio build.
1785     [ David Woodhouse <David.Woodhouse@intel.com> and also
1786       Ivan Nestlerode <ivan.nestlerode@sonos.com> ]
1787
1788   *) New testing framework
1789      The testing framework has been largely rewritten and is now using
1790      perl and the perl modules Test::Harness and an extended variant of
1791      Test::More called OpenSSL::Test to do its work.  All test scripts in
1792      test/ have been rewritten into test recipes, and all direct calls to
1793      executables in test/Makefile have become individual recipes using the
1794      simplified testing OpenSSL::Test::Simple.
1795
1796      For documentation on our testing modules, do:
1797
1798         perldoc test/testlib/OpenSSL/Test/Simple.pm
1799         perldoc test/testlib/OpenSSL/Test.pm
1800
1801      [Richard Levitte]
1802
1803   *) Revamped memory debug; only -DCRYPTO_MDEBUG and -DCRYPTO_MDEBUG_ABORT
1804      are used; the latter aborts on memory leaks (usually checked on exit).
1805      Some undocumented "set malloc, etc., hooks" functions were removed
1806      and others were changed.  All are now documented.
1807      [Rich Salz]
1808
1809   *) In DSA_generate_parameters_ex, if the provided seed is too short,
1810      return an error
1811      [Rich Salz and Ismo Puustinen <ismo.puustinen@intel.com>]
1812
1813   *) Rewrite PSK to support ECDHE_PSK, DHE_PSK and RSA_PSK. Add ciphersuites
1814      from RFC4279, RFC4785, RFC5487, RFC5489.
1815
1816      Thanks to Christian J. Dietrich and Giuseppe D'Angelo for the
1817      original RSA_PSK patch.
1818      [Steve Henson]
1819
1820   *) Dropped support for the SSL3_FLAGS_DELAY_CLIENT_FINISHED flag. This SSLeay
1821      era flag was never set throughout the codebase (only read). Also removed
1822      SSL3_FLAGS_POP_BUFFER which was only used if
1823      SSL3_FLAGS_DELAY_CLIENT_FINISHED was also set.
1824      [Matt Caswell]
1825
1826   *) Changed the default name options in the "ca", "crl", "req" and "x509"
1827      to be "oneline" instead of "compat".
1828      [Richard Levitte]
1829
1830   *) Remove SSL_OP_TLS_BLOCK_PADDING_BUG. This is SSLeay legacy, we're
1831      not aware of clients that still exhibit this bug, and the workaround
1832      hasn't been working properly for a while.
1833      [Emilia Käsper]
1834
1835   *) The return type of BIO_number_read() and BIO_number_written() as well as
1836      the corresponding num_read and num_write members in the BIO structure has
1837      changed from unsigned long to uint64_t. On platforms where an unsigned
1838      long is 32 bits (e.g. Windows) these counters could overflow if >4Gb is
1839      transferred.
1840      [Matt Caswell]
1841
1842   *) Given the pervasive nature of TLS extensions it is inadvisable to run
1843      OpenSSL without support for them. It also means that maintaining
1844      the OPENSSL_NO_TLSEXT option within the code is very invasive (and probably
1845      not well tested). Therefore the OPENSSL_NO_TLSEXT option has been removed.
1846      [Matt Caswell]
1847
1848   *) Removed support for the two export grade static DH ciphersuites
1849      EXP-DH-RSA-DES-CBC-SHA and EXP-DH-DSS-DES-CBC-SHA. These two ciphersuites
1850      were newly added (along with a number of other static DH ciphersuites) to
1851      1.0.2. However the two export ones have *never* worked since they were
1852      introduced. It seems strange in any case to be adding new export
1853      ciphersuites, and given "logjam" it also does not seem correct to fix them.
1854      [Matt Caswell]
1855
1856   *) Version negotiation has been rewritten. In particular SSLv23_method(),
1857      SSLv23_client_method() and SSLv23_server_method() have been deprecated,
1858      and turned into macros which simply call the new preferred function names
1859      TLS_method(), TLS_client_method() and TLS_server_method(). All new code
1860      should use the new names instead. Also as part of this change the ssl23.h
1861      header file has been removed.
1862      [Matt Caswell]
1863
1864   *) Support for Kerberos ciphersuites in TLS (RFC2712) has been removed. This
1865      code and the associated standard is no longer considered fit-for-purpose.
1866      [Matt Caswell]
1867
1868   *) RT2547 was closed.  When generating a private key, try to make the
1869      output file readable only by the owner.  This behavior change might
1870      be noticeable when interacting with other software.
1871
1872   *) Documented all exdata functions.  Added CRYPTO_free_ex_index.
1873      Added a test.
1874      [Rich Salz]
1875
1876   *) Added HTTP GET support to the ocsp command.
1877      [Rich Salz]
1878
1879   *) Changed default digest for the dgst and enc commands from MD5 to
1880      sha256
1881      [Rich Salz]
1882
1883   *) RAND_pseudo_bytes has been deprecated. Users should use RAND_bytes instead.
1884      [Matt Caswell]
1885
1886   *) Added support for TLS extended master secret from
1887      draft-ietf-tls-session-hash-03.txt. Thanks for Alfredo Pironti for an
1888      initial patch which was a great help during development.
1889      [Steve Henson]
1890
1891   *) All libssl internal structures have been removed from the public header
1892      files, and the OPENSSL_NO_SSL_INTERN option has been removed (since it is
1893      now redundant). Users should not attempt to access internal structures
1894      directly. Instead they should use the provided API functions.
1895      [Matt Caswell]
1896
1897   *) config has been changed so that by default OPENSSL_NO_DEPRECATED is used.
1898      Access to deprecated functions can be re-enabled by running config with
1899      "enable-deprecated". In addition applications wishing to use deprecated
1900      functions must define OPENSSL_USE_DEPRECATED. Note that this new behaviour
1901      will, by default, disable some transitive includes that previously existed
1902      in the header files (e.g. ec.h will no longer, by default, include bn.h)
1903      [Matt Caswell]
1904
1905   *) Added support for OCB mode. OpenSSL has been granted a patent license
1906      compatible with the OpenSSL license for use of OCB. Details are available
1907      at https://www.openssl.org/source/OCB-patent-grant-OpenSSL.pdf. Support
1908      for OCB can be removed by calling config with no-ocb.
1909      [Matt Caswell]
1910
1911   *) SSLv2 support has been removed.  It still supports receiving a SSLv2
1912      compatible client hello.
1913      [Kurt Roeckx]
1914
1915   *) Increased the minimal RSA keysize from 256 to 512 bits [Rich Salz],
1916      done while fixing the error code for the key-too-small case.
1917      [Annie Yousar <a.yousar@informatik.hu-berlin.de>]
1918
1919   *) CA.sh has been removed; use CA.pl instead.
1920      [Rich Salz]
1921
1922   *) Removed old DES API.
1923      [Rich Salz]
1924
1925   *) Remove various unsupported platforms:
1926         Sony NEWS4
1927         BEOS and BEOS_R5
1928         NeXT
1929         SUNOS
1930         MPE/iX
1931         Sinix/ReliantUNIX RM400
1932         DGUX
1933         NCR
1934         Tandem
1935         Cray
1936         16-bit platforms such as WIN16
1937      [Rich Salz]
1938
1939   *) Clean up OPENSSL_NO_xxx #define's
1940         Use setbuf() and remove OPENSSL_NO_SETVBUF_IONBF
1941         Rename OPENSSL_SYSNAME_xxx to OPENSSL_SYS_xxx
1942         OPENSSL_NO_EC{DH,DSA} merged into OPENSSL_NO_EC
1943         OPENSSL_NO_RIPEMD160, OPENSSL_NO_RIPEMD merged into OPENSSL_NO_RMD160
1944         OPENSSL_NO_FP_API merged into OPENSSL_NO_STDIO
1945         Remove OPENSSL_NO_BIO OPENSSL_NO_BUFFER OPENSSL_NO_CHAIN_VERIFY
1946         OPENSSL_NO_EVP OPENSSL_NO_FIPS_ERR OPENSSL_NO_HASH_COMP
1947         OPENSSL_NO_LHASH OPENSSL_NO_OBJECT OPENSSL_NO_SPEED OPENSSL_NO_STACK
1948         OPENSSL_NO_X509 OPENSSL_NO_X509_VERIFY
1949         Remove MS_STATIC; it's a relic from platforms <32 bits.
1950      [Rich Salz]
1951
1952   *) Cleaned up dead code
1953         Remove all but one '#ifdef undef' which is to be looked at.
1954      [Rich Salz]
1955
1956   *) Clean up calling of xxx_free routines.
1957         Just like free(), fix most of the xxx_free routines to accept
1958         NULL.  Remove the non-null checks from callers.  Save much code.
1959      [Rich Salz]
1960
1961   *) Add secure heap for storage of private keys (when possible).
1962      Add BIO_s_secmem(), CBIGNUM, etc.
1963      Contributed by Akamai Technologies under our Corporate CLA.
1964      [Rich Salz]
1965
1966   *) Experimental support for a new, fast, unbiased prime candidate generator,
1967      bn_probable_prime_dh_coprime(). Not currently used by any prime generator.
1968      [Felix Laurie von Massenbach <felix@erbridge.co.uk>]
1969
1970   *) New output format NSS in the sess_id command line tool. This allows
1971      exporting the session id and the master key in NSS keylog format.
1972      [Martin Kaiser <martin@kaiser.cx>]
1973
1974   *) Harmonize version and its documentation. -f flag is used to display
1975      compilation flags.
1976      [mancha <mancha1@zoho.com>]
1977
1978   *) Fix eckey_priv_encode so it immediately returns an error upon a failure
1979      in i2d_ECPrivateKey.  Thanks to Ted Unangst for feedback on this issue.
1980      [mancha <mancha1@zoho.com>]
1981
1982   *) Fix some double frees. These are not thought to be exploitable.
1983      [mancha <mancha1@zoho.com>]
1984
1985   *) A missing bounds check in the handling of the TLS heartbeat extension
1986      can be used to reveal up to 64k of memory to a connected client or
1987      server.
1988
1989      Thanks for Neel Mehta of Google Security for discovering this bug and to
1990      Adam Langley <agl@chromium.org> and Bodo Moeller <bmoeller@acm.org> for
1991      preparing the fix (CVE-2014-0160)
1992      [Adam Langley, Bodo Moeller]
1993
1994   *) Fix for the attack described in the paper "Recovering OpenSSL
1995      ECDSA Nonces Using the FLUSH+RELOAD Cache Side-channel Attack"
1996      by Yuval Yarom and Naomi Benger. Details can be obtained from:
1997      http://eprint.iacr.org/2014/140
1998
1999      Thanks to Yuval Yarom and Naomi Benger for discovering this
2000      flaw and to Yuval Yarom for supplying a fix (CVE-2014-0076)
2001      [Yuval Yarom and Naomi Benger]
2002
2003   *) Use algorithm specific chains in SSL_CTX_use_certificate_chain_file():
2004      this fixes a limitation in previous versions of OpenSSL.
2005      [Steve Henson]
2006
2007   *) Experimental encrypt-then-mac support.
2008
2009      Experimental support for encrypt then mac from
2010      draft-gutmann-tls-encrypt-then-mac-02.txt
2011
2012      To enable it set the appropriate extension number (0x42 for the test
2013      server) using e.g. -DTLSEXT_TYPE_encrypt_then_mac=0x42
2014
2015      For non-compliant peers (i.e. just about everything) this should have no
2016      effect.
2017
2018      WARNING: EXPERIMENTAL, SUBJECT TO CHANGE.
2019
2020      [Steve Henson]
2021
2022   *) Add EVP support for key wrapping algorithms, to avoid problems with
2023      existing code the flag EVP_CIPHER_CTX_WRAP_ALLOW has to be set in
2024      the EVP_CIPHER_CTX or an error is returned. Add AES and DES3 wrap
2025      algorithms and include tests cases.
2026      [Steve Henson]
2027
2028   *) Extend CMS code to support RSA-PSS signatures and RSA-OAEP for
2029      enveloped data.
2030      [Steve Henson]
2031
2032   *) Extended RSA OAEP support via EVP_PKEY API. Options to specify digest,
2033      MGF1 digest and OAEP label.
2034      [Steve Henson]
2035
2036   *) Make openssl verify return errors.
2037      [Chris Palmer <palmer@google.com> and Ben Laurie]
2038
2039   *) New function ASN1_TIME_diff to calculate the difference between two
2040      ASN1_TIME structures or one structure and the current time.
2041      [Steve Henson]
2042
2043   *) Update fips_test_suite to support multiple command line options. New
2044      test to induce all self test errors in sequence and check expected
2045      failures.
2046      [Steve Henson]
2047
2048   *) Add FIPS_{rsa,dsa,ecdsa}_{sign,verify} functions which digest and
2049      sign or verify all in one operation.
2050      [Steve Henson]
2051
2052   *) Add fips_algvs: a multicall fips utility incorporating all the algorithm
2053      test programs and fips_test_suite. Includes functionality to parse
2054      the minimal script output of fipsalgest.pl directly.
2055      [Steve Henson]
2056
2057   *) Add authorisation parameter to FIPS_module_mode_set().
2058      [Steve Henson]
2059
2060   *) Add FIPS selftest for ECDH algorithm using P-224 and B-233 curves.
2061      [Steve Henson]
2062
2063   *) Use separate DRBG fields for internal and external flags. New function
2064      FIPS_drbg_health_check() to perform on demand health checking. Add
2065      generation tests to fips_test_suite with reduced health check interval to
2066      demonstrate periodic health checking. Add "nodh" option to
2067      fips_test_suite to skip very slow DH test.
2068      [Steve Henson]
2069
2070   *) New function FIPS_get_cipherbynid() to lookup FIPS supported ciphers
2071      based on NID.
2072      [Steve Henson]
2073
2074   *) More extensive health check for DRBG checking many more failure modes.
2075      New function FIPS_selftest_drbg_all() to handle every possible DRBG
2076      combination: call this in fips_test_suite.
2077      [Steve Henson]
2078
2079   *) Add support for canonical generation of DSA parameter 'g'. See
2080      FIPS 186-3 A.2.3.
2081
2082   *) Add support for HMAC DRBG from SP800-90. Update DRBG algorithm test and
2083      POST to handle HMAC cases.
2084      [Steve Henson]
2085
2086   *) Add functions FIPS_module_version() and FIPS_module_version_text()
2087      to return numerical and string versions of the FIPS module number.
2088      [Steve Henson]
2089
2090   *) Rename FIPS_mode_set and FIPS_mode to FIPS_module_mode_set and
2091      FIPS_module_mode. FIPS_mode and FIPS_mode_set will be implemented
2092      outside the validated module in the FIPS capable OpenSSL.
2093      [Steve Henson]
2094
2095   *) Minor change to DRBG entropy callback semantics. In some cases
2096      there is no multiple of the block length between min_len and
2097      max_len. Allow the callback to return more than max_len bytes
2098      of entropy but discard any extra: it is the callback's responsibility
2099      to ensure that the extra data discarded does not impact the
2100      requested amount of entropy.
2101      [Steve Henson]
2102
2103   *) Add PRNG security strength checks to RSA, DSA and ECDSA using
2104      information in FIPS186-3, SP800-57 and SP800-131A.
2105      [Steve Henson]
2106
2107   *) CCM support via EVP. Interface is very similar to GCM case except we
2108      must supply all data in one chunk (i.e. no update, final) and the
2109      message length must be supplied if AAD is used. Add algorithm test
2110      support.
2111      [Steve Henson]
2112
2113   *) Initial version of POST overhaul. Add POST callback to allow the status
2114      of POST to be monitored and/or failures induced. Modify fips_test_suite
2115      to use callback. Always run all selftests even if one fails.
2116      [Steve Henson]
2117
2118   *) XTS support including algorithm test driver in the fips_gcmtest program.
2119      Note: this does increase the maximum key length from 32 to 64 bytes but
2120      there should be no binary compatibility issues as existing applications
2121      will never use XTS mode.
2122      [Steve Henson]
2123
2124   *) Extensive reorganisation of FIPS PRNG behaviour. Remove all dependencies
2125      to OpenSSL RAND code and replace with a tiny FIPS RAND API which also
2126      performs algorithm blocking for unapproved PRNG types. Also do not
2127      set PRNG type in FIPS_mode_set(): leave this to the application.
2128      Add default OpenSSL DRBG handling: sets up FIPS PRNG and seeds with
2129      the standard OpenSSL PRNG: set additional data to a date time vector.
2130      [Steve Henson]
2131
2132   *) Rename old X9.31 PRNG functions of the form FIPS_rand* to FIPS_x931*.
2133      This shouldn't present any incompatibility problems because applications
2134      shouldn't be using these directly and any that are will need to rethink
2135      anyway as the X9.31 PRNG is now deprecated by FIPS 140-2
2136      [Steve Henson]
2137
2138   *) Extensive self tests and health checking required by SP800-90 DRBG.
2139      Remove strength parameter from FIPS_drbg_instantiate and always
2140      instantiate at maximum supported strength.
2141      [Steve Henson]
2142
2143   *) Add ECDH code to fips module and fips_ecdhvs for primitives only testing.
2144      [Steve Henson]
2145
2146   *) New algorithm test program fips_dhvs to handle DH primitives only testing.
2147      [Steve Henson]
2148
2149   *) New function DH_compute_key_padded() to compute a DH key and pad with
2150      leading zeroes if needed: this complies with SP800-56A et al.
2151      [Steve Henson]
2152
2153   *) Initial implementation of SP800-90 DRBGs for Hash and CTR. Not used by
2154      anything, incomplete, subject to change and largely untested at present.
2155      [Steve Henson]
2156
2157   *) Modify fipscanisteronly build option to only build the necessary object
2158      files by filtering FIPS_EX_OBJ through a perl script in crypto/Makefile.
2159      [Steve Henson]
2160
2161   *) Add experimental option FIPSSYMS to give all symbols in
2162      fipscanister.o and FIPS or fips prefix. This will avoid
2163      conflicts with future versions of OpenSSL. Add perl script
2164      util/fipsas.pl to preprocess assembly language source files
2165      and rename any affected symbols.
2166      [Steve Henson]
2167
2168   *) Add selftest checks and algorithm block of non-fips algorithms in
2169      FIPS mode. Remove DES2 from selftests.
2170      [Steve Henson]
2171
2172   *) Add ECDSA code to fips module. Add tiny fips_ecdsa_check to just
2173      return internal method without any ENGINE dependencies. Add new
2174      tiny fips sign and verify functions.
2175      [Steve Henson]
2176
2177   *) New build option no-ec2m to disable characteristic 2 code.
2178      [Steve Henson]
2179
2180   *) New build option "fipscanisteronly". This only builds fipscanister.o
2181      and (currently) associated fips utilities. Uses the file Makefile.fips
2182      instead of Makefile.org as the prototype.
2183      [Steve Henson]
2184
2185   *) Add some FIPS mode restrictions to GCM. Add internal IV generator.
2186      Update fips_gcmtest to use IV generator.
2187      [Steve Henson]
2188
2189   *) Initial, experimental EVP support for AES-GCM. AAD can be input by
2190      setting output buffer to NULL. The *Final function must be
2191      called although it will not retrieve any additional data. The tag
2192      can be set or retrieved with a ctrl. The IV length is by default 12
2193      bytes (96 bits) but can be set to an alternative value. If the IV
2194      length exceeds the maximum IV length (currently 16 bytes) it cannot be
2195      set before the key.
2196      [Steve Henson]
2197
2198   *) New flag in ciphers: EVP_CIPH_FLAG_CUSTOM_CIPHER. This means the
2199      underlying do_cipher function handles all cipher semantics itself
2200      including padding and finalisation. This is useful if (for example)
2201      an ENGINE cipher handles block padding itself. The behaviour of
2202      do_cipher is subtly changed if this flag is set: the return value
2203      is the number of characters written to the output buffer (zero is
2204      no longer an error code) or a negative error code. Also if the
2205      input buffer is NULL and length 0 finalisation should be performed.
2206      [Steve Henson]
2207
2208   *) If a candidate issuer certificate is already part of the constructed
2209      path ignore it: new debug notification X509_V_ERR_PATH_LOOP for this case.
2210      [Steve Henson]
2211
2212   *) Improve forward-security support: add functions
2213
2214        void SSL_CTX_set_not_resumable_session_callback(SSL_CTX *ctx, int (*cb)(SSL *ssl, int is_forward_secure))
2215        void SSL_set_not_resumable_session_callback(SSL *ssl, int (*cb)(SSL *ssl, int is_forward_secure))
2216
2217      for use by SSL/TLS servers; the callback function will be called whenever a
2218      new session is created, and gets to decide whether the session may be
2219      cached to make it resumable (return 0) or not (return 1).  (As by the
2220      SSL/TLS protocol specifications, the session_id sent by the server will be
2221      empty to indicate that the session is not resumable; also, the server will
2222      not generate RFC 4507 (RFC 5077) session tickets.)
2223
2224      A simple reasonable callback implementation is to return is_forward_secure.
2225      This parameter will be set to 1 or 0 depending on the ciphersuite selected
2226      by the SSL/TLS server library, indicating whether it can provide forward
2227      security.
2228      [Emilia Käsper <emilia.kasper@esat.kuleuven.be> (Google)]
2229
2230   *) New -verify_name option in command line utilities to set verification
2231      parameters by name.
2232      [Steve Henson]
2233
2234   *) Initial CMAC implementation. WARNING: EXPERIMENTAL, API MAY CHANGE.
2235      Add CMAC pkey methods.
2236      [Steve Henson]
2237
2238   *) Experimental renegotiation in s_server -www mode. If the client
2239      browses /reneg connection is renegotiated. If /renegcert it is
2240      renegotiated requesting a certificate.
2241      [Steve Henson]
2242
2243   *) Add an "external" session cache for debugging purposes to s_server. This
2244      should help trace issues which normally are only apparent in deployed
2245      multi-process servers.
2246      [Steve Henson]
2247
2248   *) Extensive audit of libcrypto with DEBUG_UNUSED. Fix many cases where
2249      return value is ignored. NB. The functions RAND_add(), RAND_seed(),
2250      BIO_set_cipher() and some obscure PEM functions were changed so they
2251      can now return an error. The RAND changes required a change to the
2252      RAND_METHOD structure.
2253      [Steve Henson]
2254
2255   *) New macro __owur for "OpenSSL Warn Unused Result". This makes use of
2256      a gcc attribute to warn if the result of a function is ignored. This
2257      is enable if DEBUG_UNUSED is set. Add to several functions in evp.h
2258      whose return value is often ignored.
2259      [Steve Henson]
2260
2261   *) New -noct, -requestct, -requirect and -ctlogfile options for s_client.
2262      These allow SCTs (signed certificate timestamps) to be requested and
2263      validated when establishing a connection.
2264      [Rob Percival <robpercival@google.com>]
2265
2266  Changes between 1.0.2g and 1.0.2h [3 May 2016]
2267
2268   *) Prevent padding oracle in AES-NI CBC MAC check
2269
2270      A MITM attacker can use a padding oracle attack to decrypt traffic
2271      when the connection uses an AES CBC cipher and the server support
2272      AES-NI.
2273
2274      This issue was introduced as part of the fix for Lucky 13 padding
2275      attack (CVE-2013-0169). The padding check was rewritten to be in
2276      constant time by making sure that always the same bytes are read and
2277      compared against either the MAC or padding bytes. But it no longer
2278      checked that there was enough data to have both the MAC and padding
2279      bytes.
2280
2281      This issue was reported by Juraj Somorovsky using TLS-Attacker.
2282      (CVE-2016-2107)
2283      [Kurt Roeckx]
2284
2285   *) Fix EVP_EncodeUpdate overflow
2286
2287      An overflow can occur in the EVP_EncodeUpdate() function which is used for
2288      Base64 encoding of binary data. If an attacker is able to supply very large
2289      amounts of input data then a length check can overflow resulting in a heap
2290      corruption.
2291
2292      Internally to OpenSSL the EVP_EncodeUpdate() function is primarily used by
2293      the PEM_write_bio* family of functions. These are mainly used within the
2294      OpenSSL command line applications, so any application which processes data
2295      from an untrusted source and outputs it as a PEM file should be considered
2296      vulnerable to this issue. User applications that call these APIs directly
2297      with large amounts of untrusted data may also be vulnerable.
2298
2299      This issue was reported by Guido Vranken.
2300      (CVE-2016-2105)
2301      [Matt Caswell]
2302
2303   *) Fix EVP_EncryptUpdate overflow
2304
2305      An overflow can occur in the EVP_EncryptUpdate() function. If an attacker
2306      is able to supply very large amounts of input data after a previous call to
2307      EVP_EncryptUpdate() with a partial block then a length check can overflow
2308      resulting in a heap corruption. Following an analysis of all OpenSSL
2309      internal usage of the EVP_EncryptUpdate() function all usage is one of two
2310      forms. The first form is where the EVP_EncryptUpdate() call is known to be
2311      the first called function after an EVP_EncryptInit(), and therefore that
2312      specific call must be safe. The second form is where the length passed to
2313      EVP_EncryptUpdate() can be seen from the code to be some small value and
2314      therefore there is no possibility of an overflow. Since all instances are
2315      one of these two forms, it is believed that there can be no overflows in
2316      internal code due to this problem. It should be noted that
2317      EVP_DecryptUpdate() can call EVP_EncryptUpdate() in certain code paths.
2318      Also EVP_CipherUpdate() is a synonym for EVP_EncryptUpdate(). All instances
2319      of these calls have also been analysed too and it is believed there are no
2320      instances in internal usage where an overflow could occur.
2321
2322      This issue was reported by Guido Vranken.
2323      (CVE-2016-2106)
2324      [Matt Caswell]
2325
2326   *) Prevent ASN.1 BIO excessive memory allocation
2327
2328      When ASN.1 data is read from a BIO using functions such as d2i_CMS_bio()
2329      a short invalid encoding can cause allocation of large amounts of memory
2330      potentially consuming excessive resources or exhausting memory.
2331
2332      Any application parsing untrusted data through d2i BIO functions is
2333      affected. The memory based functions such as d2i_X509() are *not* affected.
2334      Since the memory based functions are used by the TLS library, TLS
2335      applications are not affected.
2336
2337      This issue was reported by Brian Carpenter.
2338      (CVE-2016-2109)
2339      [Stephen Henson]
2340
2341   *) EBCDIC overread
2342
2343      ASN1 Strings that are over 1024 bytes can cause an overread in applications
2344      using the X509_NAME_oneline() function on EBCDIC systems. This could result
2345      in arbitrary stack data being returned in the buffer.
2346
2347      This issue was reported by Guido Vranken.
2348      (CVE-2016-2176)
2349      [Matt Caswell]
2350
2351   *) Modify behavior of ALPN to invoke callback after SNI/servername
2352      callback, such that updates to the SSL_CTX affect ALPN.
2353      [Todd Short]
2354
2355   *) Remove LOW from the DEFAULT cipher list.  This removes singles DES from the
2356      default.
2357      [Kurt Roeckx]
2358
2359   *) Only remove the SSLv2 methods with the no-ssl2-method option. When the
2360      methods are enabled and ssl2 is disabled the methods return NULL.
2361      [Kurt Roeckx]
2362
2363  Changes between 1.0.2f and 1.0.2g [1 Mar 2016]
2364
2365   * Disable weak ciphers in SSLv3 and up in default builds of OpenSSL.
2366     Builds that are not configured with "enable-weak-ssl-ciphers" will not
2367     provide any "EXPORT" or "LOW" strength ciphers.
2368     [Viktor Dukhovni]
2369
2370   * Disable SSLv2 default build, default negotiation and weak ciphers.  SSLv2
2371     is by default disabled at build-time.  Builds that are not configured with
2372     "enable-ssl2" will not support SSLv2.  Even if "enable-ssl2" is used,
2373     users who want to negotiate SSLv2 via the version-flexible SSLv23_method()
2374     will need to explicitly call either of:
2375
2376         SSL_CTX_clear_options(ctx, SSL_OP_NO_SSLv2);
2377     or
2378         SSL_clear_options(ssl, SSL_OP_NO_SSLv2);
2379
2380     as appropriate.  Even if either of those is used, or the application
2381     explicitly uses the version-specific SSLv2_method() or its client and
2382     server variants, SSLv2 ciphers vulnerable to exhaustive search key
2383     recovery have been removed.  Specifically, the SSLv2 40-bit EXPORT
2384     ciphers, and SSLv2 56-bit DES are no longer available.
2385     (CVE-2016-0800)
2386     [Viktor Dukhovni]
2387
2388   *) Fix a double-free in DSA code
2389
2390      A double free bug was discovered when OpenSSL parses malformed DSA private
2391      keys and could lead to a DoS attack or memory corruption for applications
2392      that receive DSA private keys from untrusted sources.  This scenario is
2393      considered rare.
2394
2395      This issue was reported to OpenSSL by Adam Langley(Google/BoringSSL) using
2396      libFuzzer.
2397      (CVE-2016-0705)
2398      [Stephen Henson]
2399
2400   *) Disable SRP fake user seed to address a server memory leak.
2401
2402      Add a new method SRP_VBASE_get1_by_user that handles the seed properly.
2403
2404      SRP_VBASE_get_by_user had inconsistent memory management behaviour.
2405      In order to fix an unavoidable memory leak, SRP_VBASE_get_by_user
2406      was changed to ignore the "fake user" SRP seed, even if the seed
2407      is configured.
2408
2409      Users should use SRP_VBASE_get1_by_user instead. Note that in
2410      SRP_VBASE_get1_by_user, caller must free the returned value. Note
2411      also that even though configuring the SRP seed attempts to hide
2412      invalid usernames by continuing the handshake with fake
2413      credentials, this behaviour is not constant time and no strong
2414      guarantees are made that the handshake is indistinguishable from
2415      that of a valid user.
2416      (CVE-2016-0798)
2417      [Emilia Käsper]
2418
2419   *) Fix BN_hex2bn/BN_dec2bn NULL pointer deref/heap corruption
2420
2421      In the BN_hex2bn function the number of hex digits is calculated using an
2422      int value |i|. Later |bn_expand| is called with a value of |i * 4|. For
2423      large values of |i| this can result in |bn_expand| not allocating any
2424      memory because |i * 4| is negative. This can leave the internal BIGNUM data
2425      field as NULL leading to a subsequent NULL ptr deref. For very large values
2426      of |i|, the calculation |i * 4| could be a positive value smaller than |i|.
2427      In this case memory is allocated to the internal BIGNUM data field, but it
2428      is insufficiently sized leading to heap corruption. A similar issue exists
2429      in BN_dec2bn. This could have security consequences if BN_hex2bn/BN_dec2bn
2430      is ever called by user applications with very large untrusted hex/dec data.
2431      This is anticipated to be a rare occurrence.
2432
2433      All OpenSSL internal usage of these functions use data that is not expected
2434      to be untrusted, e.g. config file data or application command line
2435      arguments. If user developed applications generate config file data based
2436      on untrusted data then it is possible that this could also lead to security
2437      consequences. This is also anticipated to be rare.
2438
2439      This issue was reported to OpenSSL by Guido Vranken.
2440      (CVE-2016-0797)
2441      [Matt Caswell]
2442
2443   *) Fix memory issues in BIO_*printf functions
2444
2445      The internal |fmtstr| function used in processing a "%s" format string in
2446      the BIO_*printf functions could overflow while calculating the length of a
2447      string and cause an OOB read when printing very long strings.
2448
2449      Additionally the internal |doapr_outch| function can attempt to write to an
2450      OOB memory location (at an offset from the NULL pointer) in the event of a
2451      memory allocation failure. In 1.0.2 and below this could be caused where
2452      the size of a buffer to be allocated is greater than INT_MAX. E.g. this
2453      could be in processing a very long "%s" format string. Memory leaks can
2454      also occur.
2455
2456      The first issue may mask the second issue dependent on compiler behaviour.
2457      These problems could enable attacks where large amounts of untrusted data
2458      is passed to the BIO_*printf functions. If applications use these functions
2459      in this way then they could be vulnerable. OpenSSL itself uses these
2460      functions when printing out human-readable dumps of ASN.1 data. Therefore
2461      applications that print this data could be vulnerable if the data is from
2462      untrusted sources. OpenSSL command line applications could also be
2463      vulnerable where they print out ASN.1 data, or if untrusted data is passed
2464      as command line arguments.
2465
2466      Libssl is not considered directly vulnerable. Additionally certificates etc
2467      received via remote connections via libssl are also unlikely to be able to
2468      trigger these issues because of message size limits enforced within libssl.
2469
2470      This issue was reported to OpenSSL Guido Vranken.
2471      (CVE-2016-0799)
2472      [Matt Caswell]
2473
2474   *) Side channel attack on modular exponentiation
2475
2476      A side-channel attack was found which makes use of cache-bank conflicts on
2477      the Intel Sandy-Bridge microarchitecture which could lead to the recovery
2478      of RSA keys.  The ability to exploit this issue is limited as it relies on
2479      an attacker who has control of code in a thread running on the same
2480      hyper-threaded core as the victim thread which is performing decryptions.
2481
2482      This issue was reported to OpenSSL by Yuval Yarom, The University of
2483      Adelaide and NICTA, Daniel Genkin, Technion and Tel Aviv University, and
2484      Nadia Heninger, University of Pennsylvania with more information at
2485      http://cachebleed.info.
2486      (CVE-2016-0702)
2487      [Andy Polyakov]
2488
2489   *) Change the req app to generate a 2048-bit RSA/DSA key by default,
2490      if no keysize is specified with default_bits. This fixes an
2491      omission in an earlier change that changed all RSA/DSA key generation
2492      apps to use 2048 bits by default.
2493      [Emilia Käsper]
2494
2495  Changes between 1.0.2e and 1.0.2f [28 Jan 2016]
2496   *) DH small subgroups
2497
2498      Historically OpenSSL only ever generated DH parameters based on "safe"
2499      primes. More recently (in version 1.0.2) support was provided for
2500      generating X9.42 style parameter files such as those required for RFC 5114
2501      support. The primes used in such files may not be "safe". Where an
2502      application is using DH configured with parameters based on primes that are
2503      not "safe" then an attacker could use this fact to find a peer's private
2504      DH exponent. This attack requires that the attacker complete multiple
2505      handshakes in which the peer uses the same private DH exponent. For example
2506      this could be used to discover a TLS server's private DH exponent if it's
2507      reusing the private DH exponent or it's using a static DH ciphersuite.
2508
2509      OpenSSL provides the option SSL_OP_SINGLE_DH_USE for ephemeral DH (DHE) in
2510      TLS. It is not on by default. If the option is not set then the server
2511      reuses the same private DH exponent for the life of the server process and
2512      would be vulnerable to this attack. It is believed that many popular
2513      applications do set this option and would therefore not be at risk.
2514
2515      The fix for this issue adds an additional check where a "q" parameter is
2516      available (as is the case in X9.42 based parameters). This detects the
2517      only known attack, and is the only possible defense for static DH
2518      ciphersuites. This could have some performance impact.
2519
2520      Additionally the SSL_OP_SINGLE_DH_USE option has been switched on by
2521      default and cannot be disabled. This could have some performance impact.
2522
2523      This issue was reported to OpenSSL by Antonio Sanso (Adobe).
2524      (CVE-2016-0701)
2525      [Matt Caswell]
2526
2527   *) SSLv2 doesn't block disabled ciphers
2528
2529      A malicious client can negotiate SSLv2 ciphers that have been disabled on
2530      the server and complete SSLv2 handshakes even if all SSLv2 ciphers have
2531      been disabled, provided that the SSLv2 protocol was not also disabled via
2532      SSL_OP_NO_SSLv2.
2533
2534      This issue was reported to OpenSSL on 26th December 2015 by Nimrod Aviram
2535      and Sebastian Schinzel.
2536      (CVE-2015-3197)
2537      [Viktor Dukhovni]
2538
2539  Changes between 1.0.2d and 1.0.2e [3 Dec 2015]
2540
2541   *) BN_mod_exp may produce incorrect results on x86_64
2542
2543      There is a carry propagating bug in the x86_64 Montgomery squaring
2544      procedure. No EC algorithms are affected. Analysis suggests that attacks
2545      against RSA and DSA as a result of this defect would be very difficult to
2546      perform and are not believed likely. Attacks against DH are considered just
2547      feasible (although very difficult) because most of the work necessary to
2548      deduce information about a private key may be performed offline. The amount
2549      of resources required for such an attack would be very significant and
2550      likely only accessible to a limited number of attackers. An attacker would
2551      additionally need online access to an unpatched system using the target
2552      private key in a scenario with persistent DH parameters and a private
2553      key that is shared between multiple clients. For example this can occur by
2554      default in OpenSSL DHE based SSL/TLS ciphersuites.
2555
2556      This issue was reported to OpenSSL by Hanno Böck.
2557      (CVE-2015-3193)
2558      [Andy Polyakov]
2559
2560   *) Certificate verify crash with missing PSS parameter
2561
2562      The signature verification routines will crash with a NULL pointer
2563      dereference if presented with an ASN.1 signature using the RSA PSS
2564      algorithm and absent mask generation function parameter. Since these
2565      routines are used to verify certificate signature algorithms this can be
2566      used to crash any certificate verification operation and exploited in a
2567      DoS attack. Any application which performs certificate verification is
2568      vulnerable including OpenSSL clients and servers which enable client
2569      authentication.
2570
2571      This issue was reported to OpenSSL by Loïc Jonas Etienne (Qnective AG).
2572      (CVE-2015-3194)
2573      [Stephen Henson]
2574
2575   *) X509_ATTRIBUTE memory leak
2576
2577      When presented with a malformed X509_ATTRIBUTE structure OpenSSL will leak
2578      memory. This structure is used by the PKCS#7 and CMS routines so any
2579      application which reads PKCS#7 or CMS data from untrusted sources is
2580      affected. SSL/TLS is not affected.
2581
2582      This issue was reported to OpenSSL by Adam Langley (Google/BoringSSL) using
2583      libFuzzer.
2584      (CVE-2015-3195)
2585      [Stephen Henson]
2586
2587   *) Rewrite EVP_DecodeUpdate (base64 decoding) to fix several bugs.
2588      This changes the decoding behaviour for some invalid messages,
2589      though the change is mostly in the more lenient direction, and
2590      legacy behaviour is preserved as much as possible.
2591      [Emilia Käsper]
2592
2593   *) In DSA_generate_parameters_ex, if the provided seed is too short,
2594      return an error
2595      [Rich Salz and Ismo Puustinen <ismo.puustinen@intel.com>]
2596
2597  Changes between 1.0.2c and 1.0.2d [9 Jul 2015]
2598
2599   *) Alternate chains certificate forgery
2600
2601      During certificate verification, OpenSSL will attempt to find an
2602      alternative certificate chain if the first attempt to build such a chain
2603      fails. An error in the implementation of this logic can mean that an
2604      attacker could cause certain checks on untrusted certificates to be
2605      bypassed, such as the CA flag, enabling them to use a valid leaf
2606      certificate to act as a CA and "issue" an invalid certificate.
2607
2608      This issue was reported to OpenSSL by Adam Langley/David Benjamin
2609      (Google/BoringSSL).
2610      [Matt Caswell]
2611
2612  Changes between 1.0.2b and 1.0.2c [12 Jun 2015]
2613
2614   *) Fix HMAC ABI incompatibility. The previous version introduced an ABI
2615      incompatibility in the handling of HMAC. The previous ABI has now been
2616      restored.
2617      [Matt Caswell]
2618
2619  Changes between 1.0.2a and 1.0.2b [11 Jun 2015]
2620
2621   *) Malformed ECParameters causes infinite loop
2622
2623      When processing an ECParameters structure OpenSSL enters an infinite loop
2624      if the curve specified is over a specially malformed binary polynomial
2625      field.
2626
2627      This can be used to perform denial of service against any
2628      system which processes public keys, certificate requests or
2629      certificates.  This includes TLS clients and TLS servers with
2630      client authentication enabled.
2631
2632      This issue was reported to OpenSSL by Joseph Barr-Pixton.
2633      (CVE-2015-1788)
2634      [Andy Polyakov]
2635
2636   *) Exploitable out-of-bounds read in X509_cmp_time
2637
2638      X509_cmp_time does not properly check the length of the ASN1_TIME
2639      string and can read a few bytes out of bounds. In addition,
2640      X509_cmp_time accepts an arbitrary number of fractional seconds in the
2641      time string.
2642
2643      An attacker can use this to craft malformed certificates and CRLs of
2644      various sizes and potentially cause a segmentation fault, resulting in
2645      a DoS on applications that verify certificates or CRLs. TLS clients
2646      that verify CRLs are affected. TLS clients and servers with client
2647      authentication enabled may be affected if they use custom verification
2648      callbacks.
2649
2650      This issue was reported to OpenSSL by Robert Swiecki (Google), and
2651      independently by Hanno Böck.
2652      (CVE-2015-1789)
2653      [Emilia Käsper]
2654
2655   *) PKCS7 crash with missing EnvelopedContent
2656
2657      The PKCS#7 parsing code does not handle missing inner EncryptedContent
2658      correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs
2659      with missing content and trigger a NULL pointer dereference on parsing.
2660
2661      Applications that decrypt PKCS#7 data or otherwise parse PKCS#7
2662      structures from untrusted sources are affected. OpenSSL clients and
2663      servers are not affected.
2664
2665      This issue was reported to OpenSSL by Michal Zalewski (Google).
2666      (CVE-2015-1790)
2667      [Emilia Käsper]
2668
2669   *) CMS verify infinite loop with unknown hash function
2670
2671      When verifying a signedData message the CMS code can enter an infinite loop
2672      if presented with an unknown hash function OID. This can be used to perform
2673      denial of service against any system which verifies signedData messages using
2674      the CMS code.
2675      This issue was reported to OpenSSL by Johannes Bauer.
2676      (CVE-2015-1792)
2677      [Stephen Henson]
2678
2679   *) Race condition handling NewSessionTicket
2680
2681      If a NewSessionTicket is received by a multi-threaded client when attempting to
2682      reuse a previous ticket then a race condition can occur potentially leading to
2683      a double free of the ticket data.
2684      (CVE-2015-1791)
2685      [Matt Caswell]
2686
2687   *) Only support 256-bit or stronger elliptic curves with the
2688      'ecdh_auto' setting (server) or by default (client). Of supported
2689      curves, prefer P-256 (both).
2690      [Emilia Kasper]
2691
2692  Changes between 1.0.2 and 1.0.2a [19 Mar 2015]
2693
2694   *) ClientHello sigalgs DoS fix
2695
2696      If a client connects to an OpenSSL 1.0.2 server and renegotiates with an
2697      invalid signature algorithms extension a NULL pointer dereference will
2698      occur. This can be exploited in a DoS attack against the server.
2699
2700      This issue was was reported to OpenSSL by David Ramos of Stanford
2701      University.
2702      (CVE-2015-0291)
2703      [Stephen Henson and Matt Caswell]
2704
2705   *) Multiblock corrupted pointer fix
2706
2707      OpenSSL 1.0.2 introduced the "multiblock" performance improvement. This
2708      feature only applies on 64 bit x86 architecture platforms that support AES
2709      NI instructions. A defect in the implementation of "multiblock" can cause
2710      OpenSSL's internal write buffer to become incorrectly set to NULL when
2711      using non-blocking IO. Typically, when the user application is using a
2712      socket BIO for writing, this will only result in a failed connection.
2713      However if some other BIO is used then it is likely that a segmentation
2714      fault will be triggered, thus enabling a potential DoS attack.
2715
2716      This issue was reported to OpenSSL by Daniel Danner and Rainer Mueller.
2717      (CVE-2015-0290)
2718      [Matt Caswell]
2719
2720   *) Segmentation fault in DTLSv1_listen fix
2721
2722      The DTLSv1_listen function is intended to be stateless and processes the
2723      initial ClientHello from many peers. It is common for user code to loop
2724      over the call to DTLSv1_listen until a valid ClientHello is received with
2725      an associated cookie. A defect in the implementation of DTLSv1_listen means
2726      that state is preserved in the SSL object from one invocation to the next
2727      that can lead to a segmentation fault. Errors processing the initial
2728      ClientHello can trigger this scenario. An example of such an error could be
2729      that a DTLS1.0 only client is attempting to connect to a DTLS1.2 only
2730      server.
2731
2732      This issue was reported to OpenSSL by Per Allansson.
2733      (CVE-2015-0207)
2734      [Matt Caswell]
2735
2736   *) Segmentation fault in ASN1_TYPE_cmp fix
2737
2738      The function ASN1_TYPE_cmp will crash with an invalid read if an attempt is
2739      made to compare ASN.1 boolean types. Since ASN1_TYPE_cmp is used to check
2740      certificate signature algorithm consistency this can be used to crash any
2741      certificate verification operation and exploited in a DoS attack. Any
2742      application which performs certificate verification is vulnerable including
2743      OpenSSL clients and servers which enable client authentication.
2744      (CVE-2015-0286)
2745      [Stephen Henson]
2746
2747   *) Segmentation fault for invalid PSS parameters fix
2748
2749      The signature verification routines will crash with a NULL pointer
2750      dereference if presented with an ASN.1 signature using the RSA PSS
2751      algorithm and invalid parameters. Since these routines are used to verify
2752      certificate signature algorithms this can be used to crash any
2753      certificate verification operation and exploited in a DoS attack. Any
2754      application which performs certificate verification is vulnerable including
2755      OpenSSL clients and servers which enable client authentication.
2756
2757      This issue was was reported to OpenSSL by Brian Carpenter.
2758      (CVE-2015-0208)
2759      [Stephen Henson]
2760
2761   *) ASN.1 structure reuse memory corruption fix
2762
2763      Reusing a structure in ASN.1 parsing may allow an attacker to cause
2764      memory corruption via an invalid write. Such reuse is and has been
2765      strongly discouraged and is believed to be rare.
2766
2767      Applications that parse structures containing CHOICE or ANY DEFINED BY
2768      components may be affected. Certificate parsing (d2i_X509 and related
2769      functions) are however not affected. OpenSSL clients and servers are
2770      not affected.
2771      (CVE-2015-0287)
2772      [Stephen Henson]
2773
2774   *) PKCS7 NULL pointer dereferences fix
2775
2776      The PKCS#7 parsing code does not handle missing outer ContentInfo
2777      correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs with
2778      missing content and trigger a NULL pointer dereference on parsing.
2779
2780      Applications that verify PKCS#7 signatures, decrypt PKCS#7 data or
2781      otherwise parse PKCS#7 structures from untrusted sources are
2782      affected. OpenSSL clients and servers are not affected.
2783
2784      This issue was reported to OpenSSL by Michal Zalewski (Google).
2785      (CVE-2015-0289)
2786      [Emilia Käsper]
2787
2788   *) DoS via reachable assert in SSLv2 servers fix
2789
2790      A malicious client can trigger an OPENSSL_assert (i.e., an abort) in
2791      servers that both support SSLv2 and enable export cipher suites by sending
2792      a specially crafted SSLv2 CLIENT-MASTER-KEY message.
2793
2794      This issue was discovered by Sean Burford (Google) and Emilia Käsper
2795      (OpenSSL development team).
2796      (CVE-2015-0293)
2797      [Emilia Käsper]
2798
2799   *) Empty CKE with client auth and DHE fix
2800
2801      If client auth is used then a server can seg fault in the event of a DHE
2802      ciphersuite being selected and a zero length ClientKeyExchange message
2803      being sent by the client. This could be exploited in a DoS attack.
2804      (CVE-2015-1787)
2805      [Matt Caswell]
2806
2807   *) Handshake with unseeded PRNG fix
2808
2809      Under certain conditions an OpenSSL 1.0.2 client can complete a handshake
2810      with an unseeded PRNG. The conditions are:
2811      - The client is on a platform where the PRNG has not been seeded
2812      automatically, and the user has not seeded manually
2813      - A protocol specific client method version has been used (i.e. not
2814      SSL_client_methodv23)
2815      - A ciphersuite is used that does not require additional random data from
2816      the PRNG beyond the initial ClientHello client random (e.g. PSK-RC4-SHA).
2817
2818      If the handshake succeeds then the client random that has been used will
2819      have been generated from a PRNG with insufficient entropy and therefore the
2820      output may be predictable.
2821
2822      For example using the following command with an unseeded openssl will
2823      succeed on an unpatched platform:
2824
2825      openssl s_client -psk 1a2b3c4d -tls1_2 -cipher PSK-RC4-SHA
2826      (CVE-2015-0285)
2827      [Matt Caswell]
2828
2829   *) Use After Free following d2i_ECPrivatekey error fix
2830
2831      A malformed EC private key file consumed via the d2i_ECPrivateKey function
2832      could cause a use after free condition. This, in turn, could cause a double
2833      free in several private key parsing functions (such as d2i_PrivateKey
2834      or EVP_PKCS82PKEY) and could lead to a DoS attack or memory corruption
2835      for applications that receive EC private keys from untrusted
2836      sources. This scenario is considered rare.
2837
2838      This issue was discovered by the BoringSSL project and fixed in their
2839      commit 517073cd4b.
2840      (CVE-2015-0209)
2841      [Matt Caswell]
2842
2843   *) X509_to_X509_REQ NULL pointer deref fix
2844
2845      The function X509_to_X509_REQ will crash with a NULL pointer dereference if
2846      the certificate key is invalid. This function is rarely used in practice.
2847
2848      This issue was discovered by Brian Carpenter.
2849      (CVE-2015-0288)
2850      [Stephen Henson]
2851
2852   *) Removed the export ciphers from the DEFAULT ciphers
2853      [Kurt Roeckx]
2854
2855  Changes between 1.0.1l and 1.0.2 [22 Jan 2015]
2856
2857   *) Facilitate "universal" ARM builds targeting range of ARM ISAs, e.g.
2858      ARMv5 through ARMv8, as opposite to "locking" it to single one.
2859      So far those who have to target multiple platforms would compromise
2860      and argue that binary targeting say ARMv5 would still execute on
2861      ARMv8. "Universal" build resolves this compromise by providing
2862      near-optimal performance even on newer platforms.
2863      [Andy Polyakov]
2864
2865   *) Accelerated NIST P-256 elliptic curve implementation for x86_64
2866      (other platforms pending).
2867      [Shay Gueron & Vlad Krasnov (Intel Corp), Andy Polyakov]
2868
2869   *) Add support for the SignedCertificateTimestampList certificate and
2870      OCSP response extensions from RFC6962.
2871      [Rob Stradling]
2872
2873   *) Fix ec_GFp_simple_points_make_affine (thus, EC_POINTs_mul etc.)
2874      for corner cases. (Certain input points at infinity could lead to
2875      bogus results, with non-infinity inputs mapped to infinity too.)
2876      [Bodo Moeller]
2877
2878   *) Initial support for PowerISA 2.0.7, first implemented in POWER8.
2879      This covers AES, SHA256/512 and GHASH. "Initial" means that most
2880      common cases are optimized and there still is room for further
2881      improvements. Vector Permutation AES for Altivec is also added.
2882      [Andy Polyakov]
2883
2884   *) Add support for little-endian ppc64 Linux target.
2885      [Marcelo Cerri (IBM)]
2886
2887   *) Initial support for AMRv8 ISA crypto extensions. This covers AES,
2888      SHA1, SHA256 and GHASH. "Initial" means that most common cases
2889      are optimized and there still is room for further improvements.
2890      Both 32- and 64-bit modes are supported.
2891      [Andy Polyakov, Ard Biesheuvel (Linaro)]
2892
2893   *) Improved ARMv7 NEON support.
2894      [Andy Polyakov]
2895
2896   *) Support for SPARC Architecture 2011 crypto extensions, first
2897      implemented in SPARC T4. This covers AES, DES, Camellia, SHA1,
2898      SHA256/512, MD5, GHASH and modular exponentiation.
2899      [Andy Polyakov, David Miller]
2900
2901   *) Accelerated modular exponentiation for Intel processors, a.k.a.
2902      RSAZ.
2903      [Shay Gueron & Vlad Krasnov (Intel Corp)]
2904
2905   *) Support for new and upcoming Intel processors, including AVX2,
2906      BMI and SHA ISA extensions. This includes additional "stitched"
2907      implementations, AESNI-SHA256 and GCM, and multi-buffer support
2908      for TLS encrypt.
2909
2910      This work was sponsored by Intel Corp.
2911      [Andy Polyakov]
2912
2913   *) Support for DTLS 1.2. This adds two sets of DTLS methods: DTLS_*_method()
2914      supports both DTLS 1.2 and 1.0 and should use whatever version the peer
2915      supports and DTLSv1_2_*_method() which supports DTLS 1.2 only.
2916      [Steve Henson]
2917
2918   *) Use algorithm specific chains in SSL_CTX_use_certificate_chain_file():
2919      this fixes a limitation in previous versions of OpenSSL.
2920      [Steve Henson]
2921
2922   *) Extended RSA OAEP support via EVP_PKEY API. Options to specify digest,
2923      MGF1 digest and OAEP label.
2924      [Steve Henson]
2925
2926   *) Add EVP support for key wrapping algorithms, to avoid problems with
2927      existing code the flag EVP_CIPHER_CTX_WRAP_ALLOW has to be set in
2928      the EVP_CIPHER_CTX or an error is returned. Add AES and DES3 wrap
2929      algorithms and include tests cases.
2930      [Steve Henson]
2931
2932   *) Add functions to allocate and set the fields of an ECDSA_METHOD
2933      structure.
2934      [Douglas E. Engert, Steve Henson]
2935
2936   *) New functions OPENSSL_gmtime_diff and ASN1_TIME_diff to find the
2937      difference in days and seconds between two tm or ASN1_TIME structures.
2938      [Steve Henson]
2939
2940   *) Add -rev test option to s_server to just reverse order of characters
2941      received by client and send back to server. Also prints an abbreviated
2942      summary of the connection parameters.
2943      [Steve Henson]
2944
2945   *) New option -brief for s_client and s_server to print out a brief summary
2946      of connection parameters.
2947      [Steve Henson]
2948
2949   *) Add callbacks for arbitrary TLS extensions.
2950      [Trevor Perrin <trevp@trevp.net> and Ben Laurie]
2951
2952   *) New option -crl_download in several openssl utilities to download CRLs
2953      from CRLDP extension in certificates.
2954      [Steve Henson]
2955
2956   *) New options -CRL and -CRLform for s_client and s_server for CRLs.
2957      [Steve Henson]
2958
2959   *) New function X509_CRL_diff to generate a delta CRL from the difference
2960      of two full CRLs. Add support to "crl" utility.
2961      [Steve Henson]
2962
2963   *) New functions to set lookup_crls function and to retrieve
2964      X509_STORE from X509_STORE_CTX.
2965      [Steve Henson]
2966
2967   *) Print out deprecated issuer and subject unique ID fields in
2968      certificates.
2969      [Steve Henson]
2970
2971   *) Extend OCSP I/O functions so they can be used for simple general purpose
2972      HTTP as well as OCSP. New wrapper function which can be used to download
2973      CRLs using the OCSP API.
2974      [Steve Henson]
2975
2976   *) Delegate command line handling in s_client/s_server to SSL_CONF APIs.
2977      [Steve Henson]
2978
2979   *) SSL_CONF* functions. These provide a common framework for application
2980      configuration using configuration files or command lines.
2981      [Steve Henson]
2982
2983   *) SSL/TLS tracing code. This parses out SSL/TLS records using the
2984      message callback and prints the results. Needs compile time option
2985      "enable-ssl-trace". New options to s_client and s_server to enable
2986      tracing.
2987      [Steve Henson]
2988
2989   *) New ctrl and macro to retrieve supported points extensions.
2990      Print out extension in s_server and s_client.
2991      [Steve Henson]
2992
2993   *) New functions to retrieve certificate signature and signature
2994      OID NID.
2995      [Steve Henson]
2996
2997   *) Add functions to retrieve and manipulate the raw cipherlist sent by a
2998      client to OpenSSL.
2999      [Steve Henson]
3000
3001   *) New Suite B modes for TLS code. These use and enforce the requirements
3002      of RFC6460: restrict ciphersuites, only permit Suite B algorithms and
3003      only use Suite B curves. The Suite B modes can be set by using the
3004      strings "SUITEB128", "SUITEB192" or "SUITEB128ONLY" for the cipherstring.
3005      [Steve Henson]
3006
3007   *) New chain verification flags for Suite B levels of security. Check
3008      algorithms are acceptable when flags are set in X509_verify_cert.
3009      [Steve Henson]
3010
3011   *) Make tls1_check_chain return a set of flags indicating checks passed
3012      by a certificate chain. Add additional tests to handle client
3013      certificates: checks for matching certificate type and issuer name
3014      comparison.
3015      [Steve Henson]
3016
3017   *) If an attempt is made to use a signature algorithm not in the peer
3018      preference list abort the handshake. If client has no suitable
3019      signature algorithms in response to a certificate request do not
3020      use the certificate.
3021      [Steve Henson]
3022
3023   *) If server EC tmp key is not in client preference list abort handshake.
3024      [Steve Henson]
3025
3026   *) Add support for certificate stores in CERT structure. This makes it
3027      possible to have different stores per SSL structure or one store in
3028      the parent SSL_CTX. Include distinct stores for certificate chain
3029      verification and chain building. New ctrl SSL_CTRL_BUILD_CERT_CHAIN
3030      to build and store a certificate chain in CERT structure: returning
3031      an error if the chain cannot be built: this will allow applications
3032      to test if a chain is correctly configured.
3033
3034      Note: if the CERT based stores are not set then the parent SSL_CTX
3035      store is used to retain compatibility with existing behaviour.
3036
3037      [Steve Henson]
3038
3039   *) New function ssl_set_client_disabled to set a ciphersuite disabled
3040      mask based on the current session, check mask when sending client
3041      hello and checking the requested ciphersuite.
3042      [Steve Henson]
3043
3044   *) New ctrls to retrieve and set certificate types in a certificate
3045      request message. Print out received values in s_client. If certificate
3046      types is not set with custom values set sensible values based on
3047      supported signature algorithms.
3048      [Steve Henson]
3049
3050   *) Support for distinct client and server supported signature algorithms.
3051      [Steve Henson]
3052
3053   *) Add certificate callback. If set this is called whenever a certificate
3054      is required by client or server. An application can decide which
3055      certificate chain to present based on arbitrary criteria: for example
3056      supported signature algorithms. Add very simple example to s_server.
3057      This fixes many of the problems and restrictions of the existing client
3058      certificate callback: for example you can now clear an existing
3059      certificate and specify the whole chain.
3060      [Steve Henson]
3061
3062   *) Add new "valid_flags" field to CERT_PKEY structure which determines what
3063      the certificate can be used for (if anything). Set valid_flags field
3064      in new tls1_check_chain function. Simplify ssl_set_cert_masks which used
3065      to have similar checks in it.
3066
3067      Add new "cert_flags" field to CERT structure and include a "strict mode".
3068      This enforces some TLS certificate requirements (such as only permitting
3069      certificate signature algorithms contained in the supported algorithms
3070      extension) which some implementations ignore: this option should be used
3071      with caution as it could cause interoperability issues.
3072      [Steve Henson]
3073
3074   *) Update and tidy signature algorithm extension processing. Work out
3075      shared signature algorithms based on preferences and peer algorithms
3076      and print them out in s_client and s_server. Abort handshake if no
3077      shared signature algorithms.
3078      [Steve Henson]
3079
3080   *) Add new functions to allow customised supported signature algorithms
3081      for SSL and SSL_CTX structures. Add options to s_client and s_server
3082      to support them.
3083      [Steve Henson]
3084
3085   *) New function SSL_certs_clear() to delete all references to certificates
3086      from an SSL structure. Before this once a certificate had been added
3087      it couldn't be removed.
3088      [Steve Henson]
3089
3090   *) Integrate hostname, email address and IP address checking with certificate
3091      verification. New verify options supporting checking in openssl utility.
3092      [Steve Henson]
3093
3094   *) Fixes and wildcard matching support to hostname and email checking
3095      functions. Add manual page.
3096      [Florian Weimer (Red Hat Product Security Team)]
3097
3098   *) New functions to check a hostname email or IP address against a
3099      certificate. Add options x509 utility to print results of checks against
3100      a certificate.
3101      [Steve Henson]
3102
3103   *) Fix OCSP checking.
3104      [Rob Stradling <rob.stradling@comodo.com> and Ben Laurie]
3105
3106   *) Initial experimental support for explicitly trusted non-root CAs.
3107      OpenSSL still tries to build a complete chain to a root but if an
3108      intermediate CA has a trust setting included that is used. The first
3109      setting is used: whether to trust (e.g., -addtrust option to the x509
3110      utility) or reject.
3111      [Steve Henson]
3112
3113   *) Add -trusted_first option which attempts to find certificates in the
3114      trusted store even if an untrusted chain is also supplied.
3115      [Steve Henson]
3116
3117   *) MIPS assembly pack updates: support for MIPS32r2 and SmartMIPS ASE,
3118      platform support for Linux and Android.
3119      [Andy Polyakov]
3120
3121   *) Support for linux-x32, ILP32 environment in x86_64 framework.
3122      [Andy Polyakov]
3123
3124   *) Experimental multi-implementation support for FIPS capable OpenSSL.
3125      When in FIPS mode the approved implementations are used as normal,
3126      when not in FIPS mode the internal unapproved versions are used instead.
3127      This means that the FIPS capable OpenSSL isn't forced to use the
3128      (often lower performance) FIPS implementations outside FIPS mode.
3129      [Steve Henson]
3130
3131   *) Transparently support X9.42 DH parameters when calling
3132      PEM_read_bio_DHparameters. This means existing applications can handle
3133      the new parameter format automatically.
3134      [Steve Henson]
3135
3136   *) Initial experimental support for X9.42 DH parameter format: mainly
3137      to support use of 'q' parameter for RFC5114 parameters.
3138      [Steve Henson]
3139
3140   *) Add DH parameters from RFC5114 including test data to dhtest.
3141      [Steve Henson]
3142
3143   *) Support for automatic EC temporary key parameter selection. If enabled
3144      the most preferred EC parameters are automatically used instead of
3145      hardcoded fixed parameters. Now a server just has to call:
3146      SSL_CTX_set_ecdh_auto(ctx, 1) and the server will automatically
3147      support ECDH and use the most appropriate parameters.
3148      [Steve Henson]
3149
3150   *) Enhance and tidy EC curve and point format TLS extension code. Use
3151      static structures instead of allocation if default values are used.
3152      New ctrls to set curves we wish to support and to retrieve shared curves.
3153      Print out shared curves in s_server. New options to s_server and s_client
3154      to set list of supported curves.
3155      [Steve Henson]
3156
3157   *) New ctrls to retrieve supported signature algorithms and
3158      supported curve values as an array of NIDs. Extend openssl utility
3159      to print out received values.
3160      [Steve Henson]
3161
3162   *) Add new APIs EC_curve_nist2nid and EC_curve_nid2nist which convert
3163      between NIDs and the more common NIST names such as "P-256". Enhance
3164      ecparam utility and ECC method to recognise the NIST names for curves.
3165      [Steve Henson]
3166
3167   *) Enhance SSL/TLS certificate chain handling to support different
3168      chains for each certificate instead of one chain in the parent SSL_CTX.
3169      [Steve Henson]
3170
3171   *) Support for fixed DH ciphersuite client authentication: where both
3172      server and client use DH certificates with common parameters.
3173      [Steve Henson]
3174
3175   *) Support for fixed DH ciphersuites: those requiring DH server
3176      certificates.
3177      [Steve Henson]
3178
3179   *) New function i2d_re_X509_tbs for re-encoding the TBS portion of
3180      the certificate.
3181      Note: Related 1.0.2-beta specific macros X509_get_cert_info,
3182      X509_CINF_set_modified, X509_CINF_get_issuer, X509_CINF_get_extensions and
3183      X509_CINF_get_signature were reverted post internal team review.
3184
3185  Changes between 1.0.1k and 1.0.1l [15 Jan 2015]
3186
3187   *) Build fixes for the Windows and OpenVMS platforms
3188      [Matt Caswell and Richard Levitte]
3189
3190  Changes between 1.0.1j and 1.0.1k [8 Jan 2015]
3191
3192   *) Fix DTLS segmentation fault in dtls1_get_record. A carefully crafted DTLS
3193      message can cause a segmentation fault in OpenSSL due to a NULL pointer
3194      dereference. This could lead to a Denial Of Service attack. Thanks to
3195      Markus Stenberg of Cisco Systems, Inc. for reporting this issue.
3196      (CVE-2014-3571)
3197      [Steve Henson]
3198
3199   *) Fix DTLS memory leak in dtls1_buffer_record. A memory leak can occur in the
3200      dtls1_buffer_record function under certain conditions. In particular this
3201      could occur if an attacker sent repeated DTLS records with the same
3202      sequence number but for the next epoch. The memory leak could be exploited
3203      by an attacker in a Denial of Service attack through memory exhaustion.
3204      Thanks to Chris Mueller for reporting this issue.
3205      (CVE-2015-0206)
3206      [Matt Caswell]
3207
3208   *) Fix issue where no-ssl3 configuration sets method to NULL. When openssl is
3209      built with the no-ssl3 option and a SSL v3 ClientHello is received the ssl
3210      method would be set to NULL which could later result in a NULL pointer
3211      dereference. Thanks to Frank Schmirler for reporting this issue.
3212      (CVE-2014-3569)
3213      [Kurt Roeckx]
3214
3215   *) Abort handshake if server key exchange message is omitted for ephemeral
3216      ECDH ciphersuites.
3217
3218      Thanks to Karthikeyan Bhargavan of the PROSECCO team at INRIA for
3219      reporting this issue.
3220      (CVE-2014-3572)
3221      [Steve Henson]
3222
3223   *) Remove non-export ephemeral RSA code on client and server. This code
3224      violated the TLS standard by allowing the use of temporary RSA keys in
3225      non-export ciphersuites and could be used by a server to effectively
3226      downgrade the RSA key length used to a value smaller than the server
3227      certificate. Thanks for Karthikeyan Bhargavan of the PROSECCO team at
3228      INRIA or reporting this issue.
3229      (CVE-2015-0204)
3230      [Steve Henson]
3231
3232   *) Fixed issue where DH client certificates are accepted without verification.
3233      An OpenSSL server will accept a DH certificate for client authentication
3234      without the certificate verify message. This effectively allows a client to
3235      authenticate without the use of a private key. This only affects servers
3236      which trust a client certificate authority which issues certificates
3237      containing DH keys: these are extremely rare and hardly ever encountered.
3238      Thanks for Karthikeyan Bhargavan of the PROSECCO team at INRIA or reporting
3239      this issue.
3240      (CVE-2015-0205)
3241      [Steve Henson]
3242
3243   *) Ensure that the session ID context of an SSL is updated when its
3244      SSL_CTX is updated via SSL_set_SSL_CTX.
3245
3246      The session ID context is typically set from the parent SSL_CTX,
3247      and can vary with the CTX.
3248      [Adam Langley]
3249
3250   *) Fix various certificate fingerprint issues.
3251
3252      By using non-DER or invalid encodings outside the signed portion of a
3253      certificate the fingerprint can be changed without breaking the signature.
3254      Although no details of the signed portion of the certificate can be changed
3255      this can cause problems with some applications: e.g. those using the
3256      certificate fingerprint for blacklists.
3257
3258      1. Reject signatures with non zero unused bits.
3259
3260      If the BIT STRING containing the signature has non zero unused bits reject
3261      the signature. All current signature algorithms require zero unused bits.
3262
3263      2. Check certificate algorithm consistency.
3264
3265      Check the AlgorithmIdentifier inside TBS matches the one in the
3266      certificate signature. NB: this will result in signature failure
3267      errors for some broken certificates.
3268
3269      Thanks to Konrad Kraszewski from Google for reporting this issue.
3270
3271      3. Check DSA/ECDSA signatures use DER.
3272
3273      Re-encode DSA/ECDSA signatures and compare with the original received
3274      signature. Return an error if there is a mismatch.
3275
3276      This will reject various cases including garbage after signature
3277      (thanks to Antti Karjalainen and Tuomo Untinen from the Codenomicon CROSS
3278      program for discovering this case) and use of BER or invalid ASN.1 INTEGERs
3279      (negative or with leading zeroes).
3280
3281      Further analysis was conducted and fixes were developed by Stephen Henson
3282      of the OpenSSL core team.
3283
3284      (CVE-2014-8275)
3285      [Steve Henson]
3286
3287    *) Correct Bignum squaring. Bignum squaring (BN_sqr) may produce incorrect
3288       results on some platforms, including x86_64. This bug occurs at random
3289       with a very low probability, and is not known to be exploitable in any
3290       way, though its exact impact is difficult to determine. Thanks to Pieter
3291       Wuille (Blockstream) who reported this issue and also suggested an initial
3292       fix. Further analysis was conducted by the OpenSSL development team and
3293       Adam Langley of Google. The final fix was developed by Andy Polyakov of
3294       the OpenSSL core team.
3295       (CVE-2014-3570)
3296       [Andy Polyakov]
3297
3298    *) Do not resume sessions on the server if the negotiated protocol
3299       version does not match the session's version. Resuming with a different
3300       version, while not strictly forbidden by the RFC, is of questionable
3301       sanity and breaks all known clients.
3302       [David Benjamin, Emilia Käsper]
3303
3304    *) Tighten handling of the ChangeCipherSpec (CCS) message: reject
3305       early CCS messages during renegotiation. (Note that because
3306       renegotiation is encrypted, this early CCS was not exploitable.)
3307       [Emilia Käsper]
3308
3309    *) Tighten client-side session ticket handling during renegotiation:
3310       ensure that the client only accepts a session ticket if the server sends
3311       the extension anew in the ServerHello. Previously, a TLS client would
3312       reuse the old extension state and thus accept a session ticket if one was
3313       announced in the initial ServerHello.
3314
3315       Similarly, ensure that the client requires a session ticket if one
3316       was advertised in the ServerHello. Previously, a TLS client would
3317       ignore a missing NewSessionTicket message.
3318       [Emilia Käsper]
3319
3320  Changes between 1.0.1i and 1.0.1j [15 Oct 2014]
3321
3322   *) SRTP Memory Leak.
3323
3324      A flaw in the DTLS SRTP extension parsing code allows an attacker, who
3325      sends a carefully crafted handshake message, to cause OpenSSL to fail
3326      to free up to 64k of memory causing a memory leak. This could be
3327      exploited in a Denial Of Service attack. This issue affects OpenSSL
3328      1.0.1 server implementations for both SSL/TLS and DTLS regardless of
3329      whether SRTP is used or configured. Implementations of OpenSSL that
3330      have been compiled with OPENSSL_NO_SRTP defined are not affected.
3331
3332      The fix was developed by the OpenSSL team.
3333      (CVE-2014-3513)
3334      [OpenSSL team]
3335
3336   *) Session Ticket Memory Leak.
3337
3338      When an OpenSSL SSL/TLS/DTLS server receives a session ticket the
3339      integrity of that ticket is first verified. In the event of a session
3340      ticket integrity check failing, OpenSSL will fail to free memory
3341      causing a memory leak. By sending a large number of invalid session
3342      tickets an attacker could exploit this issue in a Denial Of Service
3343      attack.
3344      (CVE-2014-3567)
3345      [Steve Henson]
3346
3347   *) Build option no-ssl3 is incomplete.
3348
3349      When OpenSSL is configured with "no-ssl3" as a build option, servers
3350      could accept and complete a SSL 3.0 handshake, and clients could be
3351      configured to send them.
3352      (CVE-2014-3568)
3353      [Akamai and the OpenSSL team]
3354
3355   *) Add support for TLS_FALLBACK_SCSV.
3356      Client applications doing fallback retries should call
3357      SSL_set_mode(s, SSL_MODE_SEND_FALLBACK_SCSV).
3358      (CVE-2014-3566)
3359      [Adam Langley, Bodo Moeller]
3360
3361   *) Add additional DigestInfo checks.
3362
3363      Re-encode DigestInto in DER and check against the original when
3364      verifying RSA signature: this will reject any improperly encoded
3365      DigestInfo structures.
3366
3367      Note: this is a precautionary measure and no attacks are currently known.
3368
3369      [Steve Henson]
3370
3371  Changes between 1.0.1h and 1.0.1i [6 Aug 2014]
3372
3373   *) Fix SRP buffer overrun vulnerability. Invalid parameters passed to the
3374      SRP code can be overrun an internal buffer. Add sanity check that
3375      g, A, B < N to SRP code.
3376
3377      Thanks to Sean Devlin and Watson Ladd of Cryptography Services, NCC
3378      Group for discovering this issue.
3379      (CVE-2014-3512)
3380      [Steve Henson]
3381
3382   *) A flaw in the OpenSSL SSL/TLS server code causes the server to negotiate
3383      TLS 1.0 instead of higher protocol versions when the ClientHello message
3384      is badly fragmented. This allows a man-in-the-middle attacker to force a
3385      downgrade to TLS 1.0 even if both the server and the client support a
3386      higher protocol version, by modifying the client's TLS records.
3387
3388      Thanks to David Benjamin and Adam Langley (Google) for discovering and
3389      researching this issue.
3390      (CVE-2014-3511)
3391      [David Benjamin]
3392
3393   *) OpenSSL DTLS clients enabling anonymous (EC)DH ciphersuites are subject
3394      to a denial of service attack. A malicious server can crash the client
3395      with a null pointer dereference (read) by specifying an anonymous (EC)DH
3396      ciphersuite and sending carefully crafted handshake messages.
3397
3398      Thanks to Felix Gröbert (Google) for discovering and researching this
3399      issue.
3400      (CVE-2014-3510)
3401      [Emilia Käsper]
3402
3403   *) By sending carefully crafted DTLS packets an attacker could cause openssl
3404      to leak memory. This can be exploited through a Denial of Service attack.
3405      Thanks to Adam Langley for discovering and researching this issue.
3406      (CVE-2014-3507)
3407      [Adam Langley]
3408
3409   *) An attacker can force openssl to consume large amounts of memory whilst
3410      processing DTLS handshake messages. This can be exploited through a
3411      Denial of Service attack.
3412      Thanks to Adam Langley for discovering and researching this issue.
3413      (CVE-2014-3506)
3414      [Adam Langley]
3415
3416   *) An attacker can force an error condition which causes openssl to crash
3417      whilst processing DTLS packets due to memory being freed twice. This
3418      can be exploited through a Denial of Service attack.
3419      Thanks to Adam Langley and Wan-Teh Chang for discovering and researching
3420      this issue.
3421      (CVE-2014-3505)
3422      [Adam Langley]
3423
3424   *) If a multithreaded client connects to a malicious server using a resumed
3425      session and the server sends an ec point format extension it could write
3426      up to 255 bytes to freed memory.
3427
3428      Thanks to Gabor Tyukasz (LogMeIn Inc) for discovering and researching this
3429      issue.
3430      (CVE-2014-3509)
3431      [Gabor Tyukasz]
3432
3433   *) A malicious server can crash an OpenSSL client with a null pointer
3434      dereference (read) by specifying an SRP ciphersuite even though it was not
3435      properly negotiated with the client. This can be exploited through a
3436      Denial of Service attack.
3437
3438      Thanks to Joonas Kuorilehto and Riku Hietamäki (Codenomicon) for
3439      discovering and researching this issue.
3440      (CVE-2014-5139)
3441      [Steve Henson]
3442
3443   *) A flaw in OBJ_obj2txt may cause pretty printing functions such as
3444      X509_name_oneline, X509_name_print_ex et al. to leak some information
3445      from the stack. Applications may be affected if they echo pretty printing
3446      output to the attacker.
3447
3448      Thanks to Ivan Fratric (Google) for discovering this issue.
3449      (CVE-2014-3508)
3450      [Emilia Käsper, and Steve Henson]
3451
3452   *) Fix ec_GFp_simple_points_make_affine (thus, EC_POINTs_mul etc.)
3453      for corner cases. (Certain input points at infinity could lead to
3454      bogus results, with non-infinity inputs mapped to infinity too.)
3455      [Bodo Moeller]
3456
3457  Changes between 1.0.1g and 1.0.1h [5 Jun 2014]
3458
3459   *) Fix for SSL/TLS MITM flaw. An attacker using a carefully crafted
3460      handshake can force the use of weak keying material in OpenSSL
3461      SSL/TLS clients and servers.
3462
3463      Thanks to KIKUCHI Masashi (Lepidum Co. Ltd.) for discovering and
3464      researching this issue. (CVE-2014-0224)
3465      [KIKUCHI Masashi, Steve Henson]
3466
3467   *) Fix DTLS recursion flaw. By sending an invalid DTLS handshake to an
3468      OpenSSL DTLS client the code can be made to recurse eventually crashing
3469      in a DoS attack.
3470
3471      Thanks to Imre Rad (Search-Lab Ltd.) for discovering this issue.
3472      (CVE-2014-0221)
3473      [Imre Rad, Steve Henson]
3474
3475   *) Fix DTLS invalid fragment vulnerability. A buffer overrun attack can
3476      be triggered by sending invalid DTLS fragments to an OpenSSL DTLS
3477      client or server. This is potentially exploitable to run arbitrary
3478      code on a vulnerable client or server.
3479
3480      Thanks to Jüri Aedla for reporting this issue. (CVE-2014-0195)
3481      [Jüri Aedla, Steve Henson]
3482
3483   *) Fix bug in TLS code where clients enable anonymous ECDH ciphersuites
3484      are subject to a denial of service attack.
3485
3486      Thanks to Felix Gröbert and Ivan Fratric at Google for discovering
3487      this issue. (CVE-2014-3470)
3488      [Felix Gröbert, Ivan Fratric, Steve Henson]
3489
3490   *) Harmonize version and its documentation. -f flag is used to display
3491      compilation flags.
3492      [mancha <mancha1@zoho.com>]
3493
3494   *) Fix eckey_priv_encode so it immediately returns an error upon a failure
3495      in i2d_ECPrivateKey.
3496      [mancha <mancha1@zoho.com>]
3497
3498   *) Fix some double frees. These are not thought to be exploitable.
3499      [mancha <mancha1@zoho.com>]
3500
3501  Changes between 1.0.1f and 1.0.1g [7 Apr 2014]
3502
3503   *) A missing bounds check in the handling of the TLS heartbeat extension
3504      can be used to reveal up to 64k of memory to a connected client or
3505      server.
3506
3507      Thanks for Neel Mehta of Google Security for discovering this bug and to
3508      Adam Langley <agl@chromium.org> and Bodo Moeller <bmoeller@acm.org> for
3509      preparing the fix (CVE-2014-0160)
3510      [Adam Langley, Bodo Moeller]
3511
3512   *) Fix for the attack described in the paper "Recovering OpenSSL
3513      ECDSA Nonces Using the FLUSH+RELOAD Cache Side-channel Attack"
3514      by Yuval Yarom and Naomi Benger. Details can be obtained from:
3515      http://eprint.iacr.org/2014/140
3516
3517      Thanks to Yuval Yarom and Naomi Benger for discovering this
3518      flaw and to Yuval Yarom for supplying a fix (CVE-2014-0076)
3519      [Yuval Yarom and Naomi Benger]
3520
3521   *) TLS pad extension: draft-agl-tls-padding-03
3522
3523      Workaround for the "TLS hang bug" (see FAQ and PR#2771): if the
3524      TLS client Hello record length value would otherwise be > 255 and
3525      less that 512 pad with a dummy extension containing zeroes so it
3526      is at least 512 bytes long.
3527
3528      [Adam Langley, Steve Henson]
3529
3530  Changes between 1.0.1e and 1.0.1f [6 Jan 2014]
3531
3532   *) Fix for TLS record tampering bug. A carefully crafted invalid
3533      handshake could crash OpenSSL with a NULL pointer exception.
3534      Thanks to Anton Johansson for reporting this issues.
3535      (CVE-2013-4353)
3536
3537   *) Keep original DTLS digest and encryption contexts in retransmission
3538      structures so we can use the previous session parameters if they need
3539      to be resent. (CVE-2013-6450)
3540      [Steve Henson]
3541
3542   *) Add option SSL_OP_SAFARI_ECDHE_ECDSA_BUG (part of SSL_OP_ALL) which
3543      avoids preferring ECDHE-ECDSA ciphers when the client appears to be
3544      Safari on OS X.  Safari on OS X 10.8..10.8.3 advertises support for
3545      several ECDHE-ECDSA ciphers, but fails to negotiate them.  The bug
3546      is fixed in OS X 10.8.4, but Apple have ruled out both hot fixing
3547      10.8..10.8.3 and forcing users to upgrade to 10.8.4 or newer.
3548      [Rob Stradling, Adam Langley]
3549
3550  Changes between 1.0.1d and 1.0.1e [11 Feb 2013]
3551
3552   *) Correct fix for CVE-2013-0169. The original didn't work on AES-NI
3553      supporting platforms or when small records were transferred.
3554      [Andy Polyakov, Steve Henson]
3555
3556  Changes between 1.0.1c and 1.0.1d [5 Feb 2013]
3557
3558   *) Make the decoding of SSLv3, TLS and DTLS CBC records constant time.
3559
3560      This addresses the flaw in CBC record processing discovered by
3561      Nadhem Alfardan and Kenny Paterson. Details of this attack can be found
3562      at: http://www.isg.rhul.ac.uk/tls/
3563
3564      Thanks go to Nadhem Alfardan and Kenny Paterson of the Information
3565      Security Group at Royal Holloway, University of London
3566      (www.isg.rhul.ac.uk) for discovering this flaw and Adam Langley and
3567      Emilia Käsper for the initial patch.
3568      (CVE-2013-0169)
3569      [Emilia Käsper, Adam Langley, Ben Laurie, Andy Polyakov, Steve Henson]
3570
3571   *) Fix flaw in AESNI handling of TLS 1.2 and 1.1 records for CBC mode
3572      ciphersuites which can be exploited in a denial of service attack.
3573      Thanks go to and to Adam Langley <agl@chromium.org> for discovering
3574      and detecting this bug and to Wolfgang Ettlinger
3575      <wolfgang.ettlinger@gmail.com> for independently discovering this issue.
3576      (CVE-2012-2686)
3577      [Adam Langley]
3578
3579   *) Return an error when checking OCSP signatures when key is NULL.
3580      This fixes a DoS attack. (CVE-2013-0166)
3581      [Steve Henson]
3582
3583   *) Make openssl verify return errors.
3584      [Chris Palmer <palmer@google.com> and Ben Laurie]
3585
3586   *) Call OCSP Stapling callback after ciphersuite has been chosen, so
3587      the right response is stapled. Also change SSL_get_certificate()
3588      so it returns the certificate actually sent.
3589      See http://rt.openssl.org/Ticket/Display.html?id=2836.
3590      [Rob Stradling <rob.stradling@comodo.com>]
3591
3592   *) Fix possible deadlock when decoding public keys.
3593      [Steve Henson]
3594
3595   *) Don't use TLS 1.0 record version number in initial client hello
3596      if renegotiating.
3597      [Steve Henson]
3598
3599  Changes between 1.0.1b and 1.0.1c [10 May 2012]
3600
3601   *) Sanity check record length before skipping explicit IV in TLS
3602      1.2, 1.1 and DTLS to fix DoS attack.
3603
3604      Thanks to Codenomicon for discovering this issue using Fuzz-o-Matic
3605      fuzzing as a service testing platform.
3606      (CVE-2012-2333)
3607      [Steve Henson]
3608
3609   *) Initialise tkeylen properly when encrypting CMS messages.
3610      Thanks to Solar Designer of Openwall for reporting this issue.
3611      [Steve Henson]
3612
3613   *) In FIPS mode don't try to use composite ciphers as they are not
3614      approved.
3615      [Steve Henson]
3616
3617  Changes between 1.0.1a and 1.0.1b [26 Apr 2012]
3618
3619   *) OpenSSL 1.0.0 sets SSL_OP_ALL to 0x80000FFFL and OpenSSL 1.0.1 and
3620      1.0.1a set SSL_OP_NO_TLSv1_1 to 0x00000400L which would unfortunately
3621      mean any application compiled against OpenSSL 1.0.0 headers setting