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