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