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