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