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