12f4c820d9258a9d286298aa3e689f8497446c62
[openssl.git] / CHANGES.md
1 OpenSSL CHANGES
2 ===============
3
4 This is a high-level summary of the most important changes.
5 For a full list of changes, see the [git commit log][log] and
6 pick the appropriate release branch.
7
8   [log]: https://github.com/openssl/openssl/commits/
9
10 OpenSSL Releases
11 ----------------
12
13  - [OpenSSL 3.0](#openssl-30)
14  - [OpenSSL 1.1.1](#openssl-111)
15  - [OpenSSL 1.1.0](#openssl-110)
16  - [OpenSSL 1.0.2](#openssl-102)
17  - [OpenSSL 1.0.1](#openssl-101)
18  - [OpenSSL 1.0.0](#openssl-100)
19  - [OpenSSL 0.9.x](#openssl-09x)
20
21 OpenSSL 3.0
22 -----------
23
24 ### Changes between 1.1.1 and 3.0 [xx XXX xxxx]
25
26  * The signatures of the functions to get and set options on SSL and
27    SSL_CTX objects changed from "unsigned long" to "uint64_t" type.
28    Some source code changes may be required.
29
30    * Rich Salz *
31
32  * Client-initiated renegotiation is disabled by default. To allow it, use
33    the -client_renegotiation option, the SSL_OP_ALLOW_CLIENT_RENEGOTIATION
34    flag, or the "ClientRenegotiation" config parameter as appropriate.
35
36    * Rich Salz *
37
38  * Add "abspath" and "includedir" pragma's to config files, to prevent,
39    or modify relative pathname inclusion.
40
41    * Rich Salz *
42
43  * OpenSSL includes a cryptographic module that is intended to be FIPS 140-2
44    validated. The module is implemented as an OpenSSL provider, the so-called
45    FIPS provider. A list of all changes related to the FIPS provider would go
46    beyond the scope of this CHANGES file, please consult the README-FIPS and
47    README-PROVIDERS files, as well as the migration guide.
48
49    The FIPS provider is disabled by default and needs to be enabled explicitly
50    at configuration time using the `enable-fips` option. If it is enabled,
51    the FIPS provider gets built and installed in addition to the default and
52    the legacy provider. No separate installation procedure is necessary.
53    There is however a dedicated `install_fips` make target, which serves the
54    special purpose of installing only the FIPS provider into an existing
55    OpenSSL installation.
56
57    *OpenSSL team members and many third party contributors*
58
59  * For the key types DH and DHX the allowed settable parameters are now different.
60    Previously (in 1.1.1) these conflicting parameters were allowed, but will now
61    result in errors. See EVP_PKEY-DH(7) for further details. This affects the
62    behaviour of openssl-genpkey(1) for DH parameter generation.
63
64    *Shane Lontis*
65
66  * The openssl commands that read keys, certificates, and CRLs now
67    automatically detect the PEM or DER format of the input files so it is not
68    necessary to explicitly specify the input format anymore. However if the
69    input format option is used the specified format will be required.
70
71    *David von Oheimb, Richard Levitte, and Tomáš Mráz*
72
73  * Added enhanced PKCS#12 APIs which accept a library context `OSSL_LIB_CTX`
74    and (where relevant) a property query. Other APIs which handle PKCS#7 and
75    PKCS#8 objects have also been enhanced where required. This includes:
76
77    PKCS12_add_key_ex(), PKCS12_add_safe_ex(), PKCS12_add_safes_ex(),
78    PKCS12_create_ex(), PKCS12_decrypt_skey_ex(), PKCS12_init_ex(),
79    PKCS12_item_decrypt_d2i_ex(), PKCS12_item_i2d_encrypt_ex(),
80    PKCS12_key_gen_asc_ex(), PKCS12_key_gen_uni_ex(), PKCS12_key_gen_utf8_ex(),
81    PKCS12_pack_p7encdata_ex(), PKCS12_pbe_crypt_ex(), PKCS12_PBE_keyivgen_ex(),
82    PKCS12_SAFEBAG_create_pkcs8_encrypt_ex(), PKCS5_pbe2_set_iv_ex(),
83    PKCS5_pbe_set0_algor_ex(), PKCS5_pbe_set_ex(), PKCS5_pbkdf2_set_ex(),
84    PKCS5_v2_PBE_keyivgen_ex(), PKCS5_v2_scrypt_keyivgen_ex(),
85    PKCS8_decrypt_ex(), PKCS8_encrypt_ex(), PKCS8_set0_pbe_ex().
86
87    As part of this change the EVP_PBE_xxx APIs can also accept a library
88    context and property query and will call an extended version of the key/IV
89    derivation function which supports these parameters. This includes
90    EVP_PBE_CipherInit_ex(), EVP_PBE_find_ex() and EVP_PBE_scrypt_ex().
91
92    *Jon Spillett*
93
94  * The default manual page suffix ($MANSUFFIX) has been changed to "ossl"
95
96    *Matt Caswell*
97
98  * Added support for Kernel TLS (KTLS). In order to use KTLS, support for it
99    must be compiled in using the "enable-ktls" compile time option. It must
100    also be enabled at run time using the SSL_OP_ENABLE_KTLS option.
101
102    *Boris Pismenny, John Baldwin and Andrew Gallatin*
103
104  * Support for RFC 5746 secure renegotiation is now required by default for
105    SSL or TLS connections to succeed.  Applications that require the ability
106    to connect to legacy peers will need to explicitly set
107    SSL_OP_LEGACY_SERVER_CONNECT.  Accordingly, SSL_OP_LEGACY_SERVER_CONNECT
108    is no longer set as part of SSL_OP_ALL.
109
110    *Benjamin Kaduk*
111
112  * The signature of the `copy` functional parameter of the
113    EVP_PKEY_meth_set_copy() function has changed so its `src` argument is
114    now `const EVP_PKEY_CTX *` instead of `EVP_PKEY_CTX *`. Similarly
115    the signature of the `pub_decode` functional parameter of the
116    EVP_PKEY_asn1_set_public() function has changed so its `pub` argument is
117    now `const X509_PUBKEY *` instead of `X509_PUBKEY *`.
118
119    *David von Oheimb*
120
121  * The error return values from some control calls (ctrl) have changed.
122    One significant change is that controls which used to return -2 for
123    invalid inputs, now return -1 indicating a generic error condition instead.
124
125    *Paul Dale*
126
127  * A public key check is now performed during EVP_PKEY_derive_set_peer().
128    Previously DH was internally doing this during EVP_PKEY_derive().
129    To disable this check use EVP_PKEY_derive_set_peer_ex(dh, peer, 0). This
130    may mean that an error can occur in EVP_PKEY_derive_set_peer() rather than
131    during EVP_PKEY_derive().
132
133    *Shane Lontis*
134
135  * The EVP_PKEY_CTRL_PKCS7_ENCRYPT, EVP_PKEY_CTRL_PKCS7_DECRYPT,
136    EVP_PKEY_CTRL_PKCS7_SIGN, EVP_PKEY_CTRL_CMS_ENCRYPT,
137    EVP_PKEY_CTRL_CMS_DECRYPT, and EVP_PKEY_CTRL_CMS_SIGN control operations
138    are deprecated. They are not invoked by the OpenSSL library anymore and
139    are replaced by direct checks of the key operation against the key type
140    when the operation is initialized.
141
142    *Tomáš Mráz*
143
144  * The EVP_PKEY_public_check() and EVP_PKEY_param_check() functions now work for
145    more key types including RSA, DSA, ED25519, X25519, ED448 and X448.
146    Previously (in 1.1.1) they would return -2. For key types that do not have
147    parameters then EVP_PKEY_param_check() will always return 1.
148
149  * The output from the command line applications may have minor
150    changes.  These are primarily changes in capitalisation and white
151    space.  However, in some cases, there are additional differences.
152    For example, the DH parameters output from `dhparam` now lists 'P',
153    'Q', 'G' and 'pcounter' instead of 'prime', 'generator', 'subgroup
154    order' and 'counter' respectively.
155
156    *Paul Dale*
157
158  * The output from numerous "printing" functions such as X509_signature_print(),
159    X509_print_ex(), X509_CRL_print_ex(), and other similar functions has been
160    amended such that there may be cosmetic differences between the output
161    observed in 1.1.1 and 3.0. This also applies to the "-text" output from the
162    x509 and crl applications.
163
164    *David von Oheimb*
165
166  * Windows thread synchronization uses read/write primitives (SRWLock) when
167    supported by the OS, otherwise CriticalSection continues to be used.
168
169    *Vincent Drake*
170
171  * Add filter BIO BIO_f_readbuffer() that allows BIO_tell() and BIO_seek() to
172    work on read only BIO source/sinks that do not support these functions.
173    This allows piping or redirection of a file BIO using stdin to be buffered
174    into memory. This is used internally in OSSL_DECODER_from_bio().
175
176    *Shane Lontis*
177
178  * OSSL_STORE_INFO_get_type() may now return an additional value. In 1.1.1
179    this function would return one of the values OSSL_STORE_INFO_NAME,
180    OSSL_STORE_INFO_PKEY, OSSL_STORE_INFO_PARAMS, OSSL_STORE_INFO_CERT or
181    OSSL_STORE_INFO_CRL. Decoded public keys would previously have been reported
182    as type OSSL_STORE_INFO_PKEY in 1.1.1. In 3.0 decoded public keys are now
183    reported as having the new type OSSL_STORE_INFO_PUBKEY. Applications
184    using this function should be amended to handle the changed return value.
185
186    *Richard Levitte*
187
188  * Improved adherence to Enhanced Security Services (ESS, RFC 2634 and RFC 5035)
189    for the TSP and CMS Advanced Electronic Signatures (CAdES) implementations.
190    As required by RFC 5035 check both ESSCertID and ESSCertIDv2 if both present.
191    Correct the semantics of checking the validation chain in case ESSCertID{,v2}
192    contains more than one certificate identifier: This means that all
193    certificates referenced there MUST be part of the validation chain.
194
195    *David von Oheimb*
196
197  * The implementation of the EVP ciphers CAST5-ECB, CAST5-CBC, CAST5-OFB,
198    CAST5-CFB, BF-ECB, BF-CBC, BF-OFB, BF-CFB, IDEA-ECB, IDEC-CBC, IDEA-OFB,
199    IDEA-CFB, SEED-ECB, SEED-CBC, SEED-OFB, SEED-CFB, RC2-ECB, RC2-CBC,
200    RC2-40-CBC, RC2-64-CBC, RC2-OFB, RC2-CFB, RC4, RC4-40, RC4-HMAC-MD5, RC5-ECB,
201    RC5-CBC, RC5-OFB, RC5-CFB, DESX-CBC, DES-ECB, DES-CBC, DES-OFB, DES-CFB,
202    DES-CFB1 and DES-CFB8 have been moved to the legacy provider. Applications
203    using the EVP APIs to access these ciphers should instead use more modern
204    ciphers. If that is not possible then these applications should ensure that
205    the legacy provider has been loaded. This can be achieved either
206    programmatically or via configuration. See the provider(7) man page for
207    further details.
208
209    *Matt Caswell*
210
211  * The implementation of the EVP digests MD2, MD4, MDC2, WHIRLPOOL and
212    RIPEMD-160 have been moved to the legacy provider. Applications using the
213    EVP APIs to access these digests should instead use more modern digests. If
214    that is not possible then these applications should ensure that the legacy
215    provider has been loaded. This can be achieved either programmatically or via
216    configuration. See the provider(7) man page for further details.
217
218    *Matt Caswell*
219
220  * The deprecated function EVP_PKEY_get0() now returns NULL being called for a
221    provided key.
222
223    *Dmitry Belyavskiy*
224
225  * The deprecated functions EVP_PKEY_get0_RSA(),
226    EVP_PKEY_get0_DSA(), EVP_PKEY_get0_EC_KEY(), EVP_PKEY_get0_DH(),
227    EVP_PKEY_get0_hmac(), EVP_PKEY_get0_poly1305() and EVP_PKEY_get0_siphash() as
228    well as the similarly named "get1" functions behave slightly differently in
229    OpenSSL 3.0. Previously they returned a pointer to the low-level key used
230    internally by libcrypto. From OpenSSL 3.0 this key may now be held in a
231    provider. Calling these functions will only return a handle on the internal
232    key where the EVP_PKEY was constructed using this key in the first place, for
233    example using a function or macro such as EVP_PKEY_assign_RSA(),
234    EVP_PKEY_set1_RSA(), etc. Where the EVP_PKEY holds a provider managed key,
235    then these functions now return a cached copy of the key. Changes to
236    the internal provider key that take place after the first time the cached key
237    is accessed will not be reflected back in the cached copy. Similarly any
238    changes made to the cached copy by application code will not be reflected
239    back in the internal provider key.
240
241    For the above reasons the keys returned from these functions should typically
242    be treated as read-only. To emphasise this the value returned from
243    EVP_PKEY_get0_RSA(), EVP_PKEY_get0_DSA(),
244    EVP_PKEY_get0_EC_KEY() and EVP_PKEY_get0_DH() has been made const. This may
245    break some existing code. Applications broken by this change should be
246    modified. The preferred solution is to refactor the code to avoid the use of
247    these deprecated functions. Failing this the code should be modified to use a
248    const pointer instead. The EVP_PKEY_get1_RSA(), EVP_PKEY_get1_DSA(),
249    EVP_PKEY_get1_EC_KEY() and EVP_PKEY_get1_DH() functions continue to return a
250    non-const pointer to enable them to be "freed". However they should also be
251    treated as read-only.
252
253    *Matt Caswell*
254
255  * A number of functions handling low-level keys or engines were deprecated
256    including EVP_PKEY_set1_engine(), EVP_PKEY_get0_engine(), EVP_PKEY_assign(),
257    EVP_PKEY_get0(), EVP_PKEY_get0_hmac(), EVP_PKEY_get0_poly1305() and
258    EVP_PKEY_get0_siphash(). Applications using engines should instead use
259    providers. Applications getting or setting low-level keys in an EVP_PKEY
260    should instead use the OSSL_ENCODER or OSSL_DECODER APIs, or alternatively
261    use EVP_PKEY_fromdata() or EVP_PKEY_get_params().
262
263    *Matt Caswell*
264
265  * Deprecated obsolete EVP_PKEY_CTX_get0_dh_kdf_ukm() and
266    EVP_PKEY_CTX_get0_ecdh_kdf_ukm() functions. They are not needed
267    and require returning octet ptr parameters from providers that
268    would like to support them which complicates provider implementations.
269
270    *Tomáš Mráz*
271
272  * The RAND_METHOD APIs have been deprecated.  The functions deprecated are:
273    RAND_OpenSSL(), RAND_get_rand_method(), RAND_set_rand_engine() and
274    RAND_set_rand_method().  Provider based random number generators should
275    be used instead via EVP_RAND(3).
276
277    *Paul Dale*
278
279  * The SRP APIs have been deprecated. The old APIs do not work via providers,
280    and there is no EVP interface to them. Unfortunately there is no replacement
281    for these APIs at this time.
282
283    *Matt Caswell*
284
285  * Add a compile time option to prevent the caching of provider fetched
286    algorithms.  This is enabled by including the no-cached-fetch option
287    at configuration time.
288
289    *Paul Dale*
290
291  * The default algorithms for pkcs12 creation with the PKCS12_create() function
292    were changed to more modern PBKDF2 and AES based algorithms. The default
293    MAC iteration count was changed to PKCS12_DEFAULT_ITER to make it equal
294    with the password-based encryption iteration count. The default digest
295    algorithm for the MAC computation was changed to SHA-256. The pkcs12
296    application now supports -legacy option that restores the previous
297    default algorithms to support interoperability with legacy systems.
298
299    *Tomáš Mráz and Sahana Prasad*
300
301  * The openssl speed command does not use low-level API calls anymore. This
302    implies some of the performance numbers might not be fully comparable
303    with the previous releases due to higher overhead. This applies
304    particularly to measuring performance on smaller data chunks.
305
306    *Tomáš Mráz*
307
308  * Parallel dual-prime 1024-bit modular exponentiation for AVX512_IFMA
309    capable processors.
310
311    *Ilya Albrekht, Sergey Kirillov, Andrey Matyukov (Intel Corp)*
312
313  * Combining the Configure options no-ec and no-dh no longer disables TLSv1.3.
314    Typically if OpenSSL has no EC or DH algorithms then it cannot support
315    connections with TLSv1.3. However OpenSSL now supports "pluggable" groups
316    through providers. Therefore third party providers may supply group
317    implementations even where there are no built-in ones. Attempting to create
318    TLS connections in such a build without also disabling TLSv1.3 at run time or
319    using third party provider groups may result in handshake failures. TLSv1.3
320    can be disabled at compile time using the "no-tls1_3" Configure option.
321
322    *Matt Caswell*
323
324  * Implemented support for fully "pluggable" TLSv1.3 groups. This means that
325    providers may supply their own group implementations (using either the "key
326    exchange" or the "key encapsulation" methods) which will automatically be
327    detected and used by libssl.
328
329    *Matt Caswell, Nicola Tuveri*
330
331  * The undocumented function X509_certificate_type() has been deprecated;
332    applications can use X509_get0_pubkey() and X509_get0_signature() to
333    get the same information.
334
335    *Rich Salz*
336
337  * Deprecated the obsolete BN_pseudo_rand() and BN_pseudo_rand_range()
338    functions. They are identical to BN_rand() and BN_rand_range()
339    respectively.
340
341    *Tomáš Mráz*
342
343  * Removed RSA padding mode for SSLv23 (which was only used for
344    SSLv2). This includes the functions RSA_padding_check_SSLv23() and
345    RSA_padding_add_SSLv23() and the `-ssl` option in the deprecated
346    `rsautl` command.
347
348    *Rich Salz*
349
350  * Deprecated the obsolete X9.31 RSA key generation related functions
351    BN_X931_generate_Xpq(), BN_X931_derive_prime_ex(), and
352    BN_X931_generate_prime_ex().
353
354    *Tomáš Mráz*
355
356  * The default key generation method for the regular 2-prime RSA keys was
357    changed to the FIPS 186-4 B.3.6 method (Generation of Probable Primes with
358    Conditions Based on Auxiliary Probable Primes). This method is slower
359    than the original method.
360
361    *Shane Lontis*
362
363  * Deprecated the BN_is_prime_ex() and BN_is_prime_fasttest_ex() functions.
364    They are replaced with the BN_check_prime() function that avoids possible
365    misuse and always uses at least 64 rounds of the Miller-Rabin
366    primality test. At least 64 rounds of the Miller-Rabin test are now also
367    used for all prime generation, including RSA key generation.
368    This increases key generation time, especially for larger keys.
369
370    *Kurt Roeckx*
371
372  * Deprecated EVP_MD_CTX_set_update_fn() and EVP_MD_CTX_update_fn()
373    as they are not useful with non-deprecated functions.
374
375    *Rich Salz*
376
377  * Deprecated the type OCSP_REQ_CTX and the functions OCSP_REQ_CTX_new(),
378    OCSP_REQ_CTX_free(), OCSP_REQ_CTX_http(), OCSP_REQ_CTX_add1_header(),
379    OCSP_REQ_CTX_i2d() and its special form OCSP_REQ_CTX_set1_req(),
380    OCSP_REQ_CTX_nbio(),
381    OCSP_REQ_CTX_nbio_d2i() and its special form OCSP_sendreq_nbio(),
382    OCSP_REQ_CTX_get0_mem_bio() and OCSP_set_max_response_length().  These
383    were used to collect all necessary data to form a HTTP request, and to
384    perform the HTTP transfer with that request.  With OpenSSL 3.0, the
385    type is OSSL_HTTP_REQ_CTX, and the deprecated functions are replaced
386    with OSSL_HTTP_REQ_CTX_new(), OSSL_HTTP_REQ_CTX_free(),
387    OSSL_HTTP_REQ_CTX_set_request_line(), OSSL_HTTP_REQ_CTX_add1_header(),
388    OSSL_HTTP_REQ_CTX_set1_req(),
389    OSSL_HTTP_REQ_CTX_nbio(), OSSL_HTTP_REQ_CTX_nbio_d2i(),
390    OSSL_HTTP_REQ_CTX_get0_mem_bio(), and
391    OSSL_HTTP_REQ_CTX_set_max_response_length().
392
393    *Rich Salz, Richard Levitte, and David von Oheimb*
394
395  * Deprecated `X509_http_nbio()` and `X509_CRL_http_nbio()`,
396    which are superseded by `X509_load_http()` and `X509_CRL_load_http()`.
397
398    *David von Oheimb*
399
400  * Deprecated `OCSP_parse_url()`, which is replaced with `OSSL_HTTP_parse_url`.
401
402    *David von Oheimb*
403
404  * Validation of SM2 keys has been separated from the validation of regular EC
405    keys, allowing to improve the SM2 validation process to reject loaded private
406    keys that are not conforming to the SM2 ISO standard.
407    In particular, a private scalar `k` outside the range `1 <= k < n-1` is now
408    correctly rejected.
409
410    *Nicola Tuveri*
411
412  * Behavior of the `pkey` app is changed, when using the `-check` or `-pubcheck`
413    switches: a validation failure triggers an early exit, returning a failure
414    exit status to the parent process.
415
416    *Nicola Tuveri*
417
418  * Changed behavior of SSL_CTX_set_ciphersuites() and SSL_set_ciphersuites()
419    to ignore unknown ciphers.
420
421    *Otto Hollmann*
422
423  * The `-cipher-commands` and `-digest-commands` options
424    of the command line utility `list` have been deprecated.
425    Instead use the `-cipher-algorithms` and `-digest-algorithms` options.
426
427    *Dmitry Belyavskiy*
428
429  * Added convenience functions for generating asymmetric key pairs:
430    The 'quick' one-shot (yet somewhat limited) function L<EVP_PKEY_Q_keygen(3)>
431    and macros for the most common cases: <EVP_RSA_gen(3)> and L<EVP_EC_gen(3)>.
432
433    *David von Oheimb*
434
435  * All of the low-level EC_KEY functions have been deprecated including:
436
437    EC_KEY_OpenSSL, EC_KEY_get_default_method, EC_KEY_set_default_method,
438    EC_KEY_get_method, EC_KEY_set_method, EC_KEY_new_method
439    EC_KEY_METHOD_new, EC_KEY_METHOD_free, EC_KEY_METHOD_set_init,
440    EC_KEY_METHOD_set_keygen, EC_KEY_METHOD_set_compute_key,
441    EC_KEY_METHOD_set_sign, EC_KEY_METHOD_set_verify,
442    EC_KEY_METHOD_get_init, EC_KEY_METHOD_get_keygen,
443    EC_KEY_METHOD_get_compute_key, EC_KEY_METHOD_get_sign,
444    EC_KEY_METHOD_get_verify,
445    EC_KEY_new_ex, EC_KEY_new, EC_KEY_get_flags, EC_KEY_set_flags,
446    EC_KEY_clear_flags, EC_KEY_decoded_from_explicit_params,
447    EC_KEY_new_by_curve_name_ex, EC_KEY_new_by_curve_name, EC_KEY_free,
448    EC_KEY_copy, EC_KEY_dup, EC_KEY_up_ref, EC_KEY_get0_engine,
449    EC_KEY_get0_group, EC_KEY_set_group, EC_KEY_get0_private_key,
450    EC_KEY_set_private_key, EC_KEY_get0_public_key, EC_KEY_set_public_key,
451    EC_KEY_get_enc_flags, EC_KEY_set_enc_flags, EC_KEY_get_conv_form,
452    EC_KEY_set_conv_form, EC_KEY_set_ex_data, EC_KEY_get_ex_data,
453    EC_KEY_set_asn1_flag, EC_KEY_generate_key, EC_KEY_check_key, EC_KEY_can_sign,
454    EC_KEY_set_public_key_affine_coordinates, EC_KEY_key2buf, EC_KEY_oct2key,
455    EC_KEY_oct2priv, EC_KEY_priv2oct and EC_KEY_priv2buf.
456    Applications that need to implement an EC_KEY_METHOD need to consider
457    implementation of the functionality in a special provider.
458    For replacement of the functions manipulating the EC_KEY objects
459    see the L<EVP_PKEY-EC(7)> manual page.
460    A simple way of generating EC keys is L<EVP_EC_gen(3)>.
461
462    Additionally functions that read and write EC_KEY objects such as
463    o2i_ECPublicKey, i2o_ECPublicKey, ECParameters_print_fp, EC_KEY_print_fp,
464    d2i_ECPKParameters, d2i_ECParameters, d2i_ECPrivateKey, d2i_ECPrivateKey_bio,
465    d2i_ECPrivateKey_fp, d2i_EC_PUBKEY, d2i_EC_PUBKEY_bio, d2i_EC_PUBKEY_fp,
466    i2d_ECPKParameters, i2d_ECParameters, i2d_ECPrivateKey, i2d_ECPrivateKey_bio,
467    i2d_ECPrivateKey_fp, i2d_EC_PUBKEY, i2d_EC_PUBKEY_bio and i2d_EC_PUBKEY_fp
468    have also been deprecated. Applications should instead use the
469    OSSL_DECODER and OSSL_ENCODER APIs to read and write EC files.
470
471    Finally functions that assign or obtain EC_KEY objects from an EVP_PKEY such as
472    EVP_PKEY_assign_EC_KEY, EVP_PKEY_get0_EC_KEY, EVP_PKEY_get1_EC_KEY and
473    EVP_PKEY_set1_EC_KEY are also deprecated. Applications should instead either
474    read or write an EVP_PKEY directly using the OSSL_DECODER and OSSL_ENCODER
475    APIs. Or load an EVP_PKEY directly from EC data using EVP_PKEY_fromdata().
476
477    *Shane Lontis, Paul Dale, Richard Levitte, and Tomáš Mráz*
478
479  * Deprecated all the libcrypto and libssl error string loading
480    functions: ERR_load_ASN1_strings(), ERR_load_ASYNC_strings(),
481    ERR_load_BIO_strings(), ERR_load_BN_strings(), ERR_load_BUF_strings(),
482    ERR_load_CMS_strings(), ERR_load_COMP_strings(), ERR_load_CONF_strings(),
483    ERR_load_CRYPTO_strings(), ERR_load_CT_strings(), ERR_load_DH_strings(),
484    ERR_load_DSA_strings(), ERR_load_EC_strings(), ERR_load_ENGINE_strings(),
485    ERR_load_ERR_strings(), ERR_load_EVP_strings(), ERR_load_KDF_strings(),
486    ERR_load_OBJ_strings(), ERR_load_OCSP_strings(), ERR_load_PEM_strings(),
487    ERR_load_PKCS12_strings(), ERR_load_PKCS7_strings(), ERR_load_RAND_strings(),
488    ERR_load_RSA_strings(), ERR_load_OSSL_STORE_strings(), ERR_load_TS_strings(),
489    ERR_load_UI_strings(), ERR_load_X509_strings(), ERR_load_X509V3_strings().
490
491    Calling these functions is not necessary since OpenSSL 1.1.0, as OpenSSL
492    now loads error strings automatically.
493
494    *Richard Levitte*
495
496  * The functions SSL_CTX_set_tmp_dh_callback and SSL_set_tmp_dh_callback, as
497    well as the macros SSL_CTX_set_tmp_dh() and SSL_set_tmp_dh() have been
498    deprecated. These are used to set the Diffie-Hellman (DH) parameters that
499    are to be used by servers requiring ephemeral DH keys. Instead applications
500    should consider using the built-in DH parameters that are available by
501    calling SSL_CTX_set_dh_auto() or SSL_set_dh_auto(). If custom parameters are
502    necessary then applications can use the alternative functions
503    SSL_CTX_set0_tmp_dh_pkey() and SSL_set0_tmp_dh_pkey(). There is no direct
504    replacement for the "callback" functions. The callback was originally useful
505    in order to have different parameters for export and non-export ciphersuites.
506    Export ciphersuites are no longer supported by OpenSSL. Use of the callback
507    functions should be replaced by one of the other methods described above.
508
509    *Matt Caswell*
510
511  * The `-crypt` option to the `passwd` command line tool has been removed.
512
513    *Paul Dale*
514
515  * The -C option to the `x509`, `dhparam`, `dsaparam`, and `ecparam` commands
516    were removed.
517
518    *Rich Salz*
519
520  * Add support for AES Key Wrap inverse ciphers to the EVP layer.
521    The algorithms are:
522    "AES-128-WRAP-INV", "AES-192-WRAP-INV", "AES-256-WRAP-INV",
523    "AES-128-WRAP-PAD-INV", "AES-192-WRAP-PAD-INV" and "AES-256-WRAP-PAD-INV".
524    The inverse ciphers use AES decryption for wrapping, and
525    AES encryption for unwrapping.
526
527    *Shane Lontis*
528
529  * Deprecated EVP_PKEY_set1_tls_encodedpoint() and
530    EVP_PKEY_get1_tls_encodedpoint(). These functions were previously used by
531    libssl to set or get an encoded public key in/from an EVP_PKEY object. With
532    OpenSSL 3.0 these are replaced by the more generic functions
533    EVP_PKEY_set1_encoded_public_key() and EVP_PKEY_get1_encoded_public_key().
534    The old versions have been converted to deprecated macros that just call the
535    new functions.
536
537    *Matt Caswell*
538
539  * The security callback, which can be customised by application code, supports
540    the security operation SSL_SECOP_TMP_DH. This is defined to take an EVP_PKEY
541    in the "other" parameter. In most places this is what is passed. All these
542    places occur server side. However there was one client side call of this
543    security operation and it passed a DH object instead. This is incorrect
544    according to the definition of SSL_SECOP_TMP_DH, and is inconsistent with all
545    of the other locations. Therefore this client side call has been changed to
546    pass an EVP_PKEY instead.
547
548    *Matt Caswell*
549
550  * Add PKCS7_get_octet_string() and PKCS7_type_is_other() to the public
551    interface. Their functionality remains unchanged.
552
553    *Jordan Montgomery*
554
555  * Added new option for 'openssl list', '-providers', which will display the
556    list of loaded providers, their names, version and status.  It optionally
557    displays their gettable parameters.
558
559    *Paul Dale*
560
561  * Removed EVP_PKEY_set_alias_type().  This function was previously
562    needed as a workaround to recognise SM2 keys.  With OpenSSL 3.0, this key
563    type is internally recognised so the workaround is no longer needed.
564
565    This is a breaking change from previous OpenSSL versions.
566
567    *Richard Levitte*
568
569  * Deprecated `EVP_PKEY_CTX_set_rsa_keygen_pubexp()` and introduced
570    `EVP_PKEY_CTX_set1_rsa_keygen_pubexp()`, which is now preferred.
571
572    *Jeremy Walch*
573
574  * Changed all "STACK" functions to be macros instead of inline functions. Macro
575    parameters are still checked for type safety at compile time via helper
576    inline functions.
577
578    *Matt Caswell*
579
580  * Remove the RAND_DRBG API
581
582    The RAND_DRBG API did not fit well into the new provider concept as
583    implemented by EVP_RAND and EVP_RAND_CTX. The main reason is that the
584    RAND_DRBG API is a mixture of 'front end' and 'back end' API calls
585    and some of its API calls are rather low-level. This holds in particular
586    for the callback mechanism (`RAND_DRBG_set_callbacks()`).
587
588    Adding a compatibility layer to continue supporting the RAND_DRBG API as
589    a legacy API for a regular deprecation period turned out to come at the
590    price of complicating the new provider API unnecessarily. Since the
591    RAND_DRBG API exists only since version 1.1.1, it was decided by the OMC
592    to drop it entirely.
593
594    *Paul Dale and Matthias St. Pierre*
595
596  * Allow `SSL_set1_host()` and `SSL_add1_host()` to take IP literal addresses
597    as well as actual hostnames.
598
599    *David Woodhouse*
600
601  * The 'MinProtocol' and 'MaxProtocol' configuration commands now silently
602    ignore TLS protocol version bounds when configuring DTLS-based contexts, and
603    conversely, silently ignore DTLS protocol version bounds when configuring
604    TLS-based contexts.  The commands can be repeated to set bounds of both
605    types.  The same applies with the corresponding "min_protocol" and
606    "max_protocol" command-line switches, in case some application uses both TLS
607    and DTLS.
608
609    SSL_CTX instances that are created for a fixed protocol version (e.g.
610    `TLSv1_server_method()`) also silently ignore version bounds.  Previously
611    attempts to apply bounds to these protocol versions would result in an
612    error.  Now only the "version-flexible" SSL_CTX instances are subject to
613    limits in configuration files in command-line options.
614
615    *Viktor Dukhovni*
616
617  * Deprecated the `ENGINE` API.  Engines should be replaced with providers
618    going forward.
619
620    *Paul Dale*
621
622  * Reworked the recorded ERR codes to make better space for system errors.
623    To distinguish them, the macro `ERR_SYSTEM_ERROR()` indicates if the
624    given code is a system error (true) or an OpenSSL error (false).
625
626    *Richard Levitte*
627
628  * Reworked the test perl framework to better allow parallel testing.
629
630    *Nicola Tuveri and David von Oheimb*
631
632  * Added ciphertext stealing algorithms AES-128-CBC-CTS, AES-192-CBC-CTS and
633    AES-256-CBC-CTS to the providers. CS1, CS2 and CS3 variants are supported.
634
635    *Shane Lontis*
636
637  * 'Configure' has been changed to figure out the configuration target if
638    none is given on the command line.  Consequently, the 'config' script is
639    now only a mere wrapper.  All documentation is changed to only mention
640    'Configure'.
641
642    *Rich Salz and Richard Levitte*
643
644  * Added a library context `OSSL_LIB_CTX` that applications as well as
645    other libraries can use to form a separate context within which
646    libcrypto operations are performed.
647
648    There are two ways this can be used:
649
650    - Directly, by passing a library context to functions that take
651      such an argument, such as `EVP_CIPHER_fetch` and similar algorithm
652      fetching functions.
653    - Indirectly, by creating a new library context and then assigning
654      it as the new default, with `OSSL_LIB_CTX_set0_default`.
655
656    All public OpenSSL functions that take an `OSSL_LIB_CTX` pointer,
657    apart from the functions directly related to `OSSL_LIB_CTX`, accept
658    NULL to indicate that the default library context should be used.
659
660    Library code that changes the default library context using
661    `OSSL_LIB_CTX_set0_default` should take care to restore it with a
662    second call before returning to the caller.
663
664    _(Note: the library context was initially called `OPENSSL_CTX` and
665    renamed to `OSSL_LIB_CTX` in version 3.0.0 alpha7.)_
666
667    *Richard Levitte*
668
669  * Handshake now fails if Extended Master Secret extension is dropped
670    on renegotiation.
671
672    *Tomáš Mráz*
673
674  * Dropped interactive mode from the `openssl` program.  From now on,
675    running it without arguments is equivalent to `openssl help`.
676
677    *Richard Levitte*
678
679  * Deprecated `EVP_PKEY_cmp()` and `EVP_PKEY_cmp_parameters()` since their
680    return values were confusing: Unlike other `_cmp()` functions
681    they do not return 0 when their arguments are equal.
682    The new replacement functions `EVP_PKEY_eq()` and `EVP_PKEY_parameters_eq()`
683    should be used.
684
685    *David von Oheimb and Shane Lontis*
686
687  * Deprecated `EC_METHOD_get_field_type()`. Applications should switch to
688    `EC_GROUP_get_field_type()`.
689
690    *Billy Bob Brumley*
691
692  * Deprecated EC_GFp_simple_method(), EC_GFp_mont_method(),
693    EC_GF2m_simple_method(), EC_GFp_nist_method(), EC_GFp_nistp224_method()
694    EC_GFp_nistp256_method(), and EC_GFp_nistp521_method().
695    Applications should rely on the library automatically assigning a suitable
696    EC_METHOD internally upon EC_GROUP construction.
697
698    *Billy Bob Brumley*
699
700  * Deprecated EC_GROUP_new(), EC_GROUP_method_of(), and EC_POINT_method_of().
701    EC_METHOD is now an internal-only concept and a suitable EC_METHOD is
702    assigned internally without application intervention.
703    Users of EC_GROUP_new() should switch to a different suitable constructor.
704
705    *Billy Bob Brumley*
706
707  * Add CAdES-BES signature verification support, mostly derived
708    from ESSCertIDv2 TS (RFC 5816) contribution by Marek Klein.
709
710    *Filipe Raimundo da Silva*
711
712  * Add CAdES-BES signature scheme and attributes support (RFC 5126) to CMS API.
713
714    *Antonio Iacono*
715
716  * Added the AuthEnvelopedData content type structure (RFC 5083) with AES-GCM
717    parameter (RFC 5084) for the Cryptographic Message Syntax (CMS). Its purpose
718    is to support encryption and decryption of a digital envelope that is both
719    authenticated and encrypted using AES GCM mode.
720
721    *Jakub Zelenka*
722
723  * Deprecated EC_POINT_make_affine() and EC_POINTs_make_affine(). These
724    functions are not widely used and now OpenSSL automatically perform this
725    conversion when needed.
726
727    *Billy Bob Brumley*
728
729  * Deprecated EC_GROUP_precompute_mult(), EC_GROUP_have_precompute_mult(), and
730    EC_KEY_precompute_mult(). These functions are not widely used and
731    applications should instead switch to named curves which OpenSSL has
732    hardcoded lookup tables for.
733
734    *Billy Bob Brumley*
735
736  * Deprecated EC_POINTs_mul(). This function is not widely used and applications
737    should instead use the L<EC_POINT_mul(3)> function.
738
739    *Billy Bob Brumley*
740
741  * Removed FIPS_mode() and FIPS_mode_set(). These functions are legacy API's
742    that are not applicable to the new provider model. Applications should
743    instead use EVP_default_properties_is_fips_enabled() and
744    EVP_default_properties_enable_fips().
745
746    *Shane Lontis*
747
748  * The SSL option SSL_OP_IGNORE_UNEXPECTED_EOF is introduced. If that option
749    is set, an unexpected EOF is ignored, it pretends a close notify was received
750    instead and so the returned error becomes SSL_ERROR_ZERO_RETURN.
751
752    *Dmitry Belyavskiy*
753
754  * Deprecated EC_POINT_set_Jprojective_coordinates_GFp() and
755    EC_POINT_get_Jprojective_coordinates_GFp(). These functions are not widely
756    used and applications should instead use the
757    L<EC_POINT_set_affine_coordinates(3)> and
758    L<EC_POINT_get_affine_coordinates(3)> functions.
759
760    *Billy Bob Brumley*
761
762  * Added OSSL_PARAM_BLD to the public interface.  This allows OSSL_PARAM
763    arrays to be more easily constructed via a series of utility functions.
764    Create a parameter builder using OSSL_PARAM_BLD_new(), add parameters using
765    the various push functions and finally convert to a passable OSSL_PARAM
766    array using OSSL_PARAM_BLD_to_param().
767
768    *Paul Dale*
769
770  * The security strength of SHA1 and MD5 based signatures in TLS has been
771    reduced. This results in SSL 3, TLS 1.0, TLS 1.1 and DTLS 1.0 no longer
772    working at the default security level of 1 and instead requires security
773    level 0. The security level can be changed either using the cipher string
774    with `@SECLEVEL`, or calling `SSL_CTX_set_security_level()`. This also means
775    that where the signature algorithms extension is missing from a ClientHello
776    then the handshake will fail in TLS 1.2 at security level 1. This is because,
777    although this extension is optional, failing to provide one means that
778    OpenSSL will fallback to a default set of signature algorithms. This default
779    set requires the availability of SHA1.
780
781    *Kurt Roeckx*
782
783  * Added EVP_PKEY_set_type_by_keymgmt(), to initialise an EVP_PKEY to
784    contain a provider side internal key.
785
786    *Richard Levitte*
787
788  * ASN1_verify(), ASN1_digest() and ASN1_sign() have been deprecated.
789    They are old functions that we don't use, and that you could disable with
790    the macro NO_ASN1_OLD.  This goes all the way back to OpenSSL 0.9.7.
791
792    *Richard Levitte*
793
794  * Project text documents not yet having a proper file name extension
795    (`HACKING`, `LICENSE`, `NOTES*`, `README*`, `VERSION`) have been renamed to
796    `*.md` as far as reasonable, else `*.txt`, for better use with file managers.
797
798    *David von Oheimb*
799
800  * The main project documents (README, NEWS, CHANGES, INSTALL, SUPPORT)
801    have been converted to Markdown with the goal to produce documents
802    which not only look pretty when viewed online in the browser, but
803    remain well readable inside a plain text editor.
804
805    To achieve this goal, a 'minimalistic' Markdown style has been applied
806    which avoids formatting elements that interfere too much with the
807    reading flow in the text file. For example, it
808
809    * avoids [ATX headings][] and uses [setext headings][] instead
810      (which works for `<h1>` and `<h2>` headings only).
811    * avoids [inline links][] and uses [reference links][] instead.
812    * avoids [fenced code blocks][] and uses [indented code blocks][] instead.
813
814      [ATX headings]:         https://github.github.com/gfm/#atx-headings
815      [setext headings]:      https://github.github.com/gfm/#setext-headings
816      [inline links]:         https://github.github.com/gfm/#inline-link
817      [reference links]:      https://github.github.com/gfm/#reference-link
818      [fenced code blocks]:   https://github.github.com/gfm/#fenced-code-blocks
819      [indented code blocks]: https://github.github.com/gfm/#indented-code-blocks
820
821    *Matthias St. Pierre*
822
823  * The test suite is changed to preserve results of each test recipe.
824    A new directory test-runs/ with subdirectories named like the
825    test recipes are created in the build tree for this purpose.
826
827    *Richard Levitte*
828
829  * Added an implementation of CMP and CRMF (RFC 4210, RFC 4211 RFC 6712).
830    This adds `crypto/cmp/`, `crpyto/crmf/`, `apps/cmp.c`, and `test/cmp_*`.
831    See L<openssl-cmp(1)> and L<OSSL_CMP_exec_IR_ses(3)> as starting points.
832
833    *David von Oheimb, Martin Peylo*
834
835  * Generalized the HTTP client code from `crypto/ocsp/` into `crpyto/http/`.
836    It supports arbitrary request and response content types, GET redirection,
837    TLS, connections via HTTP(S) proxies, connections and exchange via
838    user-defined BIOs (allowing implicit connections), persistent connections,
839    and timeout checks.  See L<OSSL_HTTP_transfer(3)> etc. for details.
840    The legacy OCSP-focused (and only partly documented) API
841    is retained for backward compatibility, while most of it is deprecated.
842
843    *David von Oheimb*
844
845  * Added `util/check-format.pl`, a tool for checking adherence to the
846    OpenSSL coding style <https://www.openssl.org/policies/codingstyle.html>.
847    The checks performed are incomplete and yield some false positives.
848    Still the tool should be useful for detecting most typical glitches.
849
850    *David von Oheimb*
851
852  * `BIO_do_connect()` and `BIO_do_handshake()` have been extended:
853    If domain name resolution yields multiple IP addresses all of them are tried
854    after `connect()` failures.
855
856    *David von Oheimb*
857
858  * All of the low-level RSA functions have been deprecated including:
859
860    RSA_new, RSA_new_method, RSA_size, RSA_security_bits, RSA_get0_pss_params,
861    RSA_get_version, RSA_get0_engine, RSA_generate_key_ex,
862    RSA_generate_multi_prime_key, RSA_X931_derive_ex, RSA_X931_generate_key_ex,
863    RSA_check_key, RSA_check_key_ex, RSA_public_encrypt, RSA_private_encrypt,
864    RSA_public_decrypt, RSA_private_decrypt, RSA_set_default_method,
865    RSA_get_default_method, RSA_null_method, RSA_get_method, RSA_set_method,
866    RSA_PKCS1_OpenSSL, RSA_print_fp, RSA_print, RSA_sign, RSA_verify,
867    RSA_sign_ASN1_OCTET_STRING, RSA_verify_ASN1_OCTET_STRING, RSA_blinding_on,
868    RSA_blinding_off, RSA_setup_blinding, RSA_padding_add_PKCS1_type_1,
869    RSA_padding_check_PKCS1_type_1, RSA_padding_add_PKCS1_type_2,
870    RSA_padding_check_PKCS1_type_2, PKCS1_MGF1, RSA_padding_add_PKCS1_OAEP,
871    RSA_padding_check_PKCS1_OAEP, RSA_padding_add_PKCS1_OAEP_mgf1,
872    RSA_padding_check_PKCS1_OAEP_mgf1, RSA_padding_add_SSLv23,
873    RSA_padding_check_SSLv23, RSA_padding_add_none, RSA_padding_check_none,
874    RSA_padding_add_X931, RSA_padding_check_X931, RSA_X931_hash_id,
875    RSA_verify_PKCS1_PSS, RSA_padding_add_PKCS1_PSS, RSA_verify_PKCS1_PSS_mgf1,
876    RSA_padding_add_PKCS1_PSS_mgf1, RSA_set_ex_data, RSA_get_ex_data,
877    RSA_meth_new, RSA_meth_free, RSA_meth_dup, RSA_meth_get0_name,
878    RSA_meth_set1_name, RSA_meth_get_flags, RSA_meth_set_flags,
879    RSA_meth_get0_app_data, RSA_meth_set0_app_data, RSA_meth_get_pub_enc,
880    RSA_meth_set_pub_enc, RSA_meth_get_pub_dec, RSA_meth_set_pub_dec,
881    RSA_meth_get_priv_enc, RSA_meth_set_priv_enc, RSA_meth_get_priv_dec,
882    RSA_meth_set_priv_dec, RSA_meth_get_mod_exp, RSA_meth_set_mod_exp,
883    RSA_meth_get_bn_mod_exp, RSA_meth_set_bn_mod_exp, RSA_meth_get_init,
884    RSA_meth_set_init, RSA_meth_get_finish, RSA_meth_set_finish,
885    RSA_meth_get_sign, RSA_meth_set_sign, RSA_meth_get_verify,
886    RSA_meth_set_verify, RSA_meth_get_keygen, RSA_meth_set_keygen,
887    RSA_meth_get_multi_prime_keygen and RSA_meth_set_multi_prime_keygen.
888
889    Use of these low-level functions has been informally discouraged for a long
890    time.  Instead applications should use L<EVP_PKEY_encrypt_init(3)>,
891    L<EVP_PKEY_encrypt(3)>, L<EVP_PKEY_decrypt_init(3)> and
892    L<EVP_PKEY_decrypt(3)>.
893    For replacement of the functions manipulating the RSA objects
894    see the L<EVP_PKEY-RSA(7)> manual page.
895    A simple way of generating RSA keys is L<EVP_RSA_gen(3)>.
896
897    All of these low-level RSA functions have been deprecated without
898    replacement:
899
900    RSA_blinding_off, RSA_blinding_on, RSA_clear_flags, RSA_get_version,
901    RSAPrivateKey_dup, RSAPublicKey_dup, RSA_set_flags, RSA_setup_blinding and
902    RSA_test_flags.
903
904    All of these RSA flags have been deprecated without replacement:
905
906    RSA_FLAG_BLINDING, RSA_FLAG_CACHE_PRIVATE, RSA_FLAG_CACHE_PUBLIC,
907    RSA_FLAG_EXT_PKEY, RSA_FLAG_NO_BLINDING, RSA_FLAG_THREAD_SAFE and
908    RSA_METHOD_FLAG_NO_CHECK.
909
910    *Paul Dale*
911
912  * X509 certificates signed using SHA1 are no longer allowed at security
913    level 1 and above.
914    In TLS/SSL the default security level is 1. It can be set either
915    using the cipher string with `@SECLEVEL`, or calling
916    `SSL_CTX_set_security_level()`. If the leaf certificate is signed with SHA-1,
917    a call to `SSL_CTX_use_certificate()` will fail if the security level is not
918    lowered first.
919    Outside TLS/SSL, the default security level is -1 (effectively 0). It can
920    be set using `X509_VERIFY_PARAM_set_auth_level()` or using the `-auth_level`
921    options of the commands.
922
923    *Kurt Roeckx*
924
925  * The command line utilities dhparam, dsa, gendsa and dsaparam have been
926    modified to use PKEY APIs.  These commands are now in maintenance mode
927    and no new features will be added to them.
928
929    *Paul Dale*
930
931  * The command line utility rsautl has been deprecated.
932    Instead use the pkeyutl program.
933
934    *Paul Dale*
935
936  * The command line utilities genrsa and rsa have been modified to use PKEY
937    APIs. They now write PKCS#8 keys by default. These commands are now in
938    maintenance mode and no new features will be added to them.
939
940    *Paul Dale*
941
942  * All of the low-level DH functions have been deprecated including:
943
944    DH_OpenSSL, DH_set_default_method, DH_get_default_method, DH_set_method,
945    DH_new_method, DH_new, DH_free, DH_up_ref, DH_bits, DH_set0_pqg, DH_size,
946    DH_security_bits, DH_get_ex_new_index, DH_set_ex_data, DH_get_ex_data,
947    DH_generate_parameters_ex, DH_check_params_ex, DH_check_ex, DH_check_pub_key_ex,
948    DH_check, DH_check_pub_key, DH_generate_key, DH_compute_key,
949    DH_compute_key_padded, DHparams_print_fp, DHparams_print, DH_get_nid,
950    DH_KDF_X9_42, DH_get0_engine, DH_meth_new, DH_meth_free, DH_meth_dup,
951    DH_meth_get0_name, DH_meth_set1_name, DH_meth_get_flags, DH_meth_set_flags,
952    DH_meth_get0_app_data, DH_meth_set0_app_data, DH_meth_get_generate_key,
953    DH_meth_set_generate_key, DH_meth_get_compute_key, DH_meth_set_compute_key,
954    DH_meth_get_bn_mod_exp, DH_meth_set_bn_mod_exp, DH_meth_get_init,
955    DH_meth_set_init, DH_meth_get_finish, DH_meth_set_finish,
956    DH_meth_get_generate_params and DH_meth_set_generate_params.
957
958    Use of these low-level functions has been informally discouraged for a long
959    time.  Instead applications should use L<EVP_PKEY_derive_init(3)>
960    and L<EVP_PKEY_derive(3)>.
961
962    These low-level DH functions have been deprecated without replacement:
963
964    DH_clear_flags, DH_get_1024_160, DH_get_2048_224, DH_get_2048_256,
965    DH_set_flags and DH_test_flags.
966
967    The DH_FLAG_CACHE_MONT_P flag has been deprecated without replacement.
968    The DH_FLAG_TYPE_DH and DH_FLAG_TYPE_DHX have been deprecated.  Use
969    EVP_PKEY_is_a() to determine the type of a key.  There is no replacement for
970    setting these flags.
971
972    Additionally functions that read and write DH objects such as d2i_DHparams,
973    i2d_DHparams, PEM_read_DHparam, PEM_write_DHparams and other similar
974    functions have also been deprecated. Applications should instead use the
975    OSSL_DECODER and OSSL_ENCODER APIs to read and write DH files.
976
977    Finally functions that assign or obtain DH objects from an EVP_PKEY such as
978    `EVP_PKEY_assign_DH()`, `EVP_PKEY_get0_DH()`, `EVP_PKEY_get1_DH()`, and
979    `EVP_PKEY_set1_DH()` are also deprecated.
980    Applications should instead either read or write an
981    EVP_PKEY directly using the OSSL_DECODER and OSSL_ENCODER APIs.
982    Or load an EVP_PKEY directly from DH data using `EVP_PKEY_fromdata()`.
983
984    *Paul Dale and Matt Caswell*
985
986  * All of the low-level DSA functions have been deprecated including:
987
988    DSA_new, DSA_free, DSA_up_ref, DSA_bits, DSA_get0_pqg, DSA_set0_pqg,
989    DSA_get0_key, DSA_set0_key, DSA_get0_p, DSA_get0_q, DSA_get0_g,
990    DSA_get0_pub_key, DSA_get0_priv_key, DSA_clear_flags, DSA_test_flags,
991    DSA_set_flags, DSA_do_sign, DSA_do_verify, DSA_OpenSSL,
992    DSA_set_default_method, DSA_get_default_method, DSA_set_method,
993    DSA_get_method, DSA_new_method, DSA_size, DSA_security_bits,
994    DSA_sign_setup, DSA_sign, DSA_verify, DSA_get_ex_new_index,
995    DSA_set_ex_data, DSA_get_ex_data, DSA_generate_parameters_ex,
996    DSA_generate_key, DSA_meth_new, DSA_get0_engine, DSA_meth_free,
997    DSA_meth_dup, DSA_meth_get0_name, DSA_meth_set1_name, DSA_meth_get_flags,
998    DSA_meth_set_flags, DSA_meth_get0_app_data, DSA_meth_set0_app_data,
999    DSA_meth_get_sign, DSA_meth_set_sign, DSA_meth_get_sign_setup,
1000    DSA_meth_set_sign_setup, DSA_meth_get_verify, DSA_meth_set_verify,
1001    DSA_meth_get_mod_exp, DSA_meth_set_mod_exp, DSA_meth_get_bn_mod_exp,
1002    DSA_meth_set_bn_mod_exp, DSA_meth_get_init, DSA_meth_set_init,
1003    DSA_meth_get_finish, DSA_meth_set_finish, DSA_meth_get_paramgen,
1004    DSA_meth_set_paramgen, DSA_meth_get_keygen and DSA_meth_set_keygen.
1005
1006    Use of these low-level functions has been informally discouraged for a long
1007    time.  Instead applications should use L<EVP_DigestSignInit_ex(3)>,
1008    L<EVP_DigestSignUpdate(3)> and L<EVP_DigestSignFinal(3)>.
1009
1010    These low-level DSA functions have been deprecated without replacement:
1011
1012    DSA_clear_flags, DSA_dup_DH, DSAparams_dup, DSA_set_flags and
1013    DSA_test_flags.
1014
1015    The DSA_FLAG_CACHE_MONT_P flag has been deprecated without replacement.
1016
1017    Finally functions that assign or obtain DSA objects from an EVP_PKEY such as
1018    `EVP_PKEY_assign_DSA()`, `EVP_PKEY_get0_DSA()`, `EVP_PKEY_get1_DSA()`, and
1019    `EVP_PKEY_set1_DSA()` are also deprecated.
1020    Applications should instead either read or write an
1021    EVP_PKEY directly using the OSSL_DECODER and OSSL_ENCODER APIs,
1022    or load an EVP_PKEY directly from DSA data using `EVP_PKEY_fromdata()`.
1023
1024    *Paul Dale*
1025
1026  * Reworked the treatment of EC EVP_PKEYs with the SM2 curve to
1027    automatically become EVP_PKEY_SM2 rather than EVP_PKEY_EC. This is a breaking
1028    change from previous OpenSSL versions.
1029
1030    Unlike in previous OpenSSL versions, this means that applications must not
1031    call `EVP_PKEY_set_alias_type(pkey, EVP_PKEY_SM2)` to get SM2 computations.
1032    The `EVP_PKEY_set_alias_type` function has now been removed.
1033
1034    Parameter and key generation is also reworked to make it possible
1035    to generate EVP_PKEY_SM2 parameters and keys. Applications must now generate
1036    SM2 keys directly and must not create an EVP_PKEY_EC key first.
1037
1038    *Richard Levitte*
1039
1040  * Deprecated low-level ECDH and ECDSA functions.  These include:
1041
1042    ECDH_compute_key, ECDSA_do_sign, ECDSA_do_sign_ex, ECDSA_do_verify,
1043    ECDSA_sign_setup, ECDSA_sign, ECDSA_sign_ex, ECDSA_verify and
1044    ECDSA_size.
1045
1046    Use of these low-level functions has been informally discouraged for a long
1047    time.  Instead applications should use the EVP_PKEY_derive(3),
1048    EVP_DigestSign(3) and EVP_DigestVerify(3) functions.
1049
1050    *Paul Dale*
1051
1052  * Deprecated EVP_PKEY_decrypt_old(), please use EVP_PKEY_decrypt_init()
1053    and EVP_PKEY_decrypt() instead.
1054    Deprecated EVP_PKEY_encrypt_old(), please use EVP_PKEY_encrypt_init()
1055    and EVP_PKEY_encrypt() instead.
1056
1057    *Richard Levitte*
1058
1059  * Enhanced the documentation of EVP_PKEY_size(), EVP_PKEY_bits()
1060    and EVP_PKEY_security_bits().  Especially EVP_PKEY_size() needed
1061    a new formulation to include all the things it can be used for,
1062    as well as words of caution.
1063
1064    *Richard Levitte*
1065
1066  * The SSL_CTX_set_tlsext_ticket_key_cb(3) function has been deprecated.
1067    Instead used the new SSL_CTX_set_tlsext_ticket_key_evp_cb(3) function.
1068
1069    *Paul Dale*
1070
1071  * All low level HMAC functions except for HMAC have been deprecated including:
1072
1073    HMAC_size, HMAC_CTX_new, HMAC_CTX_reset, HMAC_CTX_free,
1074    HMAC_Init_ex, HMAC_Update, HMAC_Final, HMAC_CTX_copy, HMAC_CTX_set_flags
1075    and HMAC_CTX_get_md.
1076
1077    Use of these low-level functions has been informally discouraged for a long
1078    time.  Instead applications should use L<EVP_MAC_CTX_new(3)>,
1079    L<EVP_MAC_CTX_free(3)>, L<EVP_MAC_init(3)>, L<EVP_MAC_update(3)>
1080    and L<EVP_MAC_final(3)> or the single-shot MAC function L<EVP_Q_mac(3)>.
1081
1082    *Paul Dale and David von Oheimb*
1083
1084  * Over two thousand fixes were made to the documentation, including:
1085    - Common options (such as -rand/-writerand, TLS version control, etc)
1086      were refactored and point to newly-enhanced descriptions in openssl.pod.
1087    - Added style conformance for all options (with help from Richard Levitte),
1088      documented all reported missing options, added a CI build to check
1089      that all options are documented and that no unimplemented options
1090      are documented.
1091    - Documented some internals, such as all use of environment variables.
1092    - Addressed all internal broken L<> references.
1093
1094    *Rich Salz*
1095
1096  * All of the low-level CMAC functions have been deprecated including:
1097
1098    CMAC_CTX_new, CMAC_CTX_cleanup, CMAC_CTX_free, CMAC_CTX_get0_cipher_ctx,
1099    CMAC_CTX_copy, CMAC_Init, CMAC_Update, CMAC_Final and CMAC_resume.
1100
1101    Use of these low-level functions has been informally discouraged for a long
1102    time.  Instead applications should use L<EVP_MAC_CTX_new(3)>,
1103    L<EVP_MAC_CTX_free(3)>, L<EVP_MAC_init(3)>, L<EVP_MAC_update(3)>
1104    and L<EVP_MAC_final(3)>.
1105
1106    *Paul Dale*
1107
1108  * The low-level MD2, MD4, MD5, MDC2, RIPEMD160, SHA1, SHA224, SHA256,
1109    SHA384, SHA512 and Whirlpool digest functions have been deprecated.
1110    These include:
1111
1112    MD2, MD2_options, MD2_Init, MD2_Update, MD2_Final, MD4, MD4_Init,
1113    MD4_Update, MD4_Final, MD4_Transform, MD5, MD5_Init, MD5_Update,
1114    MD5_Final, MD5_Transform, MDC2, MDC2_Init, MDC2_Update, MDC2_Final,
1115    RIPEMD160, RIPEMD160_Init, RIPEMD160_Update, RIPEMD160_Final,
1116    RIPEMD160_Transform, SHA1_Init, SHA1_Update, SHA1_Final, SHA1_Transform,
1117    SHA224_Init, SHA224_Update, SHA224_Final, SHA224_Transform,
1118    SHA256_Init, SHA256_Update, SHA256_Final, SHA256_Transform,
1119    SHA384_Init, SHA384_Update, SHA384_Final,
1120    SHA512_Init, SHA512_Update, SHA512_Final, SHA512_Transform,
1121    WHIRLPOOL, WHIRLPOOL_Init,
1122    WHIRLPOOL_Update, WHIRLPOOL_BitUpdate and WHIRLPOOL_Final.
1123
1124    Use of these low-level functions has been informally discouraged
1125    for a long time.  Applications should use the L<EVP_DigestInit_ex(3)>,
1126    L<EVP_DigestUpdate(3)>, and L<EVP_DigestFinal_ex(3)> functions instead.
1127    Alternatively, the quick one-shot function L<EVP_Q_digest(3)> can be used.
1128    SHA1, SHA224, SHA256, SHA384 and SHA512 have changed from functions to macros
1129    like this: (EVP_Q_digest(NULL, "SHA256", NULL, d, n, md, NULL) ? md : NULL).
1130
1131    *Paul Dale and David von Oheimb*
1132
1133  * Corrected the documentation of the return values from the `EVP_DigestSign*`
1134    set of functions.  The documentation mentioned negative values for some
1135    errors, but this was never the case, so the mention of negative values
1136    was removed.
1137
1138    Code that followed the documentation and thereby check with something
1139    like `EVP_DigestSignInit(...) <= 0` will continue to work undisturbed.
1140
1141    *Richard Levitte*
1142
1143  * All of the low-level cipher functions have been deprecated including:
1144
1145    AES_options, AES_set_encrypt_key, AES_set_decrypt_key, AES_encrypt,
1146    AES_decrypt, AES_ecb_encrypt, AES_cbc_encrypt, AES_cfb128_encrypt,
1147    AES_cfb1_encrypt, AES_cfb8_encrypt, AES_ofb128_encrypt,
1148    AES_wrap_key, AES_unwrap_key, BF_set_key, BF_encrypt, BF_decrypt,
1149    BF_ecb_encrypt, BF_cbc_encrypt, BF_cfb64_encrypt, BF_ofb64_encrypt,
1150    BF_options, Camellia_set_key, Camellia_encrypt, Camellia_decrypt,
1151    Camellia_ecb_encrypt, Camellia_cbc_encrypt, Camellia_cfb128_encrypt,
1152    Camellia_cfb1_encrypt, Camellia_cfb8_encrypt, Camellia_ofb128_encrypt,
1153    Camellia_ctr128_encrypt, CAST_set_key, CAST_encrypt, CAST_decrypt,
1154    CAST_ecb_encrypt, CAST_cbc_encrypt, CAST_cfb64_encrypt,
1155    CAST_ofb64_encrypt, DES_options, DES_encrypt1, DES_encrypt2,
1156    DES_encrypt3, DES_decrypt3, DES_cbc_encrypt, DES_ncbc_encrypt,
1157    DES_pcbc_encrypt, DES_xcbc_encrypt, DES_cfb_encrypt, DES_cfb64_encrypt,
1158    DES_ecb_encrypt, DES_ofb_encrypt, DES_ofb64_encrypt, DES_random_key,
1159    DES_set_odd_parity, DES_check_key_parity, DES_is_weak_key, DES_set_key,
1160    DES_key_sched, DES_set_key_checked, DES_set_key_unchecked,
1161    DES_string_to_key, DES_string_to_2keys, DES_fixup_key_parity,
1162    DES_ecb2_encrypt, DES_ede2_cbc_encrypt, DES_ede2_cfb64_encrypt,
1163    DES_ede2_ofb64_encrypt, DES_ecb3_encrypt, DES_ede3_cbc_encrypt,
1164    DES_ede3_cfb64_encrypt, DES_ede3_cfb_encrypt, DES_ede3_ofb64_encrypt,
1165    DES_cbc_cksum, DES_quad_cksum, IDEA_encrypt, IDEA_options,
1166    IDEA_ecb_encrypt, IDEA_set_encrypt_key, IDEA_set_decrypt_key,
1167    IDEA_cbc_encrypt, IDEA_cfb64_encrypt, IDEA_ofb64_encrypt, RC2_set_key,
1168    RC2_encrypt, RC2_decrypt, RC2_ecb_encrypt, RC2_cbc_encrypt,
1169    RC2_cfb64_encrypt, RC2_ofb64_encrypt, RC4, RC4_options, RC4_set_key,
1170    RC5_32_set_key, RC5_32_encrypt, RC5_32_decrypt, RC5_32_ecb_encrypt,
1171    RC5_32_cbc_encrypt, RC5_32_cfb64_encrypt, RC5_32_ofb64_encrypt,
1172    SEED_set_key, SEED_encrypt, SEED_decrypt, SEED_ecb_encrypt,
1173    SEED_cbc_encrypt, SEED_cfb128_encrypt and SEED_ofb128_encrypt.
1174
1175    Use of these low-level functions has been informally discouraged for
1176    a long time. Applications should use the high level EVP APIs, e.g.
1177    EVP_EncryptInit_ex, EVP_EncryptUpdate, EVP_EncryptFinal_ex, and the
1178    equivalently named decrypt functions instead.
1179
1180    *Matt Caswell and Paul Dale*
1181
1182  * Removed include/openssl/opensslconf.h.in and replaced it with
1183    include/openssl/configuration.h.in, which differs in not including
1184    <openssl/macros.h>.  A short header include/openssl/opensslconf.h
1185    was added to include both.
1186
1187    This allows internal hacks where one might need to modify the set
1188    of configured macros, for example this if deprecated symbols are
1189    still supposed to be available internally:
1190
1191        #include <openssl/configuration.h>
1192
1193        #undef OPENSSL_NO_DEPRECATED
1194        #define OPENSSL_SUPPRESS_DEPRECATED
1195
1196        #include <openssl/macros.h>
1197
1198    This should not be used by applications that use the exported
1199    symbols, as that will lead to linking errors.
1200
1201    *Richard Levitte*
1202
1203  * Fixed an overflow bug in the x64_64 Montgomery squaring procedure
1204    used in exponentiation with 512-bit moduli. No EC algorithms are
1205    affected. Analysis suggests that attacks against 2-prime RSA1024,
1206    3-prime RSA1536, and DSA1024 as a result of this defect would be very
1207    difficult to perform and are not believed likely. Attacks against DH512
1208    are considered just feasible. However, for an attack the target would
1209    have to re-use the DH512 private key, which is not recommended anyway.
1210    Also applications directly using the low-level API BN_mod_exp may be
1211    affected if they use BN_FLG_CONSTTIME.
1212    ([CVE-2019-1551])
1213
1214    *Andy Polyakov*
1215
1216  * Most memory-debug features have been deprecated, and the functionality
1217    replaced with no-ops.
1218
1219    *Rich Salz*
1220
1221  * Added documentation for the STACK API.
1222
1223    *Rich Salz*
1224
1225  * Introduced a new method type and API, OSSL_ENCODER, to
1226    represent generic encoders.  An implementation is expected to
1227    be able to encode an object associated with a given name (such
1228    as an algorithm name for an asymmetric key) into forms given by
1229    implementation properties.
1230
1231    Encoders are primarily used from inside libcrypto, through
1232    calls to functions like EVP_PKEY_print_private(),
1233    PEM_write_bio_PrivateKey() and similar.
1234
1235    Encoders are specified in such a way that they can be made to
1236    directly handle the provider side portion of an object, if this
1237    provider side part comes from the same provider as the encoder
1238    itself, but can also be made to handle objects in parametrized
1239    form (as an OSSL_PARAM array of data).  This allows a provider to
1240    offer generic encoders as a service for any other provider.
1241
1242    *Richard Levitte*
1243
1244  * Added a .pragma directive to the syntax of configuration files, to
1245    allow varying behavior in a supported and predictable manner.
1246    Currently added pragma:
1247
1248            .pragma dollarid:on
1249
1250    This allows dollar signs to be a keyword character unless it's
1251    followed by a opening brace or parenthesis.  This is useful for
1252    platforms where dollar signs are commonly used in names, such as
1253    volume names and system directory names on VMS.
1254
1255    *Richard Levitte*
1256
1257  * Added functionality to create an EVP_PKEY from user data.  This
1258    is effectively the same as creating a RSA, DH or DSA object and
1259    then assigning them to an EVP_PKEY, but directly using algorithm
1260    agnostic EVP functions.  A benefit is that this should be future
1261    proof for public key algorithms to come.
1262
1263    *Richard Levitte*
1264
1265  * Change the interpretation of the '--api' configuration option to
1266    mean that this is a desired API compatibility level with no
1267    further meaning.  The previous interpretation, that this would
1268    also mean to remove all deprecated symbols up to and including
1269    the given version, no requires that 'no-deprecated' is also used
1270    in the configuration.
1271
1272    When building applications, the desired API compatibility level
1273    can be set with the OPENSSL_API_COMPAT macro like before.  For
1274    API compatibility version below 3.0, the old style numerical
1275    value is valid as before, such as -DOPENSSL_API_COMPAT=0x10100000L.
1276    For version 3.0 and on, the value is expected to be the decimal
1277    value calculated from the major and minor version like this:
1278
1279            MAJOR * 10000 + MINOR * 100
1280
1281    Examples:
1282
1283            -DOPENSSL_API_COMPAT=30000             For 3.0
1284            -DOPENSSL_API_COMPAT=30200             For 3.2
1285
1286    To hide declarations that are deprecated up to and including the
1287    given API compatibility level, -DOPENSSL_NO_DEPRECATED must be
1288    given when building the application as well.
1289
1290    *Richard Levitte*
1291
1292  * Added the X509_LOOKUP_METHOD called X509_LOOKUP_store, to allow
1293    access to certificate and CRL stores via URIs and OSSL_STORE
1294    loaders.
1295
1296    This adds the following functions:
1297
1298    - X509_LOOKUP_store()
1299    - X509_STORE_load_file()
1300    - X509_STORE_load_path()
1301    - X509_STORE_load_store()
1302    - SSL_add_store_cert_subjects_to_stack()
1303    - SSL_CTX_set_default_verify_store()
1304    - SSL_CTX_load_verify_file()
1305    - SSL_CTX_load_verify_dir()
1306    - SSL_CTX_load_verify_store()
1307
1308    *Richard Levitte*
1309
1310  * Added a new method to gather entropy on VMS, based on SYS$GET_ENTROPY.
1311    The presence of this system service is determined at run-time.
1312
1313    *Richard Levitte*
1314
1315  * Added functionality to create an EVP_PKEY context based on data
1316    for methods from providers.  This takes an algorithm name and a
1317    property query string and simply stores them, with the intent
1318    that any operation that uses this context will use those strings
1319    to fetch the needed methods implicitly, thereby making the port
1320    of application written for pre-3.0 OpenSSL easier.
1321
1322    *Richard Levitte*
1323
1324  * The undocumented function NCONF_WIN32() has been deprecated; for
1325    conversion details see the HISTORY section of doc/man5/config.pod
1326
1327    *Rich Salz*
1328
1329  * Introduced the new functions EVP_DigestSignInit_ex() and
1330    EVP_DigestVerifyInit_ex(). The macros EVP_DigestSignUpdate() and
1331    EVP_DigestVerifyUpdate() have been converted to functions. See the man
1332    pages for further details.
1333
1334    *Matt Caswell*
1335
1336  * Over two thousand fixes were made to the documentation, including:
1337    adding missing command flags, better style conformance, documentation
1338    of internals, etc.
1339
1340    *Rich Salz, Richard Levitte*
1341
1342  * s390x assembly pack: add hardware-support for P-256, P-384, P-521,
1343    X25519, X448, Ed25519 and Ed448.
1344
1345    *Patrick Steuer*
1346
1347  * Print all values for a PKCS#12 attribute with 'openssl pkcs12', not just
1348    the first value.
1349
1350    *Jon Spillett*
1351
1352  * Deprecated the public definition of `ERR_STATE` as well as the function
1353    `ERR_get_state()`.  This is done in preparation of making `ERR_STATE` an
1354    opaque type.
1355
1356    *Richard Levitte*
1357
1358  * Added ERR functionality to give callers access to the stored function
1359    names that have replaced the older function code based functions.
1360
1361    New functions are ERR_peek_error_func(), ERR_peek_last_error_func(),
1362    ERR_peek_error_data(), ERR_peek_last_error_data(), ERR_get_error_all(),
1363    ERR_peek_error_all() and ERR_peek_last_error_all().
1364
1365    These functions have become deprecated: ERR_get_error_line(),
1366    ERR_get_error_line_data(), ERR_peek_error_line_data(),
1367    ERR_peek_last_error_line_data() and ERR_func_error_string().
1368
1369    Users are recommended to use ERR_get_error_all(), or to pick information
1370    with ERR_peek functions and finish off with getting the error code by using
1371    ERR_get_error().
1372
1373    *Richard Levitte*
1374
1375  * Extended testing to be verbose for failing tests only.  The make variables
1376    VERBOSE_FAILURE or VF can be used to enable this:
1377
1378            $ make VF=1 test                           # Unix
1379            $ mms /macro=(VF=1) test                   ! OpenVMS
1380            $ nmake VF=1 test                          # Windows
1381
1382    *Richard Levitte*
1383
1384  * Added the `-copy_extensions` option to the `x509` command for use with
1385    `-req` and `-x509toreq`. When given with the `copy` or `copyall` argument,
1386    all extensions in the request are copied to the certificate or vice versa.
1387
1388    *David von Oheimb*, *Kirill Stefanenkov <kirill_stefanenkov@rambler.ru>*
1389
1390  * Added the `-copy_extensions` option to the `req` command for use with
1391    `-x509`. When given with the `copy` or `copyall` argument,
1392    all extensions in the certification request are copied to the certificate.
1393
1394    *David von Oheimb*
1395
1396  * The `x509`, `req`, and `ca` commands now make sure that X.509v3 certificates
1397    they generate are by default RFC 5280 compliant in the following sense:
1398    There is a subjectKeyIdentifier extension with a hash value of the public key
1399    and for not self-signed certs there is an authorityKeyIdentifier extension
1400    with a keyIdentifier field or issuer information identifying the signing key.
1401    This is done unless some configuration overrides the new default behavior,
1402    such as `subjectKeyIdentifier = none` and `authorityKeyIdentifier = none`.
1403
1404    *David von Oheimb*
1405
1406  * Added several checks to `X509_verify_cert()` according to requirements in
1407    RFC 5280 in case `X509_V_FLAG_X509_STRICT` is set
1408    (which may be done by using the CLI option `-x509_strict`):
1409    * The basicConstraints of CA certificates must be marked critical.
1410    * CA certificates must explicitly include the keyUsage extension.
1411    * If a pathlenConstraint is given the key usage keyCertSign must be allowed.
1412    * The issuer name of any certificate must not be empty.
1413    * The subject name of CA certs, certs with keyUsage crlSign,
1414      and certs without subjectAlternativeName must not be empty.
1415    * If a subjectAlternativeName extension is given it must not be empty.
1416    * The signatureAlgorithm field and the cert signature must be consistent.
1417    * Any given authorityKeyIdentifier and any given subjectKeyIdentifier
1418      must not be marked critical.
1419    * The authorityKeyIdentifier must be given for X.509v3 certs
1420      unless they are self-signed.
1421    * The subjectKeyIdentifier must be given for all X.509v3 CA certs.
1422
1423    *David von Oheimb*
1424
1425  * Certificate verification using `X509_verify_cert()` meanwhile rejects EC keys
1426    with explicit curve parameters (specifiedCurve) as required by RFC 5480.
1427
1428    *Tomáš Mráz*
1429
1430  * For built-in EC curves, ensure an EC_GROUP built from the curve name is
1431    used even when parsing explicit parameters, when loading a encoded key
1432    or calling `EC_GROUP_new_from_ecpkparameters()`/
1433    `EC_GROUP_new_from_ecparameters()`.
1434    This prevents bypass of security hardening and performance gains,
1435    especially for curves with specialized EC_METHODs.
1436    By default, if a key encoded with explicit parameters is loaded and later
1437    encoded, the output is still encoded with explicit parameters, even if
1438    internally a "named" EC_GROUP is used for computation.
1439
1440    *Nicola Tuveri*
1441
1442  * Compute ECC cofactors if not provided during EC_GROUP construction. Before
1443    this change, EC_GROUP_set_generator would accept order and/or cofactor as
1444    NULL. After this change, only the cofactor parameter can be NULL. It also
1445    does some minimal sanity checks on the passed order.
1446    ([CVE-2019-1547])
1447
1448    *Billy Bob Brumley*
1449
1450  * Fixed a padding oracle in PKCS7_dataDecode and CMS_decrypt_set1_pkey.
1451    An attack is simple, if the first CMS_recipientInfo is valid but the
1452    second CMS_recipientInfo is chosen ciphertext. If the second
1453    recipientInfo decodes to PKCS #1 v1.5 form plaintext, the correct
1454    encryption key will be replaced by garbage, and the message cannot be
1455    decoded, but if the RSA decryption fails, the correct encryption key is
1456    used and the recipient will not notice the attack.
1457    As a work around for this potential attack the length of the decrypted
1458    key must be equal to the cipher default key length, in case the
1459    certifiate is not given and all recipientInfo are tried out.
1460    The old behaviour can be re-enabled in the CMS code by setting the
1461    CMS_DEBUG_DECRYPT flag.
1462
1463    *Bernd Edlinger*
1464
1465  * Early start up entropy quality from the DEVRANDOM seed source has been
1466    improved for older Linux systems.  The RAND subsystem will wait for
1467    /dev/random to be producing output before seeding from /dev/urandom.
1468    The seeded state is stored for future library initialisations using
1469    a system global shared memory segment.  The shared memory identifier
1470    can be configured by defining OPENSSL_RAND_SEED_DEVRANDOM_SHM_ID to
1471    the desired value.  The default identifier is 114.
1472
1473    *Paul Dale*
1474
1475  * Revised BN_generate_prime_ex to not avoid factors 2..17863 in p-1
1476    when primes for RSA keys are computed.
1477    Since we previously always generated primes == 2 (mod 3) for RSA keys,
1478    the 2-prime and 3-prime RSA modules were easy to distinguish, since
1479    `N = p*q = 1 (mod 3)`, but `N = p*q*r = 2 (mod 3)`. Therefore fingerprinting
1480    2-prime vs. 3-prime RSA keys was possible by computing N mod 3.
1481    This avoids possible fingerprinting of newly generated RSA modules.
1482
1483    *Bernd Edlinger*
1484
1485  * Correct the extended master secret constant on EBCDIC systems. Without this
1486    fix TLS connections between an EBCDIC system and a non-EBCDIC system that
1487    negotiate EMS will fail. Unfortunately this also means that TLS connections
1488    between EBCDIC systems with this fix, and EBCDIC systems without this
1489    fix will fail if they negotiate EMS.
1490
1491    *Matt Caswell*
1492
1493  * Changed the library initialisation so that the config file is now loaded
1494    by default. This was already the case for libssl. It now occurs for both
1495    libcrypto and libssl. Use the OPENSSL_INIT_NO_LOAD_CONFIG option to
1496    `OPENSSL_init_crypto()` to suppress automatic loading of a config file.
1497
1498    *Matt Caswell*
1499
1500  * Introduced new error raising macros, `ERR_raise()` and `ERR_raise_data()`,
1501    where the former acts as a replacement for `ERR_put_error()`, and the
1502    latter replaces the combination `ERR_put_error()` + `ERR_add_error_data()`.
1503    `ERR_raise_data()` adds more flexibility by taking a format string and
1504    an arbitrary number of arguments following it, to be processed with
1505    `BIO_snprintf()`.
1506
1507    *Richard Levitte*
1508
1509  * Introduced a new function, `OSSL_PROVIDER_available()`, which can be used
1510    to check if a named provider is loaded and available.  When called, it
1511    will also activate all fallback providers if such are still present.
1512
1513    *Richard Levitte*
1514
1515  * Enforce a minimum DH modulus size of 512 bits.
1516
1517    *Bernd Edlinger*
1518
1519  * Changed DH parameters to generate the order q subgroup instead of 2q.
1520    Previously generated DH parameters are still accepted by DH_check
1521    but DH_generate_key works around that by clearing bit 0 of the
1522    private key for those. This avoids leaking bit 0 of the private key.
1523
1524    *Bernd Edlinger*
1525
1526  * Significantly reduce secure memory usage by the randomness pools.
1527
1528    *Paul Dale*
1529
1530  * `{CRYPTO,OPENSSL}_mem_debug_{push,pop}` are now no-ops and have been
1531    deprecated.
1532
1533    *Rich Salz*
1534
1535  * A new type, EVP_KEYEXCH, has been introduced to represent key exchange
1536    algorithms. An implementation of a key exchange algorithm can be obtained
1537    by using the function EVP_KEYEXCH_fetch(). An EVP_KEYEXCH algorithm can be
1538    used in a call to EVP_PKEY_derive_init_ex() which works in a similar way to
1539    the older EVP_PKEY_derive_init() function. See the man pages for the new
1540    functions for further details.
1541
1542    *Matt Caswell*
1543
1544  * The EVP_PKEY_CTX_set_dh_pad() macro has now been converted to a function.
1545
1546    *Matt Caswell*
1547
1548  * Removed the function names from error messages and deprecated the
1549    xxx_F_xxx define's.
1550
1551  * Removed NextStep support and the macro OPENSSL_UNISTD
1552
1553    *Rich Salz*
1554
1555  * Removed DES_check_key.  Also removed OPENSSL_IMPLEMENT_GLOBAL,
1556    OPENSSL_GLOBAL_REF, OPENSSL_DECLARE_GLOBAL.
1557    Also removed "export var as function" capability; we do not export
1558    variables, only functions.
1559
1560    *Rich Salz*
1561
1562  * RC5_32_set_key has been changed to return an int type, with 0 indicating
1563    an error and 1 indicating success. In previous versions of OpenSSL this
1564    was a void type. If a key was set longer than the maximum possible this
1565    would crash.
1566
1567    *Matt Caswell*
1568
1569  * Support SM2 signing and verification schemes with X509 certificate.
1570
1571    *Paul Yang*
1572
1573  * Use SHA256 as the default digest for TS query in the `ts` app.
1574
1575    *Tomáš Mráz*
1576
1577  * Change PBKDF2 to conform to SP800-132 instead of the older PKCS5 RFC2898.
1578    This checks that the salt length is at least 128 bits, the derived key
1579    length is at least 112 bits, and that the iteration count is at least 1000.
1580    For backwards compatibility these checks are disabled by default in the
1581    default provider, but are enabled by default in the fips provider.
1582    To enable or disable these checks use the control
1583    EVP_KDF_CTRL_SET_PBKDF2_PKCS5_MODE.
1584
1585    *Shane Lontis*
1586
1587  * Default cipher lists/suites are now available via a function, the
1588    #defines are deprecated.
1589
1590    *Todd Short*
1591
1592  * Add target VC-WIN32-UWP, VC-WIN64A-UWP, VC-WIN32-ARM-UWP and
1593    VC-WIN64-ARM-UWP in Windows OneCore target for making building libraries
1594    for Windows Store apps easier. Also, the "no-uplink" option has been added.
1595
1596    *Kenji Mouri*
1597
1598  * Join the directories crypto/x509 and crypto/x509v3
1599
1600    *Richard Levitte*
1601
1602  * Added command 'openssl kdf' that uses the EVP_KDF API.
1603
1604    *Shane Lontis*
1605
1606  * Added command 'openssl mac' that uses the EVP_MAC API.
1607
1608    *Shane Lontis*
1609
1610  * Added OPENSSL_info() to get diverse built-in OpenSSL data, such
1611    as default directories.  Also added the command 'openssl info'
1612    for scripting purposes.
1613
1614    *Richard Levitte*
1615
1616  * The functions AES_ige_encrypt() and AES_bi_ige_encrypt() have been
1617    deprecated. These undocumented functions were never integrated into the EVP
1618    layer and implement the AES Infinite Garble Extension (IGE) mode and AES
1619    Bi-directional IGE mode. These modes were never formally standardised and
1620    usage of these functions is believed to be very small. In particular
1621    AES_bi_ige_encrypt() has a known bug. It accepts 2 AES keys, but only one
1622    is ever used. The security implications are believed to be minimal, but
1623    this issue was never fixed for backwards compatibility reasons. New code
1624    should not use these modes.
1625
1626    *Matt Caswell*
1627
1628  * Add prediction resistance to the DRBG reseeding process.
1629
1630    *Paul Dale*
1631
1632  * Limit the number of blocks in a data unit for AES-XTS to 2^20 as
1633    mandated by IEEE Std 1619-2018.
1634
1635    *Paul Dale*
1636
1637  * Added newline escaping functionality to a filename when using openssl dgst.
1638    This output format is to replicate the output format found in the `*sum`
1639    checksum programs. This aims to preserve backward compatibility.
1640
1641    *Matt Eaton, Richard Levitte, and Paul Dale*
1642
1643  * Removed the heartbeat message in DTLS feature, as it has very
1644    little usage and doesn't seem to fulfill a valuable purpose.
1645    The configuration option is now deprecated.
1646
1647    *Richard Levitte*
1648
1649  * Changed the output of 'openssl {digestname} < file' to display the
1650    digest name in its output.
1651
1652    *Richard Levitte*
1653
1654  * Added a new generic trace API which provides support for enabling
1655    instrumentation through trace output. This feature is mainly intended
1656    as an aid for developers and is disabled by default. To utilize it,
1657    OpenSSL needs to be configured with the `enable-trace` option.
1658
1659    If the tracing API is enabled, the application can activate trace output
1660    by registering BIOs as trace channels for a number of tracing and debugging
1661    categories.
1662
1663    The `openssl` program has been expanded to enable any of the types
1664    available via environment variables defined by the user, and serves as
1665    one possible example on how to use this functionality.
1666
1667    *Richard Levitte & Matthias St. Pierre*
1668
1669  * Added build tests for C++.  These are generated files that only do one
1670    thing, to include one public OpenSSL head file each.  This tests that
1671    the public header files can be usefully included in a C++ application.
1672
1673    This test isn't enabled by default.  It can be enabled with the option
1674    'enable-buildtest-c++'.
1675
1676    *Richard Levitte*
1677
1678  * Add Single Step KDF (EVP_KDF_SS) to EVP_KDF.
1679
1680    *Shane Lontis*
1681
1682  * Add KMAC to EVP_MAC.
1683
1684    *Shane Lontis*
1685
1686  * Added property based algorithm implementation selection framework to
1687    the core.
1688
1689    *Paul Dale*
1690
1691  * Added SCA hardening for modular field inversion in EC_GROUP through
1692    a new dedicated field_inv() pointer in EC_METHOD.
1693    This also addresses a leakage affecting conversions from projective
1694    to affine coordinates.
1695
1696    *Billy Bob Brumley, Nicola Tuveri*
1697
1698  * Added EVP_KDF, an EVP layer KDF API, to simplify adding KDF and PRF
1699    implementations.  This includes an EVP_PKEY to EVP_KDF bridge for
1700    those algorithms that were already supported through the EVP_PKEY API
1701    (scrypt, TLS1 PRF and HKDF).  The low-level KDF functions for PBKDF2
1702    and scrypt are now wrappers that call EVP_KDF.
1703
1704    *David Makepeace*
1705
1706  * Build devcrypto engine as a dynamic engine.
1707
1708    *Eneas U de Queiroz*
1709
1710  * Add keyed BLAKE2 to EVP_MAC.
1711
1712    *Antoine Salon*
1713
1714  * Fix a bug in the computation of the endpoint-pair shared secret used
1715    by DTLS over SCTP. This breaks interoperability with older versions
1716    of OpenSSL like OpenSSL 1.1.0 and OpenSSL 1.0.2. There is a runtime
1717    switch SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG (off by default) enabling
1718    interoperability with such broken implementations. However, enabling
1719    this switch breaks interoperability with correct implementations.
1720
1721  * Fix a use after free bug in d2i_X509_PUBKEY when overwriting a
1722    re-used X509_PUBKEY object if the second PUBKEY is malformed.
1723
1724    *Bernd Edlinger*
1725
1726  * Move strictness check from EVP_PKEY_asn1_new() to EVP_PKEY_asn1_add0().
1727
1728    *Richard Levitte*
1729
1730  * Changed the license to the Apache License v2.0.
1731
1732    *Richard Levitte*
1733
1734  * Switch to a new version scheme using three numbers MAJOR.MINOR.PATCH.
1735
1736    - Major releases (indicated by incrementing the MAJOR release number)
1737      may introduce incompatible API/ABI changes.
1738    - Minor releases (indicated by incrementing the MINOR release number)
1739      may introduce new features but retain API/ABI compatibility.
1740    - Patch releases (indicated by incrementing the PATCH number)
1741      are intended for bug fixes and other improvements of existing
1742      features only (like improving performance or adding documentation)
1743      and retain API/ABI compatibility.
1744
1745    *Richard Levitte*
1746
1747  * Add support for RFC5297 SIV mode (siv128), including AES-SIV.
1748
1749    *Todd Short*
1750
1751  * Remove the 'dist' target and add a tarball building script.  The
1752    'dist' target has fallen out of use, and it shouldn't be
1753    necessary to configure just to create a source distribution.
1754
1755    *Richard Levitte*
1756
1757  * Recreate the OS390-Unix config target.  It no longer relies on a
1758    special script like it did for OpenSSL pre-1.1.0.
1759
1760    *Richard Levitte*
1761
1762  * Instead of having the source directories listed in Configure, add
1763    a 'build.info' keyword SUBDIRS to indicate what sub-directories to
1764    look into.
1765
1766    *Richard Levitte*
1767
1768  * Add GMAC to EVP_MAC.
1769
1770    *Paul Dale*
1771
1772  * Ported the HMAC, CMAC and SipHash EVP_PKEY_METHODs to EVP_MAC.
1773
1774    *Richard Levitte*
1775
1776  * Added EVP_MAC, an EVP layer MAC API, to simplify adding MAC
1777    implementations.  This includes a generic EVP_PKEY to EVP_MAC bridge,
1778    to facilitate the continued use of MACs through raw private keys in
1779    functionality such as `EVP_DigestSign*` and `EVP_DigestVerify*`.
1780
1781    *Richard Levitte*
1782
1783  * Deprecate ECDH_KDF_X9_62() and mark its replacement as internal. Users
1784    should use the EVP interface instead (EVP_PKEY_CTX_set_ecdh_kdf_type).
1785
1786    *Antoine Salon*
1787
1788  * Added EVP_PKEY_ECDH_KDF_X9_63 and ecdh_KDF_X9_63() as replacements for
1789    the EVP_PKEY_ECDH_KDF_X9_62 KDF type and ECDH_KDF_X9_62(). The old names
1790    are retained for backwards compatibility.
1791
1792    *Antoine Salon*
1793
1794  * AES-XTS mode now enforces that its two keys are different to mitigate
1795    the attacked described in "Efficient Instantiations of Tweakable
1796    Blockciphers and Refinements to Modes OCB and PMAC" by Phillip Rogaway.
1797    Details of this attack can be obtained from:
1798    <http://web.cs.ucdavis.edu/%7Erogaway/papers/offsets.pdf>
1799
1800    *Paul Dale*
1801
1802  * Rename the object files, i.e. give them other names than in previous
1803    versions.  Their names now include the name of the final product, as
1804    well as its type mnemonic (bin, lib, shlib).
1805
1806    *Richard Levitte*
1807
1808  * Added new option for 'openssl list', '-objects', which will display the
1809    list of built in objects, i.e. OIDs with names.
1810
1811    *Richard Levitte*
1812
1813  * Added the options `-crl_lastupdate` and `-crl_nextupdate` to `openssl ca`,
1814    allowing the `lastUpdate` and `nextUpdate` fields in the generated CRL to
1815    be set explicitly.
1816
1817    *Chris Novakovic*
1818
1819  * Added support for Linux Kernel TLS data-path. The Linux Kernel data-path
1820    improves application performance by removing data copies and providing
1821    applications with zero-copy system calls such as sendfile and splice.
1822
1823    *Boris Pismenny*
1824
1825  * The SSL option SSL_OP_CLEANSE_PLAINTEXT is introduced. If that
1826    option is set, openssl cleanses (zeroize) plaintext bytes from
1827    internal buffers after delivering them to the application. Note,
1828    the application is still responsible for cleansing other copies
1829    (e.g.: data received by SSL_read(3)).
1830
1831    *Martin Elshuber*
1832
1833  * `PKCS12_parse` now maintains the order of the parsed certificates
1834    when outputting them via `*ca` (rather than reversing it).
1835
1836    *David von Oheimb*
1837
1838  * Deprecated pthread fork support methods. These were unused so no
1839    replacement is required.
1840
1841    - OPENSSL_fork_prepare()
1842    - OPENSSL_fork_parent()
1843    - OPENSSL_fork_child()
1844
1845    *Randall S. Becker*
1846
1847  * Added support for FFDHE key exchange in TLS 1.3.
1848
1849    *Raja Ashok*
1850
1851 OpenSSL 1.1.1
1852 -------------
1853
1854 ### Changes between 1.1.1j and 1.1.1k [xx XXX xxxx]
1855
1856  * Fixed a problem with verifying a certificate chain when using the
1857    X509_V_FLAG_X509_STRICT flag. This flag enables additional security checks of
1858    the certificates present in a certificate chain. It is not set by default.
1859
1860    Starting from OpenSSL version 1.1.1h a check to disallow certificates in
1861    the chain that have explicitly encoded elliptic curve parameters was added
1862    as an additional strict check.
1863
1864    An error in the implementation of this check meant that the result of a
1865    previous check to confirm that certificates in the chain are valid CA
1866    certificates was overwritten. This effectively bypasses the check
1867    that non-CA certificates must not be able to issue other certificates.
1868
1869    If a "purpose" has been configured then there is a subsequent opportunity
1870    for checks that the certificate is a valid CA.  All of the named "purpose"
1871    values implemented in libcrypto perform this check.  Therefore, where
1872    a purpose is set the certificate chain will still be rejected even when the
1873    strict flag has been used. A purpose is set by default in libssl client and
1874    server certificate verification routines, but it can be overridden or
1875    removed by an application.
1876
1877    In order to be affected, an application must explicitly set the
1878    X509_V_FLAG_X509_STRICT verification flag and either not set a purpose
1879    for the certificate verification or, in the case of TLS client or server
1880    applications, override the default purpose.
1881    ([CVE-2021-3450])
1882
1883    *Tomáš Mráz*
1884
1885  * Fixed an issue where an OpenSSL TLS server may crash if sent a maliciously
1886    crafted renegotiation ClientHello message from a client. If a TLSv1.2
1887    renegotiation ClientHello omits the signature_algorithms extension (where it
1888    was present in the initial ClientHello), but includes a
1889    signature_algorithms_cert extension then a NULL pointer dereference will
1890    result, leading to a crash and a denial of service attack.
1891
1892    A server is only vulnerable if it has TLSv1.2 and renegotiation enabled
1893    (which is the default configuration). OpenSSL TLS clients are not impacted by
1894    this issue.
1895    ([CVE-2021-3449])
1896
1897    *Peter Kästle and Samuel Sapalski*
1898
1899 ### Changes between 1.1.1i and 1.1.1j [16 Feb 2021]
1900
1901  * Fixed the X509_issuer_and_serial_hash() function. It attempts to
1902    create a unique hash value based on the issuer and serial number data
1903    contained within an X509 certificate. However it was failing to correctly
1904    handle any errors that may occur while parsing the issuer field (which might
1905    occur if the issuer field is maliciously constructed). This may subsequently
1906    result in a NULL pointer deref and a crash leading to a potential denial of
1907    service attack.
1908    ([CVE-2021-23841])
1909
1910    *Matt Caswell*
1911
1912  * Fixed the RSA_padding_check_SSLv23() function and the RSA_SSLV23_PADDING
1913    padding mode to correctly check for rollback attacks. This is considered a
1914    bug in OpenSSL 1.1.1 because it does not support SSLv2. In 1.0.2 this is
1915    CVE-2021-23839.
1916
1917    *Matt Caswell*
1918
1919    Fixed the EVP_CipherUpdate, EVP_EncryptUpdate and EVP_DecryptUpdate
1920    functions. Previously they could overflow the output length argument in some
1921    cases where the input length is close to the maximum permissable length for
1922    an integer on the platform. In such cases the return value from the function
1923    call would be 1 (indicating success), but the output length value would be
1924    negative. This could cause applications to behave incorrectly or crash.
1925    ([CVE-2021-23840])
1926
1927    *Matt Caswell*
1928
1929  * Fixed SRP_Calc_client_key so that it runs in constant time. The previous
1930    implementation called BN_mod_exp without setting BN_FLG_CONSTTIME. This
1931    could be exploited in a side channel attack to recover the password. Since
1932    the attack is local host only this is outside of the current OpenSSL
1933    threat model and therefore no CVE is assigned.
1934
1935    Thanks to Mohammed Sabt and Daniel De Almeida Braga for reporting this
1936    issue.
1937
1938    *Matt Caswell*
1939
1940 ### Changes between 1.1.1h and 1.1.1i [8 Dec 2020]
1941
1942  * Fixed NULL pointer deref in the GENERAL_NAME_cmp function
1943    This function could crash if both GENERAL_NAMEs contain an EDIPARTYNAME.
1944     If an attacker can control both items being compared  then this could lead
1945     to a possible denial of service attack. OpenSSL itself uses the
1946     GENERAL_NAME_cmp function for two purposes:
1947     1) Comparing CRL distribution point names between an available CRL and a
1948        CRL distribution point embedded in an X509 certificate
1949     2) When verifying that a timestamp response token signer matches the
1950        timestamp authority name (exposed via the API functions
1951        TS_RESP_verify_response and TS_RESP_verify_token)
1952    ([CVE-2020-1971])
1953
1954    *Matt Caswell*
1955
1956 ### Changes between 1.1.1g and 1.1.1h [22 Sep 2020]
1957
1958  * Certificates with explicit curve parameters are now disallowed in
1959    verification chains if the X509_V_FLAG_X509_STRICT flag is used.
1960
1961    *Tomáš Mráz*
1962
1963  * The 'MinProtocol' and 'MaxProtocol' configuration commands now silently
1964    ignore TLS protocol version bounds when configuring DTLS-based contexts, and
1965    conversely, silently ignore DTLS protocol version bounds when configuring
1966    TLS-based contexts.  The commands can be repeated to set bounds of both
1967    types.  The same applies with the corresponding "min_protocol" and
1968    "max_protocol" command-line switches, in case some application uses both TLS
1969    and DTLS.
1970
1971    SSL_CTX instances that are created for a fixed protocol version (e.g.
1972    TLSv1_server_method()) also silently ignore version bounds.  Previously
1973    attempts to apply bounds to these protocol versions would result in an
1974    error.  Now only the "version-flexible" SSL_CTX instances are subject to
1975    limits in configuration files in command-line options.
1976
1977    *Viktor Dukhovni*
1978
1979  * Handshake now fails if Extended Master Secret extension is dropped
1980    on renegotiation.
1981
1982    *Tomáš Mráz*
1983
1984  * The Oracle Developer Studio compiler will start reporting deprecated APIs
1985
1986 ### Changes between 1.1.1f and 1.1.1g [21 Apr 2020]
1987
1988  * Fixed segmentation fault in SSL_check_chain()
1989    Server or client applications that call the SSL_check_chain() function
1990    during or after a TLS 1.3 handshake may crash due to a NULL pointer
1991    dereference as a result of incorrect handling of the
1992    "signature_algorithms_cert" TLS extension. The crash occurs if an invalid
1993    or unrecognised signature algorithm is received from the peer. This could
1994    be exploited by a malicious peer in a Denial of Service attack.
1995    ([CVE-2020-1967])
1996
1997    *Benjamin Kaduk*
1998
1999  * Added AES consttime code for no-asm configurations
2000    an optional constant time support for AES was added
2001    when building openssl for no-asm.
2002    Enable with: ./config no-asm -DOPENSSL_AES_CONST_TIME
2003    Disable with: ./config no-asm -DOPENSSL_NO_AES_CONST_TIME
2004    At this time this feature is by default disabled.
2005    It will be enabled by default in 3.0.
2006
2007    *Bernd Edlinger*
2008
2009 ### Changes between 1.1.1e and 1.1.1f [31 Mar 2020]
2010
2011  * Revert the change of EOF detection while reading in libssl to avoid
2012    regressions in applications depending on the current way of reporting
2013    the EOF. As the existing method is not fully accurate the change to
2014    reporting the EOF via SSL_ERROR_SSL is kept on the current development
2015    branch and will be present in the 3.0 release.
2016
2017    *Tomáš Mráz*
2018
2019  * Revised BN_generate_prime_ex to not avoid factors 3..17863 in p-1
2020    when primes for RSA keys are computed.
2021    Since we previously always generated primes == 2 (mod 3) for RSA keys,
2022    the 2-prime and 3-prime RSA modules were easy to distinguish, since
2023    N = p*q = 1 (mod 3), but N = p*q*r = 2 (mod 3). Therefore fingerprinting
2024    2-prime vs. 3-prime RSA keys was possible by computing N mod 3.
2025    This avoids possible fingerprinting of newly generated RSA modules.
2026
2027    *Bernd Edlinger*
2028
2029 ### Changes between 1.1.1d and 1.1.1e [17 Mar 2020]
2030
2031  * Properly detect EOF while reading in libssl. Previously if we hit an EOF
2032    while reading in libssl then we would report an error back to the
2033    application (SSL_ERROR_SYSCALL) but errno would be 0. We now add
2034    an error to the stack (which means we instead return SSL_ERROR_SSL) and
2035    therefore give a hint as to what went wrong.
2036
2037    *Matt Caswell*
2038
2039  * Check that ed25519 and ed448 are allowed by the security level. Previously
2040    signature algorithms not using an MD were not being checked that they were
2041    allowed by the security level.
2042
2043    *Kurt Roeckx*
2044
2045  * Fixed SSL_get_servername() behaviour. The behaviour of SSL_get_servername()
2046    was not quite right. The behaviour was not consistent between resumption
2047    and normal handshakes, and also not quite consistent with historical
2048    behaviour. The behaviour in various scenarios has been clarified and
2049    it has been updated to make it match historical behaviour as closely as
2050    possible.
2051
2052    *Matt Caswell*
2053
2054  * *[VMS only]* The header files that the VMS compilers include automatically,
2055    `__DECC_INCLUDE_PROLOGUE.H` and `__DECC_INCLUDE_EPILOGUE.H`, use pragmas
2056    that the C++ compiler doesn't understand.  This is a shortcoming in the
2057    compiler, but can be worked around with `__cplusplus` guards.
2058
2059    C++ applications that use OpenSSL libraries must be compiled using the
2060    qualifier `/NAMES=(AS_IS,SHORTENED)` to be able to use all the OpenSSL
2061    functions.  Otherwise, only functions with symbols of less than 31
2062    characters can be used, as the linker will not be able to successfully
2063    resolve symbols with longer names.
2064
2065    *Richard Levitte*
2066
2067  * Added a new method to gather entropy on VMS, based on SYS$GET_ENTROPY.
2068    The presence of this system service is determined at run-time.
2069
2070    *Richard Levitte*
2071
2072  * Added newline escaping functionality to a filename when using openssl dgst.
2073    This output format is to replicate the output format found in the `*sum`
2074    checksum programs. This aims to preserve backward compatibility.
2075
2076    *Matt Eaton, Richard Levitte, and Paul Dale*
2077
2078  * Print all values for a PKCS#12 attribute with 'openssl pkcs12', not just
2079    the first value.
2080
2081    *Jon Spillett*
2082
2083 ### Changes between 1.1.1c and 1.1.1d [10 Sep 2019]
2084
2085  * Fixed a fork protection issue. OpenSSL 1.1.1 introduced a rewritten random
2086    number generator (RNG). This was intended to include protection in the
2087    event of a fork() system call in order to ensure that the parent and child
2088    processes did not share the same RNG state. However this protection was not
2089    being used in the default case.
2090
2091    A partial mitigation for this issue is that the output from a high
2092    precision timer is mixed into the RNG state so the likelihood of a parent
2093    and child process sharing state is significantly reduced.
2094
2095    If an application already calls OPENSSL_init_crypto() explicitly using
2096    OPENSSL_INIT_ATFORK then this problem does not occur at all.
2097    ([CVE-2019-1549])
2098
2099    *Matthias St. Pierre*
2100
2101  * For built-in EC curves, ensure an EC_GROUP built from the curve name is
2102    used even when parsing explicit parameters, when loading a encoded key
2103    or calling `EC_GROUP_new_from_ecpkparameters()`/
2104    `EC_GROUP_new_from_ecparameters()`.
2105    This prevents bypass of security hardening and performance gains,
2106    especially for curves with specialized EC_METHODs.
2107    By default, if a key encoded with explicit parameters is loaded and later
2108    encoded, the output is still encoded with explicit parameters, even if
2109    internally a "named" EC_GROUP is used for computation.
2110
2111    *Nicola Tuveri*
2112
2113  * Compute ECC cofactors if not provided during EC_GROUP construction. Before
2114    this change, EC_GROUP_set_generator would accept order and/or cofactor as
2115    NULL. After this change, only the cofactor parameter can be NULL. It also
2116    does some minimal sanity checks on the passed order.
2117    ([CVE-2019-1547])
2118
2119    *Billy Bob Brumley*
2120
2121  * Fixed a padding oracle in PKCS7_dataDecode and CMS_decrypt_set1_pkey.
2122    An attack is simple, if the first CMS_recipientInfo is valid but the
2123    second CMS_recipientInfo is chosen ciphertext. If the second
2124    recipientInfo decodes to PKCS #1 v1.5 form plaintext, the correct
2125    encryption key will be replaced by garbage, and the message cannot be
2126    decoded, but if the RSA decryption fails, the correct encryption key is
2127    used and the recipient will not notice the attack.
2128    As a work around for this potential attack the length of the decrypted
2129    key must be equal to the cipher default key length, in case the
2130    certifiate is not given and all recipientInfo are tried out.
2131    The old behaviour can be re-enabled in the CMS code by setting the
2132    CMS_DEBUG_DECRYPT flag.
2133    ([CVE-2019-1563])
2134
2135    *Bernd Edlinger*
2136
2137  * Early start up entropy quality from the DEVRANDOM seed source has been
2138    improved for older Linux systems.  The RAND subsystem will wait for
2139    /dev/random to be producing output before seeding from /dev/urandom.
2140    The seeded state is stored for future library initialisations using
2141    a system global shared memory segment.  The shared memory identifier
2142    can be configured by defining OPENSSL_RAND_SEED_DEVRANDOM_SHM_ID to
2143    the desired value.  The default identifier is 114.
2144
2145    *Paul Dale*
2146
2147  * Correct the extended master secret constant on EBCDIC systems. Without this
2148    fix TLS connections between an EBCDIC system and a non-EBCDIC system that
2149    negotiate EMS will fail. Unfortunately this also means that TLS connections
2150    between EBCDIC systems with this fix, and EBCDIC systems without this
2151    fix will fail if they negotiate EMS.
2152
2153    *Matt Caswell*
2154
2155  * Use Windows installation paths in the mingw builds
2156
2157    Mingw isn't a POSIX environment per se, which means that Windows
2158    paths should be used for installation.
2159    ([CVE-2019-1552])
2160
2161    *Richard Levitte*
2162
2163  * Changed DH_check to accept parameters with order q and 2q subgroups.
2164    With order 2q subgroups the bit 0 of the private key is not secret
2165    but DH_generate_key works around that by clearing bit 0 of the
2166    private key for those. This avoids leaking bit 0 of the private key.
2167
2168    *Bernd Edlinger*
2169
2170  * Significantly reduce secure memory usage by the randomness pools.
2171
2172    *Paul Dale*
2173
2174  * Revert the DEVRANDOM_WAIT feature for Linux systems
2175
2176    The DEVRANDOM_WAIT feature added a select() call to wait for the
2177    /dev/random device to become readable before reading from the
2178    /dev/urandom device.
2179
2180    It turned out that this change had negative side effects on
2181    performance which were not acceptable. After some discussion it
2182    was decided to revert this feature and leave it up to the OS
2183    resp. the platform maintainer to ensure a proper initialization
2184    during early boot time.
2185
2186    *Matthias St. Pierre*
2187
2188 ### Changes between 1.1.1b and 1.1.1c [28 May 2019]
2189
2190  * Add build tests for C++.  These are generated files that only do one
2191    thing, to include one public OpenSSL head file each.  This tests that
2192    the public header files can be usefully included in a C++ application.
2193
2194    This test isn't enabled by default.  It can be enabled with the option
2195    'enable-buildtest-c++'.
2196
2197    *Richard Levitte*
2198
2199  * Enable SHA3 pre-hashing for ECDSA and DSA.
2200
2201    *Patrick Steuer*
2202
2203  * Change the default RSA, DSA and DH size to 2048 bit instead of 1024.
2204    This changes the size when using the `genpkey` command when no size is given.
2205    It fixes an omission in earlier changes that changed all RSA, DSA and DH
2206    generation commands to use 2048 bits by default.
2207
2208    *Kurt Roeckx*
2209
2210  * Reorganize the manual pages to consistently have RETURN VALUES,
2211    EXAMPLES, SEE ALSO and HISTORY come in that order, and adjust
2212    util/fix-doc-nits accordingly.
2213
2214    *Paul Yang, Joshua Lock*
2215
2216  * Add the missing accessor EVP_PKEY_get0_engine()
2217
2218    *Matt Caswell*
2219
2220  * Have commands like `s_client` and `s_server` output the signature scheme
2221    along with other cipher suite parameters when debugging.
2222
2223    *Lorinczy Zsigmond*
2224
2225  * Make OPENSSL_config() error agnostic again.
2226
2227    *Richard Levitte*
2228
2229  * Do the error handling in RSA decryption constant time.
2230
2231    *Bernd Edlinger*
2232
2233  * Prevent over long nonces in ChaCha20-Poly1305.
2234
2235    ChaCha20-Poly1305 is an AEAD cipher, and requires a unique nonce input
2236    for every encryption operation. RFC 7539 specifies that the nonce value
2237    (IV) should be 96 bits (12 bytes). OpenSSL allows a variable nonce length
2238    and front pads the nonce with 0 bytes if it is less than 12
2239    bytes. However it also incorrectly allows a nonce to be set of up to 16
2240    bytes. In this case only the last 12 bytes are significant and any
2241    additional leading bytes are ignored.
2242
2243    It is a requirement of using this cipher that nonce values are
2244    unique. Messages encrypted using a reused nonce value are susceptible to
2245    serious confidentiality and integrity attacks. If an application changes
2246    the default nonce length to be longer than 12 bytes and then makes a
2247    change to the leading bytes of the nonce expecting the new value to be a
2248    new unique nonce then such an application could inadvertently encrypt
2249    messages with a reused nonce.
2250
2251    Additionally the ignored bytes in a long nonce are not covered by the
2252    integrity guarantee of this cipher. Any application that relies on the
2253    integrity of these ignored leading bytes of a long nonce may be further
2254    affected. Any OpenSSL internal use of this cipher, including in SSL/TLS,
2255    is safe because no such use sets such a long nonce value. However user
2256    applications that use this cipher directly and set a non-default nonce
2257    length to be longer than 12 bytes may be vulnerable.
2258
2259    This issue was reported to OpenSSL on 16th of March 2019 by Joran Dirk
2260    Greef of Ronomon.
2261    ([CVE-2019-1543])
2262
2263    *Matt Caswell*
2264
2265  * Add DEVRANDOM_WAIT feature for Linux systems
2266
2267    On older Linux systems where the getrandom() system call is not available,
2268    OpenSSL normally uses the /dev/urandom device for seeding its CSPRNG.
2269    Contrary to getrandom(), the /dev/urandom device will not block during
2270    early boot when the kernel CSPRNG has not been seeded yet.
2271
2272    To mitigate this known weakness, use select() to wait for /dev/random to
2273    become readable before reading from /dev/urandom.
2274
2275  * Ensure that SM2 only uses SM3 as digest algorithm
2276
2277    *Paul Yang*
2278
2279 ### Changes between 1.1.1a and 1.1.1b [26 Feb 2019]
2280
2281  * Change the info callback signals for the start and end of a post-handshake
2282    message exchange in TLSv1.3. In 1.1.1/1.1.1a we used SSL_CB_HANDSHAKE_START
2283    and SSL_CB_HANDSHAKE_DONE. Experience has shown that many applications get
2284    confused by this and assume that a TLSv1.2 renegotiation has started. This
2285    can break KeyUpdate handling. Instead we no longer signal the start and end
2286    of a post handshake message exchange (although the messages themselves are
2287    still signalled). This could break some applications that were expecting
2288    the old signals. However without this KeyUpdate is not usable for many
2289    applications.
2290
2291    *Matt Caswell*
2292
2293 ### Changes between 1.1.1 and 1.1.1a [20 Nov 2018]
2294
2295  * Timing vulnerability in DSA signature generation
2296
2297    The OpenSSL DSA signature algorithm has been shown to be vulnerable to a
2298    timing side channel attack. An attacker could use variations in the signing
2299    algorithm to recover the private key.
2300
2301    This issue was reported to OpenSSL on 16th October 2018 by Samuel Weiser.
2302    ([CVE-2018-0734])
2303
2304    *Paul Dale*
2305
2306  * Timing vulnerability in ECDSA signature generation
2307
2308    The OpenSSL ECDSA signature algorithm has been shown to be vulnerable to a
2309    timing side channel attack. An attacker could use variations in the signing
2310    algorithm to recover the private key.
2311
2312    This issue was reported to OpenSSL on 25th October 2018 by Samuel Weiser.
2313    ([CVE-2018-0735])
2314
2315    *Paul Dale*
2316
2317  * Fixed the issue that RAND_add()/RAND_seed() silently discards random input
2318    if its length exceeds 4096 bytes. The limit has been raised to a buffer size
2319    of two gigabytes and the error handling improved.
2320
2321    This issue was reported to OpenSSL by Dr. Falko Strenzke. It has been
2322    categorized as a normal bug, not a security issue, because the DRBG reseeds
2323    automatically and is fully functional even without additional randomness
2324    provided by the application.
2325
2326 ### Changes between 1.1.0i and 1.1.1 [11 Sep 2018]
2327
2328  * Add a new ClientHello callback. Provides a callback interface that gives
2329    the application the ability to adjust the nascent SSL object at the
2330    earliest stage of ClientHello processing, immediately after extensions have
2331    been collected but before they have been processed. In particular, this
2332    callback can adjust the supported TLS versions in response to the contents
2333    of the ClientHello
2334
2335    *Benjamin Kaduk*
2336
2337  * Add SM2 base algorithm support.
2338
2339    *Jack Lloyd*
2340
2341  * s390x assembly pack: add (improved) hardware-support for the following
2342    cryptographic primitives: sha3, shake, aes-gcm, aes-ccm, aes-ctr, aes-ofb,
2343    aes-cfb/cfb8, aes-ecb.
2344
2345    *Patrick Steuer*
2346
2347  * Make EVP_PKEY_asn1_new() a bit stricter about its input.  A NULL pem_str
2348    parameter is no longer accepted, as it leads to a corrupt table.  NULL
2349    pem_str is reserved for alias entries only.
2350
2351    *Richard Levitte*
2352
2353  * Use the new ec_scalar_mul_ladder scaffold to implement a specialized ladder
2354    step for prime curves. The new implementation is based on formulae from
2355    differential addition-and-doubling in homogeneous projective coordinates
2356    from Izu-Takagi "A fast parallel elliptic curve multiplication resistant
2357    against side channel attacks" and Brier-Joye "Weierstrass Elliptic Curves
2358    and Side-Channel Attacks" Eq. (8) for y-coordinate recovery, modified
2359    to work in projective coordinates.
2360
2361    *Billy Bob Brumley, Nicola Tuveri*
2362
2363  * Change generating and checking of primes so that the error rate of not
2364    being prime depends on the intended use based on the size of the input.
2365    For larger primes this will result in more rounds of Miller-Rabin.
2366    The maximal error rate for primes with more than 1080 bits is lowered
2367    to 2^-128.
2368
2369    *Kurt Roeckx, Annie Yousar*
2370
2371  * Increase the number of Miller-Rabin rounds for DSA key generating to 64.
2372
2373    *Kurt Roeckx*
2374
2375  * The 'tsget' script is renamed to 'tsget.pl', to avoid confusion when
2376    moving between systems, and to avoid confusion when a Windows build is
2377    done with mingw vs with MSVC.  For POSIX installs, there's still a
2378    symlink or copy named 'tsget' to avoid that confusion as well.
2379
2380    *Richard Levitte*
2381
2382  * Revert blinding in ECDSA sign and instead make problematic addition
2383    length-invariant. Switch even to fixed-length Montgomery multiplication.
2384
2385    *Andy Polyakov*
2386
2387  * Use the new ec_scalar_mul_ladder scaffold to implement a specialized ladder
2388    step for binary curves. The new implementation is based on formulae from
2389    differential addition-and-doubling in mixed Lopez-Dahab projective
2390    coordinates, modified to independently blind the operands.
2391
2392    *Billy Bob Brumley, Sohaib ul Hassan, Nicola Tuveri*
2393
2394  * Add a scaffold to optionally enhance the Montgomery ladder implementation
2395    for `ec_scalar_mul_ladder` (formerly `ec_mul_consttime`) allowing
2396    EC_METHODs to implement their own specialized "ladder step", to take
2397    advantage of more favorable coordinate systems or more efficient
2398    differential addition-and-doubling algorithms.
2399
2400    *Billy Bob Brumley, Sohaib ul Hassan, Nicola Tuveri*
2401
2402  * Modified the random device based seed sources to keep the relevant
2403    file descriptors open rather than reopening them on each access.
2404    This allows such sources to operate in a chroot() jail without
2405    the associated device nodes being available. This behaviour can be
2406    controlled using RAND_keep_random_devices_open().
2407
2408    *Paul Dale*
2409
2410  * Numerous side-channel attack mitigations have been applied. This may have
2411    performance impacts for some algorithms for the benefit of improved
2412    security. Specific changes are noted in this change log by their respective
2413    authors.
2414
2415    *Matt Caswell*
2416
2417  * AIX shared library support overhaul. Switch to AIX "natural" way of
2418    handling shared libraries, which means collecting shared objects of
2419    different versions and bitnesses in one common archive. This allows to
2420    mitigate conflict between 1.0 and 1.1 side-by-side installations. It
2421    doesn't affect the way 3rd party applications are linked, only how
2422    multi-version installation is managed.
2423
2424    *Andy Polyakov*
2425
2426  * Make ec_group_do_inverse_ord() more robust and available to other
2427    EC cryptosystems, so that irrespective of BN_FLG_CONSTTIME, SCA
2428    mitigations are applied to the fallback BN_mod_inverse().
2429    When using this function rather than BN_mod_inverse() directly, new
2430    EC cryptosystem implementations are then safer-by-default.
2431
2432    *Billy Bob Brumley*
2433
2434  * Add coordinate blinding for EC_POINT and implement projective
2435    coordinate blinding for generic prime curves as a countermeasure to
2436    chosen point SCA attacks.
2437
2438    *Sohaib ul Hassan, Nicola Tuveri, Billy Bob Brumley*
2439
2440  * Add blinding to ECDSA and DSA signatures to protect against side channel
2441    attacks discovered by Keegan Ryan (NCC Group).
2442
2443    *Matt Caswell*
2444
2445  * Enforce checking in the `pkeyutl` command to ensure that the input
2446    length does not exceed the maximum supported digest length when performing
2447    a sign, verify or verifyrecover operation.
2448
2449    *Matt Caswell*
2450
2451  * SSL_MODE_AUTO_RETRY is enabled by default. Applications that use blocking
2452    I/O in combination with something like select() or poll() will hang. This
2453    can be turned off again using SSL_CTX_clear_mode().
2454    Many applications do not properly handle non-application data records, and
2455    TLS 1.3 sends more of such records. Setting SSL_MODE_AUTO_RETRY works
2456    around the problems in those applications, but can also break some.
2457    It's recommended to read the manpages about SSL_read(), SSL_write(),
2458    SSL_get_error(), SSL_shutdown(), SSL_CTX_set_mode() and
2459    SSL_CTX_set_read_ahead() again.
2460
2461    *Kurt Roeckx*
2462
2463  * When unlocking a pass phrase protected PEM file or PKCS#8 container, we
2464    now allow empty (zero character) pass phrases.
2465
2466    *Richard Levitte*
2467
2468  * Apply blinding to binary field modular inversion and remove patent
2469    pending (OPENSSL_SUN_GF2M_DIV) BN_GF2m_mod_div implementation.
2470
2471    *Billy Bob Brumley*
2472
2473  * Deprecate ec2_mult.c and unify scalar multiplication code paths for
2474    binary and prime elliptic curves.
2475
2476    *Billy Bob Brumley*
2477
2478  * Remove ECDSA nonce padding: EC_POINT_mul is now responsible for
2479    constant time fixed point multiplication.
2480
2481    *Billy Bob Brumley*
2482
2483  * Revise elliptic curve scalar multiplication with timing attack
2484    defenses: ec_wNAF_mul redirects to a constant time implementation
2485    when computing fixed point and variable point multiplication (which
2486    in OpenSSL are mostly used with secret scalars in keygen, sign,
2487    ECDH derive operations).
2488    *Billy Bob Brumley, Nicola Tuveri, Cesar Pereida García,
2489     Sohaib ul Hassan*
2490
2491  * Updated CONTRIBUTING
2492
2493    *Rich Salz*
2494
2495  * Updated DRBG / RAND to request nonce and additional low entropy
2496    randomness from the system.
2497
2498    *Matthias St. Pierre*
2499
2500  * Updated 'openssl rehash' to use OpenSSL consistent default.
2501
2502    *Richard Levitte*
2503
2504  * Moved the load of the ssl_conf module to libcrypto, which helps
2505    loading engines that libssl uses before libssl is initialised.
2506
2507    *Matt Caswell*
2508
2509  * Added EVP_PKEY_sign() and EVP_PKEY_verify() for EdDSA
2510
2511    *Matt Caswell*
2512
2513  * Fixed X509_NAME_ENTRY_set to get multi-valued RDNs right in all cases.
2514
2515    *Ingo Schwarze, Rich Salz*
2516
2517  * Added output of accepting IP address and port for 'openssl s_server'
2518
2519    *Richard Levitte*
2520
2521  * Added a new API for TLSv1.3 ciphersuites:
2522       SSL_CTX_set_ciphersuites()
2523       SSL_set_ciphersuites()
2524
2525    *Matt Caswell*
2526
2527  * Memory allocation failures consistently add an error to the error
2528    stack.
2529
2530    *Rich Salz*
2531
2532  * Don't use OPENSSL_ENGINES and OPENSSL_CONF environment values
2533    in libcrypto when run as setuid/setgid.
2534
2535    *Bernd Edlinger*
2536
2537  * Load any config file by default when libssl is used.
2538
2539    *Matt Caswell*
2540
2541  * Added new public header file <openssl/rand_drbg.h> and documentation
2542    for the RAND_DRBG API. See manual page RAND_DRBG(7) for an overview.
2543
2544    *Matthias St. Pierre*
2545
2546  * QNX support removed (cannot find contributors to get their approval
2547    for the license change).
2548
2549    *Rich Salz*
2550
2551  * TLSv1.3 replay protection for early data has been implemented. See the
2552    SSL_read_early_data() man page for further details.
2553
2554    *Matt Caswell*
2555
2556  * Separated TLSv1.3 ciphersuite configuration out from TLSv1.2 ciphersuite
2557    configuration. TLSv1.3 ciphersuites are not compatible with TLSv1.2 and
2558    below. Similarly TLSv1.2 ciphersuites are not compatible with TLSv1.3.
2559    In order to avoid issues where legacy TLSv1.2 ciphersuite configuration
2560    would otherwise inadvertently disable all TLSv1.3 ciphersuites the
2561    configuration has been separated out. See the ciphers man page or the
2562    SSL_CTX_set_ciphersuites() man page for more information.
2563
2564    *Matt Caswell*
2565
2566  * On POSIX (BSD, Linux, ...) systems the ocsp(1) command running
2567    in responder mode now supports the new "-multi" option, which
2568    spawns the specified number of child processes to handle OCSP
2569    requests.  The "-timeout" option now also limits the OCSP
2570    responder's patience to wait to receive the full client request
2571    on a newly accepted connection. Child processes are respawned
2572    as needed, and the CA index file is automatically reloaded
2573    when changed.  This makes it possible to run the "ocsp" responder
2574    as a long-running service, making the OpenSSL CA somewhat more
2575    feature-complete.  In this mode, most diagnostic messages logged
2576    after entering the event loop are logged via syslog(3) rather than
2577    written to stderr.
2578
2579    *Viktor Dukhovni*
2580
2581  * Added support for X448 and Ed448. Heavily based on original work by
2582    Mike Hamburg.
2583
2584    *Matt Caswell*
2585
2586  * Extend OSSL_STORE with capabilities to search and to narrow the set of
2587    objects loaded.  This adds the functions OSSL_STORE_expect() and
2588    OSSL_STORE_find() as well as needed tools to construct searches and
2589    get the search data out of them.
2590
2591    *Richard Levitte*
2592
2593  * Support for TLSv1.3 added. Note that users upgrading from an earlier
2594    version of OpenSSL should review their configuration settings to ensure
2595    that they are still appropriate for TLSv1.3. For further information see:
2596    <https://wiki.openssl.org/index.php/TLS1.3>
2597
2598    *Matt Caswell*
2599
2600  * Grand redesign of the OpenSSL random generator
2601
2602    The default RAND method now utilizes an AES-CTR DRBG according to
2603    NIST standard SP 800-90Ar1. The new random generator is essentially
2604    a port of the default random generator from the OpenSSL FIPS 2.0
2605    object module. It is a hybrid deterministic random bit generator
2606    using an AES-CTR bit stream and which seeds and reseeds itself
2607    automatically using trusted system entropy sources.
2608
2609    Some of its new features are:
2610     - Support for multiple DRBG instances with seed chaining.
2611     - The default RAND method makes use of a DRBG.
2612     - There is a public and private DRBG instance.
2613     - The DRBG instances are fork-safe.
2614     - Keep all global DRBG instances on the secure heap if it is enabled.
2615     - The public and private DRBG instance are per thread for lock free
2616       operation
2617
2618    *Paul Dale, Benjamin Kaduk, Kurt Roeckx, Rich Salz, Matthias St. Pierre*
2619
2620  * Changed Configure so it only says what it does and doesn't dump
2621    so much data.  Instead, ./configdata.pm should be used as a script
2622    to display all sorts of configuration data.
2623
2624    *Richard Levitte*
2625
2626  * Added processing of "make variables" to Configure.
2627
2628    *Richard Levitte*
2629
2630  * Added SHA512/224 and SHA512/256 algorithm support.
2631
2632    *Paul Dale*
2633
2634  * The last traces of Netware support, first removed in 1.1.0, have
2635    now been removed.
2636
2637    *Rich Salz*
2638
2639  * Get rid of Makefile.shared, and in the process, make the processing
2640    of certain files (rc.obj, or the .def/.map/.opt files produced from
2641    the ordinal files) more visible and hopefully easier to trace and
2642    debug (or make silent).
2643
2644    *Richard Levitte*
2645
2646  * Make it possible to have environment variable assignments as
2647    arguments to config / Configure.
2648
2649    *Richard Levitte*
2650
2651  * Add multi-prime RSA (RFC 8017) support.
2652
2653    *Paul Yang*
2654
2655  * Add SM3 implemented according to GB/T 32905-2016
2656    *Jack Lloyd <jack.lloyd@ribose.com>,*
2657    *Ronald Tse <ronald.tse@ribose.com>,*
2658    *Erick Borsboom <erick.borsboom@ribose.com>*
2659
2660  * Add 'Maximum Fragment Length' TLS extension negotiation and support
2661    as documented in RFC6066.
2662    Based on a patch from Tomasz Moń
2663
2664    *Filipe Raimundo da Silva*
2665
2666  * Add SM4 implemented according to GB/T 32907-2016.
2667    *Jack Lloyd <jack.lloyd@ribose.com>,*
2668    *Ronald Tse <ronald.tse@ribose.com>,*
2669    *Erick Borsboom <erick.borsboom@ribose.com>*
2670
2671  * Reimplement -newreq-nodes and ERR_error_string_n; the
2672    original author does not agree with the license change.
2673
2674    *Rich Salz*
2675
2676  * Add ARIA AEAD TLS support.
2677
2678    *Jon Spillett*
2679
2680  * Some macro definitions to support VS6 have been removed.  Visual
2681    Studio 6 has not worked since 1.1.0
2682
2683    *Rich Salz*
2684
2685  * Add ERR_clear_last_mark(), to allow callers to clear the last mark
2686    without clearing the errors.
2687
2688    *Richard Levitte*
2689
2690  * Add "atfork" functions.  If building on a system that without
2691    pthreads, see doc/man3/OPENSSL_fork_prepare.pod for application
2692    requirements.  The RAND facility now uses/requires this.
2693
2694    *Rich Salz*
2695
2696  * Add SHA3.
2697
2698    *Andy Polyakov*
2699
2700  * The UI API becomes a permanent and integral part of libcrypto, i.e.
2701    not possible to disable entirely.  However, it's still possible to
2702    disable the console reading UI method, UI_OpenSSL() (use UI_null()
2703    as a fallback).
2704
2705    To disable, configure with 'no-ui-console'.  'no-ui' is still
2706    possible to use as an alias.  Check at compile time with the
2707    macro OPENSSL_NO_UI_CONSOLE.  The macro OPENSSL_NO_UI is still
2708    possible to check and is an alias for OPENSSL_NO_UI_CONSOLE.
2709
2710    *Richard Levitte*
2711
2712  * Add a STORE module, which implements a uniform and URI based reader of
2713    stores that can contain keys, certificates, CRLs and numerous other
2714    objects.  The main API is loosely based on a few stdio functions,
2715    and includes OSSL_STORE_open, OSSL_STORE_load, OSSL_STORE_eof,
2716    OSSL_STORE_error and OSSL_STORE_close.
2717    The implementation uses backends called "loaders" to implement arbitrary
2718    URI schemes.  There is one built in "loader" for the 'file' scheme.
2719
2720    *Richard Levitte*
2721
2722  * Add devcrypto engine.  This has been implemented against cryptodev-linux,
2723    then adjusted to work on FreeBSD 8.4 as well.
2724    Enable by configuring with 'enable-devcryptoeng'.  This is done by default
2725    on BSD implementations, as cryptodev.h is assumed to exist on all of them.
2726
2727    *Richard Levitte*
2728
2729  * Module names can prefixed with OSSL_ or OPENSSL_.  This affects
2730    util/mkerr.pl, which is adapted to allow those prefixes, leading to
2731    error code calls like this:
2732
2733            OSSL_FOOerr(OSSL_FOO_F_SOMETHING, OSSL_FOO_R_WHATEVER);
2734
2735    With this change, we claim the namespaces OSSL and OPENSSL in a manner
2736    that can be encoded in C.  For the foreseeable future, this will only
2737    affect new modules.
2738
2739    *Richard Levitte and Tim Hudson*
2740
2741  * Removed BSD cryptodev engine.
2742
2743    *Rich Salz*
2744
2745  * Add a build target 'build_all_generated', to build all generated files
2746    and only that.  This can be used to prepare everything that requires
2747    things like perl for a system that lacks perl and then move everything
2748    to that system and do the rest of the build there.
2749
2750    *Richard Levitte*
2751
2752  * In the UI interface, make it possible to duplicate the user data.  This
2753    can be used by engines that need to retain the data for a longer time
2754    than just the call where this user data is passed.
2755
2756    *Richard Levitte*
2757
2758  * Ignore the '-named_curve auto' value for compatibility of applications
2759    with OpenSSL 1.0.2.
2760
2761    *Tomáš Mráz <tmraz@fedoraproject.org>*
2762
2763  * Fragmented SSL/TLS alerts are no longer accepted. An alert message is 2
2764    bytes long. In theory it is permissible in SSLv3 - TLSv1.2 to fragment such
2765    alerts across multiple records (some of which could be empty). In practice
2766    it make no sense to send an empty alert record, or to fragment one. TLSv1.3
2767    prohibits this altogether and other libraries (BoringSSL, NSS) do not
2768    support this at all. Supporting it adds significant complexity to the
2769    record layer, and its removal is unlikely to cause interoperability
2770    issues.
2771
2772    *Matt Caswell*
2773
2774  * Add the ASN.1 types INT32, UINT32, INT64, UINT64 and variants prefixed
2775    with Z.  These are meant to replace LONG and ZLONG and to be size safe.
2776    The use of LONG and ZLONG is discouraged and scheduled for deprecation
2777    in OpenSSL 1.2.0.
2778
2779    *Richard Levitte*
2780
2781  * Add the 'z' and 'j' modifiers to BIO_printf() et al formatting string,
2782    'z' is to be used for [s]size_t, and 'j' - with [u]int64_t.
2783
2784    *Richard Levitte, Andy Polyakov*
2785
2786  * Add EC_KEY_get0_engine(), which does for EC_KEY what RSA_get0_engine()
2787    does for RSA, etc.
2788
2789    *Richard Levitte*
2790
2791  * Have 'config' recognise 64-bit mingw and choose 'mingw64' as the target
2792    platform rather than 'mingw'.
2793
2794    *Richard Levitte*
2795
2796  * The functions X509_STORE_add_cert and X509_STORE_add_crl return
2797    success if they are asked to add an object which already exists
2798    in the store. This change cascades to other functions which load
2799    certificates and CRLs.
2800
2801    *Paul Dale*
2802
2803  * x86_64 assembly pack: annotate code with DWARF CFI directives to
2804    facilitate stack unwinding even from assembly subroutines.
2805
2806    *Andy Polyakov*
2807
2808  * Remove VAX C specific definitions of OPENSSL_EXPORT, OPENSSL_EXTERN.
2809    Also remove OPENSSL_GLOBAL entirely, as it became a no-op.
2810
2811    *Richard Levitte*
2812
2813  * Remove the VMS-specific reimplementation of gmtime from crypto/o_times.c.
2814    VMS C's RTL has a fully up to date gmtime() and gmtime_r() since V7.1,
2815    which is the minimum version we support.
2816
2817    *Richard Levitte*
2818
2819  * Certificate time validation (X509_cmp_time) enforces stricter
2820    compliance with RFC 5280. Fractional seconds and timezone offsets
2821    are no longer allowed.
2822
2823    *Emilia Käsper*
2824
2825  * Add support for ARIA
2826
2827    *Paul Dale*
2828
2829  * s_client will now send the Server Name Indication (SNI) extension by
2830    default unless the new "-noservername" option is used. The server name is
2831    based on the host provided to the "-connect" option unless overridden by
2832    using "-servername".
2833
2834    *Matt Caswell*
2835
2836  * Add support for SipHash
2837
2838    *Todd Short*
2839
2840  * OpenSSL now fails if it receives an unrecognised record type in TLS1.0
2841    or TLS1.1. Previously this only happened in SSLv3 and TLS1.2. This is to
2842    prevent issues where no progress is being made and the peer continually
2843    sends unrecognised record types, using up resources processing them.
2844
2845    *Matt Caswell*
2846
2847  * 'openssl passwd' can now produce SHA256 and SHA512 based output,
2848    using the algorithm defined in
2849    <https://www.akkadia.org/drepper/SHA-crypt.txt>
2850
2851    *Richard Levitte*
2852
2853  * Heartbeat support has been removed; the ABI is changed for now.
2854
2855    *Richard Levitte, Rich Salz*
2856
2857  * Support for SSL_OP_NO_ENCRYPT_THEN_MAC in SSL_CONF_cmd.
2858
2859    *Emilia Käsper*
2860
2861  * The RSA "null" method, which was partially supported to avoid patent
2862    issues, has been replaced to always returns NULL.
2863
2864    *Rich Salz*
2865
2866 OpenSSL 1.1.0
2867 -------------
2868
2869 ### Changes between 1.1.0k and 1.1.0l [10 Sep 2019]
2870
2871  * For built-in EC curves, ensure an EC_GROUP built from the curve name is
2872    used even when parsing explicit parameters, when loading a encoded key
2873    or calling `EC_GROUP_new_from_ecpkparameters()`/
2874    `EC_GROUP_new_from_ecparameters()`.
2875    This prevents bypass of security hardening and performance gains,
2876    especially for curves with specialized EC_METHODs.
2877    By default, if a key encoded with explicit parameters is loaded and later
2878    encoded, the output is still encoded with explicit parameters, even if
2879    internally a "named" EC_GROUP is used for computation.
2880
2881    *Nicola Tuveri*
2882
2883  * Compute ECC cofactors if not provided during EC_GROUP construction. Before
2884    this change, EC_GROUP_set_generator would accept order and/or cofactor as
2885    NULL. After this change, only the cofactor parameter can be NULL. It also
2886    does some minimal sanity checks on the passed order.
2887    ([CVE-2019-1547])
2888
2889    *Billy Bob Brumley*
2890
2891  * Fixed a padding oracle in PKCS7_dataDecode and CMS_decrypt_set1_pkey.
2892    An attack is simple, if the first CMS_recipientInfo is valid but the
2893    second CMS_recipientInfo is chosen ciphertext. If the second
2894    recipientInfo decodes to PKCS #1 v1.5 form plaintext, the correct
2895    encryption key will be replaced by garbage, and the message cannot be
2896    decoded, but if the RSA decryption fails, the correct encryption key is
2897    used and the recipient will not notice the attack.
2898    As a work around for this potential attack the length of the decrypted
2899    key must be equal to the cipher default key length, in case the
2900    certifiate is not given and all recipientInfo are tried out.
2901    The old behaviour can be re-enabled in the CMS code by setting the
2902    CMS_DEBUG_DECRYPT flag.
2903    ([CVE-2019-1563])
2904
2905    *Bernd Edlinger*
2906
2907  * Use Windows installation paths in the mingw builds
2908
2909    Mingw isn't a POSIX environment per se, which means that Windows
2910    paths should be used for installation.
2911    ([CVE-2019-1552])
2912
2913    *Richard Levitte*
2914
2915 ### Changes between 1.1.0j and 1.1.0k [28 May 2019]
2916
2917  * Change the default RSA, DSA and DH size to 2048 bit instead of 1024.
2918    This changes the size when using the `genpkey` command when no size is given.
2919    It fixes an omission in earlier changes that changed all RSA, DSA and DH
2920    generation commands to use 2048 bits by default.
2921
2922    *Kurt Roeckx*
2923
2924  * Prevent over long nonces in ChaCha20-Poly1305.
2925
2926    ChaCha20-Poly1305 is an AEAD cipher, and requires a unique nonce input
2927    for every encryption operation. RFC 7539 specifies that the nonce value
2928    (IV) should be 96 bits (12 bytes). OpenSSL allows a variable nonce length
2929    and front pads the nonce with 0 bytes if it is less than 12
2930    bytes. However it also incorrectly allows a nonce to be set of up to 16
2931    bytes. In this case only the last 12 bytes are significant and any
2932    additional leading bytes are ignored.
2933
2934    It is a requirement of using this cipher that nonce values are
2935    unique. Messages encrypted using a reused nonce value are susceptible to
2936    serious confidentiality and integrity attacks. If an application changes
2937    the default nonce length to be longer than 12 bytes and then makes a
2938    change to the leading bytes of the nonce expecting the new value to be a
2939    new unique nonce then such an application could inadvertently encrypt
2940    messages with a reused nonce.
2941
2942    Additionally the ignored bytes in a long nonce are not covered by the
2943    integrity guarantee of this cipher. Any application that relies on the
2944    integrity of these ignored leading bytes of a long nonce may be further
2945    affected. Any OpenSSL internal use of this cipher, including in SSL/TLS,
2946    is safe because no such use sets such a long nonce value. However user
2947    applications that use this cipher directly and set a non-default nonce
2948    length to be longer than 12 bytes may be vulnerable.
2949
2950    This issue was reported to OpenSSL on 16th of March 2019 by Joran Dirk
2951    Greef of Ronomon.
2952    ([CVE-2019-1543])
2953
2954    *Matt Caswell*
2955
2956  * Added SCA hardening for modular field inversion in EC_GROUP through
2957    a new dedicated field_inv() pointer in EC_METHOD.
2958    This also addresses a leakage affecting conversions from projective
2959    to affine coordinates.
2960
2961    *Billy Bob Brumley, Nicola Tuveri*
2962
2963  * Fix a use after free bug in d2i_X509_PUBKEY when overwriting a
2964    re-used X509_PUBKEY object if the second PUBKEY is malformed.
2965
2966    *Bernd Edlinger*
2967
2968  * Move strictness check from EVP_PKEY_asn1_new() to EVP_PKEY_asn1_add0().
2969
2970    *Richard Levitte*
2971
2972  * Remove the 'dist' target and add a tarball building script.  The
2973    'dist' target has fallen out of use, and it shouldn't be
2974    necessary to configure just to create a source distribution.
2975
2976    *Richard Levitte*
2977
2978 ### Changes between 1.1.0i and 1.1.0j [20 Nov 2018]
2979
2980  * Timing vulnerability in DSA signature generation
2981
2982    The OpenSSL DSA signature algorithm has been shown to be vulnerable to a
2983    timing side channel attack. An attacker could use variations in the signing
2984    algorithm to recover the private key.
2985
2986    This issue was reported to OpenSSL on 16th October 2018 by Samuel Weiser.
2987    ([CVE-2018-0734])
2988
2989    *Paul Dale*
2990
2991  * Timing vulnerability in ECDSA signature generation
2992
2993    The OpenSSL ECDSA signature algorithm has been shown to be vulnerable to a
2994    timing side channel attack. An attacker could use variations in the signing
2995    algorithm to recover the private key.
2996
2997    This issue was reported to OpenSSL on 25th October 2018 by Samuel Weiser.
2998    ([CVE-2018-0735])
2999
3000    *Paul Dale*
3001
3002  * Add coordinate blinding for EC_POINT and implement projective
3003    coordinate blinding for generic prime curves as a countermeasure to
3004    chosen point SCA attacks.
3005
3006    *Sohaib ul Hassan, Nicola Tuveri, Billy Bob Brumley*
3007
3008 ### Changes between 1.1.0h and 1.1.0i [14 Aug 2018]
3009
3010  * Client DoS due to large DH parameter
3011
3012    During key agreement in a TLS handshake using a DH(E) based ciphersuite a
3013    malicious server can send a very large prime value to the client. This will
3014    cause the client to spend an unreasonably long period of time generating a
3015    key for this prime resulting in a hang until the client has finished. This
3016    could be exploited in a Denial Of Service attack.
3017
3018    This issue was reported to OpenSSL on 5th June 2018 by Guido Vranken
3019    ([CVE-2018-0732])
3020
3021    *Guido Vranken*
3022
3023  * Cache timing vulnerability in RSA Key Generation
3024
3025    The OpenSSL RSA Key generation algorithm has been shown to be vulnerable to
3026    a cache timing side channel attack. An attacker with sufficient access to
3027    mount cache timing attacks during the RSA key generation process could
3028    recover the private key.
3029
3030    This issue was reported to OpenSSL on 4th April 2018 by Alejandro Cabrera
3031    Aldaya, Billy Brumley, Cesar Pereida Garcia and Luis Manuel Alvarez Tapia.
3032    ([CVE-2018-0737])
3033
3034    *Billy Brumley*
3035
3036  * Make EVP_PKEY_asn1_new() a bit stricter about its input.  A NULL pem_str
3037    parameter is no longer accepted, as it leads to a corrupt table.  NULL
3038    pem_str is reserved for alias entries only.
3039
3040    *Richard Levitte*
3041
3042  * Revert blinding in ECDSA sign and instead make problematic addition
3043    length-invariant. Switch even to fixed-length Montgomery multiplication.
3044
3045    *Andy Polyakov*
3046
3047  * Change generating and checking of primes so that the error rate of not
3048    being prime depends on the intended use based on the size of the input.
3049    For larger primes this will result in more rounds of Miller-Rabin.
3050    The maximal error rate for primes with more than 1080 bits is lowered
3051    to 2^-128.
3052
3053    *Kurt Roeckx, Annie Yousar*
3054
3055  * Increase the number of Miller-Rabin rounds for DSA key generating to 64.
3056
3057    *Kurt Roeckx*
3058
3059  * Add blinding to ECDSA and DSA signatures to protect against side channel
3060    attacks discovered by Keegan Ryan (NCC Group).
3061
3062    *Matt Caswell*
3063
3064  * When unlocking a pass phrase protected PEM file or PKCS#8 container, we
3065    now allow empty (zero character) pass phrases.
3066
3067    *Richard Levitte*
3068
3069  * Certificate time validation (X509_cmp_time) enforces stricter
3070    compliance with RFC 5280. Fractional seconds and timezone offsets
3071    are no longer allowed.
3072
3073    *Emilia Käsper*
3074
3075  * Fixed a text canonicalisation bug in CMS
3076
3077    Where a CMS detached signature is used with text content the text goes
3078    through a canonicalisation process first prior to signing or verifying a
3079    signature. This process strips trailing space at the end of lines, converts
3080    line terminators to CRLF and removes additional trailing line terminators
3081    at the end of a file. A bug in the canonicalisation process meant that
3082    some characters, such as form-feed, were incorrectly treated as whitespace
3083    and removed. This is contrary to the specification (RFC5485). This fix
3084    could mean that detached text data signed with an earlier version of
3085    OpenSSL 1.1.0 may fail to verify using the fixed version, or text data
3086    signed with a fixed OpenSSL may fail to verify with an earlier version of
3087    OpenSSL 1.1.0. A workaround is to only verify the canonicalised text data
3088    and use the "-binary" flag (for the "cms" command line application) or set
3089    the SMIME_BINARY/PKCS7_BINARY/CMS_BINARY flags (if using CMS_verify()).
3090
3091    *Matt Caswell*
3092
3093 ### Changes between 1.1.0g and 1.1.0h [27 Mar 2018]
3094
3095  * Constructed ASN.1 types with a recursive definition could exceed the stack
3096
3097    Constructed ASN.1 types with a recursive definition (such as can be found
3098    in PKCS7) could eventually exceed the stack given malicious input with
3099    excessive recursion. This could result in a Denial Of Service attack. There
3100    are no such structures used within SSL/TLS that come from untrusted sources
3101    so this is considered safe.
3102
3103    This issue was reported to OpenSSL on 4th January 2018 by the OSS-fuzz
3104    project.
3105    ([CVE-2018-0739])
3106
3107    *Matt Caswell*
3108
3109  * Incorrect CRYPTO_memcmp on HP-UX PA-RISC
3110
3111    Because of an implementation bug the PA-RISC CRYPTO_memcmp function is
3112    effectively reduced to only comparing the least significant bit of each
3113    byte. This allows an attacker to forge messages that would be considered as
3114    authenticated in an amount of tries lower than that guaranteed by the
3115    security claims of the scheme. The module can only be compiled by the
3116    HP-UX assembler, so that only HP-UX PA-RISC targets are affected.
3117
3118    This issue was reported to OpenSSL on 2nd March 2018 by Peter Waltenberg
3119    (IBM).
3120    ([CVE-2018-0733])
3121
3122    *Andy Polyakov*
3123
3124  * Add a build target 'build_all_generated', to build all generated files
3125    and only that.  This can be used to prepare everything that requires
3126    things like perl for a system that lacks perl and then move everything
3127    to that system and do the rest of the build there.
3128
3129    *Richard Levitte*
3130
3131  * Backport SSL_OP_NO_RENGOTIATION
3132
3133    OpenSSL 1.0.2 and below had the ability to disable renegotiation using the
3134    (undocumented) SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS flag. Due to the opacity
3135    changes this is no longer possible in 1.1.0. Therefore the new
3136    SSL_OP_NO_RENEGOTIATION option from 1.1.1-dev has been backported to
3137    1.1.0 to provide equivalent functionality.
3138
3139    Note that if an application built against 1.1.0h headers (or above) is run
3140    using an older version of 1.1.0 (prior to 1.1.0h) then the option will be
3141    accepted but nothing will happen, i.e. renegotiation will not be prevented.
3142
3143    *Matt Caswell*
3144
3145  * Removed the OS390-Unix config target.  It relied on a script that doesn't
3146    exist.
3147
3148    *Rich Salz*
3149
3150  * rsaz_1024_mul_avx2 overflow bug on x86_64
3151
3152    There is an overflow bug in the AVX2 Montgomery multiplication procedure
3153    used in exponentiation with 1024-bit moduli. No EC algorithms are affected.
3154    Analysis suggests that attacks against RSA and DSA as a result of this
3155    defect would be very difficult to perform and are not believed likely.
3156    Attacks against DH1024 are considered just feasible, because most of the
3157    work necessary to deduce information about a private key may be performed
3158    offline. The amount of resources required for such an attack would be
3159    significant. However, for an attack on TLS to be meaningful, the server
3160    would have to share the DH1024 private key among multiple clients, which is
3161    no longer an option since CVE-2016-0701.
3162
3163    This only affects processors that support the AVX2 but not ADX extensions
3164    like Intel Haswell (4th generation).
3165
3166    This issue was reported to OpenSSL by David Benjamin (Google). The issue
3167    was originally found via the OSS-Fuzz project.
3168    ([CVE-2017-3738])
3169
3170    *Andy Polyakov*
3171
3172 ### Changes between 1.1.0f and 1.1.0g [2 Nov 2017]
3173
3174  * bn_sqrx8x_internal carry bug on x86_64
3175
3176    There is a carry propagating bug in the x86_64 Montgomery squaring
3177    procedure. No EC algorithms are affected. Analysis suggests that attacks
3178    against RSA and DSA as a result of this defect would be very difficult to
3179    perform and are not believed likely. Attacks against DH are considered just
3180    feasible (although very difficult) because most of the work necessary to
3181    deduce information about a private key may be performed offline. The amount
3182    of resources required for such an attack would be very significant and
3183    likely only accessible to a limited number of attackers. An attacker would
3184    additionally need online access to an unpatched system using the target
3185    private key in a scenario with persistent DH parameters and a private
3186    key that is shared between multiple clients.
3187
3188    This only affects processors that support the BMI1, BMI2 and ADX extensions
3189    like Intel Broadwell (5th generation) and later or AMD Ryzen.
3190
3191    This issue was reported to OpenSSL by the OSS-Fuzz project.
3192    ([CVE-2017-3736])
3193
3194    *Andy Polyakov*
3195
3196  * Malformed X.509 IPAddressFamily could cause OOB read
3197
3198    If an X.509 certificate has a malformed IPAddressFamily extension,
3199    OpenSSL could do a one-byte buffer overread. The most likely result
3200    would be an erroneous display of the certificate in text format.
3201
3202    This issue was reported to OpenSSL by the OSS-Fuzz project.
3203    ([CVE-2017-3735])
3204
3205    *Rich Salz*
3206
3207 ### Changes between 1.1.0e and 1.1.0f [25 May 2017]
3208
3209  * Have 'config' recognise 64-bit mingw and choose 'mingw64' as the target
3210    platform rather than 'mingw'.
3211
3212    *Richard Levitte*
3213
3214  * Remove the VMS-specific reimplementation of gmtime from crypto/o_times.c.
3215    VMS C's RTL has a fully up to date gmtime() and gmtime_r() since V7.1,
3216    which is the minimum version we support.
3217
3218    *Richard Levitte*
3219
3220 ### Changes between 1.1.0d and 1.1.0e [16 Feb 2017]
3221
3222  * Encrypt-Then-Mac renegotiation crash
3223
3224    During a renegotiation handshake if the Encrypt-Then-Mac extension is
3225    negotiated where it was not in the original handshake (or vice-versa) then
3226    this can cause OpenSSL to crash (dependant on ciphersuite). Both clients
3227    and servers are affected.
3228
3229    This issue was reported to OpenSSL by Joe Orton (Red Hat).
3230    ([CVE-2017-3733])
3231
3232    *Matt Caswell*
3233
3234 ### Changes between 1.1.0c and 1.1.0d [26 Jan 2017]
3235
3236  * Truncated packet could crash via OOB read
3237
3238    If one side of an SSL/TLS path is running on a 32-bit host and a specific
3239    cipher is being used, then a truncated packet can cause that host to
3240    perform an out-of-bounds read, usually resulting in a crash.
3241
3242    This issue was reported to OpenSSL by Robert Święcki of Google.
3243    ([CVE-2017-3731])
3244
3245    *Andy Polyakov*
3246
3247  * Bad (EC)DHE parameters cause a client crash
3248
3249    If a malicious server supplies bad parameters for a DHE or ECDHE key
3250    exchange then this can result in the client attempting to dereference a
3251    NULL pointer leading to a client crash. This could be exploited in a Denial
3252    of Service attack.
3253
3254    This issue was reported to OpenSSL by Guido Vranken.
3255    ([CVE-2017-3730])
3256
3257    *Matt Caswell*
3258
3259  * BN_mod_exp may produce incorrect results on x86_64
3260
3261    There is a carry propagating bug in the x86_64 Montgomery squaring
3262    procedure. No EC algorithms are affected. Analysis suggests that attacks
3263    against RSA and DSA as a result of this defect would be very difficult to
3264    perform and are not believed likely. Attacks against DH are considered just
3265    feasible (although very difficult) because most of the work necessary to
3266    deduce information about a private key may be performed offline. The amount
3267    of resources required for such an attack would be very significant and
3268    likely only accessible to a limited number of attackers. An attacker would
3269    additionally need online access to an unpatched system using the target
3270    private key in a scenario with persistent DH parameters and a private
3271    key that is shared between multiple clients. For example this can occur by
3272    default in OpenSSL DHE based SSL/TLS ciphersuites. Note: This issue is very
3273    similar to CVE-2015-3193 but must be treated as a separate problem.
3274
3275    This issue was reported to OpenSSL by the OSS-Fuzz project.
3276    ([CVE-2017-3732])
3277
3278    *Andy Polyakov*
3279
3280 ### Changes between 1.1.0b and 1.1.0c [10 Nov 2016]
3281
3282  * ChaCha20/Poly1305 heap-buffer-overflow
3283
3284    TLS connections using `*-CHACHA20-POLY1305` ciphersuites are susceptible to
3285    a DoS attack by corrupting larger payloads. This can result in an OpenSSL
3286    crash. This issue is not considered to be exploitable beyond a DoS.
3287
3288    This issue was reported to OpenSSL by Robert Święcki (Google Security Team)
3289    ([CVE-2016-7054])
3290
3291    *Richard Levitte*
3292
3293  * CMS Null dereference
3294
3295    Applications parsing invalid CMS structures can crash with a NULL pointer
3296    dereference. This is caused by a bug in the handling of the ASN.1 CHOICE
3297    type in OpenSSL 1.1.0 which can result in a NULL value being passed to the
3298    structure callback if an attempt is made to free certain invalid encodings.
3299    Only CHOICE structures using a callback which do not handle NULL value are
3300    affected.
3301
3302    This issue was reported to OpenSSL by Tyler Nighswander of ForAllSecure.
3303    ([CVE-2016-7053])
3304
3305    *Stephen Henson*
3306
3307  * Montgomery multiplication may produce incorrect results
3308
3309    There is a carry propagating bug in the Broadwell-specific Montgomery
3310    multiplication procedure that handles input lengths divisible by, but
3311    longer than 256 bits. Analysis suggests that attacks against RSA, DSA
3312    and DH private keys are impossible. This is because the subroutine in
3313    question is not used in operations with the private key itself and an input
3314    of the attacker's direct choice. Otherwise the bug can manifest itself as
3315    transient authentication and key negotiation failures or reproducible
3316    erroneous outcome of public-key operations with specially crafted input.
3317    Among EC algorithms only Brainpool P-512 curves are affected and one
3318    presumably can attack ECDH key negotiation. Impact was not analyzed in
3319    detail, because pre-requisites for attack are considered unlikely. Namely
3320    multiple clients have to choose the curve in question and the server has to
3321    share the private key among them, neither of which is default behaviour.
3322    Even then only clients that chose the curve will be affected.
3323
3324    This issue was publicly reported as transient failures and was not
3325    initially recognized as a security issue. Thanks to Richard Morgan for
3326    providing reproducible case.
3327    ([CVE-2016-7055])
3328
3329    *Andy Polyakov*
3330
3331  * Removed automatic addition of RPATH in shared libraries and executables,
3332    as this was a remainder from OpenSSL 1.0.x and isn't needed any more.
3333
3334    *Richard Levitte*
3335
3336 ### Changes between 1.1.0a and 1.1.0b [26 Sep 2016]
3337
3338  * Fix Use After Free for large message sizes
3339
3340    The patch applied to address CVE-2016-6307 resulted in an issue where if a
3341    message larger than approx 16k is received then the underlying buffer to
3342    store the incoming message is reallocated and moved. Unfortunately a
3343    dangling pointer to the old location is left which results in an attempt to
3344    write to the previously freed location. This is likely to result in a
3345    crash, however it could potentially lead to execution of arbitrary code.
3346
3347    This issue only affects OpenSSL 1.1.0a.
3348
3349    This issue was reported to OpenSSL by Robert Święcki.
3350    ([CVE-2016-6309])
3351
3352    *Matt Caswell*
3353
3354 ### Changes between 1.1.0 and 1.1.0a [22 Sep 2016]
3355
3356  * OCSP Status Request extension unbounded memory growth
3357
3358    A malicious client can send an excessively large OCSP Status Request
3359    extension. If that client continually requests renegotiation, sending a
3360    large OCSP Status Request extension each time, then there will be unbounded
3361    memory growth on the server. This will eventually lead to a Denial Of
3362    Service attack through memory exhaustion. Servers with a default
3363    configuration are vulnerable even if they do not support OCSP. Builds using
3364    the "no-ocsp" build time option are not affected.
3365
3366    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
3367    ([CVE-2016-6304])
3368
3369    *Matt Caswell*
3370
3371  * SSL_peek() hang on empty record
3372
3373    OpenSSL 1.1.0 SSL/TLS will hang during a call to SSL_peek() if the peer
3374    sends an empty record. This could be exploited by a malicious peer in a
3375    Denial Of Service attack.
3376
3377    This issue was reported to OpenSSL by Alex Gaynor.
3378    ([CVE-2016-6305])
3379
3380    *Matt Caswell*
3381
3382  * Excessive allocation of memory in tls_get_message_header() and
3383    dtls1_preprocess_fragment()
3384
3385    A (D)TLS message includes 3 bytes for its length in the header for the
3386    message. This would allow for messages up to 16Mb in length. Messages of
3387    this length are excessive and OpenSSL includes a check to ensure that a
3388    peer is sending reasonably sized messages in order to avoid too much memory
3389    being consumed to service a connection. A flaw in the logic of version
3390    1.1.0 means that memory for the message is allocated too early, prior to
3391    the excessive message length check. Due to way memory is allocated in
3392    OpenSSL this could mean an attacker could force up to 21Mb to be allocated
3393    to service a connection. This could lead to a Denial of Service through
3394    memory exhaustion. However, the excessive message length check still takes
3395    place, and this would cause the connection to immediately fail. Assuming
3396    that the application calls SSL_free() on the failed connection in a timely
3397    manner then the 21Mb of allocated memory will then be immediately freed
3398    again. Therefore the excessive memory allocation will be transitory in
3399    nature. This then means that there is only a security impact if:
3400
3401    1) The application does not call SSL_free() in a timely manner in the event
3402    that the connection fails
3403    or
3404    2) The application is working in a constrained environment where there is
3405    very little free memory
3406    or
3407    3) The attacker initiates multiple connection attempts such that there are
3408    multiple connections in a state where memory has been allocated for the
3409    connection; SSL_free() has not yet been called; and there is insufficient
3410    memory to service the multiple requests.
3411
3412    Except in the instance of (1) above any Denial Of Service is likely to be
3413    transitory because as soon as the connection fails the memory is
3414    subsequently freed again in the SSL_free() call. However there is an
3415    increased risk during this period of application crashes due to the lack of
3416    memory - which would then mean a more serious Denial of Service.
3417
3418    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
3419    (CVE-2016-6307 and CVE-2016-6308)
3420
3421    *Matt Caswell*
3422
3423  * solaris-x86-cc, i.e. 32-bit configuration with vendor compiler,
3424    had to be removed. Primary reason is that vendor assembler can't
3425    assemble our modules with -KPIC flag. As result it, assembly
3426    support, was not even available as option. But its lack means
3427    lack of side-channel resistant code, which is incompatible with
3428    security by todays standards. Fortunately gcc is readily available
3429    prepackaged option, which we firmly point at...
3430
3431    *Andy Polyakov*
3432
3433 ### Changes between 1.0.2h and 1.1.0  [25 Aug 2016]
3434
3435  * Windows command-line tool supports UTF-8 opt-in option for arguments
3436    and console input. Setting OPENSSL_WIN32_UTF8 environment variable
3437    (to any value) allows Windows user to access PKCS#12 file generated
3438    with Windows CryptoAPI and protected with non-ASCII password, as well
3439    as files generated under UTF-8 locale on Linux also protected with
3440    non-ASCII password.
3441
3442    *Andy Polyakov*
3443
3444  * To mitigate the SWEET32 attack ([CVE-2016-2183]), 3DES cipher suites
3445    have been disabled by default and removed from DEFAULT, just like RC4.
3446    See the RC4 item below to re-enable both.
3447
3448    *Rich Salz*
3449
3450  * The method for finding the storage location for the Windows RAND seed file
3451    has changed. First we check %RANDFILE%. If that is not set then we check
3452    the directories %HOME%, %USERPROFILE% and %SYSTEMROOT% in that order. If
3453    all else fails we fall back to C:\.
3454
3455    *Matt Caswell*
3456
3457  * The EVP_EncryptUpdate() function has had its return type changed from void
3458    to int. A return of 0 indicates and error while a return of 1 indicates
3459    success.
3460
3461    *Matt Caswell*
3462
3463  * The flags RSA_FLAG_NO_CONSTTIME, DSA_FLAG_NO_EXP_CONSTTIME and
3464    DH_FLAG_NO_EXP_CONSTTIME which previously provided the ability to switch
3465    off the constant time implementation for RSA, DSA and DH have been made
3466    no-ops and deprecated.
3467
3468    *Matt Caswell*
3469
3470  * Windows RAND implementation was simplified to only get entropy by
3471    calling CryptGenRandom(). Various other RAND-related tickets
3472    were also closed.
3473
3474    *Joseph Wylie Yandle, Rich Salz*
3475
3476  * The stack and lhash API's were renamed to start with `OPENSSL_SK_`
3477    and `OPENSSL_LH_`, respectively.  The old names are available
3478    with API compatibility.  They new names are now completely documented.
3479
3480    *Rich Salz*
3481
3482  * Unify TYPE_up_ref(obj) methods signature.
3483    SSL_CTX_up_ref(), SSL_up_ref(), X509_up_ref(), EVP_PKEY_up_ref(),
3484    X509_CRL_up_ref(), X509_OBJECT_up_ref_count() methods are now returning an
3485    int (instead of void) like all others TYPE_up_ref() methods.
3486    So now these methods also check the return value of CRYPTO_atomic_add(),
3487    and the validity of object reference counter.
3488
3489    *fdasilvayy@gmail.com*
3490
3491  * With Windows Visual Studio builds, the .pdb files are installed
3492    alongside the installed libraries and executables.  For a static
3493    library installation, ossl_static.pdb is the associate compiler
3494    generated .pdb file to be used when linking programs.
3495
3496    *Richard Levitte*
3497
3498  * Remove openssl.spec.  Packaging files belong with the packagers.
3499
3500    *Richard Levitte*
3501
3502  * Automatic Darwin/OSX configuration has had a refresh, it will now
3503    recognise x86_64 architectures automatically.  You can still decide
3504    to build for a different bitness with the environment variable
3505    KERNEL_BITS (can be 32 or 64), for example:
3506
3507            KERNEL_BITS=32 ./config
3508
3509    *Richard Levitte*
3510
3511  * Change default algorithms in pkcs8 utility to use PKCS#5 v2.0,
3512    256 bit AES and HMAC with SHA256.
3513
3514    *Steve Henson*
3515
3516  * Remove support for MIPS o32 ABI on IRIX (and IRIX only).
3517
3518    *Andy Polyakov*
3519
3520  * Triple-DES ciphers have been moved from HIGH to MEDIUM.
3521
3522    *Rich Salz*
3523
3524  * To enable users to have their own config files and build file templates,
3525    Configure looks in the directory indicated by the environment variable
3526    OPENSSL_LOCAL_CONFIG_DIR as well as the in-source Configurations/
3527    directory.  On VMS, OPENSSL_LOCAL_CONFIG_DIR is expected to be a logical
3528    name and is used as is.
3529
3530    *Richard Levitte*
3531
3532  * The following datatypes were made opaque: X509_OBJECT, X509_STORE_CTX,
3533    X509_STORE, X509_LOOKUP, and X509_LOOKUP_METHOD.  The unused type
3534    X509_CERT_FILE_CTX was removed.
3535
3536    *Rich Salz*
3537
3538  * "shared" builds are now the default. To create only static libraries use
3539    the "no-shared" Configure option.
3540
3541    *Matt Caswell*
3542
3543  * Remove the no-aes, no-hmac, no-rsa, no-sha and no-md5 Configure options.
3544    All of these option have not worked for some while and are fundamental
3545    algorithms.
3546
3547    *Matt Caswell*
3548
3549  * Make various cleanup routines no-ops and mark them as deprecated. Most
3550    global cleanup functions are no longer required because they are handled
3551    via auto-deinit (see OPENSSL_init_crypto and OPENSSL_init_ssl man pages).
3552    Explicitly de-initing can cause problems (e.g. where a library that uses
3553    OpenSSL de-inits, but an application is still using it). The affected
3554    functions are CONF_modules_free(), ENGINE_cleanup(), OBJ_cleanup(),
3555    EVP_cleanup(), BIO_sock_cleanup(), CRYPTO_cleanup_all_ex_data(),
3556    RAND_cleanup(), SSL_COMP_free_compression_methods(), ERR_free_strings() and
3557    COMP_zlib_cleanup().
3558
3559    *Matt Caswell*
3560
3561  * --strict-warnings no longer enables runtime debugging options
3562    such as REF_DEBUG. Instead, debug options are automatically
3563    enabled with '--debug' builds.
3564
3565    *Andy Polyakov, Emilia Käsper*
3566
3567  * Made DH and DH_METHOD opaque. The structures for managing DH objects
3568    have been moved out of the public header files. New functions for managing
3569    these have been added.
3570
3571    *Matt Caswell*
3572
3573  * Made RSA and RSA_METHOD opaque. The structures for managing RSA
3574    objects have been moved out of the public header files. New
3575    functions for managing these have been added.
3576
3577    *Richard Levitte*
3578
3579  * Made DSA and DSA_METHOD opaque. The structures for managing DSA objects
3580    have been moved out of the public header files. New functions for managing
3581    these have been added.
3582
3583    *Matt Caswell*
3584
3585  * Made BIO and BIO_METHOD opaque. The structures for managing BIOs have been
3586    moved out of the public header files. New functions for managing these
3587    have been added.
3588
3589    *Matt Caswell*
3590
3591  * Removed no-rijndael as a config option. Rijndael is an old name for AES.
3592
3593    *Matt Caswell*
3594
3595  * Removed the mk1mf build scripts.
3596
3597    *Richard Levitte*
3598
3599  * Headers are now wrapped, if necessary, with OPENSSL_NO_xxx, so
3600    it is always safe to #include a header now.
3601
3602    *Rich Salz*
3603
3604  * Removed the aged BC-32 config and all its supporting scripts
3605
3606    *Richard Levitte*
3607
3608  * Removed support for Ultrix, Netware, and OS/2.
3609
3610    *Rich Salz*
3611
3612  * Add support for HKDF.
3613
3614    *Alessandro Ghedini*
3615
3616  * Add support for blake2b and blake2s
3617
3618    *Bill Cox*
3619
3620  * Added support for "pipelining". Ciphers that have the
3621    EVP_CIPH_FLAG_PIPELINE flag set have a capability to process multiple
3622    encryptions/decryptions simultaneously. There are currently no built-in
3623    ciphers with this property but the expectation is that engines will be able
3624    to offer it to significantly improve throughput. Support has been extended
3625    into libssl so that multiple records for a single connection can be
3626    processed in one go (for >=TLS 1.1).
3627
3628    *Matt Caswell*
3629
3630  * Added the AFALG engine. This is an async capable engine which is able to
3631    offload work to the Linux kernel. In this initial version it only supports
3632    AES128-CBC. The kernel must be version 4.1.0 or greater.
3633
3634    *Catriona Lucey*
3635
3636  * OpenSSL now uses a new threading API. It is no longer necessary to
3637    set locking callbacks to use OpenSSL in a multi-threaded environment. There
3638    are two supported threading models: pthreads and windows threads. It is
3639    also possible to configure OpenSSL at compile time for "no-threads". The
3640    old threading API should no longer be used. The functions have been
3641    replaced with "no-op" compatibility macros.
3642
3643    *Alessandro Ghedini, Matt Caswell*
3644
3645  * Modify behavior of ALPN to invoke callback after SNI/servername
3646    callback, such that updates to the SSL_CTX affect ALPN.
3647
3648    *Todd Short*
3649
3650  * Add SSL_CIPHER queries for authentication and key-exchange.
3651
3652    *Todd Short*
3653
3654  * Changes to the DEFAULT cipherlist:
3655    - Prefer (EC)DHE handshakes over plain RSA.
3656    - Prefer AEAD ciphers over legacy ciphers.
3657    - Prefer ECDSA over RSA when both certificates are available.
3658    - Prefer TLSv1.2 ciphers/PRF.
3659    - Remove DSS, SEED, IDEA, CAMELLIA, and AES-CCM from the
3660      default cipherlist.
3661
3662    *Emilia Käsper*
3663
3664  * Change the ECC default curve list to be this, in order: x25519,
3665    secp256r1, secp521r1, secp384r1.
3666
3667    *Rich Salz*
3668
3669  * RC4 based libssl ciphersuites are now classed as "weak" ciphers and are
3670    disabled by default. They can be re-enabled using the
3671    enable-weak-ssl-ciphers option to Configure.
3672
3673    *Matt Caswell*
3674
3675  * If the server has ALPN configured, but supports no protocols that the
3676    client advertises, send a fatal "no_application_protocol" alert.
3677    This behaviour is SHALL in RFC 7301, though it isn't universally
3678    implemented by other servers.
3679
3680    *Emilia Käsper*
3681
3682  * Add X25519 support.
3683    Add ASN.1 and EVP_PKEY methods for X25519. This includes support
3684    for public and private key encoding using the format documented in
3685    draft-ietf-curdle-pkix-02. The corresponding EVP_PKEY method supports
3686    key generation and key derivation.
3687
3688    TLS support complies with draft-ietf-tls-rfc4492bis-08 and uses
3689    X25519(29).
3690
3691    *Steve Henson*
3692
3693  * Deprecate SRP_VBASE_get_by_user.
3694    SRP_VBASE_get_by_user had inconsistent memory management behaviour.
3695    In order to fix an unavoidable memory leak ([CVE-2016-0798]),
3696    SRP_VBASE_get_by_user was changed to ignore the "fake user" SRP
3697    seed, even if the seed is configured.
3698
3699    Users should use SRP_VBASE_get1_by_user instead. Note that in
3700    SRP_VBASE_get1_by_user, caller must free the returned value. Note
3701    also that even though configuring the SRP seed attempts to hide
3702    invalid usernames by continuing the handshake with fake
3703    credentials, this behaviour is not constant time and no strong
3704    guarantees are made that the handshake is indistinguishable from
3705    that of a valid user.
3706
3707    *Emilia Käsper*
3708
3709  * Configuration change; it's now possible to build dynamic engines
3710    without having to build shared libraries and vice versa.  This
3711    only applies to the engines in `engines/`, those in `crypto/engine/`
3712    will always be built into libcrypto (i.e. "static").
3713
3714    Building dynamic engines is enabled by default; to disable, use
3715    the configuration option "disable-dynamic-engine".
3716
3717    The only requirements for building dynamic engines are the
3718    presence of the DSO module and building with position independent
3719    code, so they will also automatically be disabled if configuring
3720    with "disable-dso" or "disable-pic".
3721
3722    The macros OPENSSL_NO_STATIC_ENGINE and OPENSSL_NO_DYNAMIC_ENGINE
3723    are also taken away from openssl/opensslconf.h, as they are
3724    irrelevant.
3725
3726    *Richard Levitte*
3727
3728  * Configuration change; if there is a known flag to compile
3729    position independent code, it will always be applied on the
3730    libcrypto and libssl object files, and never on the application
3731    object files.  This means other libraries that use routines from
3732    libcrypto / libssl can be made into shared libraries regardless
3733    of how OpenSSL was configured.
3734
3735    If this isn't desirable, the configuration options "disable-pic"
3736    or "no-pic" can be used to disable the use of PIC.  This will
3737    also disable building shared libraries and dynamic engines.
3738
3739    *Richard Levitte*
3740
3741  * Removed JPAKE code.  It was experimental and has no wide use.
3742
3743    *Rich Salz*
3744
3745  * The INSTALL_PREFIX Makefile variable has been renamed to
3746    DESTDIR.  That makes for less confusion on what this variable
3747    is for.  Also, the configuration option --install_prefix is
3748    removed.
3749
3750    *Richard Levitte*
3751
3752  * Heartbeat for TLS has been removed and is disabled by default
3753    for DTLS; configure with enable-heartbeats.  Code that uses the
3754    old #define's might need to be updated.
3755
3756    *Emilia Käsper, Rich Salz*
3757
3758  * Rename REF_CHECK to REF_DEBUG.
3759
3760    *Rich Salz*
3761
3762  * New "unified" build system
3763
3764    The "unified" build system is aimed to be a common system for all
3765    platforms we support.  With it comes new support for VMS.
3766
3767    This system builds supports building in a different directory tree
3768    than the source tree.  It produces one Makefile (for unix family
3769    or lookalikes), or one descrip.mms (for VMS).
3770
3771    The source of information to make the Makefile / descrip.mms is
3772    small files called 'build.info', holding the necessary
3773    information for each directory with source to compile, and a
3774    template in Configurations, like unix-Makefile.tmpl or
3775    descrip.mms.tmpl.
3776
3777    With this change, the library names were also renamed on Windows
3778    and on VMS.  They now have names that are closer to the standard
3779    on Unix, and include the major version number, and in certain
3780    cases, the architecture they are built for.  See "Notes on shared
3781    libraries" in INSTALL.
3782
3783    We rely heavily on the perl module Text::Template.
3784
3785    *Richard Levitte*
3786
3787  * Added support for auto-initialisation and de-initialisation of the library.
3788    OpenSSL no longer requires explicit init or deinit routines to be called,
3789    except in certain circumstances. See the OPENSSL_init_crypto() and
3790    OPENSSL_init_ssl() man pages for further information.
3791
3792    *Matt Caswell*
3793
3794  * The arguments to the DTLSv1_listen function have changed. Specifically the
3795    "peer" argument is now expected to be a BIO_ADDR object.
3796
3797  * Rewrite of BIO networking library. The BIO library lacked consistent
3798    support of IPv6, and adding it required some more extensive
3799    modifications.  This introduces the BIO_ADDR and BIO_ADDRINFO types,
3800    which hold all types of addresses and chains of address information.
3801    It also introduces a new API, with functions like BIO_socket,
3802    BIO_connect, BIO_listen, BIO_lookup and a rewrite of BIO_accept.
3803    The source/sink BIOs BIO_s_connect, BIO_s_accept and BIO_s_datagram
3804    have been adapted accordingly.
3805
3806    *Richard Levitte*
3807
3808  * RSA_padding_check_PKCS1_type_1 now accepts inputs with and without
3809    the leading 0-byte.
3810
3811    *Emilia Käsper*
3812
3813  * CRIME protection: disable compression by default, even if OpenSSL is
3814    compiled with zlib enabled. Applications can still enable compression
3815    by calling SSL_CTX_clear_options(ctx, SSL_OP_NO_COMPRESSION), or by
3816    using the SSL_CONF library to configure compression.
3817
3818    *Emilia Käsper*
3819
3820  * The signature of the session callback configured with
3821    SSL_CTX_sess_set_get_cb was changed. The read-only input buffer
3822    was explicitly marked as `const unsigned char*` instead of
3823    `unsigned char*`.
3824
3825    *Emilia Käsper*
3826
3827  * Always DPURIFY. Remove the use of uninitialized memory in the
3828    RNG, and other conditional uses of DPURIFY. This makes -DPURIFY a no-op.
3829
3830    *Emilia Käsper*
3831
3832  * Removed many obsolete configuration items, including
3833       DES_PTR, DES_RISC1, DES_RISC2, DES_INT
3834       MD2_CHAR, MD2_INT, MD2_LONG
3835       BF_PTR, BF_PTR2
3836       IDEA_SHORT, IDEA_LONG
3837       RC2_SHORT, RC2_LONG, RC4_LONG, RC4_CHUNK, RC4_INDEX
3838
3839    *Rich Salz, with advice from Andy Polyakov*
3840
3841  * Many BN internals have been moved to an internal header file.
3842
3843    *Rich Salz with help from Andy Polyakov*
3844
3845  * Configuration and writing out the results from it has changed.
3846    Files such as Makefile include/openssl/opensslconf.h and are now
3847    produced through general templates, such as Makefile.in and
3848    crypto/opensslconf.h.in and some help from the perl module
3849    Text::Template.
3850
3851    Also, the center of configuration information is no longer
3852    Makefile.  Instead, Configure produces a perl module in
3853    configdata.pm which holds most of the config data (in the hash
3854    table %config), the target data that comes from the target
3855    configuration in one of the `Configurations/*.conf` files (in
3856    %target).
3857
3858    *Richard Levitte*
3859
3860  * To clarify their intended purposes, the Configure options
3861    --prefix and --openssldir change their semantics, and become more
3862    straightforward and less interdependent.
3863
3864    --prefix shall be used exclusively to give the location INSTALLTOP
3865    where programs, scripts, libraries, include files and manuals are
3866    going to be installed.  The default is now /usr/local.
3867
3868    --openssldir shall be used exclusively to give the default
3869    location OPENSSLDIR where certificates, private keys, CRLs are
3870    managed.  This is also where the default openssl.cnf gets
3871    installed.
3872    If the directory given with this option is a relative path, the
3873    values of both the --prefix value and the --openssldir value will
3874    be combined to become OPENSSLDIR.
3875    The default for --openssldir is INSTALLTOP/ssl.
3876
3877    Anyone who uses --openssldir to specify where OpenSSL is to be
3878    installed MUST change to use --prefix instead.
3879
3880    *Richard Levitte*
3881
3882  * The GOST engine was out of date and therefore it has been removed. An up
3883    to date GOST engine is now being maintained in an external repository.
3884    See: <https://wiki.openssl.org/index.php/Binaries>. Libssl still retains
3885    support for GOST ciphersuites (these are only activated if a GOST engine
3886    is present).
3887
3888    *Matt Caswell*
3889
3890  * EGD is no longer supported by default; use enable-egd when
3891    configuring.
3892
3893    *Ben Kaduk and Rich Salz*
3894
3895  * The distribution now has Makefile.in files, which are used to
3896    create Makefile's when Configure is run.  *Configure must be run
3897    before trying to build now.*
3898
3899    *Rich Salz*
3900
3901  * The return value for SSL_CIPHER_description() for error conditions
3902    has changed.
3903
3904    *Rich Salz*
3905
3906  * Support for RFC6698/RFC7671 DANE TLSA peer authentication.
3907
3908    Obtaining and performing DNSSEC validation of TLSA records is
3909    the application's responsibility.  The application provides
3910    the TLSA records of its choice to OpenSSL, and these are then
3911    used to authenticate the peer.
3912
3913    The TLSA records need not even come from DNS.  They can, for
3914    example, be used to implement local end-entity certificate or
3915    trust-anchor "pinning", where the "pin" data takes the form
3916    of TLSA records, which can augment or replace verification
3917    based on the usual WebPKI public certification authorities.
3918
3919    *Viktor Dukhovni*
3920
3921  * Revert default OPENSSL_NO_DEPRECATED setting.  Instead OpenSSL
3922    continues to support deprecated interfaces in default builds.
3923    However, applications are strongly advised to compile their
3924    source files with -DOPENSSL_API_COMPAT=0x10100000L, which hides
3925    the declarations of all interfaces deprecated in 0.9.8, 1.0.0
3926    or the 1.1.0 releases.
3927
3928    In environments in which all applications have been ported to
3929    not use any deprecated interfaces OpenSSL's Configure script
3930    should be used with the --api=1.1.0 option to entirely remove
3931    support for the deprecated features from the library and
3932    unconditionally disable them in the installed headers.
3933    Essentially the same effect can be achieved with the "no-deprecated"
3934    argument to Configure, except that this will always restrict
3935    the build to just the latest API, rather than a fixed API
3936    version.
3937
3938    As applications are ported to future revisions of the API,
3939    they should update their compile-time OPENSSL_API_COMPAT define
3940    accordingly, but in most cases should be able to continue to
3941    compile with later releases.
3942
3943    The OPENSSL_API_COMPAT versions for 1.0.0, and 0.9.8 are
3944    0x10000000L and 0x00908000L, respectively.  However those
3945    versions did not support the OPENSSL_API_COMPAT feature, and
3946    so applications are not typically tested for explicit support
3947    of just the undeprecated features of either release.
3948
3949    *Viktor Dukhovni*
3950
3951  * Add support for setting the minimum and maximum supported protocol.
3952    It can bet set via the SSL_set_min_proto_version() and
3953    SSL_set_max_proto_version(), or via the SSL_CONF's MinProtocol and
3954    MaxProtocol.  It's recommended to use the new APIs to disable
3955    protocols instead of disabling individual protocols using
3956    SSL_set_options() or SSL_CONF's Protocol.  This change also
3957    removes support for disabling TLS 1.2 in the OpenSSL TLS
3958    client at compile time by defining OPENSSL_NO_TLS1_2_CLIENT.
3959
3960    *Kurt Roeckx*
3961
3962  * Support for ChaCha20 and Poly1305 added to libcrypto and libssl.
3963
3964    *Andy Polyakov*
3965
3966  * New EC_KEY_METHOD, this replaces the older ECDSA_METHOD and ECDH_METHOD
3967    and integrates ECDSA and ECDH functionality into EC. Implementations can
3968    now redirect key generation and no longer need to convert to or from
3969    ECDSA_SIG format.
3970
3971    Note: the ecdsa.h and ecdh.h headers are now no longer needed and just
3972    include the ec.h header file instead.
3973
3974    *Steve Henson*
3975
3976  * Remove support for all 40 and 56 bit ciphers.  This includes all the export
3977    ciphers who are no longer supported and drops support the ephemeral RSA key
3978    exchange. The LOW ciphers currently doesn't have any ciphers in it.
3979
3980    *Kurt Roeckx*
3981
3982  * Made EVP_MD_CTX, EVP_MD, EVP_CIPHER_CTX, EVP_CIPHER and HMAC_CTX
3983    opaque.  For HMAC_CTX, the following constructors and destructors
3984    were added:
3985
3986        HMAC_CTX *HMAC_CTX_new(void);
3987        void HMAC_CTX_free(HMAC_CTX *ctx);
3988
3989    For EVP_MD and EVP_CIPHER, complete APIs to create, fill and
3990    destroy such methods has been added.  See EVP_MD_meth_new(3) and
3991    EVP_CIPHER_meth_new(3) for documentation.
3992
3993    Additional changes:
3994    1) `EVP_MD_CTX_cleanup()`, `EVP_CIPHER_CTX_cleanup()` and
3995       `HMAC_CTX_cleanup()` were removed. `HMAC_CTX_reset()` and
3996       `EVP_MD_CTX_reset()` should be called instead to reinitialise
3997       an already created structure.
3998    2) For consistency with the majority of our object creators and
3999       destructors, `EVP_MD_CTX_(create|destroy)` were renamed to
4000       `EVP_MD_CTX_(new|free)`.  The old names are retained as macros
4001       for deprecated builds.
4002
4003    *Richard Levitte*
4004
4005  * Added ASYNC support. Libcrypto now includes the async sub-library to enable
4006    cryptographic operations to be performed asynchronously as long as an
4007    asynchronous capable engine is used. See the ASYNC_start_job() man page for
4008    further details. Libssl has also had this capability integrated with the
4009    introduction of the new mode SSL_MODE_ASYNC and associated error
4010    SSL_ERROR_WANT_ASYNC. See the SSL_CTX_set_mode() and SSL_get_error() man
4011    pages. This work was developed in partnership with Intel Corp.
4012
4013    *Matt Caswell*
4014
4015  * SSL_{CTX_}set_ecdh_auto() has been removed and ECDH is support is
4016    always enabled now.  If you want to disable the support you should
4017    exclude it using the list of supported ciphers. This also means that the
4018    "-no_ecdhe" option has been removed from s_server.
4019
4020    *Kurt Roeckx*
4021
4022  * SSL_{CTX}_set_tmp_ecdh() which can set 1 EC curve now internally calls
4023    SSL_{CTX_}set1_curves() which can set a list.
4024
4025    *Kurt Roeckx*
4026
4027  * Remove support for SSL_{CTX_}set_tmp_ecdh_callback().  You should set the
4028    curve you want to support using SSL_{CTX_}set1_curves().
4029
4030    *Kurt Roeckx*
4031
4032  * State machine rewrite. The state machine code has been significantly
4033    refactored in order to remove much duplication of code and solve issues
4034    with the old code (see [ssl/statem/README.md](ssl/statem/README.md) for
4035    further details). This change does have some associated API changes.
4036    Notably the SSL_state() function has been removed and replaced by
4037    SSL_get_state which now returns an "OSSL_HANDSHAKE_STATE" instead of an int.
4038    SSL_set_state() has been removed altogether. The previous handshake states
4039    defined in ssl.h and ssl3.h have also been removed.
4040
4041    *Matt Caswell*
4042
4043  * All instances of the string "ssleay" in the public API were replaced
4044    with OpenSSL (case-matching; e.g., OPENSSL_VERSION for #define's)
4045    Some error codes related to internal RSA_eay API's were renamed.
4046
4047    *Rich Salz*
4048
4049  * The demo files in crypto/threads were moved to demo/threads.
4050
4051    *Rich Salz*
4052
4053  * Removed obsolete engines: 4758cca, aep, atalla, cswift, nuron, gmp,
4054    sureware and ubsec.
4055
4056    *Matt Caswell, Rich Salz*
4057
4058  * New ASN.1 embed macro.
4059
4060    New ASN.1 macro ASN1_EMBED. This is the same as ASN1_SIMPLE except the
4061    structure is not allocated: it is part of the parent. That is instead of
4062
4063            FOO *x;
4064
4065    it must be:
4066
4067            FOO x;
4068
4069    This reduces memory fragmentation and make it impossible to accidentally
4070    set a mandatory field to NULL.
4071
4072    This currently only works for some fields specifically a SEQUENCE, CHOICE,
4073    or ASN1_STRING type which is part of a parent SEQUENCE. Since it is
4074    equivalent to ASN1_SIMPLE it cannot be tagged, OPTIONAL, SET OF or
4075    SEQUENCE OF.
4076
4077    *Steve Henson*
4078
4079  * Remove EVP_CHECK_DES_KEY, a compile-time option that never compiled.
4080
4081    *Emilia Käsper*
4082
4083  * Removed DES and RC4 ciphersuites from DEFAULT. Also removed RC2 although
4084    in 1.0.2 EXPORT was already removed and the only RC2 ciphersuite is also
4085    an EXPORT one. COMPLEMENTOFDEFAULT has been updated accordingly to add
4086    DES and RC4 ciphersuites.
4087
4088    *Matt Caswell*
4089
4090  * Rewrite EVP_DecodeUpdate (base64 decoding) to fix several bugs.
4091    This changes the decoding behaviour for some invalid messages,
4092    though the change is mostly in the more lenient direction, and
4093    legacy behaviour is preserved as much as possible.
4094
4095    *Emilia Käsper*
4096
4097  * Fix no-stdio build.
4098    *David Woodhouse <David.Woodhouse@intel.com> and also*
4099    *Ivan Nestlerode <ivan.nestlerode@sonos.com>*
4100
4101  * New testing framework
4102    The testing framework has been largely rewritten and is now using
4103    perl and the perl modules Test::Harness and an extended variant of
4104    Test::More called OpenSSL::Test to do its work.  All test scripts in
4105    test/ have been rewritten into test recipes, and all direct calls to
4106    executables in test/Makefile have become individual recipes using the
4107    simplified testing OpenSSL::Test::Simple.
4108
4109    For documentation on our testing modules, do:
4110
4111            perldoc test/testlib/OpenSSL/Test/Simple.pm
4112            perldoc test/testlib/OpenSSL/Test.pm
4113
4114    *Richard Levitte*
4115
4116  * Revamped memory debug; only -DCRYPTO_MDEBUG and -DCRYPTO_MDEBUG_ABORT
4117    are used; the latter aborts on memory leaks (usually checked on exit).
4118    Some undocumented "set malloc, etc., hooks" functions were removed
4119    and others were changed.  All are now documented.
4120
4121    *Rich Salz*
4122
4123  * In DSA_generate_parameters_ex, if the provided seed is too short,
4124    return an error
4125
4126    *Rich Salz and Ismo Puustinen <ismo.puustinen@intel.com>*
4127
4128  * Rewrite PSK to support ECDHE_PSK, DHE_PSK and RSA_PSK. Add ciphersuites
4129    from RFC4279, RFC4785, RFC5487, RFC5489.
4130
4131    Thanks to Christian J. Dietrich and Giuseppe D'Angelo for the
4132    original RSA_PSK patch.
4133
4134    *Steve Henson*
4135
4136  * Dropped support for the SSL3_FLAGS_DELAY_CLIENT_FINISHED flag. This SSLeay
4137    era flag was never set throughout the codebase (only read). Also removed
4138    SSL3_FLAGS_POP_BUFFER which was only used if
4139    SSL3_FLAGS_DELAY_CLIENT_FINISHED was also set.
4140
4141    *Matt Caswell*
4142
4143  * Changed the default name options in the "ca", "crl", "req" and "x509"
4144    to be "oneline" instead of "compat".
4145
4146    *Richard Levitte*
4147
4148  * Remove SSL_OP_TLS_BLOCK_PADDING_BUG. This is SSLeay legacy, we're
4149    not aware of clients that still exhibit this bug, and the workaround
4150    hasn't been working properly for a while.
4151
4152    *Emilia Käsper*
4153
4154  * The return type of BIO_number_read() and BIO_number_written() as well as
4155    the corresponding num_read and num_write members in the BIO structure has
4156    changed from unsigned long to uint64_t. On platforms where an unsigned
4157    long is 32 bits (e.g. Windows) these counters could overflow if >4Gb is
4158    transferred.
4159
4160    *Matt Caswell*
4161
4162  * Given the pervasive nature of TLS extensions it is inadvisable to run
4163    OpenSSL without support for them. It also means that maintaining
4164    the OPENSSL_NO_TLSEXT option within the code is very invasive (and probably
4165    not well tested). Therefore the OPENSSL_NO_TLSEXT option has been removed.
4166
4167    *Matt Caswell*
4168
4169  * Removed support for the two export grade static DH ciphersuites
4170    EXP-DH-RSA-DES-CBC-SHA and EXP-DH-DSS-DES-CBC-SHA. These two ciphersuites
4171    were newly added (along with a number of other static DH ciphersuites) to
4172    1.0.2. However the two export ones have *never* worked since they were
4173    introduced. It seems strange in any case to be adding new export
4174    ciphersuites, and given "logjam" it also does not seem correct to fix them.
4175
4176    *Matt Caswell*
4177
4178  * Version negotiation has been rewritten. In particular SSLv23_method(),
4179    SSLv23_client_method() and SSLv23_server_method() have been deprecated,
4180    and turned into macros which simply call the new preferred function names
4181    TLS_method(), TLS_client_method() and TLS_server_method(). All new code
4182    should use the new names instead. Also as part of this change the ssl23.h
4183    header file has been removed.
4184
4185    *Matt Caswell*
4186
4187  * Support for Kerberos ciphersuites in TLS (RFC2712) has been removed. This
4188    code and the associated standard is no longer considered fit-for-purpose.
4189
4190    *Matt Caswell*
4191
4192  * RT2547 was closed.  When generating a private key, try to make the
4193    output file readable only by the owner.  This behavior change might
4194    be noticeable when interacting with other software.
4195
4196  * Documented all exdata functions.  Added CRYPTO_free_ex_index.
4197    Added a test.
4198
4199    *Rich Salz*
4200
4201  * Added HTTP GET support to the ocsp command.
4202
4203    *Rich Salz*
4204
4205  * Changed default digest for the dgst and enc commands from MD5 to
4206    sha256
4207
4208    *Rich Salz*
4209
4210  * RAND_pseudo_bytes has been deprecated. Users should use RAND_bytes instead.
4211
4212    *Matt Caswell*
4213
4214  * Added support for TLS extended master secret from
4215    draft-ietf-tls-session-hash-03.txt. Thanks for Alfredo Pironti for an
4216    initial patch which was a great help during development.
4217
4218    *Steve Henson*
4219
4220  * All libssl internal structures have been removed from the public header
4221    files, and the OPENSSL_NO_SSL_INTERN option has been removed (since it is
4222    now redundant). Users should not attempt to access internal structures
4223    directly. Instead they should use the provided API functions.
4224
4225    *Matt Caswell*
4226
4227  * config has been changed so that by default OPENSSL_NO_DEPRECATED is used.
4228    Access to deprecated functions can be re-enabled by running config with
4229    "enable-deprecated". In addition applications wishing to use deprecated
4230    functions must define OPENSSL_USE_DEPRECATED. Note that this new behaviour
4231    will, by default, disable some transitive includes that previously existed
4232    in the header files (e.g. ec.h will no longer, by default, include bn.h)
4233
4234    *Matt Caswell*
4235
4236  * Added support for OCB mode. OpenSSL has been granted a patent license
4237    compatible with the OpenSSL license for use of OCB. Details are available
4238    at <https://www.openssl.org/source/OCB-patent-grant-OpenSSL.pdf>. Support
4239    for OCB can be removed by calling config with no-ocb.
4240
4241    *Matt Caswell*
4242
4243  * SSLv2 support has been removed.  It still supports receiving a SSLv2
4244    compatible client hello.
4245
4246    *Kurt Roeckx*
4247
4248  * Increased the minimal RSA keysize from 256 to 512 bits [Rich Salz],
4249    done while fixing the error code for the key-too-small case.
4250
4251    *Annie Yousar <a.yousar@informatik.hu-berlin.de>*
4252
4253  * CA.sh has been removed; use CA.pl instead.
4254
4255    *Rich Salz*
4256
4257  * Removed old DES API.
4258
4259    *Rich Salz*
4260
4261  * Remove various unsupported platforms:
4262       Sony NEWS4
4263       BEOS and BEOS_R5
4264       NeXT
4265       SUNOS
4266       MPE/iX
4267       Sinix/ReliantUNIX RM400
4268       DGUX
4269       NCR
4270       Tandem
4271       Cray
4272       16-bit platforms such as WIN16
4273
4274    *Rich Salz*
4275
4276  * Clean up OPENSSL_NO_xxx #define's
4277    - Use setbuf() and remove OPENSSL_NO_SETVBUF_IONBF
4278    - Rename OPENSSL_SYSNAME_xxx to OPENSSL_SYS_xxx
4279    - OPENSSL_NO_EC{DH,DSA} merged into OPENSSL_NO_EC
4280    - OPENSSL_NO_RIPEMD160, OPENSSL_NO_RIPEMD merged into OPENSSL_NO_RMD160
4281    - OPENSSL_NO_FP_API merged into OPENSSL_NO_STDIO
4282    - Remove OPENSSL_NO_BIO OPENSSL_NO_BUFFER OPENSSL_NO_CHAIN_VERIFY
4283      OPENSSL_NO_EVP OPENSSL_NO_FIPS_ERR OPENSSL_NO_HASH_COMP
4284      OPENSSL_NO_LHASH OPENSSL_NO_OBJECT OPENSSL_NO_SPEED OPENSSL_NO_STACK
4285      OPENSSL_NO_X509 OPENSSL_NO_X509_VERIFY
4286    - Remove MS_STATIC; it's a relic from platforms <32 bits.
4287
4288    *Rich Salz*
4289
4290  * Cleaned up dead code
4291      Remove all but one '#ifdef undef' which is to be looked at.
4292
4293    *Rich Salz*
4294
4295  * Clean up calling of xxx_free routines.
4296       Just like free(), fix most of the xxx_free routines to accept
4297       NULL.  Remove the non-null checks from callers.  Save much code.
4298
4299    *Rich Salz*
4300
4301  * Add secure heap for storage of private keys (when possible).
4302    Add BIO_s_secmem(), CBIGNUM, etc.
4303    Contributed by Akamai Technologies under our Corporate CLA.
4304
4305    *Rich Salz*
4306
4307  * Experimental support for a new, fast, unbiased prime candidate generator,
4308    bn_probable_prime_dh_coprime(). Not currently used by any prime generator.
4309
4310    *Felix Laurie von Massenbach <felix@erbridge.co.uk>*
4311
4312  * New output format NSS in the sess_id command line tool. This allows
4313    exporting the session id and the master key in NSS keylog format.
4314
4315    *Martin Kaiser <martin@kaiser.cx>*
4316
4317  * Harmonize version and its documentation. -f flag is used to display
4318    compilation flags.
4319
4320    *mancha <mancha1@zoho.com>*
4321
4322  * Fix eckey_priv_encode so it immediately returns an error upon a failure
4323    in i2d_ECPrivateKey.  Thanks to Ted Unangst for feedback on this issue.
4324
4325    *mancha <mancha1@zoho.com>*
4326
4327  * Fix some double frees. These are not thought to be exploitable.
4328
4329    *mancha <mancha1@zoho.com>*
4330
4331  * A missing bounds check in the handling of the TLS heartbeat extension
4332    can be used to reveal up to 64k of memory to a connected client or
4333    server.
4334
4335    Thanks for Neel Mehta of Google Security for discovering this bug and to
4336    Adam Langley <agl@chromium.org> and Bodo Moeller <bmoeller@acm.org> for
4337    preparing the fix ([CVE-2014-0160])
4338
4339    *Adam Langley, Bodo Moeller*
4340
4341  * Fix for the attack described in the paper "Recovering OpenSSL
4342    ECDSA Nonces Using the FLUSH+RELOAD Cache Side-channel Attack"
4343    by Yuval Yarom and Naomi Benger. Details can be obtained from:
4344    <http://eprint.iacr.org/2014/140>
4345
4346    Thanks to Yuval Yarom and Naomi Benger for discovering this
4347    flaw and to Yuval Yarom for supplying a fix ([CVE-2014-0076])
4348
4349    *Yuval Yarom and Naomi Benger*
4350
4351  * Use algorithm specific chains in SSL_CTX_use_certificate_chain_file():
4352    this fixes a limitation in previous versions of OpenSSL.
4353
4354    *Steve Henson*
4355
4356  * Experimental encrypt-then-mac support.
4357
4358    Experimental support for encrypt then mac from
4359    draft-gutmann-tls-encrypt-then-mac-02.txt
4360
4361    To enable it set the appropriate extension number (0x42 for the test
4362    server) using e.g. -DTLSEXT_TYPE_encrypt_then_mac=0x42
4363
4364    For non-compliant peers (i.e. just about everything) this should have no
4365    effect.
4366
4367    WARNING: EXPERIMENTAL, SUBJECT TO CHANGE.
4368
4369    *Steve Henson*
4370
4371  * Add EVP support for key wrapping algorithms, to avoid problems with
4372    existing code the flag EVP_CIPHER_CTX_WRAP_ALLOW has to be set in
4373    the EVP_CIPHER_CTX or an error is returned. Add AES and DES3 wrap
4374    algorithms and include tests cases.
4375
4376    *Steve Henson*
4377
4378  * Extend CMS code to support RSA-PSS signatures and RSA-OAEP for
4379    enveloped data.
4380
4381    *Steve Henson*
4382
4383  * Extended RSA OAEP support via EVP_PKEY API. Options to specify digest,
4384    MGF1 digest and OAEP label.
4385
4386    *Steve Henson*
4387
4388  * Make openssl verify return errors.
4389
4390    *Chris Palmer <palmer@google.com> and Ben Laurie*
4391
4392  * New function ASN1_TIME_diff to calculate the difference between two
4393    ASN1_TIME structures or one structure and the current time.
4394
4395    *Steve Henson*
4396
4397  * Update fips_test_suite to support multiple command line options. New
4398    test to induce all self test errors in sequence and check expected
4399    failures.
4400
4401    *Steve Henson*
4402
4403  * Add FIPS_{rsa,dsa,ecdsa}_{sign,verify} functions which digest and
4404    sign or verify all in one operation.
4405
4406    *Steve Henson*
4407
4408  * Add fips_algvs: a multicall fips utility incorporating all the algorithm
4409    test programs and fips_test_suite. Includes functionality to parse
4410    the minimal script output of fipsalgest.pl directly.
4411
4412    *Steve Henson*
4413
4414  * Add authorisation parameter to FIPS_module_mode_set().
4415
4416    *Steve Henson*
4417
4418  * Add FIPS selftest for ECDH algorithm using P-224 and B-233 curves.
4419
4420    *Steve Henson*
4421
4422  * Use separate DRBG fields for internal and external flags. New function
4423    FIPS_drbg_health_check() to perform on demand health checking. Add
4424    generation tests to fips_test_suite with reduced health check interval to
4425    demonstrate periodic health checking. Add "nodh" option to
4426    fips_test_suite to skip very slow DH test.
4427
4428    *Steve Henson*
4429
4430  * New function FIPS_get_cipherbynid() to lookup FIPS supported ciphers
4431    based on NID.
4432
4433    *Steve Henson*
4434
4435  * More extensive health check for DRBG checking many more failure modes.
4436    New function FIPS_selftest_drbg_all() to handle every possible DRBG
4437    combination: call this in fips_test_suite.
4438
4439    *Steve Henson*
4440
4441  * Add support for canonical generation of DSA parameter 'g'. See
4442    FIPS 186-3 A.2.3.
4443
4444  * Add support for HMAC DRBG from SP800-90. Update DRBG algorithm test and
4445    POST to handle HMAC cases.
4446
4447    *Steve Henson*
4448
4449  * Add functions FIPS_module_version() and FIPS_module_version_text()
4450    to return numerical and string versions of the FIPS module number.
4451
4452    *Steve Henson*
4453
4454  * Rename FIPS_mode_set and FIPS_mode to FIPS_module_mode_set and
4455    FIPS_module_mode. FIPS_mode and FIPS_mode_set will be implemented
4456    outside the validated module in the FIPS capable OpenSSL.
4457
4458    *Steve Henson*
4459
4460  * Minor change to DRBG entropy callback semantics. In some cases
4461    there is no multiple of the block length between min_len and
4462    max_len. Allow the callback to return more than max_len bytes
4463    of entropy but discard any extra: it is the callback's responsibility
4464    to ensure that the extra data discarded does not impact the
4465    requested amount of entropy.
4466
4467    *Steve Henson*
4468
4469  * Add PRNG security strength checks to RSA, DSA and ECDSA using
4470    information in FIPS186-3, SP800-57 and SP800-131A.
4471
4472    *Steve Henson*
4473
4474  * CCM support via EVP. Interface is very similar to GCM case except we
4475    must supply all data in one chunk (i.e. no update, final) and the
4476    message length must be supplied if AAD is used. Add algorithm test
4477    support.