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