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