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