Add an extra reduction step to RSAZ mod_exp implementations
[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.1](#openssl-31)
14  - [OpenSSL 3.0](#openssl-30)
15  - [OpenSSL 1.1.1](#openssl-111)
16  - [OpenSSL 1.1.0](#openssl-110)
17  - [OpenSSL 1.0.2](#openssl-102)
18  - [OpenSSL 1.0.1](#openssl-101)
19  - [OpenSSL 1.0.0](#openssl-100)
20  - [OpenSSL 0.9.x](#openssl-09x)
21
22 OpenSSL 3.1
23 -----------
24
25 ### Changes between 3.0 and 3.1 [xx XXX xxxx]
26
27  * Add more SRTP protection profiles from RFC8723 and RFC8269.
28
29    *Kijin Kim*
30
31  * Extended Kernel TLS (KTLS) to support TLS 1.3 receive offload.
32
33    *Daiki Ueno, John Baldwin and Dmitry Podgorny*
34
35  * Add support for TCP Fast Open (RFC7413) to macOS, Linux, and FreeBSD where
36    supported and enabled.
37
38    *Todd Short*
39
40  * Add ciphersuites based on DHE_PSK (RFC 4279) and ECDHE_PSK (RFC 5489)
41    to the list of ciphersuites providing Perfect Forward Secrecy as
42    required by SECLEVEL >= 3.
43
44    *Dmitry Belyavskiy, Nicola Tuveri*
45
46  * Add new SSL APIs to aid in efficiently implementing TLS/SSL fingerprinting.  The
47    SSL_CTRL_GET_IANA_GROUPS control code, exposed as the SSL_get0_iana_groups()
48    function-like macro, retrieves the list of supported groups sent by the peer,
49    and the function SSL_client_hello_get_extension_order() populates a caller-supplied
50    array with the list of extension types present in the ClientHello, in order of
51    appearance.
52
53    *Phus Lu*
54
55  * Fixed PEM_write_bio_PKCS8PrivateKey() and PEM_write_bio_PKCS8PrivateKey_nid()
56    to make it possible to use empty passphrase strings.
57
58    *Darshan Sen*
59
60  * RNDR and RNDRRS support in provider functions to provide
61    random number generation for Arm CPUs (aarch64).
62
63    *Orr Toledano*
64
65  * s_client and s_server apps now explicitly say when the TLS version
66    does not include the renegotiation mechanism. This avoids confusion
67    between that scenario versus when the TLS version includes secure
68    renegotiation but the peer lacks support for it.
69
70    *Felipe Gasper*
71
72  * AES-GCM enabled with AVX512 vAES and vPCLMULQDQ.
73
74    *Tomasz Kantecki, Andrey Matyukov*
75
76  * The default SSL/TLS security level has been changed from 1 to 2. RSA,
77    DSA and DH keys of 1024 bits and above and less than 2048 bits and ECC keys
78    of 160 bits and above and less than 224 bits were previously accepted by
79    default but are now no longer allowed. By default TLS compression was
80    already disabled in previous OpenSSL versions. At security level 2 it cannot
81    be enabled.
82
83    *Matt Caswell*
84
85  * The SSL_CTX_set_cipher_list family functions now accept ciphers using their
86    IANA standard names.
87
88    *Erik Lax*
89
90  * The PVK key derivation function has been moved from b2i_PVK_bio_ex() into
91    the legacy crypto provider as an EVP_KDF. Applications requiring this KDF
92    will need to load the legacy crypto provider.
93
94    *Paul Dale*
95
96  * The various OBJ_* functions have been made thread safe.
97
98    *Paul Dale*
99
100  * CCM8 cipher suites in TLS have been downgraded to security level zero
101    because they use a short authentication tag which lowers their strength.
102
103    *Paul Dale*
104
105  * Subject or issuer names in X.509 objects are now displayed as UTF-8 strings
106    by default.
107
108    *Dmitry Belyavskiy*
109
110  * Parallel dual-prime 1536/2048-bit modular exponentiation for
111    AVX512_IFMA capable processors.
112
113    *Sergey Kirillov, Andrey Matyukov (Intel Corp)*
114
115 OpenSSL 3.0
116 -----------
117
118 For OpenSSL 3.0 a [Migration guide][] has been added, so the CHANGES entries
119 listed here are only a brief description.
120 The migration guide contains more detailed information related to new features,
121 breaking changes, and mappings for the large list of deprecated functions.
122
123 [Migration guide]: https://github.com/openssl/openssl/tree/master/doc/man7/migration_guide.pod
124
125 ### Changes between 3.0.3 and 3.0.4
126
127  * Case insensitive string comparison no longer uses locales.  It has instead
128    been directly implemented.
129
130    *Paul Dale*
131
132 ### Changes between 3.0.2 and 3.0.3
133
134  * Case insensitive string comparison is reimplemented via new locale-agnostic
135    comparison functions OPENSSL_str[n]casecmp always using the POSIX locale for
136    comparison. The previous implementation had problems when the Turkish locale
137    was used.
138
139    *Dmitry Belyavskiy*
140
141  * Fixed a bug in the c_rehash script which was not properly sanitising shell
142    metacharacters to prevent command injection.  This script is distributed by
143    some operating systems in a manner where it is automatically executed.  On
144    such operating systems, an attacker could execute arbitrary commands with the
145    privileges of the script.
146
147    Use of the c_rehash script is considered obsolete and should be replaced
148    by the OpenSSL rehash command line tool.
149    (CVE-2022-1292)
150
151    *Tomáš Mráz*
152
153  * Fixed a bug in the function `OCSP_basic_verify` that verifies the signer
154    certificate on an OCSP response. The bug caused the function in the case
155    where the (non-default) flag OCSP_NOCHECKS is used to return a postivie
156    response (meaning a successful verification) even in the case where the
157    response signing certificate fails to verify.
158
159    It is anticipated that most users of `OCSP_basic_verify` will not use the
160    OCSP_NOCHECKS flag. In this case the `OCSP_basic_verify` function will return
161    a negative value (indicating a fatal error) in the case of a certificate
162    verification failure. The normal expected return value in this case would be
163    0.
164
165    This issue also impacts the command line OpenSSL "ocsp" application. When
166    verifying an ocsp response with the "-no_cert_checks" option the command line
167    application will report that the verification is successful even though it
168    has in fact failed. In this case the incorrect successful response will also
169    be accompanied by error messages showing the failure and contradicting the
170    apparently successful result.
171    ([CVE-2022-1343])
172
173    *Matt Caswell*
174
175  * Fixed a bug where the RC4-MD5 ciphersuite incorrectly used the
176    AAD data as the MAC key. This made the MAC key trivially predictable.
177
178    An attacker could exploit this issue by performing a man-in-the-middle attack
179    to modify data being sent from one endpoint to an OpenSSL 3.0 recipient such
180    that the modified data would still pass the MAC integrity check.
181
182    Note that data sent from an OpenSSL 3.0 endpoint to a non-OpenSSL 3.0
183    endpoint will always be rejected by the recipient and the connection will
184    fail at that point. Many application protocols require data to be sent from
185    the client to the server first. Therefore, in such a case, only an OpenSSL
186    3.0 server would be impacted when talking to a non-OpenSSL 3.0 client.
187
188    If both endpoints are OpenSSL 3.0 then the attacker could modify data being
189    sent in both directions. In this case both clients and servers could be
190    affected, regardless of the application protocol.
191
192    Note that in the absence of an attacker this bug means that an OpenSSL 3.0
193    endpoint communicating with a non-OpenSSL 3.0 endpoint will fail to complete
194    the handshake when using this ciphersuite.
195
196    The confidentiality of data is not impacted by this issue, i.e. an attacker
197    cannot decrypt data that has been encrypted using this ciphersuite - they can
198    only modify it.
199
200    In order for this attack to work both endpoints must legitimately negotiate
201    the RC4-MD5 ciphersuite. This ciphersuite is not compiled by default in
202    OpenSSL 3.0, and is not available within the default provider or the default
203    ciphersuite list. This ciphersuite will never be used if TLSv1.3 has been
204    negotiated. In order for an OpenSSL 3.0 endpoint to use this ciphersuite the
205    following must have occurred:
206
207    1) OpenSSL must have been compiled with the (non-default) compile time option
208       enable-weak-ssl-ciphers
209
210    2) OpenSSL must have had the legacy provider explicitly loaded (either
211       through application code or via configuration)
212
213    3) The ciphersuite must have been explicitly added to the ciphersuite list
214
215    4) The libssl security level must have been set to 0 (default is 1)
216
217    5) A version of SSL/TLS below TLSv1.3 must have been negotiated
218
219    6) Both endpoints must negotiate the RC4-MD5 ciphersuite in preference to any
220       others that both endpoints have in common
221    (CVE-2022-1434)
222
223    *Matt Caswell*
224
225  * Fix a bug in the OPENSSL_LH_flush() function that breaks reuse of the memory
226    occuppied by the removed hash table entries.
227
228    This function is used when decoding certificates or keys. If a long lived
229    process periodically decodes certificates or keys its memory usage will
230    expand without bounds and the process might be terminated by the operating
231    system causing a denial of service. Also traversing the empty hash table
232    entries will take increasingly more time.
233
234    Typically such long lived processes might be TLS clients or TLS servers
235    configured to accept client certificate authentication.
236    (CVE-2022-1473)
237
238    *Hugo Landau, Aliaksei Levin*
239
240  * The functions `OPENSSL_LH_stats` and `OPENSSL_LH_stats_bio` now only report
241    the `num_items`, `num_nodes` and `num_alloc_nodes` statistics. All other
242    statistics are no longer supported. For compatibility, these statistics are
243    still listed in the output but are now always reported as zero.
244
245    *Hugo Landau*
246
247 ### Changes between 3.0.1 and 3.0.2 [15 mar 2022]
248
249  * Fixed a bug in the BN_mod_sqrt() function that can cause it to loop forever
250    for non-prime moduli.
251
252    Internally this function is used when parsing certificates that contain
253    elliptic curve public keys in compressed form or explicit elliptic curve
254    parameters with a base point encoded in compressed form.
255
256    It is possible to trigger the infinite loop by crafting a certificate that
257    has invalid explicit curve parameters.
258
259    Since certificate parsing happens prior to verification of the certificate
260    signature, any process that parses an externally supplied certificate may thus
261    be subject to a denial of service attack. The infinite loop can also be
262    reached when parsing crafted private keys as they can contain explicit
263    elliptic curve parameters.
264
265    Thus vulnerable situations include:
266
267     - TLS clients consuming server certificates
268     - TLS servers consuming client certificates
269     - Hosting providers taking certificates or private keys from customers
270     - Certificate authorities parsing certification requests from subscribers
271     - Anything else which parses ASN.1 elliptic curve parameters
272
273    Also any other applications that use the BN_mod_sqrt() where the attacker
274    can control the parameter values are vulnerable to this DoS issue.
275    ([CVE-2022-0778])
276
277    *Tomáš Mráz*
278
279  * Add ciphersuites based on DHE_PSK (RFC 4279) and ECDHE_PSK (RFC 5489)
280    to the list of ciphersuites providing Perfect Forward Secrecy as
281    required by SECLEVEL >= 3.
282
283    *Dmitry Belyavskiy, Nicola Tuveri*
284
285  * Made the AES constant time code for no-asm configurations
286    optional due to the resulting 95% performance degradation.
287    The AES constant time code can be enabled, for no assembly
288    builds, with: ./config no-asm -DOPENSSL_AES_CONST_TIME
289
290    *Paul Dale*
291
292  * Fixed PEM_write_bio_PKCS8PrivateKey() to make it possible to use empty
293    passphrase strings.
294
295    *Darshan Sen*
296
297  * The negative return value handling of the certificate verification callback
298    was reverted. The replacement is to set the verification retry state with
299    the SSL_set_retry_verify() function.
300
301    *Tomáš Mráz*
302
303 ### Changes between 3.0.0 and 3.0.1 [14 dec 2021]
304
305  * Fixed invalid handling of X509_verify_cert() internal errors in libssl
306    Internally libssl in OpenSSL calls X509_verify_cert() on the client side to
307    verify a certificate supplied by a server. That function may return a
308    negative return value to indicate an internal error (for example out of
309    memory). Such a negative return value is mishandled by OpenSSL and will cause
310    an IO function (such as SSL_connect() or SSL_do_handshake()) to not indicate
311    success and a subsequent call to SSL_get_error() to return the value
312    SSL_ERROR_WANT_RETRY_VERIFY. This return value is only supposed to be
313    returned by OpenSSL if the application has previously called
314    SSL_CTX_set_cert_verify_callback(). Since most applications do not do this
315    the SSL_ERROR_WANT_RETRY_VERIFY return value from SSL_get_error() will be
316    totally unexpected and applications may not behave correctly as a result. The
317    exact behaviour will depend on the application but it could result in
318    crashes, infinite loops or other similar incorrect responses.
319
320    This issue is made more serious in combination with a separate bug in OpenSSL
321    3.0 that will cause X509_verify_cert() to indicate an internal error when
322    processing a certificate chain. This will occur where a certificate does not
323    include the Subject Alternative Name extension but where a Certificate
324    Authority has enforced name constraints. This issue can occur even with valid
325    chains.
326    ([CVE-2021-4044])
327
328    *Matt Caswell*
329
330  * Corrected a few file name and file reference bugs in the build,
331    installation and setup scripts, which lead to installation verification
332    failures.  Slightly enhanced the installation verification script.
333
334    *Richard Levitte*
335
336  * Fixed EVP_PKEY_eq() to make it possible to use it with strictly private
337    keys.
338
339    *Richard Levitte*
340
341  * Fixed PVK encoder to properly query for the passphrase.
342
343    *Tomáš Mráz*
344
345  * Multiple fixes in the OSSL_HTTP API functions.
346
347    *David von Oheimb*
348
349  * Allow sign extension in OSSL_PARAM_allocate_from_text() for the
350    OSSL_PARAM_INTEGER data type and return error on negative numbers
351    used with the OSSL_PARAM_UNSIGNED_INTEGER data type. Make
352    OSSL_PARAM_BLD_push_BN{,_pad}() return an error on negative numbers.
353
354    *Richard Levitte*
355
356  * Allow copying uninitialized digest contexts with EVP_MD_CTX_copy_ex.
357
358    *Tomáš Mráz*
359
360  * Fixed detection of ARMv7 and ARM64 CPU features on FreeBSD.
361
362    *Allan Jude*
363
364  * Multiple threading fixes.
365
366    *Matt Caswell*
367
368  * Added NULL digest implementation to keep compatibility with 1.1.1 version.
369
370    *Tomáš Mráz*
371
372  * Allow fetching an operation from the provider that owns an unexportable key
373    as a fallback if that is still allowed by the property query.
374
375    *Richard Levitte*
376
377 ### Changes between 1.1.1 and 3.0.0 [7 sep 2021]
378
379  * TLS_MAX_VERSION, DTLS_MAX_VERSION and DTLS_MIN_VERSION constants are now
380    deprecated.
381
382    *Matt Caswell*
383
384  * The `OPENSSL_s390xcap` environment variable can be used to set bits in the
385    S390X capability vector to zero. This simplifies testing of different code
386    paths on S390X architecture.
387
388    *Patrick Steuer*
389
390  * Encrypting more than 2^64 TLS records with AES-GCM is disallowed
391    as per FIPS 140-2 IG A.5 "Key/IV Pair Uniqueness Requirements from
392    SP 800-38D". The communication will fail at this point.
393
394    *Paul Dale*
395
396  * The EC_GROUP_clear_free() function is deprecated as there is nothing
397    confidential in EC_GROUP data.
398
399    *Nicola Tuveri*
400
401  * The byte order mark (BOM) character is ignored if encountered at the
402    beginning of a PEM-formatted file.
403
404    *Dmitry Belyavskiy*
405
406  * Added CMS support for the Russian GOST algorithms.
407
408    *Dmitry Belyavskiy*
409
410  * Due to move of the implementation of cryptographic operations
411    to the providers, validation of various operation parameters can
412    be postponed until the actual operation is executed where previously
413    it happened immediately when an operation parameter was set.
414
415    For example when setting an unsupported curve with
416    EVP_PKEY_CTX_set_ec_paramgen_curve_nid() this function call will not
417    fail but later keygen operations with the EVP_PKEY_CTX will fail.
418
419    *OpenSSL team members and many third party contributors*
420
421  * The EVP_get_cipherbyname() function will return NULL for algorithms such as
422    "AES-128-SIV", "AES-128-CBC-CTS" and "CAMELLIA-128-CBC-CTS" which were
423    previously only accessible via low level interfaces. Use EVP_CIPHER_fetch()
424    instead to retrieve these algorithms from a provider.
425
426    *Shane Lontis*
427
428  * On build targets where the multilib postfix is set in the build
429    configuration the libdir directory was changing based on whether
430    the lib directory with the multilib postfix exists on the system
431    or not. This unpredictable behavior was removed and eventual
432    multilib postfix is now always added to the default libdir. Use
433    `--libdir=lib` to override the libdir if adding the postfix is
434    undesirable.
435
436    *Jan Lána*
437
438  * The triple DES key wrap functionality now conforms to RFC 3217 but is
439    no longer interoperable with OpenSSL 1.1.1.
440
441    *Paul Dale*
442
443  * The ERR_GET_FUNC() function was removed.  With the loss of meaningful
444    function codes, this function can only cause problems for calling
445    applications.
446
447    *Paul Dale*
448
449  * Add a configurable flag to output date formats as ISO 8601. Does not
450    change the default date format.
451
452    *William Edmisten*
453
454  * Version of MSVC earlier than 1300 could get link warnings, which could
455    be suppressed if the undocumented -DI_CAN_LIVE_WITH_LNK4049 was set.
456    Support for this flag has been removed.
457
458    *Rich Salz*
459
460  * Rework and make DEBUG macros consistent. Remove unused -DCONF_DEBUG,
461    -DBN_CTX_DEBUG, and REF_PRINT. Add a new tracing category and use it for
462    printing reference counts. Rename -DDEBUG_UNUSED to -DUNUSED_RESULT_DEBUG
463    Fix BN_DEBUG_RAND so it compiles and, when set, force DEBUG_RAND to be set
464    also. Rename engine_debug_ref to be ENGINE_REF_PRINT also for consistency.
465
466    *Rich Salz*
467
468  * The signatures of the functions to get and set options on SSL and
469    SSL_CTX objects changed from "unsigned long" to "uint64_t" type.
470    Some source code changes may be required.
471
472    *Rich Salz*
473
474  * The public definitions of conf_method_st and conf_st have been
475    deprecated. They will be made opaque in a future release.
476
477    *Rich Salz and Tomáš Mráz*
478
479  * Client-initiated renegotiation is disabled by default. To allow it, use
480    the -client_renegotiation option, the SSL_OP_ALLOW_CLIENT_RENEGOTIATION
481    flag, or the "ClientRenegotiation" config parameter as appropriate.
482
483    *Rich Salz*
484
485  * Add "abspath" and "includedir" pragma's to config files, to prevent,
486    or modify relative pathname inclusion.
487
488    *Rich Salz*
489
490  * OpenSSL includes a cryptographic module that is intended to be FIPS 140-2
491    validated. Please consult the README-FIPS and
492    README-PROVIDERS files, as well as the migration guide.
493
494    *OpenSSL team members and many third party contributors*
495
496  * For the key types DH and DHX the allowed settable parameters are now different.
497
498    *Shane Lontis*
499
500  * The openssl commands that read keys, certificates, and CRLs now
501    automatically detect the PEM or DER format of the input files.
502
503    *David von Oheimb, Richard Levitte, and Tomáš Mráz*
504
505  * Added enhanced PKCS#12 APIs which accept a library context.
506
507    *Jon Spillett*
508
509  * The default manual page suffix ($MANSUFFIX) has been changed to "ossl"
510
511    *Matt Caswell*
512
513  * Added support for Kernel TLS (KTLS).
514
515    *Boris Pismenny, John Baldwin and Andrew Gallatin*
516
517  * Support for RFC 5746 secure renegotiation is now required by default for
518    SSL or TLS connections to succeed.
519
520    *Benjamin Kaduk*
521
522  * The signature of the `copy` functional parameter of the
523    EVP_PKEY_meth_set_copy() function has changed so its `src` argument is
524    now `const EVP_PKEY_CTX *` instead of `EVP_PKEY_CTX *`. Similarly
525    the signature of the `pub_decode` functional parameter of the
526    EVP_PKEY_asn1_set_public() function has changed so its `pub` argument is
527    now `const X509_PUBKEY *` instead of `X509_PUBKEY *`.
528
529    *David von Oheimb*
530
531  * The error return values from some control calls (ctrl) have changed.
532
533    *Paul Dale*
534
535  * A public key check is now performed during EVP_PKEY_derive_set_peer().
536
537    *Shane Lontis*
538
539  * Many functions in the EVP_ namespace that are getters of values from
540    implementations or contexts were renamed to include get or get0 in their
541    names. Old names are provided as macro aliases for compatibility and
542    are not deprecated.
543
544    *Tomáš Mráz*
545
546  * The EVP_PKEY_CTRL_PKCS7_ENCRYPT, EVP_PKEY_CTRL_PKCS7_DECRYPT,
547    EVP_PKEY_CTRL_PKCS7_SIGN, EVP_PKEY_CTRL_CMS_ENCRYPT,
548    EVP_PKEY_CTRL_CMS_DECRYPT, and EVP_PKEY_CTRL_CMS_SIGN control operations
549    are deprecated.
550
551    *Tomáš Mráz*
552
553  * The EVP_PKEY_public_check() and EVP_PKEY_param_check() functions now work for
554    more key types.
555
556  * The output from the command line applications may have minor
557    changes.
558
559    *Paul Dale*
560
561  * The output from numerous "printing" may have minor changes.
562
563    *David von Oheimb*
564
565  * Windows thread synchronization uses read/write primitives (SRWLock) when
566    supported by the OS, otherwise CriticalSection continues to be used.
567
568    *Vincent Drake*
569
570  * Add filter BIO BIO_f_readbuffer() that allows BIO_tell() and BIO_seek() to
571    work on read only BIO source/sinks that do not support these functions.
572    This allows piping or redirection of a file BIO using stdin to be buffered
573    into memory. This is used internally in OSSL_DECODER_from_bio().
574
575    *Shane Lontis*
576
577  * OSSL_STORE_INFO_get_type() may now return an additional value. In 1.1.1
578    this function would return one of the values OSSL_STORE_INFO_NAME,
579    OSSL_STORE_INFO_PKEY, OSSL_STORE_INFO_PARAMS, OSSL_STORE_INFO_CERT or
580    OSSL_STORE_INFO_CRL. Decoded public keys would previously have been reported
581    as type OSSL_STORE_INFO_PKEY in 1.1.1. In 3.0 decoded public keys are now
582    reported as having the new type OSSL_STORE_INFO_PUBKEY. Applications
583    using this function should be amended to handle the changed return value.
584
585    *Richard Levitte*
586
587  * Improved adherence to Enhanced Security Services (ESS, RFC 2634 and RFC 5035)
588    for the TSP and CMS Advanced Electronic Signatures (CAdES) implementations.
589    As required by RFC 5035 check both ESSCertID and ESSCertIDv2 if both present.
590    Correct the semantics of checking the validation chain in case ESSCertID{,v2}
591    contains more than one certificate identifier: This means that all
592    certificates referenced there MUST be part of the validation chain.
593
594    *David von Oheimb*
595
596  * The implementation of older EVP ciphers related to CAST, IDEA, SEED, RC2, RC4,
597    RC5, DESX and DES have been moved to the legacy provider.
598
599    *Matt Caswell*
600
601  * The implementation of the EVP digests MD2, MD4, MDC2, WHIRLPOOL and
602    RIPEMD-160 have been moved to the legacy provider.
603
604    *Matt Caswell*
605
606  * The deprecated function EVP_PKEY_get0() now returns NULL being called for a
607    provided key.
608
609    *Dmitry Belyavskiy*
610
611  * The deprecated functions EVP_PKEY_get0_RSA(),
612    EVP_PKEY_get0_DSA(), EVP_PKEY_get0_EC_KEY(), EVP_PKEY_get0_DH(),
613    EVP_PKEY_get0_hmac(), EVP_PKEY_get0_poly1305() and EVP_PKEY_get0_siphash() as
614    well as the similarly named "get1" functions behave differently in
615    OpenSSL 3.0.
616
617    *Matt Caswell*
618
619  * A number of functions handling low-level keys or engines were deprecated
620    including EVP_PKEY_set1_engine(), EVP_PKEY_get0_engine(), EVP_PKEY_assign(),
621    EVP_PKEY_get0(), EVP_PKEY_get0_hmac(), EVP_PKEY_get0_poly1305() and
622    EVP_PKEY_get0_siphash().
623
624    *Matt Caswell*
625
626  * PKCS#5 PBKDF1 key derivation has been moved from PKCS5_PBE_keyivgen() into
627    the legacy crypto provider as an EVP_KDF. Applications requiring this KDF
628    will need to load the legacy crypto provider. This includes these PBE
629    algorithms which use this KDF:
630    - NID_pbeWithMD2AndDES_CBC
631    - NID_pbeWithMD5AndDES_CBC
632    - NID_pbeWithSHA1AndRC2_CBC
633    - NID_pbeWithMD2AndRC2_CBC
634    - NID_pbeWithMD5AndRC2_CBC
635    - NID_pbeWithSHA1AndDES_CBC
636
637    *Jon Spillett*
638
639  * Deprecated obsolete BIO_set_callback(), BIO_get_callback(), and
640    BIO_debug_callback() functions.
641
642    *Tomáš Mráz*
643
644  * Deprecated obsolete EVP_PKEY_CTX_get0_dh_kdf_ukm() and
645    EVP_PKEY_CTX_get0_ecdh_kdf_ukm() functions.
646
647    *Tomáš Mráz*
648
649  * The RAND_METHOD APIs have been deprecated.
650
651    *Paul Dale*
652
653  * The SRP APIs have been deprecated.
654
655    *Matt Caswell*
656
657  * Add a compile time option to prevent the caching of provider fetched
658    algorithms.  This is enabled by including the no-cached-fetch option
659    at configuration time.
660
661    *Paul Dale*
662
663  * pkcs12 now uses defaults of PBKDF2, AES and SHA-256, with a MAC iteration
664    count of PKCS12_DEFAULT_ITER.
665
666    *Tomáš Mráz and Sahana Prasad*
667
668  * The openssl speed command does not use low-level API calls anymore.
669
670    *Tomáš Mráz*
671
672  * Parallel dual-prime 1024-bit modular exponentiation for AVX512_IFMA
673    capable processors.
674
675    *Ilya Albrekht, Sergey Kirillov, Andrey Matyukov (Intel Corp)*
676
677  * Combining the Configure options no-ec and no-dh no longer disables TLSv1.3.
678
679    *Matt Caswell*
680
681  * Implemented support for fully "pluggable" TLSv1.3 groups. This means that
682    providers may supply their own group implementations (using either the "key
683    exchange" or the "key encapsulation" methods) which will automatically be
684    detected and used by libssl.
685
686    *Matt Caswell, Nicola Tuveri*
687
688  * The undocumented function X509_certificate_type() has been deprecated;
689
690    *Rich Salz*
691
692  * Deprecated the obsolete BN_pseudo_rand() and BN_pseudo_rand_range().
693
694    *Tomáš Mráz*
695
696  * Removed RSA padding mode for SSLv23 (which was only used for
697    SSLv2). This includes the functions RSA_padding_check_SSLv23() and
698    RSA_padding_add_SSLv23() and the `-ssl` option in the deprecated
699    `rsautl` command.
700
701    *Rich Salz*
702
703  * Deprecated the obsolete X9.31 RSA key generation related functions.
704
705  * While a callback function set via `SSL_CTX_set_cert_verify_callback()`
706    is not allowed to return a value > 1, this is no more taken as failure.
707
708    *Viktor Dukhovni and David von Oheimb*
709
710  * Deprecated the obsolete X9.31 RSA key generation related functions
711    BN_X931_generate_Xpq(), BN_X931_derive_prime_ex(), and
712    BN_X931_generate_prime_ex().
713
714    *Tomáš Mráz*
715
716  * The default key generation method for the regular 2-prime RSA keys was
717    changed to the FIPS 186-4 B.3.6 method.
718
719    *Shane Lontis*
720
721  * Deprecated the BN_is_prime_ex() and BN_is_prime_fasttest_ex() functions.
722
723    *Kurt Roeckx*
724
725  * Deprecated EVP_MD_CTX_set_update_fn() and EVP_MD_CTX_update_fn().
726
727    *Rich Salz*
728
729  * Deprecated the type OCSP_REQ_CTX and the functions OCSP_REQ_CTX_*() and
730    replaced with OSSL_HTTP_REQ_CTX and the functions OSSL_HTTP_REQ_CTX_*().
731
732    *Rich Salz, Richard Levitte, and David von Oheimb*
733
734  * Deprecated `X509_http_nbio()` and `X509_CRL_http_nbio()`.
735
736    *David von Oheimb*
737
738  * Deprecated `OCSP_parse_url()`.
739
740    *David von Oheimb*
741
742  * Validation of SM2 keys has been separated from the validation of regular EC
743    keys.
744
745    *Nicola Tuveri*
746
747  * Behavior of the `pkey` app is changed, when using the `-check` or `-pubcheck`
748    switches: a validation failure triggers an early exit, returning a failure
749    exit status to the parent process.
750
751    *Nicola Tuveri*
752
753  * Changed behavior of SSL_CTX_set_ciphersuites() and SSL_set_ciphersuites()
754    to ignore unknown ciphers.
755
756    *Otto Hollmann*
757
758  * The `-cipher-commands` and `-digest-commands` options
759    of the command line utility `list` have been deprecated.
760    Instead use the `-cipher-algorithms` and `-digest-algorithms` options.
761
762    *Dmitry Belyavskiy*
763
764  * Added convenience functions for generating asymmetric key pairs:
765    The 'quick' one-shot (yet somewhat limited) function L<EVP_PKEY_Q_keygen(3)>
766    and macros for the most common cases: <EVP_RSA_gen(3)> and L<EVP_EC_gen(3)>.
767
768    *David von Oheimb*
769
770  * All of the low level EC_KEY functions have been deprecated.
771
772    *Shane Lontis, Paul Dale, Richard Levitte, and Tomáš Mráz*
773
774  * Deprecated all the libcrypto and libssl error string loading
775    functions.
776
777    *Richard Levitte*
778
779  * The functions SSL_CTX_set_tmp_dh_callback and SSL_set_tmp_dh_callback, as
780    well as the macros SSL_CTX_set_tmp_dh() and SSL_set_tmp_dh() have been
781    deprecated.
782
783    *Matt Caswell*
784
785  * The `-crypt` option to the `passwd` command line tool has been removed.
786
787    *Paul Dale*
788
789  * The -C option to the `x509`, `dhparam`, `dsaparam`, and `ecparam` commands
790    were removed.
791
792    *Rich Salz*
793
794  * Add support for AES Key Wrap inverse ciphers to the EVP layer.
795
796    *Shane Lontis*
797
798  * Deprecated EVP_PKEY_set1_tls_encodedpoint() and
799    EVP_PKEY_get1_tls_encodedpoint().
800
801    *Matt Caswell*
802
803  * The security callback, which can be customised by application code, supports
804    the security operation SSL_SECOP_TMP_DH. One location of the "other" parameter
805    was incorrectly passing a DH object. It now passed an EVP_PKEY in all cases.
806
807    *Matt Caswell*
808
809  * Add PKCS7_get_octet_string() and PKCS7_type_is_other() to the public
810    interface. Their functionality remains unchanged.
811
812    *Jordan Montgomery*
813
814  * Added new option for 'openssl list', '-providers', which will display the
815    list of loaded providers, their names, version and status.  It optionally
816    displays their gettable parameters.
817
818    *Paul Dale*
819
820  * Removed EVP_PKEY_set_alias_type().
821
822    *Richard Levitte*
823
824  * Deprecated `EVP_PKEY_CTX_set_rsa_keygen_pubexp()` and introduced
825    `EVP_PKEY_CTX_set1_rsa_keygen_pubexp()`, which is now preferred.
826
827    *Jeremy Walch*
828
829  * Changed all "STACK" functions to be macros instead of inline functions. Macro
830    parameters are still checked for type safety at compile time via helper
831    inline functions.
832
833    *Matt Caswell*
834
835  * Remove the RAND_DRBG API
836
837    *Paul Dale and Matthias St. Pierre*
838
839  * Allow `SSL_set1_host()` and `SSL_add1_host()` to take IP literal addresses
840    as well as actual hostnames.
841
842    *David Woodhouse*
843
844  * The 'MinProtocol' and 'MaxProtocol' configuration commands now silently
845    ignore TLS protocol version bounds when configuring DTLS-based contexts, and
846    conversely, silently ignore DTLS protocol version bounds when configuring
847    TLS-based contexts.  The commands can be repeated to set bounds of both
848    types.  The same applies with the corresponding "min_protocol" and
849    "max_protocol" command-line switches, in case some application uses both TLS
850    and DTLS.
851
852    SSL_CTX instances that are created for a fixed protocol version (e.g.
853    `TLSv1_server_method()`) also silently ignore version bounds.  Previously
854    attempts to apply bounds to these protocol versions would result in an
855    error.  Now only the "version-flexible" SSL_CTX instances are subject to
856    limits in configuration files in command-line options.
857
858    *Viktor Dukhovni*
859
860  * Deprecated the `ENGINE` API.  Engines should be replaced with providers
861    going forward.
862
863    *Paul Dale*
864
865  * Reworked the recorded ERR codes to make better space for system errors.
866    To distinguish them, the macro `ERR_SYSTEM_ERROR()` indicates if the
867    given code is a system error (true) or an OpenSSL error (false).
868
869    *Richard Levitte*
870
871  * Reworked the test perl framework to better allow parallel testing.
872
873    *Nicola Tuveri and David von Oheimb*
874
875  * Added ciphertext stealing algorithms AES-128-CBC-CTS, AES-192-CBC-CTS and
876    AES-256-CBC-CTS to the providers. CS1, CS2 and CS3 variants are supported.
877
878    *Shane Lontis*
879
880  * 'Configure' has been changed to figure out the configuration target if
881    none is given on the command line.  Consequently, the 'config' script is
882    now only a mere wrapper.  All documentation is changed to only mention
883    'Configure'.
884
885    *Rich Salz and Richard Levitte*
886
887  * Added a library context `OSSL_LIB_CTX` that applications as well as
888    other libraries can use to form a separate context within which
889    libcrypto operations are performed.
890
891    *Richard Levitte*
892
893  * Added various `_ex` functions to the OpenSSL API that support using
894    a non-default `OSSL_LIB_CTX`.
895
896    *OpenSSL team*
897
898  * Handshake now fails if Extended Master Secret extension is dropped
899    on renegotiation.
900
901    *Tomáš Mráz*
902
903  * Dropped interactive mode from the `openssl` program.
904
905    *Richard Levitte*
906
907  * Deprecated `EVP_PKEY_cmp()` and `EVP_PKEY_cmp_parameters()`.
908
909    *David von Oheimb and Shane Lontis*
910
911  * Deprecated `EC_METHOD_get_field_type()`.
912
913    *Billy Bob Brumley*
914
915  * Deprecated EC_GFp_simple_method(), EC_GFp_mont_method(),
916    EC_GF2m_simple_method(), EC_GFp_nist_method(), EC_GFp_nistp224_method()
917    EC_GFp_nistp256_method(), and EC_GFp_nistp521_method().
918
919    *Billy Bob Brumley*
920
921  * Deprecated EC_GROUP_new(), EC_GROUP_method_of(), and EC_POINT_method_of().
922
923    *Billy Bob Brumley*
924
925  * Add CAdES-BES signature verification support, mostly derived
926    from ESSCertIDv2 TS (RFC 5816) contribution by Marek Klein.
927
928    *Filipe Raimundo da Silva*
929
930  * Add CAdES-BES signature scheme and attributes support (RFC 5126) to CMS API.
931
932    *Antonio Iacono*
933
934  * Added the AuthEnvelopedData content type structure (RFC 5083) with AES-GCM
935    parameter (RFC 5084) for the Cryptographic Message Syntax (CMS).
936
937    *Jakub Zelenka*
938
939  * Deprecated EC_POINT_make_affine() and EC_POINTs_make_affine().
940
941    *Billy Bob Brumley*
942
943  * Deprecated EC_GROUP_precompute_mult(), EC_GROUP_have_precompute_mult(), and
944    EC_KEY_precompute_mult().
945
946    *Billy Bob Brumley*
947
948  * Deprecated EC_POINTs_mul().
949
950    *Billy Bob Brumley*
951
952  * Removed FIPS_mode() and FIPS_mode_set().
953
954    *Shane Lontis*
955
956  * The SSL option SSL_OP_IGNORE_UNEXPECTED_EOF is introduced.
957
958    *Dmitry Belyavskiy*
959
960  * Deprecated EC_POINT_set_Jprojective_coordinates_GFp() and
961    EC_POINT_get_Jprojective_coordinates_GFp().
962
963    *Billy Bob Brumley*
964
965  * Added OSSL_PARAM_BLD to the public interface.  This allows OSSL_PARAM
966    arrays to be more easily constructed via a series of utility functions.
967    Create a parameter builder using OSSL_PARAM_BLD_new(), add parameters using
968    the various push functions and finally convert to a passable OSSL_PARAM
969    array using OSSL_PARAM_BLD_to_param().
970
971    *Paul Dale*
972
973  * The security strength of SHA1 and MD5 based signatures in TLS has been
974    reduced.
975
976    *Kurt Roeckx*
977
978  * Added EVP_PKEY_set_type_by_keymgmt(), to initialise an EVP_PKEY to
979    contain a provider side internal key.
980
981    *Richard Levitte*
982
983  * ASN1_verify(), ASN1_digest() and ASN1_sign() have been deprecated.
984
985    *Richard Levitte*
986
987  * Project text documents not yet having a proper file name extension
988    (`HACKING`, `LICENSE`, `NOTES*`, `README*`, `VERSION`) have been renamed to
989    `*.md` as far as reasonable, else `*.txt`, for better use with file managers.
990
991    *David von Oheimb*
992
993  * The main project documents (README, NEWS, CHANGES, INSTALL, SUPPORT)
994    have been converted to Markdown with the goal to produce documents
995    which not only look pretty when viewed online in the browser, but
996    remain well readable inside a plain text editor.
997
998    To achieve this goal, a 'minimalistic' Markdown style has been applied
999    which avoids formatting elements that interfere too much with the
1000    reading flow in the text file. For example, it
1001
1002    * avoids [ATX headings][] and uses [setext headings][] instead
1003      (which works for `<h1>` and `<h2>` headings only).
1004    * avoids [inline links][] and uses [reference links][] instead.
1005    * avoids [fenced code blocks][] and uses [indented code blocks][] instead.
1006
1007      [ATX headings]:         https://github.github.com/gfm/#atx-headings
1008      [setext headings]:      https://github.github.com/gfm/#setext-headings
1009      [inline links]:         https://github.github.com/gfm/#inline-link
1010      [reference links]:      https://github.github.com/gfm/#reference-link
1011      [fenced code blocks]:   https://github.github.com/gfm/#fenced-code-blocks
1012      [indented code blocks]: https://github.github.com/gfm/#indented-code-blocks
1013
1014    *Matthias St. Pierre*
1015
1016  * The test suite is changed to preserve results of each test recipe.
1017    A new directory test-runs/ with subdirectories named like the
1018    test recipes are created in the build tree for this purpose.
1019
1020    *Richard Levitte*
1021
1022  * Added an implementation of CMP and CRMF (RFC 4210, RFC 4211 RFC 6712).
1023    This adds `crypto/cmp/`, `crpyto/crmf/`, `apps/cmp.c`, and `test/cmp_*`.
1024    See L<openssl-cmp(1)> and L<OSSL_CMP_exec_IR_ses(3)> as starting points.
1025
1026    *David von Oheimb, Martin Peylo*
1027
1028  * Generalized the HTTP client code from `crypto/ocsp/` into `crpyto/http/`.
1029    It supports arbitrary request and response content types, GET redirection,
1030    TLS, connections via HTTP(S) proxies, connections and exchange via
1031    user-defined BIOs (allowing implicit connections), persistent connections,
1032    and timeout checks.  See L<OSSL_HTTP_transfer(3)> etc. for details.
1033    The legacy OCSP-focused (and only partly documented) API
1034    is retained for backward compatibility, while most of it is deprecated.
1035
1036    *David von Oheimb*
1037
1038  * Added `util/check-format.pl`, a tool for checking adherence to the
1039    OpenSSL coding style <https://www.openssl.org/policies/codingstyle.html>.
1040    The checks performed are incomplete and yield some false positives.
1041    Still the tool should be useful for detecting most typical glitches.
1042
1043    *David von Oheimb*
1044
1045  * `BIO_do_connect()` and `BIO_do_handshake()` have been extended:
1046    If domain name resolution yields multiple IP addresses all of them are tried
1047    after `connect()` failures.
1048
1049    *David von Oheimb*
1050
1051  * All of the low level RSA functions have been deprecated.
1052
1053    *Paul Dale*
1054
1055  * X509 certificates signed using SHA1 are no longer allowed at security
1056    level 1 and above.
1057
1058    *Kurt Roeckx*
1059
1060  * The command line utilities dhparam, dsa, gendsa and dsaparam have been
1061    modified to use PKEY APIs.  These commands are now in maintenance mode
1062    and no new features will be added to them.
1063
1064    *Paul Dale*
1065
1066  * The command line utility rsautl has been deprecated.
1067
1068    *Paul Dale*
1069
1070  * The command line utilities genrsa and rsa have been modified to use PKEY
1071    APIs. They now write PKCS#8 keys by default. These commands are now in
1072    maintenance mode and no new features will be added to them.
1073
1074    *Paul Dale*
1075
1076  * All of the low level DH functions have been deprecated.
1077
1078    *Paul Dale and Matt Caswell*
1079
1080  * All of the low level DSA functions have been deprecated.
1081
1082    *Paul Dale*
1083
1084  * Reworked the treatment of EC EVP_PKEYs with the SM2 curve to
1085    automatically become EVP_PKEY_SM2 rather than EVP_PKEY_EC.
1086
1087    *Richard Levitte*
1088
1089  * Deprecated low level ECDH and ECDSA functions.
1090
1091    *Paul Dale*
1092
1093  * Deprecated EVP_PKEY_decrypt_old() and EVP_PKEY_encrypt_old().
1094
1095    *Richard Levitte*
1096
1097  * Enhanced the documentation of EVP_PKEY_get_size(), EVP_PKEY_get_bits()
1098    and EVP_PKEY_get_security_bits().  Especially EVP_PKEY_get_size() needed
1099    a new formulation to include all the things it can be used for,
1100    as well as words of caution.
1101
1102    *Richard Levitte*
1103
1104  * The SSL_CTX_set_tlsext_ticket_key_cb(3) function has been deprecated.
1105
1106    *Paul Dale*
1107
1108  * All of the low level HMAC functions have been deprecated.
1109
1110    *Paul Dale and David von Oheimb*
1111
1112  * Over two thousand fixes were made to the documentation, including:
1113    - Common options (such as -rand/-writerand, TLS version control, etc)
1114      were refactored and point to newly-enhanced descriptions in openssl.pod.
1115    - Added style conformance for all options (with help from Richard Levitte),
1116      documented all reported missing options, added a CI build to check
1117      that all options are documented and that no unimplemented options
1118      are documented.
1119    - Documented some internals, such as all use of environment variables.
1120    - Addressed all internal broken L<> references.
1121
1122    *Rich Salz*
1123
1124  * All of the low level CMAC functions have been deprecated.
1125
1126    *Paul Dale*
1127
1128  * The low-level MD2, MD4, MD5, MDC2, RIPEMD160 and Whirlpool digest
1129    functions have been deprecated.
1130
1131    *Paul Dale and David von Oheimb*
1132
1133  * Corrected the documentation of the return values from the `EVP_DigestSign*`
1134    set of functions.  The documentation mentioned negative values for some
1135    errors, but this was never the case, so the mention of negative values
1136    was removed.
1137
1138    Code that followed the documentation and thereby check with something
1139    like `EVP_DigestSignInit(...) <= 0` will continue to work undisturbed.
1140
1141    *Richard Levitte*
1142
1143  * All of the low level cipher functions have been deprecated.
1144
1145    *Matt Caswell and Paul Dale*
1146
1147  * Removed include/openssl/opensslconf.h.in and replaced it with
1148    include/openssl/configuration.h.in, which differs in not including
1149    <openssl/macros.h>.  A short header include/openssl/opensslconf.h
1150    was added to include both.
1151
1152    This allows internal hacks where one might need to modify the set
1153    of configured macros, for example this if deprecated symbols are
1154    still supposed to be available internally:
1155
1156        #include <openssl/configuration.h>
1157
1158        #undef OPENSSL_NO_DEPRECATED
1159        #define OPENSSL_SUPPRESS_DEPRECATED
1160
1161        #include <openssl/macros.h>
1162
1163    This should not be used by applications that use the exported
1164    symbols, as that will lead to linking errors.
1165
1166    *Richard Levitte*
1167
1168  * Fixed an overflow bug in the x64_64 Montgomery squaring procedure
1169    used in exponentiation with 512-bit moduli. No EC algorithms are
1170    affected. Analysis suggests that attacks against 2-prime RSA1024,
1171    3-prime RSA1536, and DSA1024 as a result of this defect would be very
1172    difficult to perform and are not believed likely. Attacks against DH512
1173    are considered just feasible. However, for an attack the target would
1174    have to re-use the DH512 private key, which is not recommended anyway.
1175    Also applications directly using the low-level API BN_mod_exp may be
1176    affected if they use BN_FLG_CONSTTIME.
1177    ([CVE-2019-1551])
1178
1179    *Andy Polyakov*
1180
1181  * Most memory-debug features have been deprecated, and the functionality
1182    replaced with no-ops.
1183
1184    *Rich Salz*
1185
1186  * Added documentation for the STACK API.
1187
1188    *Rich Salz*
1189
1190  * Introduced a new method type and API, OSSL_ENCODER, to represent
1191    generic encoders.  These do the same sort of job that PEM writers
1192    and d2i functions do, but with support for methods supplied by
1193    providers, and the possibility for providers to support other
1194    formats as well.
1195
1196    *Richard Levitte*
1197
1198  * Introduced a new method type and API, OSSL_DECODER, to represent
1199    generic decoders.  These do the same sort of job that PEM readers
1200    and i2d functions do, but with support for methods supplied by
1201    providers, and the possibility for providers to support other
1202    formats as well.
1203
1204    *Richard Levitte*
1205
1206  * Added a .pragma directive to the syntax of configuration files, to
1207    allow varying behavior in a supported and predictable manner.
1208    Currently added pragma:
1209
1210            .pragma dollarid:on
1211
1212    This allows dollar signs to be a keyword character unless it's
1213    followed by a opening brace or parenthesis.  This is useful for
1214    platforms where dollar signs are commonly used in names, such as
1215    volume names and system directory names on VMS.
1216
1217    *Richard Levitte*
1218
1219  * Added functionality to create an EVP_PKEY from user data.
1220
1221    *Richard Levitte*
1222
1223  * Change the interpretation of the '--api' configuration option to
1224    mean that this is a desired API compatibility level with no
1225    further meaning.  The previous interpretation, that this would
1226    also mean to remove all deprecated symbols up to and including
1227    the given version, no requires that 'no-deprecated' is also used
1228    in the configuration.
1229
1230    When building applications, the desired API compatibility level
1231    can be set with the OPENSSL_API_COMPAT macro like before.  For
1232    API compatibility version below 3.0, the old style numerical
1233    value is valid as before, such as -DOPENSSL_API_COMPAT=0x10100000L.
1234    For version 3.0 and on, the value is expected to be the decimal
1235    value calculated from the major and minor version like this:
1236
1237            MAJOR * 10000 + MINOR * 100
1238
1239    Examples:
1240
1241            -DOPENSSL_API_COMPAT=30000             For 3.0
1242            -DOPENSSL_API_COMPAT=30200             For 3.2
1243
1244    To hide declarations that are deprecated up to and including the
1245    given API compatibility level, -DOPENSSL_NO_DEPRECATED must be
1246    given when building the application as well.
1247
1248    *Richard Levitte*
1249
1250  * Added the X509_LOOKUP_METHOD called X509_LOOKUP_store, to allow
1251    access to certificate and CRL stores via URIs and OSSL_STORE
1252    loaders.
1253
1254    This adds the following functions:
1255
1256    - X509_LOOKUP_store()
1257    - X509_STORE_load_file()
1258    - X509_STORE_load_path()
1259    - X509_STORE_load_store()
1260    - SSL_add_store_cert_subjects_to_stack()
1261    - SSL_CTX_set_default_verify_store()
1262    - SSL_CTX_load_verify_file()
1263    - SSL_CTX_load_verify_dir()
1264    - SSL_CTX_load_verify_store()
1265
1266    *Richard Levitte*
1267
1268  * Added a new method to gather entropy on VMS, based on SYS$GET_ENTROPY.
1269    The presence of this system service is determined at run-time.
1270
1271    *Richard Levitte*
1272
1273  * Added functionality to create an EVP_PKEY context based on data
1274    for methods from providers.  This takes an algorithm name and a
1275    property query string and simply stores them, with the intent
1276    that any operation that uses this context will use those strings
1277    to fetch the needed methods implicitly, thereby making the port
1278    of application written for pre-3.0 OpenSSL easier.
1279
1280    *Richard Levitte*
1281
1282  * The undocumented function NCONF_WIN32() has been deprecated; for
1283    conversion details see the HISTORY section of doc/man5/config.pod
1284
1285    *Rich Salz*
1286
1287  * Introduced the new functions EVP_DigestSignInit_ex() and
1288    EVP_DigestVerifyInit_ex(). The macros EVP_DigestSignUpdate() and
1289    EVP_DigestVerifyUpdate() have been converted to functions. See the man
1290    pages for further details.
1291
1292    *Matt Caswell*
1293
1294  * Over two thousand fixes were made to the documentation, including:
1295    adding missing command flags, better style conformance, documentation
1296    of internals, etc.
1297
1298    *Rich Salz, Richard Levitte*
1299
1300  * s390x assembly pack: add hardware-support for P-256, P-384, P-521,
1301    X25519, X448, Ed25519 and Ed448.
1302
1303    *Patrick Steuer*
1304
1305  * Print all values for a PKCS#12 attribute with 'openssl pkcs12', not just
1306    the first value.
1307
1308    *Jon Spillett*
1309
1310  * Deprecated the public definition of `ERR_STATE` as well as the function
1311    `ERR_get_state()`.  This is done in preparation of making `ERR_STATE` an
1312    opaque type.
1313
1314    *Richard Levitte*
1315
1316  * Added ERR functionality to give callers access to the stored function
1317    names that have replaced the older function code based functions.
1318
1319    New functions are ERR_peek_error_func(), ERR_peek_last_error_func(),
1320    ERR_peek_error_data(), ERR_peek_last_error_data(), ERR_get_error_all(),
1321    ERR_peek_error_all() and ERR_peek_last_error_all().
1322
1323    Deprecate ERR functions ERR_get_error_line(), ERR_get_error_line_data(),
1324    ERR_peek_error_line_data(), ERR_peek_last_error_line_data() and
1325    ERR_func_error_string().
1326
1327    *Richard Levitte*
1328
1329  * Extended testing to be verbose for failing tests only.  The make variables
1330    VERBOSE_FAILURE or VF can be used to enable this:
1331
1332            $ make VF=1 test                           # Unix
1333            $ mms /macro=(VF=1) test                   ! OpenVMS
1334            $ nmake VF=1 test                          # Windows
1335
1336    *Richard Levitte*
1337
1338  * Added the `-copy_extensions` option to the `x509` command for use with
1339    `-req` and `-x509toreq`. When given with the `copy` or `copyall` argument,
1340    all extensions in the request are copied to the certificate or vice versa.
1341
1342    *David von Oheimb*, *Kirill Stefanenkov <kirill_stefanenkov@rambler.ru>*
1343
1344  * Added the `-copy_extensions` option to the `req` command for use with
1345    `-x509`. When given with the `copy` or `copyall` argument,
1346    all extensions in the certification request are copied to the certificate.
1347
1348    *David von Oheimb*
1349
1350  * The `x509`, `req`, and `ca` commands now make sure that X.509v3 certificates
1351    they generate are by default RFC 5280 compliant in the following sense:
1352    There is a subjectKeyIdentifier extension with a hash value of the public key
1353    and for not self-signed certs there is an authorityKeyIdentifier extension
1354    with a keyIdentifier field or issuer information identifying the signing key.
1355    This is done unless some configuration overrides the new default behavior,
1356    such as `subjectKeyIdentifier = none` and `authorityKeyIdentifier = none`.
1357
1358    *David von Oheimb*
1359
1360  * Added several checks to `X509_verify_cert()` according to requirements in
1361    RFC 5280 in case `X509_V_FLAG_X509_STRICT` is set
1362    (which may be done by using the CLI option `-x509_strict`):
1363    * The basicConstraints of CA certificates must be marked critical.
1364    * CA certificates must explicitly include the keyUsage extension.
1365    * If a pathlenConstraint is given the key usage keyCertSign must be allowed.
1366    * The issuer name of any certificate must not be empty.
1367    * The subject name of CA certs, certs with keyUsage crlSign,
1368      and certs without subjectAlternativeName must not be empty.
1369    * If a subjectAlternativeName extension is given it must not be empty.
1370    * The signatureAlgorithm field and the cert signature must be consistent.
1371    * Any given authorityKeyIdentifier and any given subjectKeyIdentifier
1372      must not be marked critical.
1373    * The authorityKeyIdentifier must be given for X.509v3 certs
1374      unless they are self-signed.
1375    * The subjectKeyIdentifier must be given for all X.509v3 CA certs.
1376
1377    *David von Oheimb*
1378
1379  * Certificate verification using `X509_verify_cert()` meanwhile rejects EC keys
1380    with explicit curve parameters (specifiedCurve) as required by RFC 5480.
1381
1382    *Tomáš Mráz*
1383
1384  * For built-in EC curves, ensure an EC_GROUP built from the curve name is
1385    used even when parsing explicit parameters, when loading a encoded key
1386    or calling `EC_GROUP_new_from_ecpkparameters()`/
1387    `EC_GROUP_new_from_ecparameters()`.
1388    This prevents bypass of security hardening and performance gains,
1389    especially for curves with specialized EC_METHODs.
1390    By default, if a key encoded with explicit parameters is loaded and later
1391    encoded, the output is still encoded with explicit parameters, even if
1392    internally a "named" EC_GROUP is used for computation.
1393
1394    *Nicola Tuveri*
1395
1396  * Compute ECC cofactors if not provided during EC_GROUP construction. Before
1397    this change, EC_GROUP_set_generator would accept order and/or cofactor as
1398    NULL. After this change, only the cofactor parameter can be NULL. It also
1399    does some minimal sanity checks on the passed order.
1400    ([CVE-2019-1547])
1401
1402    *Billy Bob Brumley*
1403
1404  * Fixed a padding oracle in PKCS7_dataDecode and CMS_decrypt_set1_pkey.
1405    An attack is simple, if the first CMS_recipientInfo is valid but the
1406    second CMS_recipientInfo is chosen ciphertext. If the second
1407    recipientInfo decodes to PKCS #1 v1.5 form plaintext, the correct
1408    encryption key will be replaced by garbage, and the message cannot be
1409    decoded, but if the RSA decryption fails, the correct encryption key is
1410    used and the recipient will not notice the attack.
1411    As a work around for this potential attack the length of the decrypted
1412    key must be equal to the cipher default key length, in case the
1413    certifiate is not given and all recipientInfo are tried out.
1414    The old behaviour can be re-enabled in the CMS code by setting the
1415    CMS_DEBUG_DECRYPT flag.
1416
1417    *Bernd Edlinger*
1418
1419  * Early start up entropy quality from the DEVRANDOM seed source has been
1420    improved for older Linux systems.  The RAND subsystem will wait for
1421    /dev/random to be producing output before seeding from /dev/urandom.
1422    The seeded state is stored for future library initialisations using
1423    a system global shared memory segment.  The shared memory identifier
1424    can be configured by defining OPENSSL_RAND_SEED_DEVRANDOM_SHM_ID to
1425    the desired value.  The default identifier is 114.
1426
1427    *Paul Dale*
1428
1429  * Revised BN_generate_prime_ex to not avoid factors 2..17863 in p-1
1430    when primes for RSA keys are computed.
1431    Since we previously always generated primes == 2 (mod 3) for RSA keys,
1432    the 2-prime and 3-prime RSA modules were easy to distinguish, since
1433    `N = p*q = 1 (mod 3)`, but `N = p*q*r = 2 (mod 3)`. Therefore fingerprinting
1434    2-prime vs. 3-prime RSA keys was possible by computing N mod 3.
1435    This avoids possible fingerprinting of newly generated RSA modules.
1436
1437    *Bernd Edlinger*
1438
1439  * Correct the extended master secret constant on EBCDIC systems. Without this
1440    fix TLS connections between an EBCDIC system and a non-EBCDIC system that
1441    negotiate EMS will fail. Unfortunately this also means that TLS connections
1442    between EBCDIC systems with this fix, and EBCDIC systems without this
1443    fix will fail if they negotiate EMS.
1444
1445    *Matt Caswell*
1446
1447  * Changed the library initialisation so that the config file is now loaded
1448    by default. This was already the case for libssl. It now occurs for both
1449    libcrypto and libssl. Use the OPENSSL_INIT_NO_LOAD_CONFIG option to
1450    `OPENSSL_init_crypto()` to suppress automatic loading of a config file.
1451
1452    *Matt Caswell*
1453
1454  * Introduced new error raising macros, `ERR_raise()` and `ERR_raise_data()`,
1455    where the former acts as a replacement for `ERR_put_error()`, and the
1456    latter replaces the combination `ERR_put_error()` + `ERR_add_error_data()`.
1457    `ERR_raise_data()` adds more flexibility by taking a format string and
1458    an arbitrary number of arguments following it, to be processed with
1459    `BIO_snprintf()`.
1460
1461    *Richard Levitte*
1462
1463  * Introduced a new function, `OSSL_PROVIDER_available()`, which can be used
1464    to check if a named provider is loaded and available.  When called, it
1465    will also activate all fallback providers if such are still present.
1466
1467    *Richard Levitte*
1468
1469  * Enforce a minimum DH modulus size of 512 bits.
1470
1471    *Bernd Edlinger*
1472
1473  * Changed DH parameters to generate the order q subgroup instead of 2q.
1474    Previously generated DH parameters are still accepted by DH_check
1475    but DH_generate_key works around that by clearing bit 0 of the
1476    private key for those. This avoids leaking bit 0 of the private key.
1477
1478    *Bernd Edlinger*
1479
1480  * Significantly reduce secure memory usage by the randomness pools.
1481
1482    *Paul Dale*
1483
1484  * `{CRYPTO,OPENSSL}_mem_debug_{push,pop}` are now no-ops and have been
1485    deprecated.
1486
1487    *Rich Salz*
1488
1489  * A new type, EVP_KEYEXCH, has been introduced to represent key exchange
1490    algorithms. An implementation of a key exchange algorithm can be obtained
1491    by using the function EVP_KEYEXCH_fetch(). An EVP_KEYEXCH algorithm can be
1492    used in a call to EVP_PKEY_derive_init_ex() which works in a similar way to
1493    the older EVP_PKEY_derive_init() function. See the man pages for the new
1494    functions for further details.
1495
1496    *Matt Caswell*
1497
1498  * The EVP_PKEY_CTX_set_dh_pad() macro has now been converted to a function.
1499
1500    *Matt Caswell*
1501
1502  * Removed the function names from error messages and deprecated the
1503    xxx_F_xxx define's.
1504
1505    *Richard Levitte*
1506
1507  * Removed NextStep support and the macro OPENSSL_UNISTD
1508
1509    *Rich Salz*
1510
1511  * Removed DES_check_key.  Also removed OPENSSL_IMPLEMENT_GLOBAL,
1512    OPENSSL_GLOBAL_REF, OPENSSL_DECLARE_GLOBAL.
1513    Also removed "export var as function" capability; we do not export
1514    variables, only functions.
1515
1516    *Rich Salz*
1517
1518  * RC5_32_set_key has been changed to return an int type, with 0 indicating
1519    an error and 1 indicating success. In previous versions of OpenSSL this
1520    was a void type. If a key was set longer than the maximum possible this
1521    would crash.
1522
1523    *Matt Caswell*
1524
1525  * Support SM2 signing and verification schemes with X509 certificate.
1526
1527    *Paul Yang*
1528
1529  * Use SHA256 as the default digest for TS query in the `ts` app.
1530
1531    *Tomáš Mráz*
1532
1533  * Change PBKDF2 to conform to SP800-132 instead of the older PKCS5 RFC2898.
1534
1535    *Shane Lontis*
1536
1537  * Default cipher lists/suites are now available via a function, the
1538    #defines are deprecated.
1539
1540    *Todd Short*
1541
1542  * Add target VC-WIN32-UWP, VC-WIN64A-UWP, VC-WIN32-ARM-UWP and
1543    VC-WIN64-ARM-UWP in Windows OneCore target for making building libraries
1544    for Windows Store apps easier. Also, the "no-uplink" option has been added.
1545
1546    *Kenji Mouri*
1547
1548  * Join the directories crypto/x509 and crypto/x509v3
1549
1550    *Richard Levitte*
1551
1552  * Added command 'openssl kdf' that uses the EVP_KDF API.
1553
1554    *Shane Lontis*
1555
1556  * Added command 'openssl mac' that uses the EVP_MAC API.
1557
1558    *Shane Lontis*
1559
1560  * Added OPENSSL_info() to get diverse built-in OpenSSL data, such
1561    as default directories.  Also added the command 'openssl info'
1562    for scripting purposes.
1563
1564    *Richard Levitte*
1565
1566  * The functions AES_ige_encrypt() and AES_bi_ige_encrypt() have been
1567    deprecated.
1568
1569    *Matt Caswell*
1570
1571  * Add prediction resistance to the DRBG reseeding process.
1572
1573    *Paul Dale*
1574
1575  * Limit the number of blocks in a data unit for AES-XTS to 2^20 as
1576    mandated by IEEE Std 1619-2018.
1577
1578    *Paul Dale*
1579
1580  * Added newline escaping functionality to a filename when using openssl dgst.
1581    This output format is to replicate the output format found in the `*sum`
1582    checksum programs. This aims to preserve backward compatibility.
1583
1584    *Matt Eaton, Richard Levitte, and Paul Dale*
1585
1586  * Removed the heartbeat message in DTLS feature, as it has very
1587    little usage and doesn't seem to fulfill a valuable purpose.
1588    The configuration option is now deprecated.
1589
1590    *Richard Levitte*
1591
1592  * Changed the output of 'openssl {digestname} < file' to display the
1593    digest name in its output.
1594
1595    *Richard Levitte*
1596
1597  * Added a new generic trace API which provides support for enabling
1598    instrumentation through trace output.
1599
1600    *Richard Levitte & Matthias St. Pierre*
1601
1602  * Added build tests for C++.  These are generated files that only do one
1603    thing, to include one public OpenSSL head file each.  This tests that
1604    the public header files can be usefully included in a C++ application.
1605
1606    This test isn't enabled by default.  It can be enabled with the option
1607    'enable-buildtest-c++'.
1608
1609    *Richard Levitte*
1610
1611  * Added KB KDF (EVP_KDF_KB) to EVP_KDF.
1612
1613    *Robbie Harwood*
1614
1615  * Added SSH KDF (EVP_KDF_SSHKDF) and KRB5 KDF (EVP_KDF_KRB5KDF) to EVP_KDF.
1616
1617    *Simo Sorce*
1618
1619  * Added Single Step KDF (EVP_KDF_SS), X963 KDF, and X942 KDF to EVP_KDF.
1620
1621    *Shane Lontis*
1622
1623  * Added KMAC to EVP_MAC.
1624
1625    *Shane Lontis*
1626
1627  * Added property based algorithm implementation selection framework to
1628    the core.
1629
1630    *Paul Dale*
1631
1632  * Added SCA hardening for modular field inversion in EC_GROUP through
1633    a new dedicated field_inv() pointer in EC_METHOD.
1634    This also addresses a leakage affecting conversions from projective
1635    to affine coordinates.
1636
1637    *Billy Bob Brumley, Nicola Tuveri*
1638
1639  * Added EVP_KDF, an EVP layer KDF API, to simplify adding KDF and PRF
1640    implementations.  This includes an EVP_PKEY to EVP_KDF bridge for
1641    those algorithms that were already supported through the EVP_PKEY API
1642    (scrypt, TLS1 PRF and HKDF).  The low-level KDF functions for PBKDF2
1643    and scrypt are now wrappers that call EVP_KDF.
1644
1645    *David Makepeace*
1646
1647  * Build devcrypto engine as a dynamic engine.
1648
1649    *Eneas U de Queiroz*
1650
1651  * Add keyed BLAKE2 to EVP_MAC.
1652
1653    *Antoine Salon*
1654
1655  * Fix a bug in the computation of the endpoint-pair shared secret used
1656    by DTLS over SCTP. This breaks interoperability with older versions
1657    of OpenSSL like OpenSSL 1.1.0 and OpenSSL 1.0.2. There is a runtime
1658    switch SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG (off by default) enabling
1659    interoperability with such broken implementations. However, enabling
1660    this switch breaks interoperability with correct implementations.
1661
1662  * Fix a use after free bug in d2i_X509_PUBKEY when overwriting a
1663    re-used X509_PUBKEY object if the second PUBKEY is malformed.
1664
1665    *Bernd Edlinger*
1666
1667  * Move strictness check from EVP_PKEY_asn1_new() to EVP_PKEY_asn1_add0().
1668
1669    *Richard Levitte*
1670
1671  * Changed the license to the Apache License v2.0.
1672
1673    *Richard Levitte*
1674
1675  * Switch to a new version scheme using three numbers MAJOR.MINOR.PATCH.
1676
1677    - Major releases (indicated by incrementing the MAJOR release number)
1678      may introduce incompatible API/ABI changes.
1679    - Minor releases (indicated by incrementing the MINOR release number)
1680      may introduce new features but retain API/ABI compatibility.
1681    - Patch releases (indicated by incrementing the PATCH number)
1682      are intended for bug fixes and other improvements of existing
1683      features only (like improving performance or adding documentation)
1684      and retain API/ABI compatibility.
1685
1686    *Richard Levitte*
1687
1688  * Add support for RFC5297 SIV mode (siv128), including AES-SIV.
1689
1690    *Todd Short*
1691
1692  * Remove the 'dist' target and add a tarball building script.  The
1693    'dist' target has fallen out of use, and it shouldn't be
1694    necessary to configure just to create a source distribution.
1695
1696    *Richard Levitte*
1697
1698  * Recreate the OS390-Unix config target.  It no longer relies on a
1699    special script like it did for OpenSSL pre-1.1.0.
1700
1701    *Richard Levitte*
1702
1703  * Instead of having the source directories listed in Configure, add
1704    a 'build.info' keyword SUBDIRS to indicate what sub-directories to
1705    look into.
1706
1707    *Richard Levitte*
1708
1709  * Add GMAC to EVP_MAC.
1710
1711    *Paul Dale*
1712
1713  * Ported the HMAC, CMAC and SipHash EVP_PKEY_METHODs to EVP_MAC.
1714
1715    *Richard Levitte*
1716
1717  * Added EVP_MAC, an EVP layer MAC API, to simplify adding MAC
1718    implementations.  This includes a generic EVP_PKEY to EVP_MAC bridge,
1719    to facilitate the continued use of MACs through raw private keys in
1720    functionality such as `EVP_DigestSign*` and `EVP_DigestVerify*`.
1721
1722    *Richard Levitte*
1723
1724  * Deprecate ECDH_KDF_X9_62().
1725
1726    *Antoine Salon*
1727
1728  * Added EVP_PKEY_ECDH_KDF_X9_63 and ecdh_KDF_X9_63() as replacements for
1729    the EVP_PKEY_ECDH_KDF_X9_62 KDF type and ECDH_KDF_X9_62(). The old names
1730    are retained for backwards compatibility.
1731
1732    *Antoine Salon*
1733
1734  * AES-XTS mode now enforces that its two keys are different to mitigate
1735    the attacked described in "Efficient Instantiations of Tweakable
1736    Blockciphers and Refinements to Modes OCB and PMAC" by Phillip Rogaway.
1737    Details of this attack can be obtained from:
1738    <http://web.cs.ucdavis.edu/%7Erogaway/papers/offsets.pdf>
1739
1740    *Paul Dale*
1741
1742  * Rename the object files, i.e. give them other names than in previous
1743    versions.  Their names now include the name of the final product, as
1744    well as its type mnemonic (bin, lib, shlib).
1745
1746    *Richard Levitte*
1747
1748  * Added new option for 'openssl list', '-objects', which will display the
1749    list of built in objects, i.e. OIDs with names.
1750
1751    *Richard Levitte*
1752
1753  * Added the options `-crl_lastupdate` and `-crl_nextupdate` to `openssl ca`,
1754    allowing the `lastUpdate` and `nextUpdate` fields in the generated CRL to
1755    be set explicitly.
1756
1757    *Chris Novakovic*
1758
1759  * Added support for Linux Kernel TLS data-path. The Linux Kernel data-path
1760    improves application performance by removing data copies and providing
1761    applications with zero-copy system calls such as sendfile and splice.
1762
1763    *Boris Pismenny*
1764
1765  * The SSL option SSL_OP_CLEANSE_PLAINTEXT is introduced.
1766
1767    *Martin Elshuber*
1768
1769  * `PKCS12_parse` now maintains the order of the parsed certificates
1770    when outputting them via `*ca` (rather than reversing it).
1771
1772    *David von Oheimb*
1773
1774  * Deprecated pthread fork support methods.
1775
1776    *Randall S. Becker*
1777
1778  * Added support for FFDHE key exchange in TLS 1.3.
1779
1780    *Raja Ashok*
1781
1782  * Added a new concept for OpenSSL plugability: providers.  This
1783    functionality is designed to replace the ENGINE API and ENGINE
1784    implementations, and to be much more dynamic, allowing provider
1785    authors to introduce new algorithms among other things, as long as
1786    there's an API that supports the algorithm type.
1787
1788    With this concept comes a new core API for interaction between
1789    libcrypto and provider implementations.  Public libcrypto functions
1790    that want to use providers do so through this core API.
1791
1792    The main documentation for this core API is found in
1793    doc/man7/provider.pod, doc/man7/provider-base.pod, and they in turn
1794    refer to other manuals describing the API specific for supported
1795    algorithm types (also called operations).
1796
1797    *The OpenSSL team*
1798
1799 OpenSSL 1.1.1
1800 -------------
1801
1802 ### Changes between 1.1.1m and 1.1.1n [xx XXX xxxx]
1803
1804 ### Changes between 1.1.1l and 1.1.1m [14 Dec 2021]
1805
1806  * Avoid loading of a dynamic engine twice.
1807
1808    *Bernd Edlinger*
1809
1810  * Prioritise DANE TLSA issuer certs over peer certs
1811
1812    *Viktor Dukhovni*
1813
1814  * Fixed random API for MacOS prior to 10.12
1815
1816    These MacOS versions don't support the CommonCrypto APIs
1817
1818    *Lenny Primak*
1819
1820 ### Changes between 1.1.1k and 1.1.1l [24 Aug 2021]
1821
1822  * Fixed an SM2 Decryption Buffer Overflow.
1823
1824    In order to decrypt SM2 encrypted data an application is expected to
1825    call the API function EVP_PKEY_decrypt(). Typically an application will
1826    call this function twice. The first time, on entry, the "out" parameter
1827    can be NULL and, on exit, the "outlen" parameter is populated with the
1828    buffer size required to hold the decrypted plaintext. The application
1829    can then allocate a sufficiently sized buffer and call EVP_PKEY_decrypt()
1830    again, but this time passing a non-NULL value for the "out" parameter.
1831
1832    A bug in the implementation of the SM2 decryption code means that the
1833    calculation of the buffer size required to hold the plaintext returned
1834    by the first call to EVP_PKEY_decrypt() can be smaller than the actual
1835    size required by the second call. This can lead to a buffer overflow
1836    when EVP_PKEY_decrypt() is called by the application a second time with
1837    a buffer that is too small.
1838
1839    A malicious attacker who is able present SM2 content for decryption to
1840    an application could cause attacker chosen data to overflow the buffer
1841    by up to a maximum of 62 bytes altering the contents of other data held
1842    after the buffer, possibly changing application behaviour or causing
1843    the application to crash. The location of the buffer is application
1844    dependent but is typically heap allocated.
1845    ([CVE-2021-3711])
1846
1847    *Matt Caswell*
1848
1849  * Fixed various read buffer overruns processing ASN.1 strings
1850
1851    ASN.1 strings are represented internally within OpenSSL as an ASN1_STRING
1852    structure which contains a buffer holding the string data and a field
1853    holding the buffer length. This contrasts with normal C strings which
1854    are repesented as a buffer for the string data which is terminated
1855    with a NUL (0) byte.
1856
1857    Although not a strict requirement, ASN.1 strings that are parsed using
1858    OpenSSL's own "d2i" functions (and other similar parsing functions) as
1859    well as any string whose value has been set with the ASN1_STRING_set()
1860    function will additionally NUL terminate the byte array in the
1861    ASN1_STRING structure.
1862
1863    However, it is possible for applications to directly construct valid
1864    ASN1_STRING structures which do not NUL terminate the byte array by
1865    directly setting the "data" and "length" fields in the ASN1_STRING
1866    array. This can also happen by using the ASN1_STRING_set0() function.
1867
1868    Numerous OpenSSL functions that print ASN.1 data have been found to
1869    assume that the ASN1_STRING byte array will be NUL terminated, even
1870    though this is not guaranteed for strings that have been directly
1871    constructed. Where an application requests an ASN.1 structure to be
1872    printed, and where that ASN.1 structure contains ASN1_STRINGs that have
1873    been directly constructed by the application without NUL terminating
1874    the "data" field, then a read buffer overrun can occur.
1875
1876    The same thing can also occur during name constraints processing
1877    of certificates (for example if a certificate has been directly
1878    constructed by the application instead of loading it via the OpenSSL
1879    parsing functions, and the certificate contains non NUL terminated
1880    ASN1_STRING structures). It can also occur in the X509_get1_email(),
1881    X509_REQ_get1_email() and X509_get1_ocsp() functions.
1882
1883    If a malicious actor can cause an application to directly construct an
1884    ASN1_STRING and then process it through one of the affected OpenSSL
1885    functions then this issue could be hit. This might result in a crash
1886    (causing a Denial of Service attack). It could also result in the
1887    disclosure of private memory contents (such as private keys, or
1888    sensitive plaintext).
1889    ([CVE-2021-3712])
1890
1891    *Matt Caswell*
1892
1893 ### Changes between 1.1.1j and 1.1.1k [25 Mar 2021]
1894
1895  * Fixed a problem with verifying a certificate chain when using the
1896    X509_V_FLAG_X509_STRICT flag. This flag enables additional security checks of
1897    the certificates present in a certificate chain. It is not set by default.
1898
1899    Starting from OpenSSL version 1.1.1h a check to disallow certificates in
1900    the chain that have explicitly encoded elliptic curve parameters was added
1901    as an additional strict check.
1902
1903    An error in the implementation of this check meant that the result of a
1904    previous check to confirm that certificates in the chain are valid CA
1905    certificates was overwritten. This effectively bypasses the check
1906    that non-CA certificates must not be able to issue other certificates.
1907
1908    If a "purpose" has been configured then there is a subsequent opportunity
1909    for checks that the certificate is a valid CA.  All of the named "purpose"
1910    values implemented in libcrypto perform this check.  Therefore, where
1911    a purpose is set the certificate chain will still be rejected even when the
1912    strict flag has been used. A purpose is set by default in libssl client and
1913    server certificate verification routines, but it can be overridden or
1914    removed by an application.
1915
1916    In order to be affected, an application must explicitly set the
1917    X509_V_FLAG_X509_STRICT verification flag and either not set a purpose
1918    for the certificate verification or, in the case of TLS client or server
1919    applications, override the default purpose.
1920    ([CVE-2021-3450])
1921
1922    *Tomáš Mráz*
1923
1924  * Fixed an issue where an OpenSSL TLS server may crash if sent a maliciously
1925    crafted renegotiation ClientHello message from a client. If a TLSv1.2
1926    renegotiation ClientHello omits the signature_algorithms extension (where it
1927    was present in the initial ClientHello), but includes a
1928    signature_algorithms_cert extension then a NULL pointer dereference will
1929    result, leading to a crash and a denial of service attack.
1930
1931    A server is only vulnerable if it has TLSv1.2 and renegotiation enabled
1932    (which is the default configuration). OpenSSL TLS clients are not impacted by
1933    this issue.
1934    ([CVE-2021-3449])
1935
1936    *Peter Kästle and Samuel Sapalski*
1937
1938 ### Changes between 1.1.1i and 1.1.1j [16 Feb 2021]
1939
1940  * Fixed the X509_issuer_and_serial_hash() function. It attempts to
1941    create a unique hash value based on the issuer and serial number data
1942    contained within an X509 certificate. However it was failing to correctly
1943    handle any errors that may occur while parsing the issuer field (which might
1944    occur if the issuer field is maliciously constructed). This may subsequently
1945    result in a NULL pointer deref and a crash leading to a potential denial of
1946    service attack.
1947    ([CVE-2021-23841])
1948
1949    *Matt Caswell*
1950
1951  * Fixed the RSA_padding_check_SSLv23() function and the RSA_SSLV23_PADDING
1952    padding mode to correctly check for rollback attacks. This is considered a
1953    bug in OpenSSL 1.1.1 because it does not support SSLv2. In 1.0.2 this is
1954    CVE-2021-23839.
1955
1956    *Matt Caswell*
1957
1958    Fixed the EVP_CipherUpdate, EVP_EncryptUpdate and EVP_DecryptUpdate
1959    functions. Previously they could overflow the output length argument in some
1960    cases where the input length is close to the maximum permissable length for
1961    an integer on the platform. In such cases the return value from the function
1962    call would be 1 (indicating success), but the output length value would be
1963    negative. This could cause applications to behave incorrectly or crash.
1964    ([CVE-2021-23840])
1965
1966    *Matt Caswell*
1967
1968  * Fixed SRP_Calc_client_key so that it runs in constant time. The previous
1969    implementation called BN_mod_exp without setting BN_FLG_CONSTTIME. This
1970    could be exploited in a side channel attack to recover the password. Since
1971    the attack is local host only this is outside of the current OpenSSL
1972    threat model and therefore no CVE is assigned.
1973
1974    Thanks to Mohammed Sabt and Daniel De Almeida Braga for reporting this
1975    issue.
1976
1977    *Matt Caswell*
1978
1979 ### Changes between 1.1.1h and 1.1.1i [8 Dec 2020]
1980
1981  * Fixed NULL pointer deref in the GENERAL_NAME_cmp function
1982    This function could crash if both GENERAL_NAMEs contain an EDIPARTYNAME.
1983     If an attacker can control both items being compared  then this could lead
1984     to a possible denial of service attack. OpenSSL itself uses the
1985     GENERAL_NAME_cmp function for two purposes:
1986     1) Comparing CRL distribution point names between an available CRL and a
1987        CRL distribution point embedded in an X509 certificate
1988     2) When verifying that a timestamp response token signer matches the
1989        timestamp authority name (exposed via the API functions
1990        TS_RESP_verify_response and TS_RESP_verify_token)
1991    ([CVE-2020-1971])
1992
1993    *Matt Caswell*
1994
1995 ### Changes between 1.1.1g and 1.1.1h [22 Sep 2020]
1996
1997  * Certificates with explicit curve parameters are now disallowed in
1998    verification chains if the X509_V_FLAG_X509_STRICT flag is used.
1999
2000    *Tomáš Mráz*
2001
2002  * The 'MinProtocol' and 'MaxProtocol' configuration commands now silently
2003    ignore TLS protocol version bounds when configuring DTLS-based contexts, and
2004    conversely, silently ignore DTLS protocol version bounds when configuring
2005    TLS-based contexts.  The commands can be repeated to set bounds of both
2006    types.  The same applies with the corresponding "min_protocol" and
2007    "max_protocol" command-line switches, in case some application uses both TLS
2008    and DTLS.
2009
2010    SSL_CTX instances that are created for a fixed protocol version (e.g.
2011    TLSv1_server_method()) also silently ignore version bounds.  Previously
2012    attempts to apply bounds to these protocol versions would result in an
2013    error.  Now only the "version-flexible" SSL_CTX instances are subject to
2014    limits in configuration files in command-line options.
2015
2016    *Viktor Dukhovni*
2017
2018  * Handshake now fails if Extended Master Secret extension is dropped
2019    on renegotiation.
2020
2021    *Tomáš Mráz*
2022
2023  * The Oracle Developer Studio compiler will start reporting deprecated APIs
2024
2025 ### Changes between 1.1.1f and 1.1.1g [21 Apr 2020]
2026
2027  * Fixed segmentation fault in SSL_check_chain()
2028    Server or client applications that call the SSL_check_chain() function
2029    during or after a TLS 1.3 handshake may crash due to a NULL pointer
2030    dereference as a result of incorrect handling of the
2031    "signature_algorithms_cert" TLS extension. The crash occurs if an invalid
2032    or unrecognised signature algorithm is received from the peer. This could
2033    be exploited by a malicious peer in a Denial of Service attack.
2034    ([CVE-2020-1967])
2035
2036    *Benjamin Kaduk*
2037
2038  * Added AES consttime code for no-asm configurations
2039    an optional constant time support for AES was added
2040    when building openssl for no-asm.
2041    Enable with: ./config no-asm -DOPENSSL_AES_CONST_TIME
2042    Disable with: ./config no-asm -DOPENSSL_NO_AES_CONST_TIME
2043    At this time this feature is by default disabled.
2044    It will be enabled by default in 3.0.
2045
2046    *Bernd Edlinger*
2047
2048 ### Changes between 1.1.1e and 1.1.1f [31 Mar 2020]
2049
2050  * Revert the change of EOF detection while reading in libssl to avoid
2051    regressions in applications depending on the current way of reporting
2052    the EOF. As the existing method is not fully accurate the change to
2053    reporting the EOF via SSL_ERROR_SSL is kept on the current development
2054    branch and will be present in the 3.0 release.
2055
2056    *Tomáš Mráz*
2057
2058  * Revised BN_generate_prime_ex to not avoid factors 3..17863 in p-1
2059    when primes for RSA keys are computed.
2060    Since we previously always generated primes == 2 (mod 3) for RSA keys,
2061    the 2-prime and 3-prime RSA modules were easy to distinguish, since
2062    N = p*q = 1 (mod 3), but N = p*q*r = 2 (mod 3). Therefore fingerprinting
2063    2-prime vs. 3-prime RSA keys was possible by computing N mod 3.
2064    This avoids possible fingerprinting of newly generated RSA modules.
2065
2066    *Bernd Edlinger*
2067
2068 ### Changes between 1.1.1d and 1.1.1e [17 Mar 2020]
2069
2070  * Properly detect EOF while reading in libssl. Previously if we hit an EOF
2071    while reading in libssl then we would report an error back to the
2072    application (SSL_ERROR_SYSCALL) but errno would be 0. We now add
2073    an error to the stack (which means we instead return SSL_ERROR_SSL) and
2074    therefore give a hint as to what went wrong.
2075
2076    *Matt Caswell*
2077
2078  * Check that ed25519 and ed448 are allowed by the security level. Previously
2079    signature algorithms not using an MD were not being checked that they were
2080    allowed by the security level.
2081
2082    *Kurt Roeckx*
2083
2084  * Fixed SSL_get_servername() behaviour. The behaviour of SSL_get_servername()
2085    was not quite right. The behaviour was not consistent between resumption
2086    and normal handshakes, and also not quite consistent with historical
2087    behaviour. The behaviour in various scenarios has been clarified and
2088    it has been updated to make it match historical behaviour as closely as
2089    possible.
2090
2091    *Matt Caswell*
2092
2093  * *[VMS only]* The header files that the VMS compilers include automatically,
2094    `__DECC_INCLUDE_PROLOGUE.H` and `__DECC_INCLUDE_EPILOGUE.H`, use pragmas
2095    that the C++ compiler doesn't understand.  This is a shortcoming in the
2096    compiler, but can be worked around with `__cplusplus` guards.
2097
2098    C++ applications that use OpenSSL libraries must be compiled using the
2099    qualifier `/NAMES=(AS_IS,SHORTENED)` to be able to use all the OpenSSL
2100    functions.  Otherwise, only functions with symbols of less than 31
2101    characters can be used, as the linker will not be able to successfully
2102    resolve symbols with longer names.
2103
2104    *Richard Levitte*
2105
2106  * Added a new method to gather entropy on VMS, based on SYS$GET_ENTROPY.
2107    The presence of this system service is determined at run-time.
2108
2109    *Richard Levitte*
2110
2111  * Print all values for a PKCS#12 attribute with 'openssl pkcs12', not just
2112    the first value.
2113
2114    *Jon Spillett*
2115
2116 ### Changes between 1.1.1c and 1.1.1d [10 Sep 2019]
2117
2118  * Fixed a fork protection issue. OpenSSL 1.1.1 introduced a rewritten random
2119    number generator (RNG). This was intended to include protection in the
2120    event of a fork() system call in order to ensure that the parent and child
2121    processes did not share the same RNG state. However this protection was not
2122    being used in the default case.
2123
2124    A partial mitigation for this issue is that the output from a high
2125    precision timer is mixed into the RNG state so the likelihood of a parent
2126    and child process sharing state is significantly reduced.
2127
2128    If an application already calls OPENSSL_init_crypto() explicitly using
2129    OPENSSL_INIT_ATFORK then this problem does not occur at all.
2130    ([CVE-2019-1549])
2131
2132    *Matthias St. Pierre*
2133
2134  * For built-in EC curves, ensure an EC_GROUP built from the curve name is
2135    used even when parsing explicit parameters, when loading a encoded key
2136    or calling `EC_GROUP_new_from_ecpkparameters()`/
2137    `EC_GROUP_new_from_ecparameters()`.
2138    This prevents bypass of security hardening and performance gains,
2139    especially for curves with specialized EC_METHODs.
2140    By default, if a key encoded with explicit parameters is loaded and later
2141    encoded, the output is still encoded with explicit parameters, even if
2142    internally a "named" EC_GROUP is used for computation.
2143
2144    *Nicola Tuveri*
2145
2146  * Compute ECC cofactors if not provided during EC_GROUP construction. Before
2147    this change, EC_GROUP_set_generator would accept order and/or cofactor as
2148    NULL. After this change, only the cofactor parameter can be NULL. It also
2149    does some minimal sanity checks on the passed order.
2150    ([CVE-2019-1547])
2151
2152    *Billy Bob Brumley*
2153
2154  * Fixed a padding oracle in PKCS7_dataDecode and CMS_decrypt_set1_pkey.
2155    An attack is simple, if the first CMS_recipientInfo is valid but the
2156    second CMS_recipientInfo is chosen ciphertext. If the second
2157    recipientInfo decodes to PKCS #1 v1.5 form plaintext, the correct
2158    encryption key will be replaced by garbage, and the message cannot be
2159    decoded, but if the RSA decryption fails, the correct encryption key is
2160    used and the recipient will not notice the attack.
2161    As a work around for this potential attack the length of the decrypted
2162    key must be equal to the cipher default key length, in case the
2163    certifiate is not given and all recipientInfo are tried out.
2164    The old behaviour can be re-enabled in the CMS code by setting the
2165    CMS_DEBUG_DECRYPT flag.
2166    ([CVE-2019-1563])
2167
2168    *Bernd Edlinger*
2169
2170  * Early start up entropy quality from the DEVRANDOM seed source has been
2171    improved for older Linux systems.  The RAND subsystem will wait for
2172    /dev/random to be producing output before seeding from /dev/urandom.
2173    The seeded state is stored for future library initialisations using
2174    a system global shared memory segment.  The shared memory identifier
2175    can be configured by defining OPENSSL_RAND_SEED_DEVRANDOM_SHM_ID to
2176    the desired value.  The default identifier is 114.
2177
2178    *Paul Dale*
2179
2180  * Correct the extended master secret constant on EBCDIC systems. Without this
2181    fix TLS connections between an EBCDIC system and a non-EBCDIC system that
2182    negotiate EMS will fail. Unfortunately this also means that TLS connections
2183    between EBCDIC systems with this fix, and EBCDIC systems without this
2184    fix will fail if they negotiate EMS.
2185
2186    *Matt Caswell*
2187
2188  * Use Windows installation paths in the mingw builds
2189
2190    Mingw isn't a POSIX environment per se, which means that Windows
2191    paths should be used for installation.
2192    ([CVE-2019-1552])
2193
2194    *Richard Levitte*
2195
2196  * Changed DH_check to accept parameters with order q and 2q subgroups.
2197    With order 2q subgroups the bit 0 of the private key is not secret
2198    but DH_generate_key works around that by clearing bit 0 of the
2199    private key for those. This avoids leaking bit 0 of the private key.
2200
2201    *Bernd Edlinger*
2202
2203  * Significantly reduce secure memory usage by the randomness pools.
2204
2205    *Paul Dale*
2206
2207  * Revert the DEVRANDOM_WAIT feature for Linux systems
2208
2209    The DEVRANDOM_WAIT feature added a select() call to wait for the
2210    /dev/random device to become readable before reading from the
2211    /dev/urandom device.
2212
2213    It turned out that this change had negative side effects on
2214    performance which were not acceptable. After some discussion it
2215    was decided to revert this feature and leave it up to the OS
2216    resp. the platform maintainer to ensure a proper initialization
2217    during early boot time.
2218
2219    *Matthias St. Pierre*
2220
2221 ### Changes between 1.1.1b and 1.1.1c [28 May 2019]
2222
2223  * Add build tests for C++.  These are generated files that only do one
2224    thing, to include one public OpenSSL head file each.  This tests that
2225    the public header files can be usefully included in a C++ application.
2226
2227    This test isn't enabled by default.  It can be enabled with the option
2228    'enable-buildtest-c++'.
2229
2230    *Richard Levitte*
2231
2232  * Enable SHA3 pre-hashing for ECDSA and DSA.
2233
2234    *Patrick Steuer*
2235
2236  * Change the default RSA, DSA and DH size to 2048 bit instead of 1024.
2237    This changes the size when using the `genpkey` command when no size is given.
2238    It fixes an omission in earlier changes that changed all RSA, DSA and DH
2239    generation commands to use 2048 bits by default.
2240
2241    *Kurt Roeckx*
2242
2243  * Reorganize the manual pages to consistently have RETURN VALUES,
2244    EXAMPLES, SEE ALSO and HISTORY come in that order, and adjust
2245    util/fix-doc-nits accordingly.
2246
2247    *Paul Yang, Joshua Lock*
2248
2249  * Add the missing accessor EVP_PKEY_get0_engine()
2250
2251    *Matt Caswell*
2252
2253  * Have commands like `s_client` and `s_server` output the signature scheme
2254    along with other cipher suite parameters when debugging.
2255
2256    *Lorinczy Zsigmond*
2257
2258  * Make OPENSSL_config() error agnostic again.
2259
2260    *Richard Levitte*
2261
2262  * Do the error handling in RSA decryption constant time.
2263
2264    *Bernd Edlinger*
2265
2266  * Prevent over long nonces in ChaCha20-Poly1305.
2267
2268    ChaCha20-Poly1305 is an AEAD cipher, and requires a unique nonce input
2269    for every encryption operation. RFC 7539 specifies that the nonce value
2270    (IV) should be 96 bits (12 bytes). OpenSSL allows a variable nonce length
2271    and front pads the nonce with 0 bytes if it is less than 12
2272    bytes. However it also incorrectly allows a nonce to be set of up to 16
2273    bytes. In this case only the last 12 bytes are significant and any
2274    additional leading bytes are ignored.
2275
2276    It is a requirement of using this cipher that nonce values are
2277    unique. Messages encrypted using a reused nonce value are susceptible to
2278    serious confidentiality and integrity attacks. If an application changes
2279    the default nonce length to be longer than 12 bytes and then makes a
2280    change to the leading bytes of the nonce expecting the new value to be a
2281    new unique nonce then such an application could inadvertently encrypt
2282    messages with a reused nonce.
2283
2284    Additionally the ignored bytes in a long nonce are not covered by the
2285    integrity guarantee of this cipher. Any application that relies on the
2286    integrity of these ignored leading bytes of a long nonce may be further
2287    affected. Any OpenSSL internal use of this cipher, including in SSL/TLS,
2288    is safe because no such use sets such a long nonce value. However user
2289    applications that use this cipher directly and set a non-default nonce
2290    length to be longer than 12 bytes may be vulnerable.
2291
2292    This issue was reported to OpenSSL on 16th of March 2019 by Joran Dirk
2293    Greef of Ronomon.
2294    ([CVE-2019-1543])
2295
2296    *Matt Caswell*
2297
2298  * Add DEVRANDOM_WAIT feature for Linux systems
2299
2300    On older Linux systems where the getrandom() system call is not available,
2301    OpenSSL normally uses the /dev/urandom device for seeding its CSPRNG.
2302    Contrary to getrandom(), the /dev/urandom device will not block during
2303    early boot when the kernel CSPRNG has not been seeded yet.
2304
2305    To mitigate this known weakness, use select() to wait for /dev/random to
2306    become readable before reading from /dev/urandom.
2307
2308  * Ensure that SM2 only uses SM3 as digest algorithm
2309
2310    *Paul Yang*
2311
2312 ### Changes between 1.1.1a and 1.1.1b [26 Feb 2019]
2313
2314  * Change the info callback signals for the start and end of a post-handshake
2315    message exchange in TLSv1.3. In 1.1.1/1.1.1a we used SSL_CB_HANDSHAKE_START
2316    and SSL_CB_HANDSHAKE_DONE. Experience has shown that many applications get
2317    confused by this and assume that a TLSv1.2 renegotiation has started. This
2318    can break KeyUpdate handling. Instead we no longer signal the start and end
2319    of a post handshake message exchange (although the messages themselves are
2320    still signalled). This could break some applications that were expecting
2321    the old signals. However without this KeyUpdate is not usable for many
2322    applications.
2323
2324    *Matt Caswell*
2325
2326 ### Changes between 1.1.1 and 1.1.1a [20 Nov 2018]
2327
2328  * Timing vulnerability in DSA signature generation
2329
2330    The OpenSSL DSA signature algorithm has been shown to be vulnerable to a
2331    timing side channel attack. An attacker could use variations in the signing
2332    algorithm to recover the private key.
2333
2334    This issue was reported to OpenSSL on 16th October 2018 by Samuel Weiser.
2335    ([CVE-2018-0734])
2336
2337    *Paul Dale*
2338
2339  * Timing vulnerability in ECDSA signature generation
2340
2341    The OpenSSL ECDSA signature algorithm has been shown to be vulnerable to a
2342    timing side channel attack. An attacker could use variations in the signing
2343    algorithm to recover the private key.
2344
2345    This issue was reported to OpenSSL on 25th October 2018 by Samuel Weiser.
2346    ([CVE-2018-0735])
2347
2348    *Paul Dale*
2349
2350  * Fixed the issue that RAND_add()/RAND_seed() silently discards random input
2351    if its length exceeds 4096 bytes. The limit has been raised to a buffer size
2352    of two gigabytes and the error handling improved.
2353
2354    This issue was reported to OpenSSL by Dr. Falko Strenzke. It has been
2355    categorized as a normal bug, not a security issue, because the DRBG reseeds
2356    automatically and is fully functional even without additional randomness
2357    provided by the application.
2358
2359 ### Changes between 1.1.0i and 1.1.1 [11 Sep 2018]
2360
2361  * Add a new ClientHello callback. Provides a callback interface that gives
2362    the application the ability to adjust the nascent SSL object at the
2363    earliest stage of ClientHello processing, immediately after extensions have
2364    been collected but before they have been processed. In particular, this
2365    callback can adjust the supported TLS versions in response to the contents
2366    of the ClientHello
2367
2368    *Benjamin Kaduk*
2369
2370  * Add SM2 base algorithm support.
2371
2372    *Jack Lloyd*
2373
2374  * s390x assembly pack: add (improved) hardware-support for the following
2375    cryptographic primitives: sha3, shake, aes-gcm, aes-ccm, aes-ctr, aes-ofb,
2376    aes-cfb/cfb8, aes-ecb.
2377
2378    *Patrick Steuer*
2379
2380  * Make EVP_PKEY_asn1_new() a bit stricter about its input.  A NULL pem_str
2381    parameter is no longer accepted, as it leads to a corrupt table.  NULL
2382    pem_str is reserved for alias entries only.
2383
2384    *Richard Levitte*
2385
2386  * Use the new ec_scalar_mul_ladder scaffold to implement a specialized ladder
2387    step for prime curves. The new implementation is based on formulae from
2388    differential addition-and-doubling in homogeneous projective coordinates
2389    from Izu-Takagi "A fast parallel elliptic curve multiplication resistant
2390    against side channel attacks" and Brier-Joye "Weierstrass Elliptic Curves
2391    and Side-Channel Attacks" Eq. (8) for y-coordinate recovery, modified
2392    to work in projective coordinates.
2393
2394    *Billy Bob Brumley, Nicola Tuveri*
2395
2396  * Change generating and checking of primes so that the error rate of not
2397    being prime depends on the intended use based on the size of the input.
2398    For larger primes this will result in more rounds of Miller-Rabin.
2399    The maximal error rate for primes with more than 1080 bits is lowered
2400    to 2^-128.
2401
2402    *Kurt Roeckx, Annie Yousar*
2403
2404  * Increase the number of Miller-Rabin rounds for DSA key generating to 64.
2405
2406    *Kurt Roeckx*
2407
2408  * The 'tsget' script is renamed to 'tsget.pl', to avoid confusion when
2409    moving between systems, and to avoid confusion when a Windows build is
2410    done with mingw vs with MSVC.  For POSIX installs, there's still a
2411    symlink or copy named 'tsget' to avoid that confusion as well.
2412
2413    *Richard Levitte*
2414
2415  * Revert blinding in ECDSA sign and instead make problematic addition
2416    length-invariant. Switch even to fixed-length Montgomery multiplication.
2417
2418    *Andy Polyakov*
2419
2420  * Use the new ec_scalar_mul_ladder scaffold to implement a specialized ladder
2421    step for binary curves. The new implementation is based on formulae from
2422    differential addition-and-doubling in mixed Lopez-Dahab projective
2423    coordinates, modified to independently blind the operands.
2424
2425    *Billy Bob Brumley, Sohaib ul Hassan, Nicola Tuveri*
2426
2427  * Add a scaffold to optionally enhance the Montgomery ladder implementation
2428    for `ec_scalar_mul_ladder` (formerly `ec_mul_consttime`) allowing
2429    EC_METHODs to implement their own specialized "ladder step", to take
2430    advantage of more favorable coordinate systems or more efficient
2431    differential addition-and-doubling algorithms.
2432
2433    *Billy Bob Brumley, Sohaib ul Hassan, Nicola Tuveri*
2434
2435  * Modified the random device based seed sources to keep the relevant
2436    file descriptors open rather than reopening them on each access.
2437    This allows such sources to operate in a chroot() jail without
2438    the associated device nodes being available. This behaviour can be
2439    controlled using RAND_keep_random_devices_open().
2440
2441    *Paul Dale*
2442
2443  * Numerous side-channel attack mitigations have been applied. This may have
2444    performance impacts for some algorithms for the benefit of improved
2445    security. Specific changes are noted in this change log by their respective
2446    authors.
2447
2448    *Matt Caswell*
2449
2450  * AIX shared library support overhaul. Switch to AIX "natural" way of
2451    handling shared libraries, which means collecting shared objects of
2452    different versions and bitnesses in one common archive. This allows to
2453    mitigate conflict between 1.0 and 1.1 side-by-side installations. It
2454    doesn't affect the way 3rd party applications are linked, only how
2455    multi-version installation is managed.
2456
2457    *Andy Polyakov*
2458
2459  * Make ec_group_do_inverse_ord() more robust and available to other
2460    EC cryptosystems, so that irrespective of BN_FLG_CONSTTIME, SCA
2461    mitigations are applied to the fallback BN_mod_inverse().
2462    When using this function rather than BN_mod_inverse() directly, new
2463    EC cryptosystem implementations are then safer-by-default.
2464
2465    *Billy Bob Brumley*
2466
2467  * Add coordinate blinding for EC_POINT and implement projective
2468    coordinate blinding for generic prime curves as a countermeasure to
2469    chosen point SCA attacks.
2470
2471    *Sohaib ul Hassan, Nicola Tuveri, Billy Bob Brumley*
2472
2473  * Add blinding to ECDSA and DSA signatures to protect against side channel
2474    attacks discovered by Keegan Ryan (NCC Group).
2475
2476    *Matt Caswell*
2477
2478  * Enforce checking in the `pkeyutl` command to ensure that the input
2479    length does not exceed the maximum supported digest length when performing
2480    a sign, verify or verifyrecover operation.
2481
2482    *Matt Caswell*
2483
2484  * SSL_MODE_AUTO_RETRY is enabled by default. Applications that use blocking
2485    I/O in combination with something like select() or poll() will hang. This
2486    can be turned off again using SSL_CTX_clear_mode().
2487    Many applications do not properly handle non-application data records, and
2488    TLS 1.3 sends more of such records. Setting SSL_MODE_AUTO_RETRY works
2489    around the problems in those applications, but can also break some.
2490    It's recommended to read the manpages about SSL_read(), SSL_write(),
2491    SSL_get_error(), SSL_shutdown(), SSL_CTX_set_mode() and
2492    SSL_CTX_set_read_ahead() again.
2493
2494    *Kurt Roeckx*
2495
2496  * When unlocking a pass phrase protected PEM file or PKCS#8 container, we
2497    now allow empty (zero character) pass phrases.
2498
2499    *Richard Levitte*
2500
2501  * Apply blinding to binary field modular inversion and remove patent
2502    pending (OPENSSL_SUN_GF2M_DIV) BN_GF2m_mod_div implementation.
2503
2504    *Billy Bob Brumley*
2505
2506  * Deprecate ec2_mult.c and unify scalar multiplication code paths for
2507    binary and prime elliptic curves.
2508
2509    *Billy Bob Brumley*
2510
2511  * Remove ECDSA nonce padding: EC_POINT_mul is now responsible for
2512    constant time fixed point multiplication.
2513
2514    *Billy Bob Brumley*
2515
2516  * Revise elliptic curve scalar multiplication with timing attack
2517    defenses: ec_wNAF_mul redirects to a constant time implementation
2518    when computing fixed point and variable point multiplication (which
2519    in OpenSSL are mostly used with secret scalars in keygen, sign,
2520    ECDH derive operations).
2521    *Billy Bob Brumley, Nicola Tuveri, Cesar Pereida García,
2522     Sohaib ul Hassan*
2523
2524  * Updated CONTRIBUTING
2525
2526    *Rich Salz*
2527
2528  * Updated DRBG / RAND to request nonce and additional low entropy
2529    randomness from the system.
2530
2531    *Matthias St. Pierre*
2532
2533  * Updated 'openssl rehash' to use OpenSSL consistent default.
2534
2535    *Richard Levitte*
2536
2537  * Moved the load of the ssl_conf module to libcrypto, which helps
2538    loading engines that libssl uses before libssl is initialised.
2539
2540    *Matt Caswell*
2541
2542  * Added EVP_PKEY_sign() and EVP_PKEY_verify() for EdDSA
2543
2544    *Matt Caswell*
2545
2546  * Fixed X509_NAME_ENTRY_set to get multi-valued RDNs right in all cases.
2547
2548    *Ingo Schwarze, Rich Salz*
2549
2550  * Added output of accepting IP address and port for 'openssl s_server'
2551
2552    *Richard Levitte*
2553
2554  * Added a new API for TLSv1.3 ciphersuites:
2555       SSL_CTX_set_ciphersuites()
2556       SSL_set_ciphersuites()
2557
2558    *Matt Caswell*
2559
2560  * Memory allocation failures consistently add an error to the error
2561    stack.
2562
2563    *Rich Salz*
2564
2565  * Don't use OPENSSL_ENGINES and OPENSSL_CONF environment values
2566    in libcrypto when run as setuid/setgid.
2567
2568    *Bernd Edlinger*
2569
2570  * Load any config file by default when libssl is used.
2571
2572    *Matt Caswell*
2573
2574  * Added new public header file <openssl/rand_drbg.h> and documentation
2575    for the RAND_DRBG API. See manual page RAND_DRBG(7) for an overview.
2576
2577    *Matthias St. Pierre*
2578
2579  * QNX support removed (cannot find contributors to get their approval
2580    for the license change).
2581
2582    *Rich Salz*
2583
2584  * TLSv1.3 replay protection for early data has been implemented. See the
2585    SSL_read_early_data() man page for further details.
2586
2587    *Matt Caswell*
2588
2589  * Separated TLSv1.3 ciphersuite configuration out from TLSv1.2 ciphersuite
2590    configuration. TLSv1.3 ciphersuites are not compatible with TLSv1.2 and
2591    below. Similarly TLSv1.2 ciphersuites are not compatible with TLSv1.3.
2592    In order to avoid issues where legacy TLSv1.2 ciphersuite configuration
2593    would otherwise inadvertently disable all TLSv1.3 ciphersuites the
2594    configuration has been separated out. See the ciphers man page or the
2595    SSL_CTX_set_ciphersuites() man page for more information.
2596
2597    *Matt Caswell*
2598
2599  * On POSIX (BSD, Linux, ...) systems the ocsp(1) command running
2600    in responder mode now supports the new "-multi" option, which
2601    spawns the specified number of child processes to handle OCSP
2602    requests.  The "-timeout" option now also limits the OCSP
2603    responder's patience to wait to receive the full client request
2604    on a newly accepted connection. Child processes are respawned
2605    as needed, and the CA index file is automatically reloaded
2606    when changed.  This makes it possible to run the "ocsp" responder
2607    as a long-running service, making the OpenSSL CA somewhat more
2608    feature-complete.  In this mode, most diagnostic messages logged
2609    after entering the event loop are logged via syslog(3) rather than
2610    written to stderr.
2611
2612    *Viktor Dukhovni*
2613
2614  * Added support for X448 and Ed448. Heavily based on original work by
2615    Mike Hamburg.
2616
2617    *Matt Caswell*
2618
2619  * Extend OSSL_STORE with capabilities to search and to narrow the set of
2620    objects loaded.  This adds the functions OSSL_STORE_expect() and
2621    OSSL_STORE_find() as well as needed tools to construct searches and
2622    get the search data out of them.
2623
2624    *Richard Levitte*
2625
2626  * Support for TLSv1.3 added. Note that users upgrading from an earlier
2627    version of OpenSSL should review their configuration settings to ensure
2628    that they are still appropriate for TLSv1.3. For further information see:
2629    <https://wiki.openssl.org/index.php/TLS1.3>
2630
2631    *Matt Caswell*
2632
2633  * Grand redesign of the OpenSSL random generator
2634
2635    The default RAND method now utilizes an AES-CTR DRBG according to
2636    NIST standard SP 800-90Ar1. The new random generator is essentially
2637    a port of the default random generator from the OpenSSL FIPS 2.0
2638    object module. It is a hybrid deterministic random bit generator
2639    using an AES-CTR bit stream and which seeds and reseeds itself
2640    automatically using trusted system entropy sources.
2641
2642    Some of its new features are:
2643     - Support for multiple DRBG instances with seed chaining.
2644     - The default RAND method makes use of a DRBG.
2645     - There is a public and private DRBG instance.
2646     - The DRBG instances are fork-safe.
2647     - Keep all global DRBG instances on the secure heap if it is enabled.
2648     - The public and private DRBG instance are per thread for lock free
2649       operation
2650
2651    *Paul Dale, Benjamin Kaduk, Kurt Roeckx, Rich Salz, Matthias St. Pierre*
2652
2653  * Changed Configure so it only says what it does and doesn't dump
2654    so much data.  Instead, ./configdata.pm should be used as a script
2655    to display all sorts of configuration data.
2656
2657    *Richard Levitte*
2658
2659  * Added processing of "make variables" to Configure.
2660
2661    *Richard Levitte*
2662
2663  * Added SHA512/224 and SHA512/256 algorithm support.
2664
2665    *Paul Dale*
2666
2667  * The last traces of Netware support, first removed in 1.1.0, have
2668    now been removed.
2669
2670    *Rich Salz*
2671
2672  * Get rid of Makefile.shared, and in the process, make the processing
2673    of certain files (rc.obj, or the .def/.map/.opt files produced from
2674    the ordinal files) more visible and hopefully easier to trace and
2675    debug (or make silent).
2676
2677    *Richard Levitte*
2678
2679  * Make it possible to have environment variable assignments as
2680    arguments to config / Configure.
2681
2682    *Richard Levitte*
2683
2684  * Add multi-prime RSA (RFC 8017) support.
2685
2686    *Paul Yang*
2687
2688  * Add SM3 implemented according to GB/T 32905-2016
2689    *Jack Lloyd <jack.lloyd@ribose.com>,*
2690    *Ronald Tse <ronald.tse@ribose.com>,*
2691    *Erick Borsboom <erick.borsboom@ribose.com>*
2692
2693  * Add 'Maximum Fragment Length' TLS extension negotiation and support
2694    as documented in RFC6066.
2695    Based on a patch from Tomasz Moń
2696
2697    *Filipe Raimundo da Silva*
2698
2699  * Add SM4 implemented according to GB/T 32907-2016.
2700    *Jack Lloyd <jack.lloyd@ribose.com>,*
2701    *Ronald Tse <ronald.tse@ribose.com>,*
2702    *Erick Borsboom <erick.borsboom@ribose.com>*
2703
2704  * Reimplement -newreq-nodes and ERR_error_string_n; the
2705    original author does not agree with the license change.
2706
2707    *Rich Salz*
2708
2709  * Add ARIA AEAD TLS support.
2710
2711    *Jon Spillett*
2712
2713  * Some macro definitions to support VS6 have been removed.  Visual
2714    Studio 6 has not worked since 1.1.0
2715
2716    *Rich Salz*
2717
2718  * Add ERR_clear_last_mark(), to allow callers to clear the last mark
2719    without clearing the errors.
2720
2721    *Richard Levitte*
2722
2723  * Add "atfork" functions.  If building on a system that without
2724    pthreads, see doc/man3/OPENSSL_fork_prepare.pod for application
2725    requirements.  The RAND facility now uses/requires this.
2726
2727    *Rich Salz*
2728
2729  * Add SHA3.
2730
2731    *Andy Polyakov*
2732
2733  * The UI API becomes a permanent and integral part of libcrypto, i.e.
2734    not possible to disable entirely.  However, it's still possible to
2735    disable the console reading UI method, UI_OpenSSL() (use UI_null()
2736    as a fallback).
2737
2738    To disable, configure with 'no-ui-console'.  'no-ui' is still
2739    possible to use as an alias.  Check at compile time with the
2740    macro OPENSSL_NO_UI_CONSOLE.  The macro OPENSSL_NO_UI is still
2741    possible to check and is an alias for OPENSSL_NO_UI_CONSOLE.
2742
2743    *Richard Levitte*
2744
2745  * Add a STORE module, which implements a uniform and URI based reader of
2746    stores that can contain keys, certificates, CRLs and numerous other
2747    objects.  The main API is loosely based on a few stdio functions,
2748    and includes OSSL_STORE_open, OSSL_STORE_load, OSSL_STORE_eof,
2749    OSSL_STORE_error and OSSL_STORE_close.
2750    The implementation uses backends called "loaders" to implement arbitrary
2751    URI schemes.  There is one built in "loader" for the 'file' scheme.
2752
2753    *Richard Levitte*
2754
2755  * Add devcrypto engine.  This has been implemented against cryptodev-linux,
2756    then adjusted to work on FreeBSD 8.4 as well.
2757    Enable by configuring with 'enable-devcryptoeng'.  This is done by default
2758    on BSD implementations, as cryptodev.h is assumed to exist on all of them.
2759
2760    *Richard Levitte*
2761
2762  * Module names can prefixed with OSSL_ or OPENSSL_.  This affects
2763    util/mkerr.pl, which is adapted to allow those prefixes, leading to
2764    error code calls like this:
2765
2766            OSSL_FOOerr(OSSL_FOO_F_SOMETHING, OSSL_FOO_R_WHATEVER);
2767
2768    With this change, we claim the namespaces OSSL and OPENSSL in a manner
2769    that can be encoded in C.  For the foreseeable future, this will only
2770    affect new modules.
2771
2772    *Richard Levitte and Tim Hudson*
2773
2774  * Removed BSD cryptodev engine.
2775
2776    *Rich Salz*
2777
2778  * Add a build target 'build_all_generated', to build all generated files
2779    and only that.  This can be used to prepare everything that requires
2780    things like perl for a system that lacks perl and then move everything
2781    to that system and do the rest of the build there.
2782
2783    *Richard Levitte*
2784
2785  * In the UI interface, make it possible to duplicate the user data.  This
2786    can be used by engines that need to retain the data for a longer time
2787    than just the call where this user data is passed.
2788
2789    *Richard Levitte*
2790
2791  * Ignore the '-named_curve auto' value for compatibility of applications
2792    with OpenSSL 1.0.2.
2793
2794    *Tomáš Mráz <tmraz@fedoraproject.org>*
2795
2796  * Fragmented SSL/TLS alerts are no longer accepted. An alert message is 2
2797    bytes long. In theory it is permissible in SSLv3 - TLSv1.2 to fragment such
2798    alerts across multiple records (some of which could be empty). In practice
2799    it make no sense to send an empty alert record, or to fragment one. TLSv1.3
2800    prohibits this altogether and other libraries (BoringSSL, NSS) do not
2801    support this at all. Supporting it adds significant complexity to the
2802    record layer, and its removal is unlikely to cause interoperability
2803    issues.
2804
2805    *Matt Caswell*
2806
2807  * Add the ASN.1 types INT32, UINT32, INT64, UINT64 and variants prefixed
2808    with Z.  These are meant to replace LONG and ZLONG and to be size safe.
2809    The use of LONG and ZLONG is discouraged and scheduled for deprecation
2810    in OpenSSL 1.2.0.
2811
2812    *Richard Levitte*
2813
2814  * Add the 'z' and 'j' modifiers to BIO_printf() et al formatting string,
2815    'z' is to be used for [s]size_t, and 'j' - with [u]int64_t.
2816
2817    *Richard Levitte, Andy Polyakov*
2818
2819  * Add EC_KEY_get0_engine(), which does for EC_KEY what RSA_get0_engine()
2820    does for RSA, etc.
2821
2822    *Richard Levitte*
2823
2824  * Have 'config' recognise 64-bit mingw and choose 'mingw64' as the target
2825    platform rather than 'mingw'.
2826
2827    *Richard Levitte*
2828
2829  * The functions X509_STORE_add_cert and X509_STORE_add_crl return
2830    success if they are asked to add an object which already exists
2831    in the store. This change cascades to other functions which load
2832    certificates and CRLs.
2833
2834    *Paul Dale*
2835
2836  * x86_64 assembly pack: annotate code with DWARF CFI directives to
2837    facilitate stack unwinding even from assembly subroutines.
2838
2839    *Andy Polyakov*
2840
2841  * Remove VAX C specific definitions of OPENSSL_EXPORT, OPENSSL_EXTERN.
2842    Also remove OPENSSL_GLOBAL entirely, as it became a no-op.
2843
2844    *Richard Levitte*
2845
2846  * Remove the VMS-specific reimplementation of gmtime from crypto/o_times.c.
2847    VMS C's RTL has a fully up to date gmtime() and gmtime_r() since V7.1,
2848    which is the minimum version we support.
2849
2850    *Richard Levitte*
2851
2852  * Certificate time validation (X509_cmp_time) enforces stricter
2853    compliance with RFC 5280. Fractional seconds and timezone offsets
2854    are no longer allowed.
2855
2856    *Emilia Käsper*
2857
2858  * Add support for ARIA
2859
2860    *Paul Dale*
2861
2862  * s_client will now send the Server Name Indication (SNI) extension by
2863    default unless the new "-noservername" option is used. The server name is
2864    based on the host provided to the "-connect" option unless overridden by
2865    using "-servername".
2866
2867    *Matt Caswell*
2868
2869  * Add support for SipHash
2870
2871    *Todd Short*
2872
2873  * OpenSSL now fails if it receives an unrecognised record type in TLS1.0
2874    or TLS1.1. Previously this only happened in SSLv3 and TLS1.2. This is to
2875    prevent issues where no progress is being made and the peer continually
2876    sends unrecognised record types, using up resources processing them.
2877
2878    *Matt Caswell*
2879
2880  * 'openssl passwd' can now produce SHA256 and SHA512 based output,
2881    using the algorithm defined in
2882    <https://www.akkadia.org/drepper/SHA-crypt.txt>
2883
2884    *Richard Levitte*
2885
2886  * Heartbeat support has been removed; the ABI is changed for now.
2887
2888    *Richard Levitte, Rich Salz*
2889
2890  * Support for SSL_OP_NO_ENCRYPT_THEN_MAC in SSL_CONF_cmd.
2891
2892    *Emilia Käsper*
2893
2894  * The RSA "null" method, which was partially supported to avoid patent
2895    issues, has been replaced to always returns NULL.
2896
2897    *Rich Salz*
2898
2899 OpenSSL 1.1.0
2900 -------------
2901
2902 ### Changes between 1.1.0k and 1.1.0l [10 Sep 2019]
2903
2904  * For built-in EC curves, ensure an EC_GROUP built from the curve name is
2905    used even when parsing explicit parameters, when loading a encoded key
2906    or calling `EC_GROUP_new_from_ecpkparameters()`/
2907    `EC_GROUP_new_from_ecparameters()`.
2908    This prevents bypass of security hardening and performance gains,
2909    especially for curves with specialized EC_METHODs.
2910    By default, if a key encoded with explicit parameters is loaded and later
2911    encoded, the output is still encoded with explicit parameters, even if
2912    internally a "named" EC_GROUP is used for computation.
2913
2914    *Nicola Tuveri*
2915
2916  * Compute ECC cofactors if not provided during EC_GROUP construction. Before
2917    this change, EC_GROUP_set_generator would accept order and/or cofactor as
2918    NULL. After this change, only the cofactor parameter can be NULL. It also
2919    does some minimal sanity checks on the passed order.
2920    ([CVE-2019-1547])
2921
2922    *Billy Bob Brumley*
2923
2924  * Fixed a padding oracle in PKCS7_dataDecode and CMS_decrypt_set1_pkey.
2925    An attack is simple, if the first CMS_recipientInfo is valid but the
2926    second CMS_recipientInfo is chosen ciphertext. If the second
2927    recipientInfo decodes to PKCS #1 v1.5 form plaintext, the correct
2928    encryption key will be replaced by garbage, and the message cannot be
2929    decoded, but if the RSA decryption fails, the correct encryption key is
2930    used and the recipient will not notice the attack.
2931    As a work around for this potential attack the length of the decrypted
2932    key must be equal to the cipher default key length, in case the
2933    certifiate is not given and all recipientInfo are tried out.
2934    The old behaviour can be re-enabled in the CMS code by setting the
2935    CMS_DEBUG_DECRYPT flag.
2936    ([CVE-2019-1563])
2937
2938    *Bernd Edlinger*
2939
2940  * Use Windows installation paths in the mingw builds
2941
2942    Mingw isn't a POSIX environment per se, which means that Windows
2943    paths should be used for installation.
2944    ([CVE-2019-1552])
2945
2946    *Richard Levitte*
2947
2948 ### Changes between 1.1.0j and 1.1.0k [28 May 2019]
2949
2950  * Change the default RSA, DSA and DH size to 2048 bit instead of 1024.
2951    This changes the size when using the `genpkey` command when no size is given.
2952    It fixes an omission in earlier changes that changed all RSA, DSA and DH
2953    generation commands to use 2048 bits by default.
2954
2955    *Kurt Roeckx*
2956
2957  * Prevent over long nonces in ChaCha20-Poly1305.
2958
2959    ChaCha20-Poly1305 is an AEAD cipher, and requires a unique nonce input
2960    for every encryption operation. RFC 7539 specifies that the nonce value
2961    (IV) should be 96 bits (12 bytes). OpenSSL allows a variable nonce length
2962    and front pads the nonce with 0 bytes if it is less than 12
2963    bytes. However it also incorrectly allows a nonce to be set of up to 16
2964    bytes. In this case only the last 12 bytes are significant and any
2965    additional leading bytes are ignored.
2966
2967    It is a requirement of using this cipher that nonce values are
2968    unique. Messages encrypted using a reused nonce value are susceptible to
2969    serious confidentiality and integrity attacks. If an application changes
2970    the default nonce length to be longer than 12 bytes and then makes a
2971    change to the leading bytes of the nonce expecting the new value to be a
2972    new unique nonce then such an application could inadvertently encrypt
2973    messages with a reused nonce.
2974
2975    Additionally the ignored bytes in a long nonce are not covered by the
2976    integrity guarantee of this cipher. Any application that relies on the
2977    integrity of these ignored leading bytes of a long nonce may be further
2978    affected. Any OpenSSL internal use of this cipher, including in SSL/TLS,
2979    is safe because no such use sets such a long nonce value. However user
2980    applications that use this cipher directly and set a non-default nonce
2981    length to be longer than 12 bytes may be vulnerable.
2982
2983    This issue was reported to OpenSSL on 16th of March 2019 by Joran Dirk
2984    Greef of Ronomon.
2985    ([CVE-2019-1543])
2986
2987    *Matt Caswell*
2988
2989  * Added SCA hardening for modular field inversion in EC_GROUP through
2990    a new dedicated field_inv() pointer in EC_METHOD.
2991    This also addresses a leakage affecting conversions from projective
2992    to affine coordinates.
2993
2994    *Billy Bob Brumley, Nicola Tuveri*
2995
2996  * Fix a use after free bug in d2i_X509_PUBKEY when overwriting a
2997    re-used X509_PUBKEY object if the second PUBKEY is malformed.
2998
2999    *Bernd Edlinger*
3000
3001  * Move strictness check from EVP_PKEY_asn1_new() to EVP_PKEY_asn1_add0().
3002
3003    *Richard Levitte*
3004
3005  * Remove the 'dist' target and add a tarball building script.  The
3006    'dist' target has fallen out of use, and it shouldn't be
3007    necessary to configure just to create a source distribution.
3008
3009    *Richard Levitte*
3010
3011 ### Changes between 1.1.0i and 1.1.0j [20 Nov 2018]
3012
3013  * Timing vulnerability in DSA signature generation
3014
3015    The OpenSSL DSA signature algorithm has been shown to be vulnerable to a
3016    timing side channel attack. An attacker could use variations in the signing
3017    algorithm to recover the private key.
3018
3019    This issue was reported to OpenSSL on 16th October 2018 by Samuel Weiser.
3020    ([CVE-2018-0734])
3021
3022    *Paul Dale*
3023
3024  * Timing vulnerability in ECDSA signature generation
3025
3026    The OpenSSL ECDSA signature algorithm has been shown to be vulnerable to a
3027    timing side channel attack. An attacker could use variations in the signing
3028    algorithm to recover the private key.
3029
3030    This issue was reported to OpenSSL on 25th October 2018 by Samuel Weiser.
3031    ([CVE-2018-0735])
3032
3033    *Paul Dale*
3034
3035  * Add coordinate blinding for EC_POINT and implement projective
3036    coordinate blinding for generic prime curves as a countermeasure to
3037    chosen point SCA attacks.
3038
3039    *Sohaib ul Hassan, Nicola Tuveri, Billy Bob Brumley*
3040
3041 ### Changes between 1.1.0h and 1.1.0i [14 Aug 2018]
3042
3043  * Client DoS due to large DH parameter
3044
3045    During key agreement in a TLS handshake using a DH(E) based ciphersuite a
3046    malicious server can send a very large prime value to the client. This will
3047    cause the client to spend an unreasonably long period of time generating a
3048    key for this prime resulting in a hang until the client has finished. This
3049    could be exploited in a Denial Of Service attack.
3050
3051    This issue was reported to OpenSSL on 5th June 2018 by Guido Vranken
3052    ([CVE-2018-0732])
3053
3054    *Guido Vranken*
3055
3056  * Cache timing vulnerability in RSA Key Generation
3057
3058    The OpenSSL RSA Key generation algorithm has been shown to be vulnerable to
3059    a cache timing side channel attack. An attacker with sufficient access to
3060    mount cache timing attacks during the RSA key generation process could
3061    recover the private key.
3062
3063    This issue was reported to OpenSSL on 4th April 2018 by Alejandro Cabrera
3064    Aldaya, Billy Brumley, Cesar Pereida Garcia and Luis Manuel Alvarez Tapia.
3065    ([CVE-2018-0737])
3066
3067    *Billy Brumley*
3068
3069  * Make EVP_PKEY_asn1_new() a bit stricter about its input.  A NULL pem_str
3070    parameter is no longer accepted, as it leads to a corrupt table.  NULL
3071    pem_str is reserved for alias entries only.
3072
3073    *Richard Levitte*
3074
3075  * Revert blinding in ECDSA sign and instead make problematic addition
3076    length-invariant. Switch even to fixed-length Montgomery multiplication.
3077
3078    *Andy Polyakov*
3079
3080  * Change generating and checking of primes so that the error rate of not
3081    being prime depends on the intended use based on the size of the input.
3082    For larger primes this will result in more rounds of Miller-Rabin.
3083    The maximal error rate for primes with more than 1080 bits is lowered
3084    to 2^-128.
3085
3086    *Kurt Roeckx, Annie Yousar*
3087
3088  * Increase the number of Miller-Rabin rounds for DSA key generating to 64.
3089
3090    *Kurt Roeckx*
3091
3092  * Add blinding to ECDSA and DSA signatures to protect against side channel
3093    attacks discovered by Keegan Ryan (NCC Group).
3094
3095    *Matt Caswell*
3096
3097  * When unlocking a pass phrase protected PEM file or PKCS#8 container, we
3098    now allow empty (zero character) pass phrases.
3099
3100    *Richard Levitte*
3101
3102  * Certificate time validation (X509_cmp_time) enforces stricter
3103    compliance with RFC 5280. Fractional seconds and timezone offsets
3104    are no longer allowed.
3105
3106    *Emilia Käsper*
3107
3108  * Fixed a text canonicalisation bug in CMS
3109
3110    Where a CMS detached signature is used with text content the text goes
3111    through a canonicalisation process first prior to signing or verifying a
3112    signature. This process strips trailing space at the end of lines, converts
3113    line terminators to CRLF and removes additional trailing line terminators
3114    at the end of a file. A bug in the canonicalisation process meant that
3115    some characters, such as form-feed, were incorrectly treated as whitespace
3116    and removed. This is contrary to the specification (RFC5485). This fix
3117    could mean that detached text data signed with an earlier version of
3118    OpenSSL 1.1.0 may fail to verify using the fixed version, or text data
3119    signed with a fixed OpenSSL may fail to verify with an earlier version of
3120    OpenSSL 1.1.0. A workaround is to only verify the canonicalised text data
3121    and use the "-binary" flag (for the "cms" command line application) or set
3122    the SMIME_BINARY/PKCS7_BINARY/CMS_BINARY flags (if using CMS_verify()).
3123
3124    *Matt Caswell*
3125
3126 ### Changes between 1.1.0g and 1.1.0h [27 Mar 2018]
3127
3128  * Constructed ASN.1 types with a recursive definition could exceed the stack
3129
3130    Constructed ASN.1 types with a recursive definition (such as can be found
3131    in PKCS7) could eventually exceed the stack given malicious input with
3132    excessive recursion. This could result in a Denial Of Service attack. There
3133    are no such structures used within SSL/TLS that come from untrusted sources
3134    so this is considered safe.
3135
3136    This issue was reported to OpenSSL on 4th January 2018 by the OSS-fuzz
3137    project.
3138    ([CVE-2018-0739])
3139
3140    *Matt Caswell*
3141
3142  * Incorrect CRYPTO_memcmp on HP-UX PA-RISC
3143
3144    Because of an implementation bug the PA-RISC CRYPTO_memcmp function is
3145    effectively reduced to only comparing the least significant bit of each
3146    byte. This allows an attacker to forge messages that would be considered as
3147    authenticated in an amount of tries lower than that guaranteed by the
3148    security claims of the scheme. The module can only be compiled by the
3149    HP-UX assembler, so that only HP-UX PA-RISC targets are affected.
3150
3151    This issue was reported to OpenSSL on 2nd March 2018 by Peter Waltenberg
3152    (IBM).
3153    ([CVE-2018-0733])
3154
3155    *Andy Polyakov*
3156
3157  * Add a build target 'build_all_generated', to build all generated files
3158    and only that.  This can be used to prepare everything that requires
3159    things like perl for a system that lacks perl and then move everything
3160    to that system and do the rest of the build there.
3161
3162    *Richard Levitte*
3163
3164  * Backport SSL_OP_NO_RENGOTIATION
3165
3166    OpenSSL 1.0.2 and below had the ability to disable renegotiation using the
3167    (undocumented) SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS flag. Due to the opacity
3168    changes this is no longer possible in 1.1.0. Therefore the new
3169    SSL_OP_NO_RENEGOTIATION option from 1.1.1-dev has been backported to
3170    1.1.0 to provide equivalent functionality.
3171
3172    Note that if an application built against 1.1.0h headers (or above) is run
3173    using an older version of 1.1.0 (prior to 1.1.0h) then the option will be
3174    accepted but nothing will happen, i.e. renegotiation will not be prevented.
3175
3176    *Matt Caswell*
3177
3178  * Removed the OS390-Unix config target.  It relied on a script that doesn't
3179    exist.
3180
3181    *Rich Salz*
3182
3183  * rsaz_1024_mul_avx2 overflow bug on x86_64
3184
3185    There is an overflow bug in the AVX2 Montgomery multiplication procedure
3186    used in exponentiation with 1024-bit moduli. No EC algorithms are affected.
3187    Analysis suggests that attacks against RSA and DSA as a result of this
3188    defect would be very difficult to perform and are not believed likely.
3189    Attacks against DH1024 are considered just feasible, because most of the
3190    work necessary to deduce information about a private key may be performed
3191    offline. The amount of resources required for such an attack would be
3192    significant. However, for an attack on TLS to be meaningful, the server
3193    would have to share the DH1024 private key among multiple clients, which is
3194    no longer an option since CVE-2016-0701.
3195
3196    This only affects processors that support the AVX2 but not ADX extensions
3197    like Intel Haswell (4th generation).
3198
3199    This issue was reported to OpenSSL by David Benjamin (Google). The issue
3200    was originally found via the OSS-Fuzz project.
3201    ([CVE-2017-3738])
3202
3203    *Andy Polyakov*
3204
3205 ### Changes between 1.1.0f and 1.1.0g [2 Nov 2017]
3206
3207  * bn_sqrx8x_internal carry bug on x86_64
3208
3209    There is a carry propagating bug in the x86_64 Montgomery squaring
3210    procedure. No EC algorithms are affected. Analysis suggests that attacks
3211    against RSA and DSA as a result of this defect would be very difficult to
3212    perform and are not believed likely. Attacks against DH are considered just
3213    feasible (although very difficult) because most of the work necessary to
3214    deduce information about a private key may be performed offline. The amount
3215    of resources required for such an attack would be very significant and
3216    likely only accessible to a limited number of attackers. An attacker would
3217    additionally need online access to an unpatched system using the target
3218    private key in a scenario with persistent DH parameters and a private
3219    key that is shared between multiple clients.
3220
3221    This only affects processors that support the BMI1, BMI2 and ADX extensions
3222    like Intel Broadwell (5th generation) and later or AMD Ryzen.
3223
3224    This issue was reported to OpenSSL by the OSS-Fuzz project.
3225    ([CVE-2017-3736])
3226
3227    *Andy Polyakov*
3228
3229  * Malformed X.509 IPAddressFamily could cause OOB read
3230
3231    If an X.509 certificate has a malformed IPAddressFamily extension,
3232    OpenSSL could do a one-byte buffer overread. The most likely result
3233    would be an erroneous display of the certificate in text format.
3234
3235    This issue was reported to OpenSSL by the OSS-Fuzz project.
3236    ([CVE-2017-3735])
3237
3238    *Rich Salz*
3239
3240 ### Changes between 1.1.0e and 1.1.0f [25 May 2017]
3241
3242  * Have 'config' recognise 64-bit mingw and choose 'mingw64' as the target
3243    platform rather than 'mingw'.
3244
3245    *Richard Levitte*
3246
3247  * Remove the VMS-specific reimplementation of gmtime from crypto/o_times.c.
3248    VMS C's RTL has a fully up to date gmtime() and gmtime_r() since V7.1,
3249    which is the minimum version we support.
3250
3251    *Richard Levitte*
3252
3253 ### Changes between 1.1.0d and 1.1.0e [16 Feb 2017]
3254
3255  * Encrypt-Then-Mac renegotiation crash
3256
3257    During a renegotiation handshake if the Encrypt-Then-Mac extension is
3258    negotiated where it was not in the original handshake (or vice-versa) then
3259    this can cause OpenSSL to crash (dependant on ciphersuite). Both clients
3260    and servers are affected.
3261
3262    This issue was reported to OpenSSL by Joe Orton (Red Hat).
3263    ([CVE-2017-3733])
3264
3265    *Matt Caswell*
3266
3267 ### Changes between 1.1.0c and 1.1.0d [26 Jan 2017]
3268
3269  * Truncated packet could crash via OOB read
3270
3271    If one side of an SSL/TLS path is running on a 32-bit host and a specific
3272    cipher is being used, then a truncated packet can cause that host to
3273    perform an out-of-bounds read, usually resulting in a crash.
3274
3275    This issue was reported to OpenSSL by Robert Święcki of Google.
3276    ([CVE-2017-3731])
3277
3278    *Andy Polyakov*
3279
3280  * Bad (EC)DHE parameters cause a client crash
3281
3282    If a malicious server supplies bad parameters for a DHE or ECDHE key
3283    exchange then this can result in the client attempting to dereference a
3284    NULL pointer leading to a client crash. This could be exploited in a Denial
3285    of Service attack.
3286
3287    This issue was reported to OpenSSL by Guido Vranken.
3288    ([CVE-2017-3730])
3289
3290    *Matt Caswell*
3291
3292  * BN_mod_exp may produce incorrect results on x86_64
3293
3294    There is a carry propagating bug in the x86_64 Montgomery squaring
3295    procedure. No EC algorithms are affected. Analysis suggests that attacks
3296    against RSA and DSA as a result of this defect would be very difficult to
3297    perform and are not believed likely. Attacks against DH are considered just
3298    feasible (although very difficult) because most of the work necessary to
3299    deduce information about a private key may be performed offline. The amount
3300    of resources required for such an attack would be very significant and
3301    likely only accessible to a limited number of attackers. An attacker would
3302    additionally need online access to an unpatched system using the target
3303    private key in a scenario with persistent DH parameters and a private
3304    key that is shared between multiple clients. For example this can occur by
3305    default in OpenSSL DHE based SSL/TLS ciphersuites. Note: This issue is very
3306    similar to CVE-2015-3193 but must be treated as a separate problem.
3307
3308    This issue was reported to OpenSSL by the OSS-Fuzz project.
3309    ([CVE-2017-3732])
3310
3311    *Andy Polyakov*
3312
3313 ### Changes between 1.1.0b and 1.1.0c [10 Nov 2016]
3314
3315  * ChaCha20/Poly1305 heap-buffer-overflow
3316
3317    TLS connections using `*-CHACHA20-POLY1305` ciphersuites are susceptible to
3318    a DoS attack by corrupting larger payloads. This can result in an OpenSSL
3319    crash. This issue is not considered to be exploitable beyond a DoS.
3320
3321    This issue was reported to OpenSSL by Robert Święcki (Google Security Team)
3322    ([CVE-2016-7054])
3323
3324    *Richard Levitte*
3325
3326  * CMS Null dereference
3327
3328    Applications parsing invalid CMS structures can crash with a NULL pointer
3329    dereference. This is caused by a bug in the handling of the ASN.1 CHOICE
3330    type in OpenSSL 1.1.0 which can result in a NULL value being passed to the
3331    structure callback if an attempt is made to free certain invalid encodings.
3332    Only CHOICE structures using a callback which do not handle NULL value are
3333    affected.
3334
3335    This issue was reported to OpenSSL by Tyler Nighswander of ForAllSecure.
3336    ([CVE-2016-7053])
3337
3338    *Stephen Henson*
3339
3340  * Montgomery multiplication may produce incorrect results
3341
3342    There is a carry propagating bug in the Broadwell-specific Montgomery
3343    multiplication procedure that handles input lengths divisible by, but
3344    longer than 256 bits. Analysis suggests that attacks against RSA, DSA
3345    and DH private keys are impossible. This is because the subroutine in
3346    question is not used in operations with the private key itself and an input
3347    of the attacker's direct choice. Otherwise the bug can manifest itself as
3348    transient authentication and key negotiation failures or reproducible
3349    erroneous outcome of public-key operations with specially crafted input.
3350    Among EC algorithms only Brainpool P-512 curves are affected and one
3351    presumably can attack ECDH key negotiation. Impact was not analyzed in
3352    detail, because pre-requisites for attack are considered unlikely. Namely
3353    multiple clients have to choose the curve in question and the server has to
3354    share the private key among them, neither of which is default behaviour.
3355    Even then only clients that chose the curve will be affected.
3356
3357    This issue was publicly reported as transient failures and was not
3358    initially recognized as a security issue. Thanks to Richard Morgan for
3359    providing reproducible case.
3360    ([CVE-2016-7055])
3361
3362    *Andy Polyakov*
3363
3364  * Removed automatic addition of RPATH in shared libraries and executables,
3365    as this was a remainder from OpenSSL 1.0.x and isn't needed any more.
3366
3367    *Richard Levitte*
3368
3369 ### Changes between 1.1.0a and 1.1.0b [26 Sep 2016]
3370
3371  * Fix Use After Free for large message sizes
3372
3373    The patch applied to address CVE-2016-6307 resulted in an issue where if a
3374    message larger than approx 16k is received then the underlying buffer to
3375    store the incoming message is reallocated and moved. Unfortunately a
3376    dangling pointer to the old location is left which results in an attempt to
3377    write to the previously freed location. This is likely to result in a
3378    crash, however it could potentially lead to execution of arbitrary code.
3379
3380    This issue only affects OpenSSL 1.1.0a.
3381
3382    This issue was reported to OpenSSL by Robert Święcki.
3383    ([CVE-2016-6309])
3384
3385    *Matt Caswell*
3386
3387 ### Changes between 1.1.0 and 1.1.0a [22 Sep 2016]
3388
3389  * OCSP Status Request extension unbounded memory growth
3390
3391    A malicious client can send an excessively large OCSP Status Request
3392    extension. If that client continually requests renegotiation, sending a
3393    large OCSP Status Request extension each time, then there will be unbounded
3394    memory growth on the server. This will eventually lead to a Denial Of
3395    Service attack through memory exhaustion. Servers with a default
3396    configuration are vulnerable even if they do not support OCSP. Builds using
3397    the "no-ocsp" build time option are not affected.
3398
3399    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
3400    ([CVE-2016-6304])
3401
3402    *Matt Caswell*
3403
3404  * SSL_peek() hang on empty record
3405
3406    OpenSSL 1.1.0 SSL/TLS will hang during a call to SSL_peek() if the peer
3407    sends an empty record. This could be exploited by a malicious peer in a
3408    Denial Of Service attack.
3409
3410    This issue was reported to OpenSSL by Alex Gaynor.
3411    ([CVE-2016-6305])
3412
3413    *Matt Caswell*
3414
3415  * Excessive allocation of memory in tls_get_message_header() and
3416    dtls1_preprocess_fragment()
3417
3418    A (D)TLS message includes 3 bytes for its length in the header for the
3419    message. This would allow for messages up to 16Mb in length. Messages of
3420    this length are excessive and OpenSSL includes a check to ensure that a
3421    peer is sending reasonably sized messages in order to avoid too much memory
3422    being consumed to service a connection. A flaw in the logic of version
3423    1.1.0 means that memory for the message is allocated too early, prior to
3424    the excessive message length check. Due to way memory is allocated in
3425    OpenSSL this could mean an attacker could force up to 21Mb to be allocated
3426    to service a connection. This could lead to a Denial of Service through
3427    memory exhaustion. However, the excessive message length check still takes
3428    place, and this would cause the connection to immediately fail. Assuming
3429    that the application calls SSL_free() on the failed connection in a timely
3430    manner then the 21Mb of allocated memory will then be immediately freed
3431    again. Therefore the excessive memory allocation will be transitory in
3432    nature. This then means that there is only a security impact if:
3433
3434    1) The application does not call SSL_free() in a timely manner in the event
3435    that the connection fails
3436    or
3437    2) The application is working in a constrained environment where there is
3438    very little free memory
3439    or
3440    3) The attacker initiates multiple connection attempts such that there are
3441    multiple connections in a state where memory has been allocated for the
3442    connection; SSL_free() has not yet been called; and there is insufficient
3443    memory to service the multiple requests.
3444
3445    Except in the instance of (1) above any Denial Of Service is likely to be
3446    transitory because as soon as the connection fails the memory is
3447    subsequently freed again in the SSL_free() call. However there is an
3448    increased risk during this period of application crashes due to the lack of
3449    memory - which would then mean a more serious Denial of Service.
3450
3451    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
3452    (CVE-2016-6307 and CVE-2016-6308)
3453
3454    *Matt Caswell*
3455
3456  * solaris-x86-cc, i.e. 32-bit configuration with vendor compiler,
3457    had to be removed. Primary reason is that vendor assembler can't
3458    assemble our modules with -KPIC flag. As result it, assembly
3459    support, was not even available as option. But its lack means
3460    lack of side-channel resistant code, which is incompatible with
3461    security by todays standards. Fortunately gcc is readily available
3462    prepackaged option, which we firmly point at...
3463
3464    *Andy Polyakov*
3465
3466 ### Changes between 1.0.2h and 1.1.0  [25 Aug 2016]
3467
3468  * Windows command-line tool supports UTF-8 opt-in option for arguments
3469    and console input. Setting OPENSSL_WIN32_UTF8 environment variable
3470    (to any value) allows Windows user to access PKCS#12 file generated
3471    with Windows CryptoAPI and protected with non-ASCII password, as well
3472    as files generated under UTF-8 locale on Linux also protected with
3473    non-ASCII password.
3474
3475    *Andy Polyakov*
3476
3477  * To mitigate the SWEET32 attack ([CVE-2016-2183]), 3DES cipher suites
3478    have been disabled by default and removed from DEFAULT, just like RC4.
3479    See the RC4 item below to re-enable both.
3480
3481    *Rich Salz*
3482
3483  * The method for finding the storage location for the Windows RAND seed file
3484    has changed. First we check %RANDFILE%. If that is not set then we check
3485    the directories %HOME%, %USERPROFILE% and %SYSTEMROOT% in that order. If
3486    all else fails we fall back to C:\.
3487
3488    *Matt Caswell*
3489
3490  * The EVP_EncryptUpdate() function has had its return type changed from void
3491    to int. A return of 0 indicates and error while a return of 1 indicates
3492    success.
3493
3494    *Matt Caswell*
3495
3496  * The flags RSA_FLAG_NO_CONSTTIME, DSA_FLAG_NO_EXP_CONSTTIME and
3497    DH_FLAG_NO_EXP_CONSTTIME which previously provided the ability to switch
3498    off the constant time implementation for RSA, DSA and DH have been made
3499    no-ops and deprecated.
3500
3501    *Matt Caswell*
3502
3503  * Windows RAND implementation was simplified to only get entropy by
3504    calling CryptGenRandom(). Various other RAND-related tickets
3505    were also closed.
3506
3507    *Joseph Wylie Yandle, Rich Salz*
3508
3509  * The stack and lhash API's were renamed to start with `OPENSSL_SK_`
3510    and `OPENSSL_LH_`, respectively.  The old names are available
3511    with API compatibility.  They new names are now completely documented.
3512
3513    *Rich Salz*
3514
3515  * Unify TYPE_up_ref(obj) methods signature.
3516    SSL_CTX_up_ref(), SSL_up_ref(), X509_up_ref(), EVP_PKEY_up_ref(),
3517    X509_CRL_up_ref(), X509_OBJECT_up_ref_count() methods are now returning an
3518    int (instead of void) like all others TYPE_up_ref() methods.
3519    So now these methods also check the return value of CRYPTO_atomic_add(),
3520    and the validity of object reference counter.
3521
3522    *fdasilvayy@gmail.com*
3523
3524  * With Windows Visual Studio builds, the .pdb files are installed
3525    alongside the installed libraries and executables.  For a static
3526    library installation, ossl_static.pdb is the associate compiler
3527    generated .pdb file to be used when linking programs.
3528
3529    *Richard Levitte*
3530
3531  * Remove openssl.spec.  Packaging files belong with the packagers.
3532
3533    *Richard Levitte*
3534
3535  * Automatic Darwin/OSX configuration has had a refresh, it will now
3536    recognise x86_64 architectures automatically.  You can still decide
3537    to build for a different bitness with the environment variable
3538    KERNEL_BITS (can be 32 or 64), for example:
3539
3540            KERNEL_BITS=32 ./config
3541
3542    *Richard Levitte*
3543
3544  * Change default algorithms in pkcs8 utility to use PKCS#5 v2.0,
3545    256 bit AES and HMAC with SHA256.
3546
3547    *Steve Henson*
3548
3549  * Remove support for MIPS o32 ABI on IRIX (and IRIX only).
3550
3551    *Andy Polyakov*
3552
3553  * Triple-DES ciphers have been moved from HIGH to MEDIUM.
3554
3555    *Rich Salz*
3556
3557  * To enable users to have their own config files and build file templates,
3558    Configure looks in the directory indicated by the environment variable
3559    OPENSSL_LOCAL_CONFIG_DIR as well as the in-source Configurations/
3560    directory.  On VMS, OPENSSL_LOCAL_CONFIG_DIR is expected to be a logical
3561    name and is used as is.
3562
3563    *Richard Levitte*
3564
3565  * The following datatypes were made opaque: X509_OBJECT, X509_STORE_CTX,
3566    X509_STORE, X509_LOOKUP, and X509_LOOKUP_METHOD.  The unused type
3567    X509_CERT_FILE_CTX was removed.
3568
3569    *Rich Salz*
3570
3571  * "shared" builds are now the default. To create only static libraries use
3572    the "no-shared" Configure option.
3573
3574    *Matt Caswell*
3575
3576  * Remove the no-aes, no-hmac, no-rsa, no-sha and no-md5 Configure options.
3577    All of these option have not worked for some while and are fundamental
3578    algorithms.
3579
3580    *Matt Caswell*
3581
3582  * Make various cleanup routines no-ops and mark them as deprecated. Most
3583    global cleanup functions are no longer required because they are handled
3584    via auto-deinit (see OPENSSL_init_crypto and OPENSSL_init_ssl man pages).
3585    Explicitly de-initing can cause problems (e.g. where a library that uses
3586    OpenSSL de-inits, but an application is still using it). The affected
3587    functions are CONF_modules_free(), ENGINE_cleanup(), OBJ_cleanup(),
3588    EVP_cleanup(), BIO_sock_cleanup(), CRYPTO_cleanup_all_ex_data(),
3589    RAND_cleanup(), SSL_COMP_free_compression_methods(), ERR_free_strings() and
3590    COMP_zlib_cleanup().
3591
3592    *Matt Caswell*
3593
3594  * --strict-warnings no longer enables runtime debugging options
3595    such as REF_DEBUG. Instead, debug options are automatically
3596    enabled with '--debug' builds.
3597
3598    *Andy Polyakov, Emilia Käsper*
3599
3600  * Made DH and DH_METHOD opaque. The structures for managing DH objects
3601    have been moved out of the public header files. New functions for managing
3602    these have been added.
3603
3604    *Matt Caswell*
3605
3606  * Made RSA and RSA_METHOD opaque. The structures for managing RSA
3607    objects have been moved out of the public header files. New
3608    functions for managing these have been added.
3609
3610    *Richard Levitte*
3611
3612  * Made DSA and DSA_METHOD opaque. The structures for managing DSA objects
3613    have been moved out of the public header files. New functions for managing
3614    these have been added.
3615
3616    *Matt Caswell*
3617
3618  * Made BIO and BIO_METHOD opaque. The structures for managing BIOs have been
3619    moved out of the public header files. New functions for managing these
3620    have been added.
3621
3622    *Matt Caswell*
3623
3624  * Removed no-rijndael as a config option. Rijndael is an old name for AES.
3625
3626    *Matt Caswell*
3627
3628  * Removed the mk1mf build scripts.
3629
3630    *Richard Levitte*
3631
3632  * Headers are now wrapped, if necessary, with OPENSSL_NO_xxx, so
3633    it is always safe to #include a header now.
3634
3635    *Rich Salz*
3636
3637  * Removed the aged BC-32 config and all its supporting scripts
3638
3639    *Richard Levitte*
3640
3641  * Removed support for Ultrix, Netware, and OS/2.
3642
3643    *Rich Salz*
3644
3645  * Add support for HKDF.
3646
3647    *Alessandro Ghedini*
3648
3649  * Add support for blake2b and blake2s
3650
3651    *Bill Cox*
3652
3653  * Added support for "pipelining". Ciphers that have the
3654    EVP_CIPH_FLAG_PIPELINE flag set have a capability to process multiple
3655    encryptions/decryptions simultaneously. There are currently no built-in
3656    ciphers with this property but the expectation is that engines will be able
3657    to offer it to significantly improve throughput. Support has been extended
3658    into libssl so that multiple records for a single connection can be
3659    processed in one go (for >=TLS 1.1).
3660
3661    *Matt Caswell*
3662
3663  * Added the AFALG engine. This is an async capable engine which is able to
3664    offload work to the Linux kernel. In this initial version it only supports
3665    AES128-CBC. The kernel must be version 4.1.0 or greater.
3666
3667    *Catriona Lucey*
3668
3669  * OpenSSL now uses a new threading API. It is no longer necessary to
3670    set locking callbacks to use OpenSSL in a multi-threaded environment. There
3671    are two supported threading models: pthreads and windows threads. It is
3672    also possible to configure OpenSSL at compile time for "no-threads". The
3673    old threading API should no longer be used. The functions have been
3674    replaced with "no-op" compatibility macros.
3675
3676    *Alessandro Ghedini, Matt Caswell*
3677
3678  * Modify behavior of ALPN to invoke callback after SNI/servername
3679    callback, such that updates to the SSL_CTX affect ALPN.
3680
3681    *Todd Short*
3682
3683  * Add SSL_CIPHER queries for authentication and key-exchange.
3684
3685    *Todd Short*
3686
3687  * Changes to the DEFAULT cipherlist:
3688    - Prefer (EC)DHE handshakes over plain RSA.
3689    - Prefer AEAD ciphers over legacy ciphers.
3690    - Prefer ECDSA over RSA when both certificates are available.
3691    - Prefer TLSv1.2 ciphers/PRF.
3692    - Remove DSS, SEED, IDEA, CAMELLIA, and AES-CCM from the
3693      default cipherlist.
3694
3695    *Emilia Käsper*
3696
3697  * Change the ECC default curve list to be this, in order: x25519,
3698    secp256r1, secp521r1, secp384r1.
3699
3700    *Rich Salz*
3701
3702  * RC4 based libssl ciphersuites are now classed as "weak" ciphers and are
3703    disabled by default. They can be re-enabled using the
3704    enable-weak-ssl-ciphers option to Configure.
3705
3706    *Matt Caswell*
3707
3708  * If the server has ALPN configured, but supports no protocols that the
3709    client advertises, send a fatal "no_application_protocol" alert.
3710    This behaviour is SHALL in RFC 7301, though it isn't universally
3711    implemented by other servers.
3712
3713    *Emilia Käsper*
3714
3715  * Add X25519 support.
3716    Add ASN.1 and EVP_PKEY methods for X25519. This includes support
3717    for public and private key encoding using the format documented in
3718    draft-ietf-curdle-pkix-02. The corresponding EVP_PKEY method supports
3719    key generation and key derivation.
3720
3721    TLS support complies with draft-ietf-tls-rfc4492bis-08 and uses
3722    X25519(29).
3723
3724    *Steve Henson*
3725
3726  * Deprecate SRP_VBASE_get_by_user.
3727    SRP_VBASE_get_by_user had inconsistent memory management behaviour.
3728    In order to fix an unavoidable memory leak ([CVE-2016-0798]),
3729    SRP_VBASE_get_by_user was changed to ignore the "fake user" SRP
3730    seed, even if the seed is configured.
3731
3732    Users should use SRP_VBASE_get1_by_user instead. Note that in
3733    SRP_VBASE_get1_by_user, caller must free the returned value. Note
3734    also that even though configuring the SRP seed attempts to hide
3735    invalid usernames by continuing the handshake with fake
3736    credentials, this behaviour is not constant time and no strong
3737    guarantees are made that the handshake is indistinguishable from
3738    that of a valid user.
3739
3740    *Emilia Käsper*
3741
3742  * Configuration change; it's now possible to build dynamic engines
3743    without having to build shared libraries and vice versa.  This
3744    only applies to the engines in `engines/`, those in `crypto/engine/`
3745    will always be built into libcrypto (i.e. "static").
3746
3747    Building dynamic engines is enabled by default; to disable, use
3748    the configuration option "disable-dynamic-engine".
3749
3750    The only requirements for building dynamic engines are the
3751    presence of the DSO module and building with position independent
3752    code, so they will also automatically be disabled if configuring
3753    with "disable-dso" or "disable-pic".
3754
3755    The macros OPENSSL_NO_STATIC_ENGINE and OPENSSL_NO_DYNAMIC_ENGINE
3756    are also taken away from openssl/opensslconf.h, as they are
3757    irrelevant.
3758
3759    *Richard Levitte*
3760
3761  * Configuration change; if there is a known flag to compile
3762    position independent code, it will always be applied on the
3763    libcrypto and libssl object files, and never on the application
3764    object files.  This means other libraries that use routines from
3765    libcrypto / libssl can be made into shared libraries regardless
3766    of how OpenSSL was configured.
3767
3768    If this isn't desirable, the configuration options "disable-pic"
3769    or "no-pic" can be used to disable the use of PIC.  This will
3770    also disable building shared libraries and dynamic engines.
3771
3772    *Richard Levitte*
3773
3774  * Removed JPAKE code.  It was experimental and has no wide use.
3775
3776    *Rich Salz*
3777
3778  * The INSTALL_PREFIX Makefile variable has been renamed to
3779    DESTDIR.  That makes for less confusion on what this variable
3780    is for.  Also, the configuration option --install_prefix is
3781    removed.
3782
3783    *Richard Levitte*
3784
3785  * Heartbeat for TLS has been removed and is disabled by default
3786    for DTLS; configure with enable-heartbeats.  Code that uses the
3787    old #define's might need to be updated.
3788
3789    *Emilia Käsper, Rich Salz*
3790
3791  * Rename REF_CHECK to REF_DEBUG.
3792
3793    *Rich Salz*
3794
3795  * New "unified" build system
3796
3797    The "unified" build system is aimed to be a common system for all
3798    platforms we support.  With it comes new support for VMS.
3799
3800    This system builds supports building in a different directory tree
3801    than the source tree.  It produces one Makefile (for unix family
3802    or lookalikes), or one descrip.mms (for VMS).
3803
3804    The source of information to make the Makefile / descrip.mms is
3805    small files called 'build.info', holding the necessary
3806    information for each directory with source to compile, and a
3807    template in Configurations, like unix-Makefile.tmpl or
3808    descrip.mms.tmpl.
3809
3810    With this change, the library names were also renamed on Windows
3811    and on VMS.  They now have names that are closer to the standard
3812    on Unix, and include the major version number, and in certain
3813    cases, the architecture they are built for.  See "Notes on shared
3814    libraries" in INSTALL.
3815
3816    We rely heavily on the perl module Text::Template.
3817
3818    *Richard Levitte*
3819
3820  * Added support for auto-initialisation and de-initialisation of the library.
3821    OpenSSL no longer requires explicit init or deinit routines to be called,
3822    except in certain circumstances. See the OPENSSL_init_crypto() and
3823    OPENSSL_init_ssl() man pages for further information.
3824
3825    *Matt Caswell*
3826
3827  * The arguments to the DTLSv1_listen function have changed. Specifically the
3828    "peer" argument is now expected to be a BIO_ADDR object.
3829
3830  * Rewrite of BIO networking library. The BIO library lacked consistent
3831    support of IPv6, and adding it required some more extensive
3832    modifications.  This introduces the BIO_ADDR and BIO_ADDRINFO types,
3833    which hold all types of addresses and chains of address information.
3834    It also introduces a new API, with functions like BIO_socket,
3835    BIO_connect, BIO_listen, BIO_lookup and a rewrite of BIO_accept.
3836    The source/sink BIOs BIO_s_connect, BIO_s_accept and BIO_s_datagram
3837    have been adapted accordingly.
3838
3839    *Richard Levitte*
3840
3841  * RSA_padding_check_PKCS1_type_1 now accepts inputs with and without
3842    the leading 0-byte.
3843
3844    *Emilia Käsper*
3845
3846  * CRIME protection: disable compression by default, even if OpenSSL is
3847    compiled with zlib enabled. Applications can still enable compression
3848    by calling SSL_CTX_clear_options(ctx, SSL_OP_NO_COMPRESSION), or by
3849    using the SSL_CONF library to configure compression.
3850
3851    *Emilia Käsper*
3852
3853  * The signature of the session callback configured with
3854    SSL_CTX_sess_set_get_cb was changed. The read-only input buffer
3855    was explicitly marked as `const unsigned char*` instead of
3856    `unsigned char*`.
3857
3858    *Emilia Käsper*
3859
3860  * Always DPURIFY. Remove the use of uninitialized memory in the
3861    RNG, and other conditional uses of DPURIFY. This makes -DPURIFY a no-op.
3862
3863    *Emilia Käsper*
3864
3865  * Removed many obsolete configuration items, including
3866       DES_PTR, DES_RISC1, DES_RISC2, DES_INT
3867       MD2_CHAR, MD2_INT, MD2_LONG
3868       BF_PTR, BF_PTR2
3869       IDEA_SHORT, IDEA_LONG
3870       RC2_SHORT, RC2_LONG, RC4_LONG, RC4_CHUNK, RC4_INDEX
3871
3872    *Rich Salz, with advice from Andy Polyakov*
3873
3874  * Many BN internals have been moved to an internal header file.
3875
3876    *Rich Salz with help from Andy Polyakov*
3877
3878  * Configuration and writing out the results from it has changed.
3879    Files such as Makefile include/openssl/opensslconf.h and are now
3880    produced through general templates, such as Makefile.in and
3881    crypto/opensslconf.h.in and some help from the perl module
3882    Text::Template.
3883
3884    Also, the center of configuration information is no longer
3885    Makefile.  Instead, Configure produces a perl module in
3886    configdata.pm which holds most of the config data (in the hash
3887    table %config), the target data that comes from the target
3888    configuration in one of the `Configurations/*.conf` files (in
3889    %target).
3890
3891    *Richard Levitte*
3892
3893  * To clarify their intended purposes, the Configure options
3894    --prefix and --openssldir change their semantics, and become more
3895    straightforward and less interdependent.
3896
3897    --prefix shall be used exclusively to give the location INSTALLTOP
3898    where programs, scripts, libraries, include files and manuals are
3899    going to be installed.  The default is now /usr/local.
3900
3901    --openssldir shall be used exclusively to give the default
3902    location OPENSSLDIR where certificates, private keys, CRLs are
3903    managed.  This is also where the default openssl.cnf gets
3904    installed.
3905    If the directory given with this option is a relative path, the
3906    values of both the --prefix value and the --openssldir value will
3907    be combined to become OPENSSLDIR.
3908    The default for --openssldir is INSTALLTOP/ssl.
3909
3910    Anyone who uses --openssldir to specify where OpenSSL is to be
3911    installed MUST change to use --prefix instead.
3912
3913    *Richard Levitte*
3914
3915  * The GOST engine was out of date and therefore it has been removed. An up
3916    to date GOST engine is now being maintained in an external repository.
3917    See: <https://wiki.openssl.org/index.php/Binaries>. Libssl still retains
3918    support for GOST ciphersuites (these are only activated if a GOST engine
3919    is present).
3920
3921    *Matt Caswell*
3922
3923  * EGD is no longer supported by default; use enable-egd when
3924    configuring.
3925
3926    *Ben Kaduk and Rich Salz*
3927
3928  * The distribution now has Makefile.in files, which are used to
3929    create Makefile's when Configure is run.  *Configure must be run
3930    before trying to build now.*
3931
3932    *Rich Salz*
3933
3934  * The return value for SSL_CIPHER_description() for error conditions
3935    has changed.
3936
3937    *Rich Salz*
3938
3939  * Support for RFC6698/RFC7671 DANE TLSA peer authentication.
3940
3941    Obtaining and performing DNSSEC validation of TLSA records is
3942    the application's responsibility.  The application provides
3943    the TLSA records of its choice to OpenSSL, and these are then
3944    used to authenticate the peer.
3945
3946    The TLSA records need not even come from DNS.  They can, for
3947    example, be used to implement local end-entity certificate or
3948    trust-anchor "pinning", where the "pin" data takes the form
3949    of TLSA records, which can augment or replace verification
3950    based on the usual WebPKI public certification authorities.
3951
3952    *Viktor Dukhovni*
3953
3954  * Revert default OPENSSL_NO_DEPRECATED setting.  Instead OpenSSL
3955    continues to support deprecated interfaces in default builds.
3956    However, applications are strongly advised to compile their
3957    source files with -DOPENSSL_API_COMPAT=0x10100000L, which hides
3958    the declarations of all interfaces deprecated in 0.9.8, 1.0.0
3959    or the 1.1.0 releases.
3960
3961    In environments in which all applications have been ported to
3962    not use any deprecated interfaces OpenSSL's Configure script
3963    should be used with the --api=1.1.0 option to entirely remove
3964    support for the deprecated features from the library and
3965    unconditionally disable them in the installed headers.
3966    Essentially the same effect can be achieved with the "no-deprecated"
3967    argument to Configure, except that this will always restrict
3968    the build to just the latest API, rather than a fixed API
3969    version.
3970
3971    As applications are ported to future revisions of the API,
3972    they should update their compile-time OPENSSL_API_COMPAT define
3973    accordingly, but in most cases should be able to continue to
3974    compile with later releases.
3975
3976    The OPENSSL_API_COMPAT versions for 1.0.0, and 0.9.8 are
3977    0x10000000L and 0x00908000L, respectively.  However those
3978    versions did not support the OPENSSL_API_COMPAT feature, and
3979    so applications are not typically tested for explicit support
3980    of just the undeprecated features of either release.
3981
3982    *Viktor Dukhovni*
3983
3984  * Add support for setting the minimum and maximum supported protocol.
3985    It can bet set via the SSL_set_min_proto_version() and
3986    SSL_set_max_proto_version(), or via the SSL_CONF's MinProtocol and
3987    MaxProtocol.  It's recommended to use the new APIs to disable
3988    protocols instead of disabling individual protocols using
3989    SSL_set_options() or SSL_CONF's Protocol.  This change also
3990    removes support for disabling TLS 1.2 in the OpenSSL TLS
3991    client at compile time by defining OPENSSL_NO_TLS1_2_CLIENT.
3992
3993    *Kurt Roeckx*
3994
3995  * Support for ChaCha20 and Poly1305 added to libcrypto and libssl.
3996
3997    *Andy Polyakov*
3998
3999  * New EC_KEY_METHOD, this replaces the older ECDSA_METHOD and ECDH_METHOD
4000    and integrates ECDSA and ECDH functionality into EC. Implementations can
4001    now redirect key generation and no longer need to convert to or from
4002    ECDSA_SIG format.
4003
4004    Note: the ecdsa.h and ecdh.h headers are now no longer needed and just
4005    include the ec.h header file instead.
4006
4007    *Steve Henson*
4008
4009  * Remove support for all 40 and 56 bit ciphers.  This includes all the export
4010    ciphers who are no longer supported and drops support the ephemeral RSA key
4011    exchange. The LOW ciphers currently doesn't have any ciphers in it.
4012
4013    *Kurt Roeckx*
4014
4015  * Made EVP_MD_CTX, EVP_MD, EVP_CIPHER_CTX, EVP_CIPHER and HMAC_CTX
4016    opaque.  For HMAC_CTX, the following constructors and destructors
4017    were added:
4018
4019        HMAC_CTX *HMAC_CTX_new(void);
4020        void HMAC_CTX_free(HMAC_CTX *ctx);
4021
4022    For EVP_MD and EVP_CIPHER, complete APIs to create, fill and
4023    destroy such methods has been added.  See EVP_MD_meth_new(3) and
4024    EVP_CIPHER_meth_new(3) for documentation.
4025
4026    Additional changes:
4027    1) `EVP_MD_CTX_cleanup()`, `EVP_CIPHER_CTX_cleanup()` and
4028       `HMAC_CTX_cleanup()` were removed. `HMAC_CTX_reset()` and
4029       `EVP_MD_CTX_reset()` should be called instead to reinitialise
4030       an already created structure.
4031    2) For consistency with the majority of our object creators and
4032       destructors, `EVP_MD_CTX_(create|destroy)` were renamed to
4033       `EVP_MD_CTX_(new|free)`.  The old names are retained as macros
4034       for deprecated builds.
4035
4036    *Richard Levitte*
4037
4038  * Added ASYNC support. Libcrypto now includes the async sub-library to enable
4039    cryptographic operations to be performed asynchronously as long as an
4040    asynchronous capable engine is used. See the ASYNC_start_job() man page for
4041    further details. Libssl has also had this capability integrated with the
4042    introduction of the new mode SSL_MODE_ASYNC and associated error
4043    SSL_ERROR_WANT_ASYNC. See the SSL_CTX_set_mode() and SSL_get_error() man
4044    pages. This work was developed in partnership with Intel Corp.
4045
4046    *Matt Caswell*
4047
4048  * SSL_{CTX_}set_ecdh_auto() has been removed and ECDH is support is
4049    always enabled now.  If you want to disable the support you should
4050    exclude it using the list of supported ciphers. This also means that the
4051    "-no_ecdhe" option has been removed from s_server.
4052
4053    *Kurt Roeckx*
4054
4055  * SSL_{CTX}_set_tmp_ecdh() which can set 1 EC curve now internally calls
4056    SSL_{CTX_}set1_curves() which can set a list.
4057
4058    *Kurt Roeckx*
4059
4060  * Remove support for SSL_{CTX_}set_tmp_ecdh_callback().  You should set the
4061    curve you want to support using SSL_{CTX_}set1_curves().
4062
4063    *Kurt Roeckx*
4064
4065  * State machine rewrite. The state machine code has been significantly
4066    refactored in order to remove much duplication of code and solve issues
4067    with the old code (see [ssl/statem/README.md](ssl/statem/README.md) for
4068    further details). This change does have some associated API changes.
4069    Notably the SSL_state() function has been removed and replaced by
4070    SSL_get_state which now returns an "OSSL_HANDSHAKE_STATE" instead of an int.
4071    SSL_set_state() has been removed altogether. The previous handshake states
4072    defined in ssl.h and ssl3.h have also been removed.
4073
4074    *Matt Caswell*
4075
4076  * All instances of the string "ssleay" in the public API were replaced
4077    with OpenSSL (case-matching; e.g., OPENSSL_VERSION for #define's)
4078    Some error codes related to internal RSA_eay API's were renamed.
4079
4080    *Rich Salz*
4081
4082  * The demo files in crypto/threads were moved to demo/threads.
4083
4084    *Rich Salz*
4085
4086  * Removed obsolete engines: 4758cca, aep, atalla, cswift, nuron, gmp,
4087    sureware and ubsec.
4088
4089    *Matt Caswell, Rich Salz*
4090
4091  * New ASN.1 embed macro.
4092
4093    New ASN.1 macro ASN1_EMBED. This is the same as ASN1_SIMPLE except the
4094    structure is not allocated: it is part of the parent. That is instead of
4095
4096            FOO *x;
4097
4098    it must be:
4099
4100            FOO x;
4101
4102    This reduces memory fragmentation and make it impossible to accidentally
4103    set a mandatory field to NULL.
4104
4105    This currently only works for some fields specifically a SEQUENCE, CHOICE,
4106    or ASN1_STRING type which is part of a parent SEQUENCE. Since it is
4107    equivalent to ASN1_SIMPLE it cannot be tagged, OPTIONAL, SET OF or
4108    SEQUENCE OF.
4109
4110    *Steve Henson*
4111
4112  * Remove EVP_CHECK_DES_KEY, a compile-time option that never compiled.
4113
4114    *Emilia Käsper*
4115
4116  * Removed DES and RC4 ciphersuites from DEFAULT. Also removed RC2 although
4117    in 1.0.2 EXPORT was already removed and the only RC2 ciphersuite is also
4118    an EXPORT one. COMPLEMENTOFDEFAULT has been updated accordingly to add
4119    DES and RC4 ciphersuites.
4120
4121    *Matt Caswell*
4122
4123  * Rewrite EVP_DecodeUpdate (base64 decoding) to fix several bugs.
4124    This changes the decoding behaviour for some invalid messages,
4125    though the change is mostly in the more lenient direction, and
4126    legacy behaviour is preserved as much as possible.
4127
4128    *Emilia Käsper*
4129
4130  * Fix no-stdio build.
4131    *David Woodhouse <David.Woodhouse@intel.com> and also*
4132    *Ivan Nestlerode <ivan.nestlerode@sonos.com>*
4133
4134  * New testing framework
4135    The testing framework has been largely rewritten and is now using
4136    perl and the perl modules Test::Harness and an extended variant of
4137    Test::More called OpenSSL::Test to do its work.  All test scripts in
4138    test/ have been rewritten into test recipes, and all direct calls to
4139    executables in test/Makefile have become individual recipes using the
4140    simplified testing OpenSSL::Test::Simple.
4141
4142    For documentation on our testing modules, do:
4143
4144            perldoc test/testlib/OpenSSL/Test/Simple.pm
4145            perldoc test/testlib/OpenSSL/Test.pm
4146
4147    *Richard Levitte*
4148
4149  * Revamped memory debug; only -DCRYPTO_MDEBUG and -DCRYPTO_MDEBUG_ABORT
4150    are used; the latter aborts on memory leaks (usually checked on exit).
4151    Some undocumented "set malloc, etc., hooks" functions were removed
4152    and others were changed.  All are now documented.
4153
4154    *Rich Salz*
4155
4156  * In DSA_generate_parameters_ex, if the provided seed is too short,
4157    return an error
4158
4159    *Rich Salz and Ismo Puustinen <ismo.puustinen@intel.com>*
4160
4161  * Rewrite PSK to support ECDHE_PSK, DHE_PSK and RSA_PSK. Add ciphersuites
4162    from RFC4279, RFC4785, RFC5487, RFC5489.
4163
4164    Thanks to Christian J. Dietrich and Giuseppe D'Angelo for the
4165    original RSA_PSK patch.
4166
4167    *Steve Henson*
4168
4169  * Dropped support for the SSL3_FLAGS_DELAY_CLIENT_FINISHED flag. This SSLeay
4170    era flag was never set throughout the codebase (only read). Also removed
4171    SSL3_FLAGS_POP_BUFFER which was only used if
4172    SSL3_FLAGS_DELAY_CLIENT_FINISHED was also set.
4173
4174    *Matt Caswell*
4175
4176  * Changed the default name options in the "ca", "crl", "req" and "x509"
4177    to be "oneline" instead of "compat".
4178
4179    *Richard Levitte*
4180
4181  * Remove SSL_OP_TLS_BLOCK_PADDING_BUG. This is SSLeay legacy, we're
4182    not aware of clients that still exhibit this bug, and the workaround
4183    hasn't been working properly for a while.
4184
4185    *Emilia Käsper*
4186
4187  * The return type of BIO_number_read() and BIO_number_written() as well as
4188    the corresponding num_read and num_write members in the BIO structure has
4189    changed from unsigned long to uint64_t. On platforms where an unsigned
4190    long is 32 bits (e.g. Windows) these counters could overflow if >4Gb is
4191    transferred.
4192
4193    *Matt Caswell*
4194
4195  * Given the pervasive nature of TLS extensions it is inadvisable to run
4196    OpenSSL without support for them. It also means that maintaining
4197    the OPENSSL_NO_TLSEXT option within the code is very invasive (and probably
4198    not well tested). Therefore the OPENSSL_NO_TLSEXT option has been removed.
4199
4200    *Matt Caswell*
4201
4202  * Removed support for the two export grade static DH ciphersuites
4203    EXP-DH-RSA-DES-CBC-SHA and EXP-DH-DSS-DES-CBC-SHA. These two ciphersuites
4204    were newly added (along with a number of other static DH ciphersuites) to
4205    1.0.2. However the two export ones have *never* worked since they were
4206    introduced. It seems strange in any case to be adding new export
4207    ciphersuites, and given "logjam" it also does not seem correct to fix them.
4208
4209    *Matt Caswell*
4210
4211  * Version negotiation has been rewritten. In particular SSLv23_method(),
4212    SSLv23_client_method() and SSLv23_server_method() have been deprecated,
4213    and turned into macros which simply call the new preferred function names
4214    TLS_method(), TLS_client_method() and TLS_server_method(). All new code
4215    should use the new names instead. Also as part of this change the ssl23.h
4216    header file has been removed.
4217
4218    *Matt Caswell*
4219
4220  * Support for Kerberos ciphersuites in TLS (RFC2712) has been removed. This
4221    code and the associated standard is no longer considered fit-for-purpose.
4222
4223    *Matt Caswell*
4224
4225  * RT2547 was closed.  When generating a private key, try to make the
4226    output file readable only by the owner.  This behavior change might
4227    be noticeable when interacting with other software.
4228
4229  * Documented all exdata functions.  Added CRYPTO_free_ex_index.
4230    Added a test.
4231
4232    *Rich Salz*
4233
4234  * Added HTTP GET support to the ocsp command.
4235
4236    *Rich Salz*
4237
4238  * Changed default digest for the dgst and enc commands from MD5 to
4239    sha256
4240
4241    *Rich Salz*
4242
4243  * RAND_pseudo_bytes has been deprecated. Users should use RAND_bytes instead.
4244
4245    *Matt Caswell*
4246
4247  * Added support for TLS extended master secret from
4248    draft-ietf-tls-session-hash-03.txt. Thanks for Alfredo Pironti for an
4249    initial patch which was a great help during development.
4250
4251    *Steve Henson*
4252
4253  * All libssl internal structures have been removed from the public header
4254    files, and the OPENSSL_NO_SSL_INTERN option has been removed (since it is
4255    now redundant). Users should not attempt to access internal structures
4256    directly. Instead they should use the provided API functions.
4257
4258    *Matt Caswell*
4259
4260  * config has been changed so that by default OPENSSL_NO_DEPRECATED is used.
4261    Access to deprecated functions can be re-enabled by running config with
4262    "enable-deprecated". In addition applications wishing to use deprecated
4263    functions must define OPENSSL_USE_DEPRECATED. Note that this new behaviour
4264    will, by default, disable some transitive includes that previously existed
4265    in the header files (e.g. ec.h will no longer, by default, include bn.h)
4266
4267    *Matt Caswell*
4268
4269  * Added support for OCB mode. OpenSSL has been granted a patent license
4270    compatible with the OpenSSL license for use of OCB. Details are available
4271    at <https://www.openssl.org/source/OCB-patent-grant-OpenSSL.pdf>. Support
4272    for OCB can be removed by calling config with no-ocb.
4273
4274    *Matt Caswell*
4275
4276  * SSLv2 support has been removed.  It still supports receiving a SSLv2
4277    compatible client hello.
4278
4279    *Kurt Roeckx*
4280
4281  * Increased the minimal RSA keysize from 256 to 512 bits [Rich Salz],
4282    done while fixing the error code for the key-too-small case.
4283
4284    *Annie Yousar <a.yousar@informatik.hu-berlin.de>*
4285
4286  * CA.sh has been removed; use CA.pl instead.
4287
4288    *Rich Salz*
4289
4290  * Removed old DES API.
4291
4292    *Rich Salz*
4293
4294  * Remove various unsupported platforms:
4295       Sony NEWS4
4296       BEOS and BEOS_R5
4297       NeXT
4298       SUNOS
4299       MPE/iX
4300       Sinix/ReliantUNIX RM400
4301       DGUX
4302       NCR
4303       Tandem
4304       Cray
4305       16-bit platforms such as WIN16
4306
4307    *Rich Salz*
4308
4309  * Clean up OPENSSL_NO_xxx #define's
4310    - Use setbuf() and remove OPENSSL_NO_SETVBUF_IONBF
4311    - Rename OPENSSL_SYSNAME_xxx to OPENSSL_SYS_xxx
4312    - OPENSSL_NO_EC{DH,DSA} merged into OPENSSL_NO_EC
4313    - OPENSSL_NO_RIPEMD160, OPENSSL_NO_RIPEMD merged into OPENSSL_NO_RMD160
4314    - OPENSSL_NO_FP_API merged into OPENSSL_NO_STDIO
4315    - Remove OPENSSL_NO_BIO OPENSSL_NO_BUFFER OPENSSL_NO_CHAIN_VERIFY
4316      OPENSSL_NO_EVP OPENSSL_NO_FIPS_ERR OPENSSL_NO_HASH_COMP
4317      OPENSSL_NO_LHASH OPENSSL_NO_OBJECT OPENSSL_NO_SPEED OPENSSL_NO_STACK
4318      OPENSSL_NO_X509 OPENSSL_NO_X509_VERIFY
4319    - Remove MS_STATIC; it's a relic from platforms <32 bits.
4320
4321    *Rich Salz*
4322
4323  * Cleaned up dead code
4324      Remove all but one '#ifdef undef' which is to be looked at.
4325
4326    *Rich Salz*
4327
4328  * Clean up calling of xxx_free routines.
4329       Just like free(), fix most of the xxx_free routines to accept
4330       NULL.  Remove the non-null checks from callers.  Save much code.
4331
4332    *Rich Salz*
4333
4334  * Add secure heap for storage of private keys (when possible).
4335    Add BIO_s_secmem(), CBIGNUM, etc.
4336    Contributed by Akamai Technologies under our Corporate CLA.
4337
4338    *Rich Salz*
4339
4340  * Experimental support for a new, fast, unbiased prime candidate generator,
4341    bn_probable_prime_dh_coprime(). Not currently used by any prime generator.
4342
4343    *Felix Laurie von Massenbach <felix@erbridge.co.uk>*
4344
4345  * New output format NSS in the sess_id command line tool. This allows
4346    exporting the session id and the master key in NSS keylog format.
4347
4348    *Martin Kaiser <martin@kaiser.cx>*
4349
4350  * Harmonize version and its documentation. -f flag is used to display
4351    compilation flags.
4352
4353    *mancha <mancha1@zoho.com>*
4354
4355  * Fix eckey_priv_encode so it immediately returns an error upon a failure
4356    in i2d_ECPrivateKey.  Thanks to Ted Unangst for feedback on this issue.
4357
4358    *mancha <mancha1@zoho.com>*
4359
4360  * Fix some double frees. These are not thought to be exploitable.
4361
4362    *mancha <mancha1@zoho.com>*
4363
4364  * A missing bounds check in the handling of the TLS heartbeat extension
4365    can be used to reveal up to 64k of memory to a connected client or
4366    server.
4367
4368    Thanks for Neel Mehta of Google Security for discovering this bug and to
4369    Adam Langley <agl@chromium.org> and Bodo Moeller <bmoeller@acm.org> for
4370    preparing the fix ([CVE-2014-0160])
4371
4372    *Adam Langley, Bodo Moeller*
4373
4374  * Fix for the attack described in the paper "Recovering OpenSSL
4375    ECDSA Nonces Using the FLUSH+RELOAD Cache Side-channel Attack"
4376    by Yuval Yarom and Naomi Benger. Details can be obtained from:
4377    <http://eprint.iacr.org/2014/140>
4378
4379    Thanks to Yuval Yarom and Naomi Benger for discovering this
4380    flaw and to Yuval Yarom for supplying a fix ([CVE-2014-0076])
4381
4382    *Yuval Yarom and Naomi Benger*
4383
4384  * Use algorithm specific chains in SSL_CTX_use_certificate_chain_file():
4385    this fixes a limitation in previous versions of OpenSSL.
4386
4387    *Steve Henson*
4388
4389  * Experimental encrypt-then-mac support.
4390
4391    Experimental support for encrypt then mac from
4392    draft-gutmann-tls-encrypt-then-mac-02.txt
4393
4394    To enable it set the appropriate extension number (0x42 for the test
4395    server) using e.g. -DTLSEXT_TYPE_encrypt_then_mac=0x42
4396
4397    For non-compliant peers (i.e. just about everything) this should have no
4398    effect.
4399
4400    WARNING: EXPERIMENTAL, SUBJECT TO CHANGE.
4401
4402    *Steve Henson*
4403
4404  * Add EVP support for key wrapping algorithms, to avoid problems with
4405    existing code the flag EVP_CIPHER_CTX_WRAP_ALLOW has to be set in
4406    the EVP_CIPHER_CTX or an error is returned. Add AES and DES3 wrap
4407    algorithms and include tests cases.
4408
4409    *Steve Henson*
4410
4411  * Extend CMS code to support RSA-PSS signatures and RSA-OAEP for
4412    enveloped data.
4413
4414    *Steve Henson*
4415
4416  * Extended RSA OAEP support via EVP_PKEY API. Options to specify digest,
4417    MGF1 digest and OAEP label.
4418
4419    *Steve Henson*
4420
4421  * Make openssl verify return errors.
4422
4423    *Chris Palmer <palmer@google.com> and Ben Laurie*
4424
4425  * New function ASN1_TIME_diff to calculate the difference between two
4426    ASN1_TIME structures or one structure and the current time.
4427
4428    *Steve Henson*
4429
4430  * Update fips_test_suite to support multiple command line options. New
4431    test to induce all self test errors in sequence and check expected
4432    failures.
4433
4434    *Steve Henson*
4435
4436  * Add FIPS_{rsa,dsa,ecdsa}_{sign,verify} functions which digest and
4437    sign or verify all in one operation.
4438
4439    *Steve Henson*
4440
4441  * Add fips_algvs: a multicall fips utility incorporating all the algorithm
4442    test programs and fips_test_suite. Includes functionality to parse
4443    the minimal script output of fipsalgest.pl directly.
4444
4445    *Steve Henson*
4446
4447  * Add authorisation parameter to FIPS_module_mode_set().
4448
4449    *Steve Henson*
4450
4451  * Add FIPS selftest for ECDH algorithm using P-224 and B-233 curves.
4452
4453    *Steve Henson*
4454
4455  * Use separate DRBG fields for internal and external flags. New function
4456    FIPS_drbg_health_check() to perform on demand health checking. Add
4457    generation tests to fips_test_suite with reduced health check interval to
4458    demonstrate periodic health checking. Add "nodh" option to
4459    fips_test_suite to skip very slow DH test.
4460
4461    *Steve Henson*
4462
4463  * New function FIPS_get_cipherbynid() to lookup FIPS supported ciphers
4464    based on NID.
4465
4466    *Steve Henson*
4467
4468  * More extensive health check for DRBG checking many more failure modes.
4469    New function FIPS_selftest_drbg_all() to handle every possible DRBG
4470    combination: call this in fips_test_suite.
4471
4472    *Steve Henson*
4473
4474  * Add support for canonical generation of DSA parameter 'g'. See
4475    FIPS 186-3 A.2.3.
4476
4477  * Add support for HMAC DRBG from SP800-90. Update DRBG algorithm test and
4478    POST to handle HMAC cases.
4479
4480    *Steve Henson*
4481
4482  * Add functions FIPS_module_version() and FIPS_module_version_text()
4483    to return numerical and string versions of the FIPS module number.
4484
4485    *Steve Henson*
4486
4487  * Rename FIPS_mode_set and FIPS_mode to FIPS_module_mode_set and
4488    FIPS_module_mode. FIPS_mode and FIPS_mode_set will be implemented
4489    outside the validated module in the FIPS capable OpenSSL.
4490
4491    *Steve Henson*
4492
4493  * Minor change to DRBG entropy callback semantics. In some cases
4494    there is no multiple of the block length between min_len and
4495    max_len. Allow the callback to return more than max_len bytes
4496    of entropy but discard any extra: it is the callback's responsibility
4497    to ensure that the extra data discarded does not impact the
4498    requested amount of entropy.
4499
4500    *Steve Henson*
4501
4502  * Add PRNG security strength checks to RSA, DSA and ECDSA using
4503    information in FIPS186-3, SP800-57 and SP800-131A.
4504
4505    *Steve Henson*
4506
4507  * CCM support via EVP. Interface is very similar to GCM case except we
4508    must supply all data in one chunk (i.e. no update, final) and the
4509    message length must be supplied if AAD is used. Add algorithm test
4510    support.
4511
4512    *Steve Henson*
4513
4514  * Initial version of POST overhaul. Add POST callback to allow the status
4515    of POST to be monitored and/or failures induced. Modify fips_test_suite
4516    to use callback. Always run all selftests even if one fails.
4517
4518    *Steve Henson*
4519
4520  * XTS support including algorithm test driver in the fips_gcmtest program.
4521    Note: this does increase the maximum key length from 32 to 64 bytes but
4522    there should be no binary compatibility issues as existing applications
4523    will never use XTS mode.
4524
4525    *Steve Henson*
4526
4527  * Extensive reorganisation of FIPS PRNG behaviour. Remove all dependencies
4528    to OpenSSL RAND code and replace with a tiny FIPS RAND API which also
4529    performs algorithm blocking for unapproved PRNG types. Also do not
4530    set PRNG type in FIPS_mode_set(): leave this to the application.
4531    Add default OpenSSL DRBG handling: sets up FIPS PRNG and seeds with
4532    the standard OpenSSL PRNG: set additional data to a date time vector.
4533
4534    *Steve Henson*
4535
4536  * Rename old X9.31 PRNG functions of the form `FIPS_rand*` to `FIPS_x931*`.
4537    This shouldn't present any incompatibility problems because applications
4538    shouldn't be using these directly and any that are will need to rethink
4539    anyway as the X9.31 PRNG is now deprecated by FIPS 140-2
4540
4541    *Steve Henson*
4542
4543  * Extensive self tests and health checking required by SP800-90 DRBG.
4544    Remove strength parameter from FIPS_drbg_instantiate and always
4545    instantiate at maximum supported strength.
4546
4547    *Steve Henson*
4548
4549  * Add ECDH code to fips module and fips_ecdhvs for primitives only testing.
4550
4551    *Steve Henson*
4552
4553  * New algorithm test program fips_dhvs to handle DH primitives only testing.
4554
4555    *Steve Henson*
4556
4557  * New function DH_compute_key_padded() to compute a DH key and pad with
4558    leading zeroes if needed: this complies with SP800-56A et al.
4559
4560    *Steve Henson*
4561
4562  * Initial implementation of SP800-90 DRBGs for Hash and CTR. Not used by
4563    anything, incomplete, subject to change and largely untested at present.
4564
4565    *Steve Henson*
4566
4567  * Modify fipscanisteronly build option to only build the necessary object
4568    files by filtering FIPS_EX_OBJ through a perl script in crypto/Makefile.
4569
4570    *Steve Henson*
4571
4572  * Add experimental option FIPSSYMS to give all symbols in
4573    fipscanister.o and FIPS or fips prefix. This will avoid
4574    conflicts with future versions of OpenSSL. Add perl script
4575    util/fipsas.pl to preprocess assembly language source files
4576    and rename any affected symbols.
4577
4578    *Steve Henson*
4579
4580  * Add selftest checks and algorithm block of non-fips algorithms in
4581    FIPS mode. Remove DES2 from selftests.
4582
4583    *Steve Henson*
4584
4585  * Add ECDSA code to fips module. Add tiny fips_ecdsa_check to just
4586    return internal method without any ENGINE dependencies. Add new
4587    tiny fips sign and verify functions.
4588
4589    *Steve Henson*
4590
4591  * New build option no-ec2m to disable characteristic 2 code.
4592
4593    *Steve Henson*
4594
4595  * New build option "fipscanisteronly". This only builds fipscanister.o
4596    and (currently) associated fips utilities. Uses the file Makefile.fips
4597    instead of Makefile.org as the prototype.
4598
4599    *Steve Henson*
4600
4601  * Add some FIPS mode restrictions to GCM. Add internal IV generator.
4602    Update fips_gcmtest to use IV generator.
4603
4604    *Steve Henson*
4605
4606  * Initial, experimental EVP support for AES-GCM. AAD can be input by
4607    setting output buffer to NULL. The `*Final` function must be
4608    called although it will not retrieve any additional data. The tag
4609    can be set or retrieved with a ctrl. The IV length is by default 12
4610    bytes (96 bits) but can be set to an alternative value. If the IV
4611    length exceeds the maximum IV length (currently 16 bytes) it cannot be
4612    set before the key.
4613
4614    *Steve Henson*
4615
4616  * New flag in ciphers: EVP_CIPH_FLAG_CUSTOM_CIPHER. This means the
4617    underlying do_cipher function handles all cipher semantics itself
4618    including padding and finalisation. This is useful if (for example)
4619    an ENGINE cipher handles block padding itself. The behaviour of
4620    do_cipher is subtly changed if this flag is set: the return value
4621    is the number of characters written to the output buffer (zero is
4622    no longer an error code) or a negative error code. Also if the
4623    input buffer is NULL and length 0 finalisation should be performed.
4624
4625    *Steve Henson*
4626
4627  * If a candidate issuer certificate is already part of the constructed
4628    path ignore it: new debug notification X509_V_ERR_PATH_LOOP for this case.
4629
4630    *Steve Henson*
4631
4632  * Improve forward-security support: add functions
4633
4634            void SSL_CTX_set_not_resumable_session_callback(
4635                     SSL_CTX *ctx, int (*cb)(SSL *ssl, int is_forward_secure))
4636            void SSL_set_not_resumable_session_callback(
4637                     SSL *ssl, int (*cb)(SSL *ssl, int is_forward_secure))
4638
4639    for use by SSL/TLS servers; the callback function will be called whenever a
4640    new session is created, and gets to decide whether the session may be
4641    cached to make it resumable (return 0) or not (return 1).  (As by the
4642    SSL/TLS protocol specifications, the session_id sent by the server will be
4643    empty to indicate that the session is not resumable; also, the server will
4644    not generate RFC 4507 (RFC 5077) session tickets.)
4645
4646    A simple reasonable callback implementation is to return is_forward_secure.
4647    This parameter will be set to 1 or 0 depending on the ciphersuite selected
4648    by the SSL/TLS server library, indicating whether it can provide forward
4649    security.
4650
4651    *Emilia Käsper <emilia.kasper@esat.kuleuven.be> (Google)*
4652
4653  * New -verify_name option in command line utilities to set verification
4654    parameters by name.
4655
4656    *Steve Henson*
4657
4658  * Initial CMAC implementation. WARNING: EXPERIMENTAL, API MAY CHANGE.
4659    Add CMAC pkey methods.
4660
4661    *Steve Henson*
4662
4663  * Experimental renegotiation in s_server -www mode. If the client
4664    browses /reneg connection is renegotiated. If /renegcert it is
4665    renegotiated requesting a certificate.
4666
4667    *Steve Henson*
4668
4669  * Add an "external" session cache for debugging purposes to s_server. This
4670    should help trace issues which normally are only apparent in deployed
4671    multi-process servers.
4672
4673    *Steve Henson*
4674
4675  * Extensive audit of libcrypto with DEBUG_UNUSED. Fix many cases where
4676    return value is ignored. NB. The functions RAND_add(), RAND_seed(),
4677    BIO_set_cipher() and some obscure PEM functions were changed so they
4678    can now return an error. The RAND changes required a change to the
4679    RAND_METHOD structure.
4680
4681    *Steve Henson*
4682
4683  * New macro `__owur` for "OpenSSL Warn Unused Result". This makes use of
4684    a gcc attribute to warn if the result of a function is ignored. This
4685    is enable if DEBUG_UNUSED is set. Add to several functions in evp.h
4686    whose return value is often ignored.
4687
4688    *Steve Henson*
4689
4690  * New -noct, -requestct, -requirect and -ctlogfile options for s_client.
4691    These allow SCTs (signed certificate timestamps) to be requested and
4692    validated when establishing a connection.
4693
4694    *Rob Percival <robpercival@google.com>*
4695
4696 OpenSSL 1.0.2
4697 -------------
4698
4699 ### Changes between 1.0.2s and 1.0.2t [10 Sep 2019]
4700
4701  * For built-in EC curves, ensure an EC_GROUP built from the curve name is
4702    used even when parsing explicit parameters, when loading a encoded key
4703    or calling `EC_GROUP_new_from_ecpkparameters()`/
4704    `EC_GROUP_new_from_ecparameters()`.
4705    This prevents bypass of security hardening and performance gains,
4706    especially for curves with specialized EC_METHODs.
4707    By default, if a key encoded with explicit parameters is loaded and later
4708    encoded, the output is still encoded with explicit parameters, even if
4709    internally a "named" EC_GROUP is used for computation.
4710
4711    *Nicola Tuveri*
4712
4713  * Compute ECC cofactors if not provided during EC_GROUP construction. Before
4714    this change, EC_GROUP_set_generator would accept order and/or cofactor as
4715    NULL. After this change, only the cofactor parameter can be NULL. It also
4716    does some minimal sanity checks on the passed order.
4717    ([CVE-2019-1547])
4718
4719    *Billy Bob Brumley*
4720
4721  * Fixed a padding oracle in PKCS7_dataDecode and CMS_decrypt_set1_pkey.
4722    An attack is simple, if the first CMS_recipientInfo is valid but the
4723    second CMS_recipientInfo is chosen ciphertext. If the second
4724    recipientInfo decodes to PKCS #1 v1.5 form plaintext, the correct
4725    encryption key will be replaced by garbage, and the message cannot be
4726    decoded, but if the RSA decryption fails, the correct encryption key is
4727    used and the recipient will not notice the attack.
4728    As a work around for this potential attack the length of the decrypted
4729    key must be equal to the cipher default key length, in case the
4730    certifiate is not given and all recipientInfo are tried out.
4731    The old behaviour can be re-enabled in the CMS code by setting the
4732    CMS_DEBUG_DECRYPT flag.
4733    ([CVE-2019-1563])
4734
4735    *Bernd Edlinger*
4736
4737  * Document issue with installation paths in diverse Windows builds
4738
4739    '/usr/local/ssl' is an unsafe prefix for location to install OpenSSL
4740    binaries and run-time config file.
4741    ([CVE-2019-1552])
4742
4743    *Richard Levitte*
4744
4745 ### Changes between 1.0.2r and 1.0.2s [28 May 2019]
4746
4747  * Change the default RSA, DSA and DH size to 2048 bit instead of 1024.
4748    This changes the size when using the `genpkey` command when no size is given.
4749    It fixes an omission in earlier changes that changed all RSA, DSA and DH
4750    generation commands to use 2048 bits by default.
4751
4752    *Kurt Roeckx*
4753
4754  * Add FIPS support for Android Arm 64-bit
4755
4756    Support for Android Arm 64-bit was added to the OpenSSL FIPS Object
4757    Module in Version 2.0.10. For some reason, the corresponding target
4758    'android64-aarch64' was missing OpenSSL 1.0.2, whence it could not be
4759    built with FIPS support on Android Arm 64-bit. This omission has been
4760    fixed.
4761
4762    *Matthias St. Pierre*
4763
4764 ### Changes between 1.0.2q and 1.0.2r [26 Feb 2019]
4765
4766  * 0-byte record padding oracle
4767
4768    If an application encounters a fatal protocol error and then calls
4769    SSL_shutdown() twice (once to send a close_notify, and once to receive one)
4770    then OpenSSL can respond differently to the calling application if a 0 byte
4771    record is received with invalid padding compared to if a 0 byte record is
4772    received with an invalid MAC. If the application then behaves differently
4773    based on that in a way that is detectable to the remote peer, then this
4774    amounts to a padding oracle that could be used to decrypt data.
4775
4776    In order for this to be exploitable "non-stitched" ciphersuites must be in
4777    use. Stitched ciphersuites are optimised implementations of certain
4778    commonly used ciphersuites. Also the application must call SSL_shutdown()
4779    twice even if a protocol error has occurred (applications should not do
4780    this but some do anyway).
4781
4782    This issue was discovered by Juraj Somorovsky, Robert Merget and Nimrod
4783    Aviram, with additional investigation by Steven Collison and Andrew
4784    Hourselt. It was reported to OpenSSL on 10th December 2018.
4785    ([CVE-2019-1559])
4786
4787    *Matt Caswell*
4788
4789  * Move strictness check from EVP_PKEY_asn1_new() to EVP_PKEY_asn1_add0().
4790
4791    *Richard Levitte*
4792
4793 ### Changes between 1.0.2p and 1.0.2q [20 Nov 2018]
4794
4795  * Microarchitecture timing vulnerability in ECC scalar multiplication
4796
4797    OpenSSL ECC scalar multiplication, used in e.g. ECDSA and ECDH, has been
4798    shown to be vulnerable to a microarchitecture timing side channel attack.
4799    An attacker with sufficient access to mount local timing attacks during
4800    ECDSA signature generation could recover the private key.
4801
4802    This issue was reported to OpenSSL on 26th October 2018 by Alejandro
4803    Cabrera Aldaya, Billy Brumley, Sohaib ul Hassan, Cesar Pereida Garcia and
4804    Nicola Tuveri.
4805    ([CVE-2018-5407])
4806
4807    *Billy Brumley*
4808
4809  * Timing vulnerability in DSA signature generation
4810
4811    The OpenSSL DSA signature algorithm has been shown to be vulnerable to a
4812    timing side channel attack. An attacker could use variations in the signing
4813    algorithm to recover the private key.
4814
4815    This issue was reported to OpenSSL on 16th October 2018 by Samuel Weiser.
4816    ([CVE-2018-0734])
4817
4818    *Paul Dale*
4819
4820  * Resolve a compatibility issue in EC_GROUP handling with the FIPS Object
4821    Module, accidentally introduced while backporting security fixes from the
4822    development branch and hindering the use of ECC in FIPS mode.
4823
4824    *Nicola Tuveri*
4825
4826 ### Changes between 1.0.2o and 1.0.2p [14 Aug 2018]
4827
4828  * Client DoS due to large DH parameter
4829
4830    During key agreement in a TLS handshake using a DH(E) based ciphersuite a
4831    malicious server can send a very large prime value to the client. This will
4832    cause the client to spend an unreasonably long period of time generating a
4833    key for this prime resulting in a hang until the client has finished. This
4834    could be exploited in a Denial Of Service attack.
4835
4836    This issue was reported to OpenSSL on 5th June 2018 by Guido Vranken
4837    ([CVE-2018-0732])
4838
4839    *Guido Vranken*
4840
4841  * Cache timing vulnerability in RSA Key Generation
4842
4843    The OpenSSL RSA Key generation algorithm has been shown to be vulnerable to
4844    a cache timing side channel attack. An attacker with sufficient access to
4845    mount cache timing attacks during the RSA key generation process could
4846    recover the private key.
4847
4848    This issue was reported to OpenSSL on 4th April 2018 by Alejandro Cabrera
4849    Aldaya, Billy Brumley, Cesar Pereida Garcia and Luis Manuel Alvarez Tapia.
4850    ([CVE-2018-0737])
4851
4852    *Billy Brumley*
4853
4854  * Make EVP_PKEY_asn1_new() a bit stricter about its input.  A NULL pem_str
4855    parameter is no longer accepted, as it leads to a corrupt table.  NULL
4856    pem_str is reserved for alias entries only.
4857
4858    *Richard Levitte*
4859
4860  * Revert blinding in ECDSA sign and instead make problematic addition
4861    length-invariant. Switch even to fixed-length Montgomery multiplication.
4862
4863    *Andy Polyakov*
4864
4865  * Change generating and checking of primes so that the error rate of not
4866    being prime depends on the intended use based on the size of the input.
4867    For larger primes this will result in more rounds of Miller-Rabin.
4868    The maximal error rate for primes with more than 1080 bits is lowered
4869    to 2^-128.
4870
4871    *Kurt Roeckx, Annie Yousar*
4872
4873  * Increase the number of Miller-Rabin rounds for DSA key generating to 64.
4874
4875    *Kurt Roeckx*
4876
4877  * Add blinding to ECDSA and DSA signatures to protect against side channel
4878    attacks discovered by Keegan Ryan (NCC Group).
4879
4880    *Matt Caswell*
4881
4882  * When unlocking a pass phrase protected PEM file or PKCS#8 container, we
4883    now allow empty (zero character) pass phrases.
4884
4885    *Richard Levitte*
4886
4887  * Certificate time validation (X509_cmp_time) enforces stricter
4888    compliance with RFC 5280. Fractional seconds and timezone offsets
4889    are no longer allowed.
4890
4891    *Emilia Käsper*
4892
4893 ### Changes between 1.0.2n and 1.0.2o [27 Mar 2018]
4894
4895  * Constructed ASN.1 types with a recursive definition could exceed the stack
4896
4897    Constructed ASN.1 types with a recursive definition (such as can be found
4898    in PKCS7) could eventually exceed the stack given malicious input with
4899    excessive recursion. This could result in a Denial Of Service attack. There
4900    are no such structures used within SSL/TLS that come from untrusted sources
4901    so this is considered safe.
4902
4903    This issue was reported to OpenSSL on 4th January 2018 by the OSS-fuzz
4904    project.
4905    ([CVE-2018-0739])
4906
4907    *Matt Caswell*
4908
4909 ### Changes between 1.0.2m and 1.0.2n [7 Dec 2017]
4910
4911  * Read/write after SSL object in error state
4912
4913    OpenSSL 1.0.2 (starting from version 1.0.2b) introduced an "error state"
4914    mechanism. The intent was that if a fatal error occurred during a handshake
4915    then OpenSSL would move into the error state and would immediately fail if
4916    you attempted to continue the handshake. This works as designed for the
4917    explicit handshake functions (SSL_do_handshake(), SSL_accept() and
4918    SSL_connect()), however due to a bug it does not work correctly if
4919    SSL_read() or SSL_write() is called directly. In that scenario, if the
4920    handshake fails then a fatal error will be returned in the initial function
4921    call. If SSL_read()/SSL_write() is subsequently called by the application
4922    for the same SSL object then it will succeed and the data is passed without
4923    being decrypted/encrypted directly from the SSL/TLS record layer.
4924
4925    In order to exploit this issue an application bug would have to be present
4926    that resulted in a call to SSL_read()/SSL_write() being issued after having
4927    already received a fatal error.
4928
4929    This issue was reported to OpenSSL by David Benjamin (Google).
4930    ([CVE-2017-3737])
4931
4932    *Matt Caswell*
4933
4934  * rsaz_1024_mul_avx2 overflow bug on x86_64
4935
4936    There is an overflow bug in the AVX2 Montgomery multiplication procedure
4937    used in exponentiation with 1024-bit moduli. No EC algorithms are affected.
4938    Analysis suggests that attacks against RSA and DSA as a result of this
4939    defect would be very difficult to perform and are not believed likely.
4940    Attacks against DH1024 are considered just feasible, because most of the
4941    work necessary to deduce information about a private key may be performed
4942    offline. The amount of resources required for such an attack would be
4943    significant. However, for an attack on TLS to be meaningful, the server
4944    would have to share the DH1024 private key among multiple clients, which is
4945    no longer an option since CVE-2016-0701.
4946
4947    This only affects processors that support the AVX2 but not ADX extensions
4948    like Intel Haswell (4th generation).
4949
4950    This issue was reported to OpenSSL by David Benjamin (Google). The issue
4951    was originally found via the OSS-Fuzz project.
4952    ([CVE-2017-3738])
4953
4954    *Andy Polyakov*
4955
4956 ### Changes between 1.0.2l and 1.0.2m [2 Nov 2017]
4957
4958  * bn_sqrx8x_internal carry bug on x86_64
4959
4960    There is a carry propagating bug in the x86_64 Montgomery squaring
4961    procedure. No EC algorithms are affected. Analysis suggests that attacks
4962    against RSA and DSA as a result of this defect would be very difficult to
4963    perform and are not believed likely. Attacks against DH are considered just
4964    feasible (although very difficult) because most of the work necessary to
4965    deduce information about a private key may be performed offline. The amount
4966    of resources required for such an attack would be very significant and
4967    likely only accessible to a limited number of attackers. An attacker would
4968    additionally need online access to an unpatched system using the target
4969    private key in a scenario with persistent DH parameters and a private
4970    key that is shared between multiple clients.
4971
4972    This only affects processors that support the BMI1, BMI2 and ADX extensions
4973    like Intel Broadwell (5th generation) and later or AMD Ryzen.
4974
4975    This issue was reported to OpenSSL by the OSS-Fuzz project.
4976    ([CVE-2017-3736])
4977
4978    *Andy Polyakov*
4979
4980  * Malformed X.509 IPAddressFamily could cause OOB read
4981
4982    If an X.509 certificate has a malformed IPAddressFamily extension,
4983    OpenSSL could do a one-byte buffer overread. The most likely result
4984    would be an erroneous display of the certificate in text format.
4985
4986    This issue was reported to OpenSSL by the OSS-Fuzz project.
4987
4988    *Rich Salz*
4989
4990 ### Changes between 1.0.2k and 1.0.2l [25 May 2017]
4991
4992  * Have 'config' recognise 64-bit mingw and choose 'mingw64' as the target
4993    platform rather than 'mingw'.
4994
4995    *Richard Levitte*
4996
4997 ### Changes between 1.0.2j and 1.0.2k [26 Jan 2017]
4998
4999  * Truncated packet could crash via OOB read
5000
5001    If one side of an SSL/TLS path is running on a 32-bit host and a specific
5002    cipher is being used, then a truncated packet can cause that host to
5003    perform an out-of-bounds read, usually resulting in a crash.
5004
5005    This issue was reported to OpenSSL by Robert Święcki of Google.
5006    ([CVE-2017-3731])
5007
5008    *Andy Polyakov*
5009
5010  * BN_mod_exp may produce incorrect results on x86_64
5011
5012    There is a carry propagating bug in the x86_64 Montgomery squaring
5013    procedure. No EC algorithms are affected. Analysis suggests that attacks
5014    against RSA and DSA as a result of this defect would be very difficult to
5015    perform and are not believed likely. Attacks against DH are considered just
5016    feasible (although very difficult) because most of the work necessary to
5017    deduce information about a private key may be performed offline. The amount
5018    of resources required for such an attack would be very significant and
5019    likely only accessible to a limited number of attackers. An attacker would
5020    additionally need online access to an unpatched system using the target
5021    private key in a scenario with persistent DH parameters and a private
5022    key that is shared between multiple clients. For example this can occur by
5023    default in OpenSSL DHE based SSL/TLS ciphersuites. Note: This issue is very
5024    similar to CVE-2015-3193 but must be treated as a separate problem.
5025
5026    This issue was reported to OpenSSL by the OSS-Fuzz project.
5027    ([CVE-2017-3732])
5028
5029    *Andy Polyakov*
5030
5031  * Montgomery multiplication may produce incorrect results
5032
5033    There is a carry propagating bug in the Broadwell-specific Montgomery
5034    multiplication procedure that handles input lengths divisible by, but
5035    longer than 256 bits. Analysis suggests that attacks against RSA, DSA
5036    and DH private keys are impossible. This is because the subroutine in
5037    question is not used in operations with the private key itself and an input
5038    of the attacker's direct choice. Otherwise the bug can manifest itself as
5039    transient authentication and key negotiation failures or reproducible
5040    erroneous outcome of public-key operations with specially crafted input.
5041    Among EC algorithms only Brainpool P-512 curves are affected and one
5042    presumably can attack ECDH key negotiation. Impact was not analyzed in
5043    detail, because pre-requisites for attack are considered unlikely. Namely
5044    multiple clients have to choose the curve in question and the server has to
5045    share the private key among them, neither of which is default behaviour.
5046    Even then only clients that chose the curve will be affected.
5047
5048    This issue was publicly reported as transient failures and was not
5049    initially recognized as a security issue. Thanks to Richard Morgan for
5050    providing reproducible case.
5051    ([CVE-2016-7055])
5052
5053    *Andy Polyakov*
5054
5055  * OpenSSL now fails if it receives an unrecognised record type in TLS1.0
5056    or TLS1.1. Previously this only happened in SSLv3 and TLS1.2. This is to
5057    prevent issues where no progress is being made and the peer continually
5058    sends unrecognised record types, using up resources processing them.
5059
5060    *Matt Caswell*
5061
5062 ### Changes between 1.0.2i and 1.0.2j [26 Sep 2016]
5063
5064  * Missing CRL sanity check
5065
5066    A bug fix which included a CRL sanity check was added to OpenSSL 1.1.0
5067    but was omitted from OpenSSL 1.0.2i. As a result any attempt to use
5068    CRLs in OpenSSL 1.0.2i will crash with a null pointer exception.
5069
5070    This issue only affects the OpenSSL 1.0.2i
5071    ([CVE-2016-7052])
5072
5073    *Matt Caswell*
5074
5075 ### Changes between 1.0.2h and 1.0.2i [22 Sep 2016]
5076
5077  * OCSP Status Request extension unbounded memory growth
5078
5079    A malicious client can send an excessively large OCSP Status Request
5080    extension. If that client continually requests renegotiation, sending a
5081    large OCSP Status Request extension each time, then there will be unbounded
5082    memory growth on the server. This will eventually lead to a Denial Of
5083    Service attack through memory exhaustion. Servers with a default
5084    configuration are vulnerable even if they do not support OCSP. Builds using
5085    the "no-ocsp" build time option are not affected.
5086
5087    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
5088    ([CVE-2016-6304])
5089
5090    *Matt Caswell*
5091
5092  * In order to mitigate the SWEET32 attack, the DES ciphers were moved from
5093    HIGH to MEDIUM.
5094
5095    This issue was reported to OpenSSL Karthikeyan Bhargavan and Gaetan
5096    Leurent (INRIA)
5097    ([CVE-2016-2183])
5098
5099    *Rich Salz*
5100
5101  * OOB write in MDC2_Update()
5102
5103    An overflow can occur in MDC2_Update() either if called directly or
5104    through the EVP_DigestUpdate() function using MDC2. If an attacker
5105    is able to supply very large amounts of input data after a previous
5106    call to EVP_EncryptUpdate() with a partial block then a length check
5107    can overflow resulting in a heap corruption.
5108
5109    The amount of data needed is comparable to SIZE_MAX which is impractical
5110    on most platforms.
5111
5112    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
5113    ([CVE-2016-6303])
5114
5115    *Stephen Henson*
5116
5117  * Malformed SHA512 ticket DoS
5118
5119    If a server uses SHA512 for TLS session ticket HMAC it is vulnerable to a
5120    DoS attack where a malformed ticket will result in an OOB read which will
5121    ultimately crash.
5122
5123    The use of SHA512 in TLS session tickets is comparatively rare as it requires
5124    a custom server callback and ticket lookup mechanism.
5125
5126    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
5127    ([CVE-2016-6302])
5128
5129    *Stephen Henson*
5130
5131  * OOB write in BN_bn2dec()
5132
5133    The function BN_bn2dec() does not check the return value of BN_div_word().
5134    This can cause an OOB write if an application uses this function with an
5135    overly large BIGNUM. This could be a problem if an overly large certificate
5136    or CRL is printed out from an untrusted source. TLS is not affected because
5137    record limits will reject an oversized certificate before it is parsed.
5138
5139    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
5140    ([CVE-2016-2182])
5141
5142    *Stephen Henson*
5143
5144  * OOB read in TS_OBJ_print_bio()
5145
5146    The function TS_OBJ_print_bio() misuses OBJ_obj2txt(): the return value is
5147    the total length the OID text representation would use and not the amount
5148    of data written. This will result in OOB reads when large OIDs are
5149    presented.
5150
5151    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
5152    ([CVE-2016-2180])
5153
5154    *Stephen Henson*
5155
5156  * Pointer arithmetic undefined behaviour
5157
5158    Avoid some undefined pointer arithmetic
5159
5160    A common idiom in the codebase is to check limits in the following manner:
5161    "p + len > limit"
5162
5163    Where "p" points to some malloc'd data of SIZE bytes and
5164    limit == p + SIZE
5165
5166    "len" here could be from some externally supplied data (e.g. from a TLS
5167    message).
5168
5169    The rules of C pointer arithmetic are such that "p + len" is only well
5170    defined where len <= SIZE. Therefore the above idiom is actually
5171    undefined behaviour.
5172
5173    For example this could cause problems if some malloc implementation
5174    provides an address for "p" such that "p + len" actually overflows for
5175    values of len that are too big and therefore p + len < limit.
5176
5177    This issue was reported to OpenSSL by Guido Vranken
5178    ([CVE-2016-2177])
5179
5180    *Matt Caswell*
5181
5182  * Constant time flag not preserved in DSA signing
5183
5184    Operations in the DSA signing algorithm should run in constant time in
5185    order to avoid side channel attacks. A flaw in the OpenSSL DSA
5186    implementation means that a non-constant time codepath is followed for
5187    certain operations. This has been demonstrated through a cache-timing
5188    attack to be sufficient for an attacker to recover the private DSA key.
5189
5190    This issue was reported by César Pereida (Aalto University), Billy Brumley
5191    (Tampere University of Technology), and Yuval Yarom (The University of
5192    Adelaide and NICTA).
5193    ([CVE-2016-2178])
5194
5195    *César Pereida*
5196
5197  * DTLS buffered message DoS
5198
5199    In a DTLS connection where handshake messages are delivered out-of-order
5200    those messages that OpenSSL is not yet ready to process will be buffered
5201    for later use. Under certain circumstances, a flaw in the logic means that
5202    those messages do not get removed from the buffer even though the handshake
5203    has been completed. An attacker could force up to approx. 15 messages to
5204    remain in the buffer when they are no longer required. These messages will
5205    be cleared when the DTLS connection is closed. The default maximum size for
5206    a message is 100k. Therefore the attacker could force an additional 1500k
5207    to be consumed per connection. By opening many simulataneous connections an
5208    attacker could cause a DoS attack through memory exhaustion.
5209
5210    This issue was reported to OpenSSL by Quan Luo.
5211    ([CVE-2016-2179])
5212
5213    *Matt Caswell*
5214
5215  * DTLS replay protection DoS
5216
5217    A flaw in the DTLS replay attack protection mechanism means that records
5218    that arrive for future epochs update the replay protection "window" before
5219    the MAC for the record has been validated. This could be exploited by an
5220    attacker by sending a record for the next epoch (which does not have to
5221    decrypt or have a valid MAC), with a very large sequence number. This means
5222    that all subsequent legitimate packets are dropped causing a denial of
5223    service for a specific DTLS connection.
5224
5225    This issue was reported to OpenSSL by the OCAP audit team.
5226    ([CVE-2016-2181])
5227
5228    *Matt Caswell*
5229
5230  * Certificate message OOB reads
5231
5232    In OpenSSL 1.0.2 and earlier some missing message length checks can result
5233    in OOB reads of up to 2 bytes beyond an allocated buffer. There is a
5234    theoretical DoS risk but this has not been observed in practice on common
5235    platforms.
5236
5237    The messages affected are client certificate, client certificate request
5238    and server certificate. As a result the attack can only be performed
5239    against a client or a server which enables client authentication.
5240
5241    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
5242    ([CVE-2016-6306])
5243
5244    *Stephen Henson*
5245
5246 ### Changes between 1.0.2g and 1.0.2h [3 May 2016]
5247
5248  * Prevent padding oracle in AES-NI CBC MAC check
5249
5250    A MITM attacker can use a padding oracle attack to decrypt traffic
5251    when the connection uses an AES CBC cipher and the server support
5252    AES-NI.
5253
5254    This issue was introduced as part of the fix for Lucky 13 padding
5255    attack ([CVE-2013-0169]). The padding check was rewritten to be in
5256    constant time by making sure that always the same bytes are read and
5257    compared against either the MAC or padding bytes. But it no longer
5258    checked that there was enough data to have both the MAC and padding
5259    bytes.
5260
5261    This issue was reported by Juraj Somorovsky using TLS-Attacker.
5262
5263    *Kurt Roeckx*
5264
5265  * Fix EVP_EncodeUpdate overflow
5266
5267    An overflow can occur in the EVP_EncodeUpdate() function which is used for
5268    Base64 encoding of binary data. If an attacker is able to supply very large
5269    amounts of input data then a length check can overflow resulting in a heap
5270    corruption.
5271
5272    Internally to OpenSSL the EVP_EncodeUpdate() function is primarily used by
5273    the `PEM_write_bio*` family of functions. These are mainly used within the
5274    OpenSSL command line applications, so any application which processes data
5275    from an untrusted source and outputs it as a PEM file should be considered
5276    vulnerable to this issue. User applications that call these APIs directly
5277    with large amounts of untrusted data may also be vulnerable.
5278
5279    This issue was reported by Guido Vranken.
5280    ([CVE-2016-2105])
5281
5282    *Matt Caswell*
5283
5284  * Fix EVP_EncryptUpdate overflow
5285
5286    An overflow can occur in the EVP_EncryptUpdate() function. If an attacker
5287    is able to supply very large amounts of input data after a previous call to
5288    EVP_EncryptUpdate() with a partial block then a length check can overflow
5289    resulting in a heap corruption. Following an analysis of all OpenSSL
5290    internal usage of the EVP_EncryptUpdate() function all usage is one of two
5291    forms. The first form is where the EVP_EncryptUpdate() call is known to be
5292    the first called function after an EVP_EncryptInit(), and therefore that
5293    specific call must be safe. The second form is where the length passed to
5294    EVP_EncryptUpdate() can be seen from the code to be some small value and
5295    therefore there is no possibility of an overflow. Since all instances are
5296    one of these two forms, it is believed that there can be no overflows in
5297    internal code due to this problem. It should be noted that
5298    EVP_DecryptUpdate() can call EVP_EncryptUpdate() in certain code paths.
5299    Also EVP_CipherUpdate() is a synonym for EVP_EncryptUpdate(). All instances
5300    of these calls have also been analysed too and it is believed there are no
5301    instances in internal usage where an overflow could occur.
5302
5303    This issue was reported by Guido Vranken.
5304    ([CVE-2016-2106])
5305
5306    *Matt Caswell*
5307
5308  * Prevent ASN.1 BIO excessive memory allocation
5309
5310    When ASN.1 data is read from a BIO using functions such as d2i_CMS_bio()
5311    a short invalid encoding can cause allocation of large amounts of memory
5312    potentially consuming excessive resources or exhausting memory.
5313
5314    Any application parsing untrusted data through d2i BIO functions is
5315    affected. The memory based functions such as d2i_X509() are *not* affected.
5316    Since the memory based functions are used by the TLS library, TLS
5317    applications are not affected.
5318
5319    This issue was reported by Brian Carpenter.
5320    ([CVE-2016-2109])
5321
5322    *Stephen Henson*
5323
5324  * EBCDIC overread
5325
5326    ASN1 Strings that are over 1024 bytes can cause an overread in applications
5327    using the X509_NAME_oneline() function on EBCDIC systems. This could result
5328    in arbitrary stack data being returned in the buffer.
5329
5330    This issue was reported by Guido Vranken.
5331    ([CVE-2016-2176])
5332
5333    *Matt Caswell*
5334
5335  * Modify behavior of ALPN to invoke callback after SNI/servername
5336    callback, such that updates to the SSL_CTX affect ALPN.
5337
5338    *Todd Short*
5339
5340  * Remove LOW from the DEFAULT cipher list.  This removes singles DES from the
5341    default.
5342
5343    *Kurt Roeckx*
5344
5345  * Only remove the SSLv2 methods with the no-ssl2-method option. When the
5346    methods are enabled and ssl2 is disabled the methods return NULL.
5347
5348    *Kurt Roeckx*
5349
5350 ### Changes between 1.0.2f and 1.0.2g [1 Mar 2016]
5351
5352 * Disable weak ciphers in SSLv3 and up in default builds of OpenSSL.
5353   Builds that are not configured with "enable-weak-ssl-ciphers" will not
5354   provide any "EXPORT" or "LOW" strength ciphers.
5355
5356   *Viktor Dukhovni*
5357
5358 * Disable SSLv2 default build, default negotiation and weak ciphers.  SSLv2
5359   is by default disabled at build-time.  Builds that are not configured with
5360   "enable-ssl2" will not support SSLv2.  Even if "enable-ssl2" is used,
5361   users who want to negotiate SSLv2 via the version-flexible SSLv23_method()
5362   will need to explicitly call either of:
5363
5364       SSL_CTX_clear_options(ctx, SSL_OP_NO_SSLv2);
5365   or
5366       SSL_clear_options(ssl, SSL_OP_NO_SSLv2);
5367
5368   as appropriate.  Even if either of those is used, or the application
5369   explicitly uses the version-specific SSLv2_method() or its client and
5370   server variants, SSLv2 ciphers vulnerable to exhaustive search key
5371   recovery have been removed.  Specifically, the SSLv2 40-bit EXPORT
5372   ciphers, and SSLv2 56-bit DES are no longer available.
5373   ([CVE-2016-0800])
5374
5375    *Viktor Dukhovni*
5376
5377  * Fix a double-free in DSA code
5378
5379    A double free bug was discovered when OpenSSL parses malformed DSA private
5380    keys and could lead to a DoS attack or memory corruption for applications
5381    that receive DSA private keys from untrusted sources.  This scenario is
5382    considered rare.
5383
5384    This issue was reported to OpenSSL by Adam Langley(Google/BoringSSL) using
5385    libFuzzer.
5386    ([CVE-2016-0705])
5387
5388    *Stephen Henson*
5389
5390  * Disable SRP fake user seed to address a server memory leak.
5391
5392    Add a new method SRP_VBASE_get1_by_user that handles the seed properly.
5393
5394    SRP_VBASE_get_by_user had inconsistent memory management behaviour.
5395    In order to fix an unavoidable memory leak, SRP_VBASE_get_by_user
5396    was changed to ignore the "fake user" SRP seed, even if the seed
5397    is configured.
5398
5399    Users should use SRP_VBASE_get1_by_user instead. Note that in
5400    SRP_VBASE_get1_by_user, caller must free the returned value. Note
5401    also that even though configuring the SRP seed attempts to hide
5402    invalid usernames by continuing the handshake with fake
5403    credentials, this behaviour is not constant time and no strong
5404    guarantees are made that the handshake is indistinguishable from
5405    that of a valid user.
5406    ([CVE-2016-0798])
5407
5408    *Emilia Käsper*
5409
5410  * Fix BN_hex2bn/BN_dec2bn NULL pointer deref/heap corruption
5411
5412    In the BN_hex2bn function the number of hex digits is calculated using an
5413    int value `i`. Later `bn_expand` is called with a value of `i * 4`. For
5414    large values of `i` this can result in `bn_expand` not allocating any
5415    memory because `i * 4` is negative. This can leave the internal BIGNUM data
5416    field as NULL leading to a subsequent NULL ptr deref. For very large values
5417    of `i`, the calculation `i * 4` could be a positive value smaller than `i`.
5418    In this case memory is allocated to the internal BIGNUM data field, but it
5419    is insufficiently sized leading to heap corruption. A similar issue exists
5420    in BN_dec2bn. This could have security consequences if BN_hex2bn/BN_dec2bn
5421    is ever called by user applications with very large untrusted hex/dec data.
5422    This is anticipated to be a rare occurrence.
5423
5424    All OpenSSL internal usage of these functions use data that is not expected
5425    to be untrusted, e.g. config file data or application command line
5426    arguments. If user developed applications generate config file data based
5427    on untrusted data then it is possible that this could also lead to security
5428    consequences. This is also anticipated to be rare.
5429
5430    This issue was reported to OpenSSL by Guido Vranken.
5431    ([CVE-2016-0797])
5432
5433    *Matt Caswell*
5434
5435  * Fix memory issues in `BIO_*printf` functions
5436
5437    The internal `fmtstr` function used in processing a "%s" format string in
5438    the `BIO_*printf` functions could overflow while calculating the length of a
5439    string and cause an OOB read when printing very long strings.
5440
5441    Additionally the internal `doapr_outch` function can attempt to write to an
5442    OOB memory location (at an offset from the NULL pointer) in the event of a
5443    memory allocation failure. In 1.0.2 and below this could be caused where
5444    the size of a buffer to be allocated is greater than INT_MAX. E.g. this
5445    could be in processing a very long "%s" format string. Memory leaks can
5446    also occur.
5447
5448    The first issue may mask the second issue dependent on compiler behaviour.
5449    These problems could enable attacks where large amounts of untrusted data
5450    is passed to the `BIO_*printf` functions. If applications use these functions
5451    in this way then they could be vulnerable. OpenSSL itself uses these
5452    functions when printing out human-readable dumps of ASN.1 data. Therefore
5453    applications that print this data could be vulnerable if the data is from
5454    untrusted sources. OpenSSL command line applications could also be
5455    vulnerable where they print out ASN.1 data, or if untrusted data is passed
5456    as command line arguments.
5457
5458    Libssl is not considered directly vulnerable. Additionally certificates etc
5459    received via remote connections via libssl are also unlikely to be able to
5460    trigger these issues because of message size limits enforced within libssl.
5461
5462    This issue was reported to OpenSSL Guido Vranken.
5463    ([CVE-2016-0799])
5464
5465    *Matt Caswell*
5466
5467  * Side channel attack on modular exponentiation
5468
5469    A side-channel attack was found which makes use of cache-bank conflicts on
5470    the Intel Sandy-Bridge microarchitecture which could lead to the recovery
5471    of RSA keys.  The ability to exploit this issue is limited as it relies on
5472    an attacker who has control of code in a thread running on the same
5473    hyper-threaded core as the victim thread which is performing decryptions.
5474
5475    This issue was reported to OpenSSL by Yuval Yarom, The University of
5476    Adelaide and NICTA, Daniel Genkin, Technion and Tel Aviv University, and
5477    Nadia Heninger, University of Pennsylvania with more information at
5478    <http://cachebleed.info>.
5479    ([CVE-2016-0702])
5480
5481    *Andy Polyakov*
5482
5483  * Change the `req` command to generate a 2048-bit RSA/DSA key by default,
5484    if no keysize is specified with default_bits. This fixes an
5485    omission in an earlier change that changed all RSA/DSA key generation
5486    commands to use 2048 bits by default.
5487
5488    *Emilia Käsper*
5489
5490 ### Changes between 1.0.2e and 1.0.2f [28 Jan 2016]
5491
5492  * DH small subgroups
5493
5494    Historically OpenSSL only ever generated DH parameters based on "safe"
5495    primes. More recently (in version 1.0.2) support was provided for
5496    generating X9.42 style parameter files such as those required for RFC 5114
5497    support. The primes used in such files may not be "safe". Where an
5498    application is using DH configured with parameters based on primes that are
5499    not "safe" then an attacker could use this fact to find a peer's private
5500    DH exponent. This attack requires that the attacker complete multiple
5501    handshakes in which the peer uses the same private DH exponent. For example
5502    this could be used to discover a TLS server's private DH exponent if it's
5503    reusing the private DH exponent or it's using a static DH ciphersuite.
5504
5505    OpenSSL provides the option SSL_OP_SINGLE_DH_USE for ephemeral DH (DHE) in
5506    TLS. It is not on by default. If the option is not set then the server
5507    reuses the same private DH exponent for the life of the server process and
5508    would be vulnerable to this attack. It is believed that many popular
5509    applications do set this option and would therefore not be at risk.
5510
5511    The fix for this issue adds an additional check where a "q" parameter is
5512    available (as is the case in X9.42 based parameters). This detects the
5513    only known attack, and is the only possible defense for static DH
5514    ciphersuites. This could have some performance impact.
5515
5516    Additionally the SSL_OP_SINGLE_DH_USE option has been switched on by
5517    default and cannot be disabled. This could have some performance impact.
5518
5519    This issue was reported to OpenSSL by Antonio Sanso (Adobe).
5520    ([CVE-2016-0701])
5521
5522    *Matt Caswell*
5523
5524  * SSLv2 doesn't block disabled ciphers
5525
5526    A malicious client can negotiate SSLv2 ciphers that have been disabled on
5527    the server and complete SSLv2 handshakes even if all SSLv2 ciphers have
5528    been disabled, provided that the SSLv2 protocol was not also disabled via
5529    SSL_OP_NO_SSLv2.
5530
5531    This issue was reported to OpenSSL on 26th December 2015 by Nimrod Aviram
5532    and Sebastian Schinzel.
5533    ([CVE-2015-3197])
5534
5535    *Viktor Dukhovni*
5536
5537 ### Changes between 1.0.2d and 1.0.2e [3 Dec 2015]
5538
5539  * BN_mod_exp may produce incorrect results on x86_64
5540
5541    There is a carry propagating bug in the x86_64 Montgomery squaring
5542    procedure. No EC algorithms are affected. Analysis suggests that attacks
5543    against RSA and DSA as a result of this defect would be very difficult to
5544    perform and are not believed likely. Attacks against DH are considered just
5545    feasible (although very difficult) because most of the work necessary to
5546    deduce information about a private key may be performed offline. The amount
5547    of resources required for such an attack would be very significant and
5548    likely only accessible to a limited number of attackers. An attacker would
5549    additionally need online access to an unpatched system using the target
5550    private key in a scenario with persistent DH parameters and a private
5551    key that is shared between multiple clients. For example this can occur by
5552    default in OpenSSL DHE based SSL/TLS ciphersuites.
5553
5554    This issue was reported to OpenSSL by Hanno Böck.
5555    ([CVE-2015-3193])
5556
5557    *Andy Polyakov*
5558
5559  * Certificate verify crash with missing PSS parameter
5560
5561    The signature verification routines will crash with a NULL pointer
5562    dereference if presented with an ASN.1 signature using the RSA PSS
5563    algorithm and absent mask generation function parameter. Since these
5564    routines are used to verify certificate signature algorithms this can be
5565    used to crash any certificate verification operation and exploited in a
5566    DoS attack. Any application which performs certificate verification is
5567    vulnerable including OpenSSL clients and servers which enable client
5568    authentication.
5569
5570    This issue was reported to OpenSSL by Loïc Jonas Etienne (Qnective AG).
5571    ([CVE-2015-3194])
5572
5573    *Stephen Henson*
5574
5575  * X509_ATTRIBUTE memory leak
5576
5577    When presented with a malformed X509_ATTRIBUTE structure OpenSSL will leak
5578    memory. This structure is used by the PKCS#7 and CMS routines so any
5579    application which reads PKCS#7 or CMS data from untrusted sources is
5580    affected. SSL/TLS is not affected.
5581
5582    This issue was reported to OpenSSL by Adam Langley (Google/BoringSSL) using
5583    libFuzzer.
5584    ([CVE-2015-3195])
5585
5586    *Stephen Henson*
5587
5588  * Rewrite EVP_DecodeUpdate (base64 decoding) to fix several bugs.
5589    This changes the decoding behaviour for some invalid messages,
5590    though the change is mostly in the more lenient direction, and
5591    legacy behaviour is preserved as much as possible.
5592
5593    *Emilia Käsper*
5594
5595  * In DSA_generate_parameters_ex, if the provided seed is too short,
5596    return an error
5597
5598    *Rich Salz and Ismo Puustinen <ismo.puustinen@intel.com>*
5599
5600 ### Changes between 1.0.2c and 1.0.2d [9 Jul 2015]
5601
5602  * Alternate chains certificate forgery
5603
5604    During certificate verification, OpenSSL will attempt to find an
5605    alternative certificate chain if the first attempt to build such a chain
5606    fails. An error in the implementation of this logic can mean that an
5607    attacker could cause certain checks on untrusted certificates to be
5608    bypassed, such as the CA flag, enabling them to use a valid leaf
5609    certificate to act as a CA and "issue" an invalid certificate.
5610
5611    This issue was reported to OpenSSL by Adam Langley/David Benjamin
5612    (Google/BoringSSL).
5613
5614    *Matt Caswell*
5615
5616 ### Changes between 1.0.2b and 1.0.2c [12 Jun 2015]
5617
5618  * Fix HMAC ABI incompatibility. The previous version introduced an ABI
5619    incompatibility in the handling of HMAC. The previous ABI has now been
5620    restored.
5621
5622    *Matt Caswell*
5623
5624 ### Changes between 1.0.2a and 1.0.2b [11 Jun 2015]
5625
5626  * Malformed ECParameters causes infinite loop
5627
5628    When processing an ECParameters structure OpenSSL enters an infinite loop
5629    if the curve specified is over a specially malformed binary polynomial
5630    field.
5631
5632    This can be used to perform denial of service against any
5633    system which processes public keys, certificate requests or
5634    certificates.  This includes TLS clients and TLS servers with
5635    client authentication enabled.
5636
5637    This issue was reported to OpenSSL by Joseph Barr-Pixton.
5638    ([CVE-2015-1788])
5639
5640    *Andy Polyakov*
5641
5642  * Exploitable out-of-bounds read in X509_cmp_time
5643
5644    X509_cmp_time does not properly check the length of the ASN1_TIME
5645    string and can read a few bytes out of bounds. In addition,
5646    X509_cmp_time accepts an arbitrary number of fractional seconds in the
5647    time string.
5648
5649    An attacker can use this to craft malformed certificates and CRLs of
5650    various sizes and potentially cause a segmentation fault, resulting in
5651    a DoS on applications that verify certificates or CRLs. TLS clients
5652    that verify CRLs are affected. TLS clients and servers with client
5653    authentication enabled may be affected if they use custom verification
5654    callbacks.
5655
5656    This issue was reported to OpenSSL by Robert Swiecki (Google), and
5657    independently by Hanno Böck.
5658    ([CVE-2015-1789])
5659
5660    *Emilia Käsper*
5661
5662  * PKCS7 crash with missing EnvelopedContent
5663
5664    The PKCS#7 parsing code does not handle missing inner EncryptedContent
5665    correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs
5666    with missing content and trigger a NULL pointer dereference on parsing.
5667
5668    Applications that decrypt PKCS#7 data or otherwise parse PKCS#7
5669    structures from untrusted sources are affected. OpenSSL clients and
5670    servers are not affected.
5671
5672    This issue was reported to OpenSSL by Michal Zalewski (Google).
5673    ([CVE-2015-1790])
5674
5675    *Emilia Käsper*
5676
5677  * CMS verify infinite loop with unknown hash function
5678
5679    When verifying a signedData message the CMS code can enter an infinite loop
5680    if presented with an unknown hash function OID. This can be used to perform
5681    denial of service against any system which verifies signedData messages using
5682    the CMS code.
5683    This issue was reported to OpenSSL by Johannes Bauer.
5684    ([CVE-2015-1792])
5685
5686    *Stephen Henson*
5687
5688  * Race condition handling NewSessionTicket
5689
5690    If a NewSessionTicket is received by a multi-threaded client when attempting to
5691    reuse a previous ticket then a race condition can occur potentially leading to
5692    a double free of the ticket data.
5693    ([CVE-2015-1791])
5694
5695    *Matt Caswell*
5696
5697  * Only support 256-bit or stronger elliptic curves with the
5698    'ecdh_auto' setting (server) or by default (client). Of supported
5699    curves, prefer P-256 (both).
5700
5701    *Emilia Kasper*
5702
5703 ### Changes between 1.0.2 and 1.0.2a [19 Mar 2015]
5704
5705  * ClientHello sigalgs DoS fix
5706
5707    If a client connects to an OpenSSL 1.0.2 server and renegotiates with an
5708    invalid signature algorithms extension a NULL pointer dereference will
5709    occur. This can be exploited in a DoS attack against the server.
5710
5711    This issue was was reported to OpenSSL by David Ramos of Stanford
5712    University.
5713    ([CVE-2015-0291])
5714
5715    *Stephen Henson and Matt Caswell*
5716
5717  * Multiblock corrupted pointer fix
5718
5719    OpenSSL 1.0.2 introduced the "multiblock" performance improvement. This
5720    feature only applies on 64 bit x86 architecture platforms that support AES
5721    NI instructions. A defect in the implementation of "multiblock" can cause
5722    OpenSSL's internal write buffer to become incorrectly set to NULL when
5723    using non-blocking IO. Typically, when the user application is using a
5724    socket BIO for writing, this will only result in a failed connection.
5725    However if some other BIO is used then it is likely that a segmentation
5726    fault will be triggered, thus enabling a potential DoS attack.
5727
5728    This issue was reported to OpenSSL by Daniel Danner and Rainer Mueller.
5729    ([CVE-2015-0290])
5730
5731    *Matt Caswell*
5732
5733  * Segmentation fault in DTLSv1_listen fix
5734
5735    The DTLSv1_listen function is intended to be stateless and processes the
5736    initial ClientHello from many peers. It is common for user code to loop
5737    over the call to DTLSv1_listen until a valid ClientHello is received with
5738    an associated cookie. A defect in the implementation of DTLSv1_listen means
5739    that state is preserved in the SSL object from one invocation to the next
5740    that can lead to a segmentation fault. Errors processing the initial
5741    ClientHello can trigger this scenario. An example of such an error could be
5742    that a DTLS1.0 only client is attempting to connect to a DTLS1.2 only
5743    server.
5744
5745    This issue was reported to OpenSSL by Per Allansson.
5746    ([CVE-2015-0207])
5747
5748    *Matt Caswell*
5749
5750  * Segmentation fault in ASN1_TYPE_cmp fix
5751
5752    The function ASN1_TYPE_cmp will crash with an invalid read if an attempt is
5753    made to compare ASN.1 boolean types. Since ASN1_TYPE_cmp is used to check
5754    certificate signature algorithm consistency this can be used to crash any
5755    certificate verification operation and exploited in a DoS attack. Any
5756    application which performs certificate verification is vulnerable including
5757    OpenSSL clients and servers which enable client authentication.
5758    ([CVE-2015-0286])
5759
5760    *Stephen Henson*
5761
5762  * Segmentation fault for invalid PSS parameters fix
5763
5764    The signature verification routines will crash with a NULL pointer
5765    dereference if presented with an ASN.1 signature using the RSA PSS
5766    algorithm and invalid parameters. Since these routines are used to verify
5767    certificate signature algorithms this can be used to crash any
5768    certificate verification operation and exploited in a DoS attack. Any
5769    application which performs certificate verification is vulnerable including
5770    OpenSSL clients and servers which enable client authentication.
5771
5772    This issue was was reported to OpenSSL by Brian Carpenter.
5773    ([CVE-2015-0208])
5774
5775    *Stephen Henson*
5776
5777  * ASN.1 structure reuse memory corruption fix
5778
5779    Reusing a structure in ASN.1 parsing may allow an attacker to cause
5780    memory corruption via an invalid write. Such reuse is and has been
5781    strongly discouraged and is believed to be rare.
5782
5783    Applications that parse structures containing CHOICE or ANY DEFINED BY
5784    components may be affected. Certificate parsing (d2i_X509 and related
5785    functions) are however not affected. OpenSSL clients and servers are
5786    not affected.
5787    ([CVE-2015-0287])
5788
5789    *Stephen Henson*
5790
5791  * PKCS7 NULL pointer dereferences fix
5792
5793    The PKCS#7 parsing code does not handle missing outer ContentInfo
5794    correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs with
5795    missing content and trigger a NULL pointer dereference on parsing.
5796
5797    Applications that verify PKCS#7 signatures, decrypt PKCS#7 data or
5798    otherwise parse PKCS#7 structures from untrusted sources are
5799    affected. OpenSSL clients and servers are not affected.
5800
5801    This issue was reported to OpenSSL by Michal Zalewski (Google).
5802    ([CVE-2015-0289])
5803
5804    *Emilia Käsper*
5805
5806  * DoS via reachable assert in SSLv2 servers fix
5807
5808    A malicious client can trigger an OPENSSL_assert (i.e., an abort) in
5809    servers that both support SSLv2 and enable export cipher suites by sending
5810    a specially crafted SSLv2 CLIENT-MASTER-KEY message.
5811
5812    This issue was discovered by Sean Burford (Google) and Emilia Käsper
5813    (OpenSSL development team).
5814    ([CVE-2015-0293])
5815
5816    *Emilia Käsper*
5817
5818  * Empty CKE with client auth and DHE fix
5819
5820    If client auth is used then a server can seg fault in the event of a DHE
5821    ciphersuite being selected and a zero length ClientKeyExchange message
5822    being sent by the client. This could be exploited in a DoS attack.
5823    ([CVE-2015-1787])
5824
5825    *Matt Caswell*
5826
5827  * Handshake with unseeded PRNG fix
5828
5829    Under certain conditions an OpenSSL 1.0.2 client can complete a handshake
5830    with an unseeded PRNG. The conditions are:
5831    - The client is on a platform where the PRNG has not been seeded
5832    automatically, and the user has not seeded manually
5833    - A protocol specific client method version has been used (i.e. not
5834    SSL_client_methodv23)
5835    - A ciphersuite is used that does not require additional random data from
5836    the PRNG beyond the initial ClientHello client random (e.g. PSK-RC4-SHA).
5837
5838    If the handshake succeeds then the client random that has been used will
5839    have been generated from a PRNG with insufficient entropy and therefore the
5840    output may be predictable.
5841
5842    For example using the following command with an unseeded openssl will
5843    succeed on an unpatched platform:
5844
5845    openssl s_client -psk 1a2b3c4d -tls1_2 -cipher PSK-RC4-SHA
5846    ([CVE-2015-0285])
5847
5848    *Matt Caswell*
5849
5850  * Use After Free following d2i_ECPrivatekey error fix
5851
5852    A malformed EC private key file consumed via the d2i_ECPrivateKey function
5853    could cause a use after free condition. This, in turn, could cause a double
5854    free in several private key parsing functions (such as d2i_PrivateKey
5855    or EVP_PKCS82PKEY) and could lead to a DoS attack or memory corruption
5856    for applications that receive EC private keys from untrusted
5857    sources. This scenario is considered rare.
5858
5859    This issue was discovered by the BoringSSL project and fixed in their
5860    commit 517073cd4b.
5861    ([CVE-2015-0209])
5862
5863    *Matt Caswell*
5864
5865  * X509_to_X509_REQ NULL pointer deref fix
5866
5867    The function X509_to_X509_REQ will crash with a NULL pointer dereference if
5868    the certificate key is invalid. This function is rarely used in practice.
5869
5870    This issue was discovered by Brian Carpenter.
5871    ([CVE-2015-0288])
5872
5873    *Stephen Henson*
5874
5875  * Removed the export ciphers from the DEFAULT ciphers
5876
5877    *Kurt Roeckx*
5878
5879 ### Changes between 1.0.1l and 1.0.2 [22 Jan 2015]
5880
5881  * Facilitate "universal" ARM builds targeting range of ARM ISAs, e.g.
5882    ARMv5 through ARMv8, as opposite to "locking" it to single one.
5883    So far those who have to target multiple platforms would compromise
5884    and argue that binary targeting say ARMv5 would still execute on
5885    ARMv8. "Universal" build resolves this compromise by providing
5886    near-optimal performance even on newer platforms.
5887
5888    *Andy Polyakov*
5889
5890  * Accelerated NIST P-256 elliptic curve implementation for x86_64
5891    (other platforms pending).
5892
5893    *Shay Gueron & Vlad Krasnov (Intel Corp), Andy Polyakov*
5894
5895  * Add support for the SignedCertificateTimestampList certificate and
5896    OCSP response extensions from RFC6962.
5897
5898    *Rob Stradling*
5899
5900  * Fix ec_GFp_simple_points_make_affine (thus, EC_POINTs_mul etc.)
5901    for corner cases. (Certain input points at infinity could lead to
5902    bogus results, with non-infinity inputs mapped to infinity too.)
5903
5904    *Bodo Moeller*
5905
5906  * Initial support for PowerISA 2.0.7, first implemented in POWER8.
5907    This covers AES, SHA256/512 and GHASH. "Initial" means that most
5908    common cases are optimized and there still is room for further
5909    improvements. Vector Permutation AES for Altivec is also added.
5910
5911    *Andy Polyakov*
5912
5913  * Add support for little-endian ppc64 Linux target.
5914
5915    *Marcelo Cerri (IBM)*
5916
5917  * Initial support for AMRv8 ISA crypto extensions. This covers AES,
5918    SHA1, SHA256 and GHASH. "Initial" means that most common cases
5919    are optimized and there still is room for further improvements.
5920    Both 32- and 64-bit modes are supported.
5921
5922    *Andy Polyakov, Ard Biesheuvel (Linaro)*
5923
5924  * Improved ARMv7 NEON support.
5925
5926    *Andy Polyakov*
5927
5928  * Support for SPARC Architecture 2011 crypto extensions, first
5929    implemented in SPARC T4. This covers AES, DES, Camellia, SHA1,
5930    SHA256/512, MD5, GHASH and modular exponentiation.
5931
5932    *Andy Polyakov, David Miller*
5933
5934  * Accelerated modular exponentiation for Intel processors, a.k.a.
5935    RSAZ.
5936
5937    *Shay Gueron & Vlad Krasnov (Intel Corp)*
5938
5939  * Support for new and upcoming Intel processors, including AVX2,
5940    BMI and SHA ISA extensions. This includes additional "stitched"
5941    implementations, AESNI-SHA256 and GCM, and multi-buffer support
5942    for TLS encrypt.
5943
5944    This work was sponsored by Intel Corp.
5945
5946    *Andy Polyakov*
5947
5948  * Support for DTLS 1.2. This adds two sets of DTLS methods: DTLS_*_method()
5949    supports both DTLS 1.2 and 1.0 and should use whatever version the peer
5950    supports and DTLSv1_2_*_method() which supports DTLS 1.2 only.
5951
5952    *Steve Henson*
5953
5954  * Use algorithm specific chains in SSL_CTX_use_certificate_chain_file():
5955    this fixes a limitation in previous versions of OpenSSL.
5956
5957    *Steve Henson*
5958
5959  * Extended RSA OAEP support via EVP_PKEY API. Options to specify digest,
5960    MGF1 digest and OAEP label.
5961
5962    *Steve Henson*
5963
5964  * Add EVP support for key wrapping algorithms, to avoid problems with
5965    existing code the flag EVP_CIPHER_CTX_WRAP_ALLOW has to be set in
5966    the EVP_CIPHER_CTX or an error is returned. Add AES and DES3 wrap
5967    algorithms and include tests cases.
5968
5969    *Steve Henson*
5970
5971  * Add functions to allocate and set the fields of an ECDSA_METHOD
5972    structure.
5973
5974    *Douglas E. Engert, Steve Henson*
5975
5976  * New functions OPENSSL_gmtime_diff and ASN1_TIME_diff to find the
5977    difference in days and seconds between two tm or ASN1_TIME structures.
5978
5979    *Steve Henson*
5980
5981  * Add -rev test option to s_server to just reverse order of characters
5982    received by client and send back to server. Also prints an abbreviated
5983    summary of the connection parameters.
5984
5985    *Steve Henson*
5986
5987  * New option -brief for s_client and s_server to print out a brief summary
5988    of connection parameters.
5989
5990    *Steve Henson*
5991
5992  * Add callbacks for arbitrary TLS extensions.
5993
5994    *Trevor Perrin <trevp@trevp.net> and Ben Laurie*
5995
5996  * New option -crl_download in several openssl utilities to download CRLs
5997    from CRLDP extension in certificates.
5998
5999    *Steve Henson*
6000
6001  * New options -CRL and -CRLform for s_client and s_server for CRLs.
6002
6003    *Steve Henson*
6004
6005  * New function X509_CRL_diff to generate a delta CRL from the difference
6006    of two full CRLs. Add support to "crl" utility.
6007
6008    *Steve Henson*
6009
6010  * New functions to set lookup_crls function and to retrieve
6011    X509_STORE from X509_STORE_CTX.
6012
6013    *Steve Henson*
6014
6015  * Print out deprecated issuer and subject unique ID fields in
6016    certificates.
6017
6018    *Steve Henson*
6019
6020  * Extend OCSP I/O functions so they can be used for simple general purpose
6021    HTTP as well as OCSP. New wrapper function which can be used to download
6022    CRLs using the OCSP API.
6023
6024    *Steve Henson*
6025
6026  * Delegate command line handling in s_client/s_server to SSL_CONF APIs.
6027
6028    *Steve Henson*
6029
6030  * `SSL_CONF*` functions. These provide a common framework for application
6031    configuration using configuration files or command lines.
6032
6033    *Steve Henson*
6034
6035  * SSL/TLS tracing code. This parses out SSL/TLS records using the
6036    message callback and prints the results. Needs compile time option
6037    "enable-ssl-trace". New options to s_client and s_server to enable
6038    tracing.
6039
6040    *Steve Henson*
6041
6042  * New ctrl and macro to retrieve supported points extensions.
6043    Print out extension in s_server and s_client.
6044
6045    *Steve Henson*
6046
6047  * New functions to retrieve certificate signature and signature
6048    OID NID.
6049
6050    *Steve Henson*
6051
6052  * Add functions to retrieve and manipulate the raw cipherlist sent by a
6053    client to OpenSSL.
6054
6055    *Steve Henson*
6056
6057  * New Suite B modes for TLS code. These use and enforce the requirements
6058    of RFC6460: restrict ciphersuites, only permit Suite B algorithms and
6059    only use Suite B curves. The Suite B modes can be set by using the
6060    strings "SUITEB128", "SUITEB192" or "SUITEB128ONLY" for the cipherstring.
6061
6062    *Steve Henson*
6063
6064  * New chain verification flags for Suite B levels of security. Check
6065    algorithms are acceptable when flags are set in X509_verify_cert.
6066
6067    *Steve Henson*
6068
6069  * Make tls1_check_chain return a set of flags indicating checks passed
6070    by a certificate chain. Add additional tests to handle client
6071    certificates: checks for matching certificate type and issuer name
6072    comparison.
6073
6074    *Steve Henson*
6075
6076  * If an attempt is made to use a signature algorithm not in the peer
6077    preference list abort the handshake. If client has no suitable
6078    signature algorithms in response to a certificate request do not
6079    use the certificate.
6080
6081    *Steve Henson*
6082
6083  * If server EC tmp key is not in client preference list abort handshake.
6084
6085    *Steve Henson*
6086
6087  * Add support for certificate stores in CERT structure. This makes it
6088    possible to have different stores per SSL structure or one store in
6089    the parent SSL_CTX. Include distinct stores for certificate chain
6090    verification and chain building. New ctrl SSL_CTRL_BUILD_CERT_CHAIN
6091    to build and store a certificate chain in CERT structure: returning
6092    an error if the chain cannot be built: this will allow applications
6093    to test if a chain is correctly configured.
6094
6095    Note: if the CERT based stores are not set then the parent SSL_CTX
6096    store is used to retain compatibility with existing behaviour.
6097
6098    *Steve Henson*
6099
6100  * New function ssl_set_client_disabled to set a ciphersuite disabled
6101    mask based on the current session, check mask when sending client
6102    hello and checking the requested ciphersuite.
6103
6104    *Steve Henson*
6105
6106  * New ctrls to retrieve and set certificate types in a certificate
6107    request message. Print out received values in s_client. If certificate
6108    types is not set with custom values set sensible values based on
6109    supported signature algorithms.
6110
6111    *Steve Henson*
6112
6113  * Support for distinct client and server supported signature algorithms.
6114
6115    *Steve Henson*
6116
6117  * Add certificate callback. If set this is called whenever a certificate
6118    is required by client or server. An application can decide which
6119    certificate chain to present based on arbitrary criteria: for example
6120    supported signature algorithms. Add very simple example to s_server.
6121    This fixes many of the problems and restrictions of the existing client
6122    certificate callback: for example you can now clear an existing
6123    certificate and specify the whole chain.
6124
6125    *Steve Henson*
6126
6127  * Add new "valid_flags" field to CERT_PKEY structure which determines what
6128    the certificate can be used for (if anything). Set valid_flags field
6129    in new tls1_check_chain function. Simplify ssl_set_cert_masks which used
6130    to have similar checks in it.
6131
6132    Add new "cert_flags" field to CERT structure and include a "strict mode".
6133    This enforces some TLS certificate requirements (such as only permitting
6134    certificate signature algorithms contained in the supported algorithms
6135    extension) which some implementations ignore: this option should be used
6136    with caution as it could cause interoperability issues.
6137
6138    *Steve Henson*
6139
6140  * Update and tidy signature algorithm extension processing. Work out
6141    shared signature algorithms based on preferences and peer algorithms
6142    and print them out in s_client and s_server. Abort handshake if no
6143    shared signature algorithms.
6144
6145    *Steve Henson*
6146
6147  * Add new functions to allow customised supported signature algorithms
6148    for SSL and SSL_CTX structures. Add options to s_client and s_server
6149    to support them.
6150
6151    *Steve Henson*
6152
6153  * New function SSL_certs_clear() to delete all references to certificates
6154    from an SSL structure. Before this once a certificate had been added
6155    it couldn't be removed.
6156
6157    *Steve Henson*
6158
6159  * Integrate hostname, email address and IP address checking with certificate
6160    verification. New verify options supporting checking in openssl utility.
6161
6162    *Steve Henson*
6163
6164  * Fixes and wildcard matching support to hostname and email checking
6165    functions. Add manual page.
6166
6167    *Florian Weimer (Red Hat Product Security Team)*
6168
6169  * New functions to check a hostname email or IP address against a
6170    certificate. Add options x509 utility to print results of checks against
6171    a certificate.
6172
6173    *Steve Henson*
6174
6175  * Fix OCSP checking.
6176
6177    *Rob Stradling <rob.stradling@comodo.com> and Ben Laurie*
6178
6179  * Initial experimental support for explicitly trusted non-root CAs.
6180    OpenSSL still tries to build a complete chain to a root but if an
6181    intermediate CA has a trust setting included that is used. The first
6182    setting is used: whether to trust (e.g., -addtrust option to the x509
6183    utility) or reject.
6184
6185    *Steve Henson*
6186
6187  * Add -trusted_first option which attempts to find certificates in the
6188    trusted store even if an untrusted chain is also supplied.
6189
6190    *Steve Henson*
6191
6192  * MIPS assembly pack updates: support for MIPS32r2 and SmartMIPS ASE,
6193    platform support for Linux and Android.
6194
6195    *Andy Polyakov*
6196
6197  * Support for linux-x32, ILP32 environment in x86_64 framework.
6198
6199    *Andy Polyakov*
6200
6201  * Experimental multi-implementation support for FIPS capable OpenSSL.
6202    When in FIPS mode the approved implementations are used as normal,
6203    when not in FIPS mode the internal unapproved versions are used instead.
6204    This means that the FIPS capable OpenSSL isn't forced to use the
6205    (often lower performance) FIPS implementations outside FIPS mode.
6206
6207    *Steve Henson*
6208
6209  * Transparently support X9.42 DH parameters when calling
6210    PEM_read_bio_DHparameters. This means existing applications can handle
6211    the new parameter format automatically.
6212
6213    *Steve Henson*
6214
6215  * Initial experimental support for X9.42 DH parameter format: mainly
6216    to support use of 'q' parameter for RFC5114 parameters.
6217
6218    *Steve Henson*
6219
6220  * Add DH parameters from RFC5114 including test data to dhtest.
6221
6222    *Steve Henson*
6223
6224  * Support for automatic EC temporary key parameter selection. If enabled
6225    the most preferred EC parameters are automatically used instead of
6226    hardcoded fixed parameters. Now a server just has to call:
6227    SSL_CTX_set_ecdh_auto(ctx, 1) and the server will automatically
6228    support ECDH and use the most appropriate parameters.
6229
6230    *Steve Henson*
6231
6232  * Enhance and tidy EC curve and point format TLS extension code. Use
6233    static structures instead of allocation if default values are used.
6234    New ctrls to set curves we wish to support and to retrieve shared curves.
6235    Print out shared curves in s_server. New options to s_server and s_client
6236    to set list of supported curves.
6237
6238    *Steve Henson*
6239
6240  * New ctrls to retrieve supported signature algorithms and
6241    supported curve values as an array of NIDs. Extend openssl utility
6242    to print out received values.
6243
6244    *Steve Henson*
6245
6246  * Add new APIs EC_curve_nist2nid and EC_curve_nid2nist which convert
6247    between NIDs and the more common NIST names such as "P-256". Enhance
6248    ecparam utility and ECC method to recognise the NIST names for curves.
6249
6250    *Steve Henson*
6251
6252  * Enhance SSL/TLS certificate chain handling to support different
6253    chains for each certificate instead of one chain in the parent SSL_CTX.
6254
6255    *Steve Henson*
6256
6257  * Support for fixed DH ciphersuite client authentication: where both
6258    server and client use DH certificates with common parameters.
6259
6260    *Steve Henson*
6261
6262  * Support for fixed DH ciphersuites: those requiring DH server
6263    certificates.
6264
6265    *Steve Henson*
6266
6267  * New function i2d_re_X509_tbs for re-encoding the TBS portion of
6268    the certificate.
6269    Note: Related 1.0.2-beta specific macros X509_get_cert_info,
6270    X509_CINF_set_modified, X509_CINF_get_issuer, X509_CINF_get_extensions and
6271    X509_CINF_get_signature were reverted post internal team review.
6272
6273 OpenSSL 1.0.1
6274 -------------
6275
6276 ### Changes between 1.0.1t and 1.0.1u [22 Sep 2016]
6277
6278  * OCSP Status Request extension unbounded memory growth
6279
6280    A malicious client can send an excessively large OCSP Status Request
6281    extension. If that client continually requests renegotiation, sending a
6282    large OCSP Status Request extension each time, then there will be unbounded
6283    memory growth on the server. This will eventually lead to a Denial Of
6284    Service attack through memory exhaustion. Servers with a default
6285    configuration are vulnerable even if they do not support OCSP. Builds using
6286    the "no-ocsp" build time option are not affected.
6287
6288    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
6289    ([CVE-2016-6304])
6290
6291    *Matt Caswell*
6292
6293  * In order to mitigate the SWEET32 attack, the DES ciphers were moved from
6294    HIGH to MEDIUM.
6295
6296    This issue was reported to OpenSSL Karthikeyan Bhargavan and Gaetan
6297    Leurent (INRIA)
6298    ([CVE-2016-2183])
6299
6300    *Rich Salz*
6301
6302  * OOB write in MDC2_Update()
6303
6304    An overflow can occur in MDC2_Update() either if called directly or
6305    through the EVP_DigestUpdate() function using MDC2. If an attacker
6306    is able to supply very large amounts of input data after a previous
6307    call to EVP_EncryptUpdate() with a partial block then a length check
6308    can overflow resulting in a heap corruption.
6309
6310    The amount of data needed is comparable to SIZE_MAX which is impractical
6311    on most platforms.
6312
6313    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
6314    ([CVE-2016-6303])
6315
6316    *Stephen Henson*
6317
6318  * Malformed SHA512 ticket DoS
6319
6320    If a server uses SHA512 for TLS session ticket HMAC it is vulnerable to a
6321    DoS attack where a malformed ticket will result in an OOB read which will
6322    ultimately crash.
6323
6324    The use of SHA512 in TLS session tickets is comparatively rare as it requires
6325    a custom server callback and ticket lookup mechanism.
6326
6327    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
6328    ([CVE-2016-6302])
6329
6330    *Stephen Henson*
6331
6332  * OOB write in BN_bn2dec()
6333
6334    The function BN_bn2dec() does not check the return value of BN_div_word().
6335    This can cause an OOB write if an application uses this function with an
6336    overly large BIGNUM. This could be a problem if an overly large certificate
6337    or CRL is printed out from an untrusted source. TLS is not affected because
6338    record limits will reject an oversized certificate before it is parsed.
6339
6340    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
6341    ([CVE-2016-2182])
6342
6343    *Stephen Henson*
6344
6345  * OOB read in TS_OBJ_print_bio()
6346
6347    The function TS_OBJ_print_bio() misuses OBJ_obj2txt(): the return value is
6348    the total length the OID text representation would use and not the amount
6349    of data written. This will result in OOB reads when large OIDs are
6350    presented.
6351
6352    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
6353    ([CVE-2016-2180])
6354
6355    *Stephen Henson*
6356
6357  * Pointer arithmetic undefined behaviour
6358
6359    Avoid some undefined pointer arithmetic
6360
6361    A common idiom in the codebase is to check limits in the following manner:
6362    "p + len > limit"
6363
6364    Where "p" points to some malloc'd data of SIZE bytes and
6365    limit == p + SIZE
6366
6367    "len" here could be from some externally supplied data (e.g. from a TLS
6368    message).
6369
6370    The rules of C pointer arithmetic are such that "p + len" is only well
6371    defined where len <= SIZE. Therefore the above idiom is actually
6372    undefined behaviour.
6373
6374    For example this could cause problems if some malloc implementation
6375    provides an address for "p" such that "p + len" actually overflows for
6376    values of len that are too big and therefore p + len < limit.
6377
6378    This issue was reported to OpenSSL by Guido Vranken
6379    ([CVE-2016-2177])
6380
6381    *Matt Caswell*
6382
6383  * Constant time flag not preserved in DSA signing
6384
6385    Operations in the DSA signing algorithm should run in constant time in
6386    order to avoid side channel attacks. A flaw in the OpenSSL DSA
6387    implementation means that a non-constant time codepath is followed for
6388    certain operations. This has been demonstrated through a cache-timing
6389    attack to be sufficient for an attacker to recover the private DSA key.
6390
6391    This issue was reported by César Pereida (Aalto University), Billy Brumley
6392    (Tampere University of Technology), and Yuval Yarom (The University of
6393    Adelaide and NICTA).
6394    ([CVE-2016-2178])
6395
6396    *César Pereida*
6397
6398  * DTLS buffered message DoS
6399
6400    In a DTLS connection where handshake messages are delivered out-of-order
6401    those messages that OpenSSL is not yet ready to process will be buffered
6402    for later use. Under certain circumstances, a flaw in the logic means that
6403    those messages do not get removed from the buffer even though the handshake
6404    has been completed. An attacker could force up to approx. 15 messages to
6405    remain in the buffer when they are no longer required. These messages will
6406    be cleared when the DTLS connection is closed. The default maximum size for
6407    a message is 100k. Therefore the attacker could force an additional 1500k
6408    to be consumed per connection. By opening many simulataneous connections an
6409    attacker could cause a DoS attack through memory exhaustion.
6410
6411    This issue was reported to OpenSSL by Quan Luo.
6412    ([CVE-2016-2179])
6413
6414    *Matt Caswell*
6415
6416  * DTLS replay protection DoS
6417
6418    A flaw in the DTLS replay attack protection mechanism means that records
6419    that arrive for future epochs update the replay protection "window" before
6420    the MAC for the record has been validated. This could be exploited by an
6421    attacker by sending a record for the next epoch (which does not have to
6422    decrypt or have a valid MAC), with a very large sequence number. This means
6423    that all subsequent legitimate packets are dropped causing a denial of
6424    service for a specific DTLS connection.
6425
6426    This issue was reported to OpenSSL by the OCAP audit team.
6427    ([CVE-2016-2181])
6428
6429    *Matt Caswell*
6430
6431  * Certificate message OOB reads
6432
6433    In OpenSSL 1.0.2 and earlier some missing message length checks can result
6434    in OOB reads of up to 2 bytes beyond an allocated buffer. There is a
6435    theoretical DoS risk but this has not been observed in practice on common
6436    platforms.
6437
6438    The messages affected are client certificate, client certificate request
6439    and server certificate. As a result the attack can only be performed
6440    against a client or a server which enables client authentication.
6441
6442    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
6443    ([CVE-2016-6306])
6444
6445    *Stephen Henson*
6446
6447 ### Changes between 1.0.1s and 1.0.1t [3 May 2016]
6448
6449  * Prevent padding oracle in AES-NI CBC MAC check
6450
6451    A MITM attacker can use a padding oracle attack to decrypt traffic
6452    when the connection uses an AES CBC cipher and the server support
6453    AES-NI.
6454
6455    This issue was introduced as part of the fix for Lucky 13 padding
6456    attack ([CVE-2013-0169]). The padding check was rewritten to be in
6457    constant time by making sure that always the same bytes are read and
6458    compared against either the MAC or padding bytes. But it no longer
6459    checked that there was enough data to have both the MAC and padding
6460    bytes.
6461
6462    This issue was reported by Juraj Somorovsky using TLS-Attacker.
6463    ([CVE-2016-2107])
6464
6465    *Kurt Roeckx*
6466
6467  * Fix EVP_EncodeUpdate overflow
6468
6469    An overflow can occur in the EVP_EncodeUpdate() function which is used for
6470    Base64 encoding of binary data. If an attacker is able to supply very large
6471    amounts of input data then a length check can overflow resulting in a heap
6472    corruption.
6473
6474    Internally to OpenSSL the EVP_EncodeUpdate() function is primarly used by
6475    the `PEM_write_bio*` family of functions. These are mainly used within the
6476    OpenSSL command line applications, so any application which processes data
6477    from an untrusted source and outputs it as a PEM file should be considered
6478    vulnerable to this issue. User applications that call these APIs directly
6479    with large amounts of untrusted data may also be vulnerable.
6480
6481    This issue was reported by Guido Vranken.
6482    ([CVE-2016-2105])
6483
6484    *Matt Caswell*
6485
6486  * Fix EVP_EncryptUpdate overflow
6487
6488    An overflow can occur in the EVP_EncryptUpdate() function. If an attacker
6489    is able to supply very large amounts of input data after a previous call to
6490    EVP_EncryptUpdate() with a partial block then a length check can overflow
6491    resulting in a heap corruption. Following an analysis of all OpenSSL
6492    internal usage of the EVP_EncryptUpdate() function all usage is one of two
6493    forms. The first form is where the EVP_EncryptUpdate() call is known to be
6494    the first called function after an EVP_EncryptInit(), and therefore that
6495    specific call must be safe. The second form is where the length passed to
6496    EVP_EncryptUpdate() can be seen from the code to be some small value and
6497    therefore there is no possibility of an overflow. Since all instances are
6498    one of these two forms, it is believed that there can be no overflows in
6499    internal code due to this problem. It should be noted that
6500    EVP_DecryptUpdate() can call EVP_EncryptUpdate() in certain code paths.
6501    Also EVP_CipherUpdate() is a synonym for EVP_EncryptUpdate(). All instances
6502    of these calls have also been analysed too and it is believed there are no
6503    instances in internal usage where an overflow could occur.
6504
6505    This issue was reported by Guido Vranken.
6506    ([CVE-2016-2106])
6507
6508    *Matt Caswell*
6509
6510  * Prevent ASN.1 BIO excessive memory allocation
6511
6512    When ASN.1 data is read from a BIO using functions such as d2i_CMS_bio()
6513    a short invalid encoding can casuse allocation of large amounts of memory
6514    potentially consuming excessive resources or exhausting memory.
6515
6516    Any application parsing untrusted data through d2i BIO functions is
6517    affected. The memory based functions such as d2i_X509() are *not* affected.
6518    Since the memory based functions are used by the TLS library, TLS
6519    applications are not affected.
6520
6521    This issue was reported by Brian Carpenter.
6522    ([CVE-2016-2109])
6523
6524    *Stephen Henson*
6525
6526  * EBCDIC overread
6527
6528    ASN1 Strings that are over 1024 bytes can cause an overread in applications
6529    using the X509_NAME_oneline() function on EBCDIC systems. This could result
6530    in arbitrary stack data being returned in the buffer.
6531
6532    This issue was reported by Guido Vranken.
6533    ([CVE-2016-2176])
6534
6535    *Matt Caswell*
6536
6537  * Modify behavior of ALPN to invoke callback after SNI/servername
6538    callback, such that updates to the SSL_CTX affect ALPN.
6539
6540    *Todd Short*
6541
6542  * Remove LOW from the DEFAULT cipher list.  This removes singles DES from the
6543    default.
6544
6545    *Kurt Roeckx*
6546
6547  * Only remove the SSLv2 methods with the no-ssl2-method option. When the
6548    methods are enabled and ssl2 is disabled the methods return NULL.
6549
6550    *Kurt Roeckx*
6551
6552 ### Changes between 1.0.1r and 1.0.1s [1 Mar 2016]
6553
6554 * Disable weak ciphers in SSLv3 and up in default builds of OpenSSL.
6555   Builds that are not configured with "enable-weak-ssl-ciphers" will not
6556   provide any "EXPORT" or "LOW" strength ciphers.
6557
6558   *Viktor Dukhovni*
6559
6560 * Disable SSLv2 default build, default negotiation and weak ciphers.  SSLv2
6561   is by default disabled at build-time.  Builds that are not configured with
6562   "enable-ssl2" will not support SSLv2.  Even if "enable-ssl2" is used,
6563   users who want to negotiate SSLv2 via the version-flexible SSLv23_method()
6564   will need to explicitly call either of:
6565
6566       SSL_CTX_clear_options(ctx, SSL_OP_NO_SSLv2);
6567   or
6568       SSL_clear_options(ssl, SSL_OP_NO_SSLv2);
6569
6570   as appropriate.  Even if either of those is used, or the application
6571   explicitly uses the version-specific SSLv2_method() or its client and
6572   server variants, SSLv2 ciphers vulnerable to exhaustive search key
6573   recovery have been removed.  Specifically, the SSLv2 40-bit EXPORT
6574   ciphers, and SSLv2 56-bit DES are no longer available.
6575   ([CVE-2016-0800])
6576
6577   *Viktor Dukhovni*
6578
6579  * Fix a double-free in DSA code
6580
6581    A double free bug was discovered when OpenSSL parses malformed DSA private
6582    keys and could lead to a DoS attack or memory corruption for applications
6583    that receive DSA private keys from untrusted sources.  This scenario is
6584    considered rare.
6585
6586    This issue was reported to OpenSSL by Adam Langley(Google/BoringSSL) using
6587    libFuzzer.
6588    ([CVE-2016-0705])
6589
6590    *Stephen Henson*
6591
6592  * Disable SRP fake user seed to address a server memory leak.
6593
6594    Add a new method SRP_VBASE_get1_by_user that handles the seed properly.
6595
6596    SRP_VBASE_get_by_user had inconsistent memory management behaviour.
6597    In order to fix an unavoidable memory leak, SRP_VBASE_get_by_user
6598    was changed to ignore the "fake user" SRP seed, even if the seed
6599    is configured.
6600
6601    Users should use SRP_VBASE_get1_by_user instead. Note that in
6602    SRP_VBASE_get1_by_user, caller must free the returned value. Note
6603    also that even though configuring the SRP seed attempts to hide
6604    invalid usernames by continuing the handshake with fake
6605    credentials, this behaviour is not constant time and no strong
6606    guarantees are made that the handshake is indistinguishable from
6607    that of a valid user.
6608    ([CVE-2016-0798])
6609
6610    *Emilia Käsper*
6611
6612  * Fix BN_hex2bn/BN_dec2bn NULL pointer deref/heap corruption
6613
6614    In the BN_hex2bn function the number of hex digits is calculated using an
6615    int value `i`. Later `bn_expand` is called with a value of `i * 4`. For
6616    large values of `i` this can result in `bn_expand` not allocating any
6617    memory because `i * 4` is negative. This can leave the internal BIGNUM data
6618    field as NULL leading to a subsequent NULL ptr deref. For very large values
6619    of `i`, the calculation `i * 4` could be a positive value smaller than `i`.
6620    In this case memory is allocated to the internal BIGNUM data field, but it
6621    is insufficiently sized leading to heap corruption. A similar issue exists
6622    in BN_dec2bn. This could have security consequences if BN_hex2bn/BN_dec2bn
6623    is ever called by user applications with very large untrusted hex/dec data.
6624    This is anticipated to be a rare occurrence.
6625
6626    All OpenSSL internal usage of these functions use data that is not expected
6627    to be untrusted, e.g. config file data or application command line
6628    arguments. If user developed applications generate config file data based
6629    on untrusted data then it is possible that this could also lead to security
6630    consequences. This is also anticipated to be rare.
6631
6632    This issue was reported to OpenSSL by Guido Vranken.
6633    ([CVE-2016-0797])
6634
6635    *Matt Caswell*
6636
6637  * Fix memory issues in `BIO_*printf` functions
6638
6639    The internal `fmtstr` function used in processing a "%s" format string in
6640    the `BIO_*printf` functions could overflow while calculating the length of a
6641    string and cause an OOB read when printing very long strings.
6642
6643    Additionally the internal `doapr_outch` function can attempt to write to an
6644    OOB memory location (at an offset from the NULL pointer) in the event of a
6645    memory allocation failure. In 1.0.2 and below this could be caused where
6646    the size of a buffer to be allocated is greater than INT_MAX. E.g. this
6647    could be in processing a very long "%s" format string. Memory leaks can
6648    also occur.
6649
6650    The first issue may mask the second issue dependent on compiler behaviour.
6651    These problems could enable attacks where large amounts of untrusted data
6652    is passed to the `BIO_*printf` functions. If applications use these functions
6653    in this way then they could be vulnerable. OpenSSL itself uses these
6654    functions when printing out human-readable dumps of ASN.1 data. Therefore
6655    applications that print this data could be vulnerable if the data is from
6656    untrusted sources. OpenSSL command line applications could also be
6657    vulnerable where they print out ASN.1 data, or if untrusted data is passed
6658    as command line arguments.
6659
6660    Libssl is not considered directly vulnerable. Additionally certificates etc
6661    received via remote connections via libssl are also unlikely to be able to
6662    trigger these issues because of message size limits enforced within libssl.
6663
6664    This issue was reported to OpenSSL Guido Vranken.
6665    ([CVE-2016-0799])
6666
6667    *Matt Caswell*
6668
6669  * Side channel attack on modular exponentiation
6670
6671    A side-channel attack was found which makes use of cache-bank conflicts on
6672    the Intel Sandy-Bridge microarchitecture which could lead to the recovery
6673    of RSA keys.  The ability to exploit this issue is limited as it relies on
6674    an attacker who has control of code in a thread running on the same
6675    hyper-threaded core as the victim thread which is performing decryptions.
6676
6677    This issue was reported to OpenSSL by Yuval Yarom, The University of
6678    Adelaide and NICTA, Daniel Genkin, Technion and Tel Aviv University, and
6679    Nadia Heninger, University of Pennsylvania with more information at
6680    <http://cachebleed.info>.
6681    ([CVE-2016-0702])
6682
6683    *Andy Polyakov*
6684
6685  * Change the req command to generate a 2048-bit RSA/DSA key by default,
6686    if no keysize is specified with default_bits. This fixes an
6687    omission in an earlier change that changed all RSA/DSA key generation
6688    commands to use 2048 bits by default.
6689
6690    *Emilia Käsper*
6691
6692 ### Changes between 1.0.1q and 1.0.1r [28 Jan 2016]
6693
6694  * Protection for DH small subgroup attacks
6695
6696    As a precautionary measure the SSL_OP_SINGLE_DH_USE option has been
6697    switched on by default and cannot be disabled. This could have some
6698    performance impact.
6699
6700    *Matt Caswell*
6701
6702  * SSLv2 doesn't block disabled ciphers
6703
6704    A malicious client can negotiate SSLv2 ciphers that have been disabled on
6705    the server and complete SSLv2 handshakes even if all SSLv2 ciphers have
6706    been disabled, provided that the SSLv2 protocol was not also disabled via
6707    SSL_OP_NO_SSLv2.
6708
6709    This issue was reported to OpenSSL on 26th December 2015 by Nimrod Aviram
6710    and Sebastian Schinzel.
6711    ([CVE-2015-3197])
6712
6713    *Viktor Dukhovni*
6714
6715  * Reject DH handshakes with parameters shorter than 1024 bits.
6716
6717    *Kurt Roeckx*
6718
6719 ### Changes between 1.0.1p and 1.0.1q [3 Dec 2015]
6720
6721  * Certificate verify crash with missing PSS parameter
6722
6723    The signature verification routines will crash with a NULL pointer
6724    dereference if presented with an ASN.1 signature using the RSA PSS
6725    algorithm and absent mask generation function parameter. Since these
6726    routines are used to verify certificate signature algorithms this can be
6727    used to crash any certificate verification operation and exploited in a
6728    DoS attack. Any application which performs certificate verification is
6729    vulnerable including OpenSSL clients and servers which enable client
6730    authentication.
6731
6732    This issue was reported to OpenSSL by Loïc Jonas Etienne (Qnective AG).
6733    ([CVE-2015-3194])
6734
6735    *Stephen Henson*
6736
6737  * X509_ATTRIBUTE memory leak
6738
6739    When presented with a malformed X509_ATTRIBUTE structure OpenSSL will leak
6740    memory. This structure is used by the PKCS#7 and CMS routines so any
6741    application which reads PKCS#7 or CMS data from untrusted sources is
6742    affected. SSL/TLS is not affected.
6743
6744    This issue was reported to OpenSSL by Adam Langley (Google/BoringSSL) using
6745    libFuzzer.
6746    ([CVE-2015-3195])
6747
6748    *Stephen Henson*
6749
6750  * Rewrite EVP_DecodeUpdate (base64 decoding) to fix several bugs.
6751    This changes the decoding behaviour for some invalid messages,
6752    though the change is mostly in the more lenient direction, and
6753    legacy behaviour is preserved as much as possible.
6754
6755    *Emilia Käsper*
6756
6757  * In DSA_generate_parameters_ex, if the provided seed is too short,
6758    use a random seed, as already documented.
6759
6760    *Rich Salz and Ismo Puustinen <ismo.puustinen@intel.com>*
6761
6762 ### Changes between 1.0.1o and 1.0.1p [9 Jul 2015]
6763
6764  * Alternate chains certificate forgery
6765
6766    During certificate verfification, OpenSSL will attempt to find an
6767    alternative certificate chain if the first attempt to build such a chain
6768    fails. An error in the implementation of this logic can mean that an
6769    attacker could cause certain checks on untrusted certificates to be
6770    bypassed, such as the CA flag, enabling them to use a valid leaf
6771    certificate to act as a CA and "issue" an invalid certificate.
6772
6773    This issue was reported to OpenSSL by Adam Langley/David Benjamin
6774    (Google/BoringSSL).
6775    ([CVE-2015-1793])
6776
6777    *Matt Caswell*
6778
6779  * Race condition handling PSK identify hint
6780
6781    If PSK identity hints are received by a multi-threaded client then
6782    the values are wrongly updated in the parent SSL_CTX structure. This can
6783    result in a race condition potentially leading to a double free of the
6784    identify hint data.
6785    ([CVE-2015-3196])
6786
6787    *Stephen Henson*
6788
6789 ### Changes between 1.0.1n and 1.0.1o [12 Jun 2015]
6790
6791  * Fix HMAC ABI incompatibility. The previous version introduced an ABI
6792    incompatibility in the handling of HMAC. The previous ABI has now been
6793    restored.
6794
6795 ### Changes between 1.0.1m and 1.0.1n [11 Jun 2015]
6796
6797  * Malformed ECParameters causes infinite loop
6798
6799    When processing an ECParameters structure OpenSSL enters an infinite loop
6800    if the curve specified is over a specially malformed binary polynomial
6801    field.
6802
6803    This can be used to perform denial of service against any
6804    system which processes public keys, certificate requests or
6805    certificates.  This includes TLS clients and TLS servers with
6806    client authentication enabled.
6807
6808    This issue was reported to OpenSSL by Joseph Barr-Pixton.
6809    ([CVE-2015-1788])
6810
6811    *Andy Polyakov*
6812
6813  * Exploitable out-of-bounds read in X509_cmp_time
6814
6815    X509_cmp_time does not properly check the length of the ASN1_TIME
6816    string and can read a few bytes out of bounds. In addition,
6817    X509_cmp_time accepts an arbitrary number of fractional seconds in the
6818    time string.
6819
6820    An attacker can use this to craft malformed certificates and CRLs of
6821    various sizes and potentially cause a segmentation fault, resulting in
6822    a DoS on applications that verify certificates or CRLs. TLS clients
6823    that verify CRLs are affected. TLS clients and servers with client
6824    authentication enabled may be affected if they use custom verification
6825    callbacks.
6826
6827    This issue was reported to OpenSSL by Robert Swiecki (Google), and
6828    independently by Hanno Böck.
6829    ([CVE-2015-1789])
6830
6831    *Emilia Käsper*
6832
6833  * PKCS7 crash with missing EnvelopedContent
6834
6835    The PKCS#7 parsing code does not handle missing inner EncryptedContent
6836    correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs
6837    with missing content and trigger a NULL pointer dereference on parsing.
6838
6839    Applications that decrypt PKCS#7 data or otherwise parse PKCS#7
6840    structures from untrusted sources are affected. OpenSSL clients and
6841    servers are not affected.
6842
6843    This issue was reported to OpenSSL by Michal Zalewski (Google).
6844    ([CVE-2015-1790])
6845
6846    *Emilia Käsper*
6847
6848  * CMS verify infinite loop with unknown hash function
6849
6850    When verifying a signedData message the CMS code can enter an infinite loop
6851    if presented with an unknown hash function OID. This can be used to perform
6852    denial of service against any system which verifies signedData messages using
6853    the CMS code.
6854    This issue was reported to OpenSSL by Johannes Bauer.
6855    ([CVE-2015-1792])
6856
6857    *Stephen Henson*
6858
6859  * Race condition handling NewSessionTicket
6860
6861    If a NewSessionTicket is received by a multi-threaded client when attempting to
6862    reuse a previous ticket then a race condition can occur potentially leading to
6863    a double free of the ticket data.
6864    ([CVE-2015-1791])
6865
6866    *Matt Caswell*
6867
6868  * Reject DH handshakes with parameters shorter than 768 bits.
6869
6870    *Kurt Roeckx and Emilia Kasper*
6871
6872  * dhparam: generate 2048-bit parameters by default.
6873
6874    *Kurt Roeckx and Emilia Kasper*
6875
6876 ### Changes between 1.0.1l and 1.0.1m [19 Mar 2015]
6877
6878  * Segmentation fault in ASN1_TYPE_cmp fix
6879
6880    The function ASN1_TYPE_cmp will crash with an invalid read if an attempt is
6881    made to compare ASN.1 boolean types. Since ASN1_TYPE_cmp is used to check
6882    certificate signature algorithm consistency this can be used to crash any
6883    certificate verification operation and exploited in a DoS attack. Any
6884    application which performs certificate verification is vulnerable including
6885    OpenSSL clients and servers which enable client authentication.
6886    ([CVE-2015-0286])
6887
6888    *Stephen Henson*
6889
6890  * ASN.1 structure reuse memory corruption fix
6891
6892    Reusing a structure in ASN.1 parsing may allow an attacker to cause
6893    memory corruption via an invalid write. Such reuse is and has been
6894    strongly discouraged and is believed to be rare.
6895
6896    Applications that parse structures containing CHOICE or ANY DEFINED BY
6897    components may be affected. Certificate parsing (d2i_X509 and related
6898    functions) are however not affected. OpenSSL clients and servers are
6899    not affected.
6900    ([CVE-2015-0287])
6901
6902    *Stephen Henson*
6903
6904  * PKCS7 NULL pointer dereferences fix
6905
6906    The PKCS#7 parsing code does not handle missing outer ContentInfo
6907    correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs with
6908    missing content and trigger a NULL pointer dereference on parsing.
6909
6910    Applications that verify PKCS#7 signatures, decrypt PKCS#7 data or
6911    otherwise parse PKCS#7 structures from untrusted sources are
6912    affected. OpenSSL clients and servers are not affected.
6913
6914    This issue was reported to OpenSSL by Michal Zalewski (Google).
6915    ([CVE-2015-0289])
6916
6917    *Emilia Käsper*
6918
6919  * DoS via reachable assert in SSLv2 servers fix
6920
6921    A malicious client can trigger an OPENSSL_assert (i.e., an abort) in
6922    servers that both support SSLv2 and enable export cipher suites by sending
6923    a specially crafted SSLv2 CLIENT-MASTER-KEY message.
6924
6925    This issue was discovered by Sean Burford (Google) and Emilia Käsper
6926    (OpenSSL development team).
6927    ([CVE-2015-0293])
6928
6929    *Emilia Käsper*
6930
6931  * Use After Free following d2i_ECPrivatekey error fix
6932
6933    A malformed EC private key file consumed via the d2i_ECPrivateKey function
6934    could cause a use after free condition. This, in turn, could cause a double
6935    free in several private key parsing functions (such as d2i_PrivateKey
6936    or EVP_PKCS82PKEY) and could lead to a DoS attack or memory corruption
6937    for applications that receive EC private keys from untrusted
6938    sources. This scenario is considered rare.
6939
6940    This issue was discovered by the BoringSSL project and fixed in their
6941    commit 517073cd4b.
6942    ([CVE-2015-0209])
6943
6944    *Matt Caswell*
6945
6946  * X509_to_X509_REQ NULL pointer deref fix
6947
6948    The function X509_to_X509_REQ will crash with a NULL pointer dereference if
6949    the certificate key is invalid. This function is rarely used in practice.
6950
6951    This issue was discovered by Brian Carpenter.
6952    ([CVE-2015-0288])
6953
6954    *Stephen Henson*
6955
6956  * Removed the export ciphers from the DEFAULT ciphers
6957
6958    *Kurt Roeckx*
6959
6960 ### Changes between 1.0.1k and 1.0.1l [15 Jan 2015]
6961
6962  * Build fixes for the Windows and OpenVMS platforms
6963
6964    *Matt Caswell and Richard Levitte*
6965
6966 ### Changes between 1.0.1j and 1.0.1k [8 Jan 2015]
6967
6968  * Fix DTLS segmentation fault in dtls1_get_record. A carefully crafted DTLS
6969    message can cause a segmentation fault in OpenSSL due to a NULL pointer
6970    dereference. This could lead to a Denial Of Service attack. Thanks to
6971    Markus Stenberg of Cisco Systems, Inc. for reporting this issue.
6972    ([CVE-2014-3571])
6973
6974    *Steve Henson*
6975
6976  * Fix DTLS memory leak in dtls1_buffer_record. A memory leak can occur in the
6977    dtls1_buffer_record function under certain conditions. In particular this
6978    could occur if an attacker sent repeated DTLS records with the same
6979    sequence number but for the next epoch. The memory leak could be exploited
6980    by an attacker in a Denial of Service attack through memory exhaustion.
6981    Thanks to Chris Mueller for reporting this issue.
6982    ([CVE-2015-0206])
6983
6984    *Matt Caswell*
6985
6986  * Fix issue where no-ssl3 configuration sets method to NULL. When openssl is
6987    built with the no-ssl3 option and a SSL v3 ClientHello is received the ssl
6988    method would be set to NULL which could later result in a NULL pointer
6989    dereference. Thanks to Frank Schmirler for reporting this issue.
6990    ([CVE-2014-3569])
6991
6992    *Kurt Roeckx*
6993
6994  * Abort handshake if server key exchange message is omitted for ephemeral
6995    ECDH ciphersuites.
6996
6997    Thanks to Karthikeyan Bhargavan of the PROSECCO team at INRIA for
6998    reporting this issue.
6999    ([CVE-2014-3572])
7000
7001    *Steve Henson*
7002
7003  * Remove non-export ephemeral RSA code on client and server. This code
7004    violated the TLS standard by allowing the use of temporary RSA keys in
7005    non-export ciphersuites and could be used by a server to effectively
7006    downgrade the RSA key length used to a value smaller than the server
7007    certificate. Thanks for Karthikeyan Bhargavan of the PROSECCO team at
7008    INRIA or reporting this issue.
7009    ([CVE-2015-0204])
7010
7011    *Steve Henson*
7012
7013  * Fixed issue where DH client certificates are accepted without verification.
7014    An OpenSSL server will accept a DH certificate for client authentication
7015    without the certificate verify message. This effectively allows a client to
7016    authenticate without the use of a private key. This only affects servers
7017    which trust a client certificate authority which issues certificates
7018    containing DH keys: these are extremely rare and hardly ever encountered.
7019    Thanks for Karthikeyan Bhargavan of the PROSECCO team at INRIA or reporting
7020    this issue.
7021    ([CVE-2015-0205])
7022
7023    *Steve Henson*
7024
7025  * Ensure that the session ID context of an SSL is updated when its
7026    SSL_CTX is updated via SSL_set_SSL_CTX.
7027
7028    The session ID context is typically set from the parent SSL_CTX,
7029    and can vary with the CTX.
7030
7031    *Adam Langley*
7032
7033  * Fix various certificate fingerprint issues.
7034
7035    By using non-DER or invalid encodings outside the signed portion of a
7036    certificate the fingerprint can be changed without breaking the signature.
7037    Although no details of the signed portion of the certificate can be changed
7038    this can cause problems with some applications: e.g. those using the
7039    certificate fingerprint for blacklists.
7040
7041    1. Reject signatures with non zero unused bits.
7042
7043    If the BIT STRING containing the signature has non zero unused bits reject
7044    the signature. All current signature algorithms require zero unused bits.
7045
7046    2. Check certificate algorithm consistency.
7047
7048    Check the AlgorithmIdentifier inside TBS matches the one in the
7049    certificate signature. NB: this will result in signature failure
7050    errors for some broken certificates.
7051
7052    Thanks to Konrad Kraszewski from Google for reporting this issue.
7053
7054    3. Check DSA/ECDSA signatures use DER.
7055
7056    Re-encode DSA/ECDSA signatures and compare with the original received
7057    signature. Return an error if there is a mismatch.
7058
7059    This will reject various cases including garbage after signature
7060    (thanks to Antti Karjalainen and Tuomo Untinen from the Codenomicon CROSS
7061    program for discovering this case) and use of BER or invalid ASN.1 INTEGERs
7062    (negative or with leading zeroes).
7063
7064    Further analysis was conducted and fixes were developed by Stephen Henson
7065    of the OpenSSL core team.
7066
7067    ([CVE-2014-8275])
7068
7069    *Steve Henson*
7070
7071  * Correct Bignum squaring. Bignum squaring (BN_sqr) may produce incorrect
7072    results on some platforms, including x86_64. This bug occurs at random
7073    with a very low probability, and is not known to be exploitable in any
7074    way, though its exact impact is difficult to determine. Thanks to Pieter
7075    Wuille (Blockstream) who reported this issue and also suggested an initial
7076    fix. Further analysis was conducted by the OpenSSL development team and
7077    Adam Langley of Google. The final fix was developed by Andy Polyakov of
7078    the OpenSSL core team.
7079    ([CVE-2014-3570])
7080
7081    *Andy Polyakov*
7082
7083  * Do not resume sessions on the server if the negotiated protocol
7084    version does not match the session's version. Resuming with a different
7085    version, while not strictly forbidden by the RFC, is of questionable
7086    sanity and breaks all known clients.
7087
7088    *David Benjamin, Emilia Käsper*
7089
7090  * Tighten handling of the ChangeCipherSpec (CCS) message: reject
7091    early CCS messages during renegotiation. (Note that because
7092    renegotiation is encrypted, this early CCS was not exploitable.)
7093
7094    *Emilia Käsper*
7095
7096  * Tighten client-side session ticket handling during renegotiation:
7097    ensure that the client only accepts a session ticket if the server sends
7098    the extension anew in the ServerHello. Previously, a TLS client would
7099    reuse the old extension state and thus accept a session ticket if one was
7100    announced in the initial ServerHello.
7101
7102    Similarly, ensure that the client requires a session ticket if one
7103    was advertised in the ServerHello. Previously, a TLS client would
7104    ignore a missing NewSessionTicket message.
7105
7106    *Emilia Käsper*
7107
7108 ### Changes between 1.0.1i and 1.0.1j [15 Oct 2014]
7109
7110  * SRTP Memory Leak.
7111
7112    A flaw in the DTLS SRTP extension parsing code allows an attacker, who
7113    sends a carefully crafted handshake message, to cause OpenSSL to fail
7114    to free up to 64k of memory causing a memory leak. This could be
7115    exploited in a Denial Of Service attack. This issue affects OpenSSL
7116    1.0.1 server implementations for both SSL/TLS and DTLS regardless of
7117    whether SRTP is used or configured. Implementations of OpenSSL that
7118    have been compiled with OPENSSL_NO_SRTP defined are not affected.
7119
7120    The fix was developed by the OpenSSL team.
7121    ([CVE-2014-3513])
7122
7123    *OpenSSL team*
7124
7125  * Session Ticket Memory Leak.
7126
7127    When an OpenSSL SSL/TLS/DTLS server receives a session ticket the
7128    integrity of that ticket is first verified. In the event of a session
7129    ticket integrity check failing, OpenSSL will fail to free memory
7130    causing a memory leak. By sending a large number of invalid session
7131    tickets an attacker could exploit this issue in a Denial Of Service
7132    attack.
7133    ([CVE-2014-3567])
7134
7135    *Steve Henson*
7136
7137  * Build option no-ssl3 is incomplete.
7138
7139    When OpenSSL is configured with "no-ssl3" as a build option, servers
7140    could accept and complete a SSL 3.0 handshake, and clients could be
7141    configured to send them.
7142    ([CVE-2014-3568])
7143
7144    *Akamai and the OpenSSL team*
7145
7146  * Add support for TLS_FALLBACK_SCSV.
7147    Client applications doing fallback retries should call
7148    SSL_set_mode(s, SSL_MODE_SEND_FALLBACK_SCSV).
7149    ([CVE-2014-3566])
7150
7151    *Adam Langley, Bodo Moeller*
7152
7153  * Add additional DigestInfo checks.
7154
7155    Re-encode DigestInto in DER and check against the original when
7156    verifying RSA signature: this will reject any improperly encoded
7157    DigestInfo structures.
7158
7159    Note: this is a precautionary measure and no attacks are currently known.
7160
7161    *Steve Henson*
7162
7163 ### Changes between 1.0.1h and 1.0.1i [6 Aug 2014]
7164
7165  * Fix SRP buffer overrun vulnerability. Invalid parameters passed to the
7166    SRP code can be overrun an internal buffer. Add sanity check that
7167    g, A, B < N to SRP code.
7168
7169    Thanks to Sean Devlin and Watson Ladd of Cryptography Services, NCC
7170    Group for discovering this issue.
7171    ([CVE-2014-3512])
7172
7173    *Steve Henson*
7174
7175  * A flaw in the OpenSSL SSL/TLS server code causes the server to negotiate
7176    TLS 1.0 instead of higher protocol versions when the ClientHello message
7177    is badly fragmented. This allows a man-in-the-middle attacker to force a
7178    downgrade to TLS 1.0 even if both the server and the client support a
7179    higher protocol version, by modifying the client's TLS records.
7180
7181    Thanks to David Benjamin and Adam Langley (Google) for discovering and
7182    researching this issue.
7183    ([CVE-2014-3511])
7184
7185    *David Benjamin*
7186
7187  * OpenSSL DTLS clients enabling anonymous (EC)DH ciphersuites are subject
7188    to a denial of service attack. A malicious server can crash the client
7189    with a null pointer dereference (read) by specifying an anonymous (EC)DH
7190    ciphersuite and sending carefully crafted handshake messages.
7191
7192    Thanks to Felix Gröbert (Google) for discovering and researching this
7193    issue.
7194    ([CVE-2014-3510])
7195
7196    *Emilia Käsper*
7197
7198  * By sending carefully crafted DTLS packets an attacker could cause openssl
7199    to leak memory. This can be exploited through a Denial of Service attack.
7200    Thanks to Adam Langley for discovering and researching this issue.
7201    ([CVE-2014-3507])
7202
7203    *Adam Langley*
7204
7205  * An attacker can force openssl to consume large amounts of memory whilst
7206    processing DTLS handshake messages. This can be exploited through a
7207    Denial of Service attack.
7208    Thanks to Adam Langley for discovering and researching this issue.
7209    ([CVE-2014-3506])
7210
7211    *Adam Langley*
7212
7213  * An attacker can force an error condition which causes openssl to crash
7214    whilst processing DTLS packets due to memory being freed twice. This
7215    can be exploited through a Denial of Service attack.
7216    Thanks to Adam Langley and Wan-Teh Chang for discovering and researching
7217    this issue.
7218    ([CVE-2014-3505])
7219
7220    *Adam Langley*
7221
7222  * If a multithreaded client connects to a malicious server using a resumed
7223    session and the server sends an ec point format extension it could write
7224    up to 255 bytes to freed memory.
7225
7226    Thanks to Gabor Tyukasz (LogMeIn Inc) for discovering and researching this
7227    issue.
7228    ([CVE-2014-3509])
7229
7230    *Gabor Tyukasz*
7231
7232  * A malicious server can crash an OpenSSL client with a null pointer
7233    dereference (read) by specifying an SRP ciphersuite even though it was not
7234    properly negotiated with the client. This can be exploited through a
7235    Denial of Service attack.
7236
7237    Thanks to Joonas Kuorilehto and Riku Hietamäki (Codenomicon) for
7238    discovering and researching this issue.
7239    ([CVE-2014-5139])
7240
7241    *Steve Henson*
7242
7243  * A flaw in OBJ_obj2txt may cause pretty printing functions such as
7244    X509_name_oneline, X509_name_print_ex et al. to leak some information
7245    from the stack. Applications may be affected if they echo pretty printing
7246    output to the attacker.
7247
7248    Thanks to Ivan Fratric (Google) for discovering this issue.
7249    ([CVE-2014-3508])
7250
7251    *Emilia Käsper, and Steve Henson*
7252
7253  * Fix ec_GFp_simple_points_make_affine (thus, EC_POINTs_mul etc.)
7254    for corner cases. (Certain input points at infinity could lead to
7255    bogus results, with non-infinity inputs mapped to infinity too.)
7256
7257    *Bodo Moeller*
7258
7259 ### Changes between 1.0.1g and 1.0.1h [5 Jun 2014]
7260
7261  * Fix for SSL/TLS MITM flaw. An attacker using a carefully crafted
7262    handshake can force the use of weak keying material in OpenSSL
7263    SSL/TLS clients and servers.
7264
7265    Thanks to KIKUCHI Masashi (Lepidum Co. Ltd.) for discovering and
7266    researching this issue. ([CVE-2014-0224])
7267
7268    *KIKUCHI Masashi, Steve Henson*
7269
7270  * Fix DTLS recursion flaw. By sending an invalid DTLS handshake to an
7271    OpenSSL DTLS client the code can be made to recurse eventually crashing
7272    in a DoS attack.
7273
7274    Thanks to Imre Rad (Search-Lab Ltd.) for discovering this issue.
7275    ([CVE-2014-0221])
7276
7277    *Imre Rad, Steve Henson*
7278
7279  * Fix DTLS invalid fragment vulnerability. A buffer overrun attack can
7280    be triggered by sending invalid DTLS fragments to an OpenSSL DTLS
7281    client or server. This is potentially exploitable to run arbitrary
7282    code on a vulnerable client or server.
7283
7284    Thanks to Jüri Aedla for reporting this issue. ([CVE-2014-0195])
7285
7286    *Jüri Aedla, Steve Henson*
7287
7288  * Fix bug in TLS code where clients enable anonymous ECDH ciphersuites
7289    are subject to a denial of service attack.
7290
7291    Thanks to Felix Gröbert and Ivan Fratric at Google for discovering
7292    this issue. ([CVE-2014-3470])
7293
7294    *Felix Gröbert, Ivan Fratric, Steve Henson*
7295
7296  * Harmonize version and its documentation. -f flag is used to display
7297    compilation flags.
7298
7299    *mancha <mancha1@zoho.com>*
7300
7301  * Fix eckey_priv_encode so it immediately returns an error upon a failure
7302    in i2d_ECPrivateKey.
7303
7304    *mancha <mancha1@zoho.com>*
7305
7306  * Fix some double frees. These are not thought to be exploitable.
7307
7308    *mancha <mancha1@zoho.com>*
7309
7310 ### Changes between 1.0.1f and 1.0.1g [7 Apr 2014]
7311
7312  * A missing bounds check in the handling of the TLS heartbeat extension
7313    can be used to reveal up to 64k of memory to a connected client or
7314    server.
7315
7316    Thanks for Neel Mehta of Google Security for discovering this bug and to
7317    Adam Langley <agl@chromium.org> and Bodo Moeller <bmoeller@acm.org> for
7318    preparing the fix ([CVE-2014-0160])
7319
7320    *Adam Langley, Bodo Moeller*
7321
7322  * Fix for the attack described in the paper "Recovering OpenSSL
7323    ECDSA Nonces Using the FLUSH+RELOAD Cache Side-channel Attack"
7324    by Yuval Yarom and Naomi Benger. Details can be obtained from:
7325    <http://eprint.iacr.org/2014/140>
7326
7327    Thanks to Yuval Yarom and Naomi Benger for discovering this
7328    flaw and to Yuval Yarom for supplying a fix ([CVE-2014-0076])
7329
7330    *Yuval Yarom and Naomi Benger*
7331
7332  * TLS pad extension: draft-agl-tls-padding-03
7333
7334    Workaround for the "TLS hang bug" (see FAQ and PR#2771): if the
7335    TLS client Hello record length value would otherwise be > 255 and
7336    less that 512 pad with a dummy extension containing zeroes so it
7337    is at least 512 bytes long.
7338
7339    *Adam Langley, Steve Henson*
7340
7341 ### Changes between 1.0.1e and 1.0.1f [6 Jan 2014]
7342
7343  * Fix for TLS record tampering bug. A carefully crafted invalid
7344    handshake could crash OpenSSL with a NULL pointer exception.
7345    Thanks to Anton Johansson for reporting this issues.
7346    ([CVE-2013-4353])
7347
7348  * Keep original DTLS digest and encryption contexts in retransmission
7349    structures so we can use the previous session parameters if they need
7350    to be resent. ([CVE-2013-6450])
7351
7352    *Steve Henson*
7353
7354  * Add option SSL_OP_SAFARI_ECDHE_ECDSA_BUG (part of SSL_OP_ALL) which
7355    avoids preferring ECDHE-ECDSA ciphers when the client appears to be
7356    Safari on OS X.  Safari on OS X 10.8..10.8.3 advertises support for
7357    several ECDHE-ECDSA ciphers, but fails to negotiate them.  The bug
7358    is fixed in OS X 10.8.4, but Apple have ruled out both hot fixing
7359    10.8..10.8.3 and forcing users to upgrade to 10.8.4 or newer.
7360
7361    *Rob Stradling, Adam Langley*
7362
7363 ### Changes between 1.0.1d and 1.0.1e [11 Feb 2013]
7364
7365  * Correct fix for CVE-2013-0169. The original didn't work on AES-NI
7366    supporting platforms or when small records were transferred.
7367
7368    *Andy Polyakov, Steve Henson*
7369
7370 ### Changes between 1.0.1c and 1.0.1d [5 Feb 2013]
7371
7372  * Make the decoding of SSLv3, TLS and DTLS CBC records constant time.
7373
7374    This addresses the flaw in CBC record processing discovered by
7375    Nadhem Alfardan and Kenny Paterson. Details of this attack can be found
7376    at: <http://www.isg.rhul.ac.uk/tls/>
7377
7378    Thanks go to Nadhem Alfardan and Kenny Paterson of the Information
7379    Security Group at Royal Holloway, University of London
7380    (www.isg.rhul.ac.uk) for discovering this flaw and Adam Langley and
7381    Emilia Käsper for the initial patch.
7382    ([CVE-2013-0169])
7383
7384    *Emilia Käsper, Adam Langley, Ben Laurie, Andy Polyakov, Steve Henson*
7385
7386  * Fix flaw in AESNI handling of TLS 1.2 and 1.1 records for CBC mode
7387    ciphersuites which can be exploited in a denial of service attack.
7388    Thanks go to and to Adam Langley <agl@chromium.org> for discovering
7389    and detecting this bug and to Wolfgang Ettlinger
7390    <wolfgang.ettlinger@gmail.com> for independently discovering this issue.
7391    ([CVE-2012-2686])
7392
7393    *Adam Langley*
7394
7395  * Return an error when checking OCSP signatures when key is NULL.
7396    This fixes a DoS attack. ([CVE-2013-0166])
7397
7398    *Steve Henson*
7399
7400  * Make openssl verify return errors.
7401
7402    *Chris Palmer <palmer@google.com> and Ben Laurie*
7403
7404  * Call OCSP Stapling callback after ciphersuite has been chosen, so
7405    the right response is stapled. Also change SSL_get_certificate()
7406    so it returns the certificate actually sent.
7407    See <http://rt.openssl.org/Ticket/Display.html?id=2836>.
7408
7409    *Rob Stradling <rob.stradling@comodo.com>*
7410
7411  * Fix possible deadlock when decoding public keys.
7412
7413    *Steve Henson*
7414
7415  * Don't use TLS 1.0 record version number in initial client hello
7416    if renegotiating.
7417
7418    *Steve Henson*
7419
7420 ### Changes between 1.0.1b and 1.0.1c [10 May 2012]
7421
7422  * Sanity check record length before skipping explicit IV in TLS
7423    1.2, 1.1 and DTLS to fix DoS attack.
7424
7425    Thanks to Codenomicon for discovering this issue using Fuzz-o-Matic
7426    fuzzing as a service testing platform.
7427    ([CVE-2012-2333])
7428
7429    *Steve Henson*
7430
7431  * Initialise tkeylen properly when encrypting CMS messages.
7432    Thanks to Solar Designer of Openwall for reporting this issue.
7433
7434    *Steve Henson*
7435
7436  * In FIPS mode don't try to use composite ciphers as they are not
7437    approved.
7438
7439    *Steve Henson*
7440
7441 ### Changes between 1.0.1a and 1.0.1b [26 Apr 2012]
7442
7443  * OpenSSL 1.0.0 sets SSL_OP_ALL to 0x80000FFFL and OpenSSL 1.0.1 and
7444    1.0.1a set SSL_OP_NO_TLSv1_1 to 0x00000400L which would unfortunately
7445    mean any application compiled against OpenSSL 1.0.0 headers setting
7446    SSL_OP_ALL would also set SSL_OP_NO_TLSv1_1, unintentionally disabling
7447    TLS 1.1 also. Fix this by changing the value of SSL_OP_NO_TLSv1_1 to
7448    0x10000000L Any application which was previously compiled against
7449    OpenSSL 1.0.1 or 1.0.1a headers and which cares about SSL_OP_NO_TLSv1_1
7450    will need to be recompiled as a result. Letting be results in
7451    inability to disable specifically TLS 1.1 and in client context,
7452    in unlike event, limit maximum offered version to TLS 1.0 [see below].
7453
7454    *Steve Henson*
7455
7456  * In order to ensure interoperability SSL_OP_NO_protocolX does not
7457    disable just protocol X, but all protocols above X *if* there are
7458    protocols *below* X still enabled. In more practical terms it means
7459    that if application wants to disable TLS1.0 in favor of TLS1.1 and
7460    above, it's not sufficient to pass `SSL_OP_NO_TLSv1`, one has to pass
7461    `SSL_OP_NO_TLSv1|SSL_OP_NO_SSLv3|SSL_OP_NO_SSLv2`. This applies to
7462    client side.
7463
7464    *Andy Polyakov*
7465
7466 ### Changes between 1.0.1 and 1.0.1a [19 Apr 2012]
7467
7468  * Check for potentially exploitable overflows in asn1_d2i_read_bio
7469    BUF_mem_grow and BUF_mem_grow_clean. Refuse attempts to shrink buffer
7470    in CRYPTO_realloc_clean.
7471
7472    Thanks to Tavis Ormandy, Google Security Team, for discovering this
7473    issue and to Adam Langley <agl@chromium.org> for fixing it.
7474    ([CVE-2012-2110])
7475
7476    *Adam Langley (Google), Tavis Ormandy, Google Security Team*
7477
7478  * Don't allow TLS 1.2 SHA-256 ciphersuites in TLS 1.0, 1.1 connections.
7479
7480    *Adam Langley*
7481
7482  * Workarounds for some broken servers that "hang" if a client hello
7483    record length exceeds 255 bytes.
7484
7485    1. Do not use record version number > TLS 1.0 in initial client
7486       hello: some (but not all) hanging servers will now work.
7487    2. If we set OPENSSL_MAX_TLS1_2_CIPHER_LENGTH this will truncate
7488       the number of ciphers sent in the client hello. This should be
7489       set to an even number, such as 50, for example by passing:
7490       -DOPENSSL_MAX_TLS1_2_CIPHER_LENGTH=50 to config or Configure.
7491       Most broken servers should now work.
7492    3. If all else fails setting OPENSSL_NO_TLS1_2_CLIENT will disable
7493       TLS 1.2 client support entirely.
7494
7495    *Steve Henson*
7496
7497  * Fix SEGV in Vector Permutation AES module observed in OpenSSH.
7498
7499    *Andy Polyakov*
7500
7501 ### Changes between 1.0.0h and 1.0.1  [14 Mar 2012]
7502
7503  * Add compatibility with old MDC2 signatures which use an ASN1 OCTET
7504    STRING form instead of a DigestInfo.
7505
7506    *Steve Henson*
7507
7508  * The format used for MDC2 RSA signatures is inconsistent between EVP
7509    and the RSA_sign/RSA_verify functions. This was made more apparent when
7510    OpenSSL used RSA_sign/RSA_verify for some RSA signatures in particular
7511    those which went through EVP_PKEY_METHOD in 1.0.0 and later. Detect
7512    the correct format in RSA_verify so both forms transparently work.
7513
7514    *Steve Henson*
7515
7516  * Some servers which support TLS 1.0 can choke if we initially indicate
7517    support for TLS 1.2 and later renegotiate using TLS 1.0 in the RSA
7518    encrypted premaster secret. As a workaround use the maximum permitted
7519    client version in client hello, this should keep such servers happy
7520    and still work with previous versions of OpenSSL.
7521
7522    *Steve Henson*
7523
7524  * Add support for TLS/DTLS heartbeats.
7525
7526    *Robin Seggelmann <seggelmann@fh-muenster.de>*
7527
7528  * Add support for SCTP.
7529
7530    *Robin Seggelmann <seggelmann@fh-muenster.de>*
7531
7532  * Improved PRNG seeding for VOS.
7533
7534    *Paul Green <Paul.Green@stratus.com>*
7535
7536  * Extensive assembler packs updates, most notably:
7537
7538    - x86[_64]:     AES-NI, PCLMULQDQ, RDRAND support;
7539    - x86[_64]:     SSSE3 support (SHA1, vector-permutation AES);
7540    - x86_64:       bit-sliced AES implementation;
7541    - ARM:          NEON support, contemporary platforms optimizations;
7542    - s390x:        z196 support;
7543    - `*`:            GHASH and GF(2^m) multiplication implementations;
7544
7545    *Andy Polyakov*
7546
7547  * Make TLS-SRP code conformant with RFC 5054 API cleanup
7548    (removal of unnecessary code)
7549
7550    *Peter Sylvester <peter.sylvester@edelweb.fr>*
7551
7552  * Add TLS key material exporter from RFC 5705.
7553
7554    *Eric Rescorla*
7555
7556  * Add DTLS-SRTP negotiation from RFC 5764.
7557
7558    *Eric Rescorla*
7559
7560  * Add Next Protocol Negotiation,
7561    <http://tools.ietf.org/html/draft-agl-tls-nextprotoneg-00>. Can be
7562    disabled with a no-npn flag to config or Configure. Code donated
7563    by Google.
7564
7565    *Adam Langley <agl@google.com> and Ben Laurie*
7566
7567  * Add optional 64-bit optimized implementations of elliptic curves NIST-P224,
7568    NIST-P256, NIST-P521, with constant-time single point multiplication on
7569    typical inputs. Compiler support for the nonstandard type `__uint128_t` is
7570    required to use this (present in gcc 4.4 and later, for 64-bit builds).
7571    Code made available under Apache License version 2.0.
7572
7573    Specify "enable-ec_nistp_64_gcc_128" on the Configure (or config) command
7574    line to include this in your build of OpenSSL, and run "make depend" (or
7575    "make update"). This enables the following EC_METHODs:
7576
7577            EC_GFp_nistp224_method()
7578            EC_GFp_nistp256_method()
7579            EC_GFp_nistp521_method()
7580
7581    EC_GROUP_new_by_curve_name() will automatically use these (while
7582    EC_GROUP_new_curve_GFp() currently prefers the more flexible
7583    implementations).
7584
7585    *Emilia Käsper, Adam Langley, Bodo Moeller (Google)*
7586
7587  * Use type ossl_ssize_t instead of ssize_t which isn't available on
7588    all platforms. Move ssize_t definition from e_os.h to the public
7589    header file e_os2.h as it now appears in public header file cms.h
7590
7591    *Steve Henson*
7592
7593  * New -sigopt option to the ca, req and x509 utilities. Additional
7594    signature parameters can be passed using this option and in
7595    particular PSS.
7596
7597    *Steve Henson*
7598
7599  * Add RSA PSS signing function. This will generate and set the
7600    appropriate AlgorithmIdentifiers for PSS based on those in the
7601    corresponding EVP_MD_CTX structure. No application support yet.
7602
7603    *Steve Henson*
7604
7605  * Support for companion algorithm specific ASN1 signing routines.
7606    New function ASN1_item_sign_ctx() signs a pre-initialised
7607    EVP_MD_CTX structure and sets AlgorithmIdentifiers based on
7608    the appropriate parameters.
7609
7610    *Steve Henson*
7611
7612  * Add new algorithm specific ASN1 verification initialisation function
7613    to EVP_PKEY_ASN1_METHOD: this is not in EVP_PKEY_METHOD since the ASN1
7614    handling will be the same no matter what EVP_PKEY_METHOD is used.
7615    Add a PSS handler to support verification of PSS signatures: checked
7616    against a number of sample certificates.
7617
7618    *Steve Henson*
7619
7620  * Add signature printing for PSS. Add PSS OIDs.
7621
7622    *Steve Henson, Martin Kaiser <lists@kaiser.cx>*
7623
7624  * Add algorithm specific signature printing. An individual ASN1 method
7625    can now print out signatures instead of the standard hex dump.
7626
7627    More complex signatures (e.g. PSS) can print out more meaningful
7628    information. Include DSA version that prints out the signature
7629    parameters r, s.
7630
7631    *Steve Henson*
7632
7633  * Password based recipient info support for CMS library: implementing
7634    RFC3211.
7635
7636    *Steve Henson*
7637
7638  * Split password based encryption into PBES2 and PBKDF2 functions. This
7639    neatly separates the code into cipher and PBE sections and is required
7640    for some algorithms that split PBES2 into separate pieces (such as
7641    password based CMS).
7642
7643    *Steve Henson*
7644
7645  * Session-handling fixes:
7646    - Fix handling of connections that are resuming with a session ID,
7647      but also support Session Tickets.
7648    - Fix a bug that suppressed issuing of a new ticket if the client
7649      presented a ticket with an expired session.
7650    - Try to set the ticket lifetime hint to something reasonable.
7651    - Make tickets shorter by excluding irrelevant information.
7652    - On the client side, don't ignore renewed tickets.
7653
7654    *Adam Langley, Bodo Moeller (Google)*
7655
7656  * Fix PSK session representation.
7657
7658    *Bodo Moeller*
7659
7660  * Add RC4-MD5 and AESNI-SHA1 "stitched" implementations.
7661
7662    This work was sponsored by Intel.
7663
7664    *Andy Polyakov*
7665
7666  * Add GCM support to TLS library. Some custom code is needed to split
7667    the IV between the fixed (from PRF) and explicit (from TLS record)
7668    portions. This adds all GCM ciphersuites supported by RFC5288 and
7669    RFC5289. Generalise some `AES*` cipherstrings to include GCM and
7670    add a special AESGCM string for GCM only.
7671
7672    *Steve Henson*
7673
7674  * Expand range of ctrls for AES GCM. Permit setting invocation
7675    field on decrypt and retrieval of invocation field only on encrypt.
7676
7677    *Steve Henson*
7678
7679  * Add HMAC ECC ciphersuites from RFC5289. Include SHA384 PRF support.
7680    As required by RFC5289 these ciphersuites cannot be used if for
7681    versions of TLS earlier than 1.2.
7682
7683    *Steve Henson*
7684
7685  * For FIPS capable OpenSSL interpret a NULL default public key method
7686    as unset and return the appropriate default but do *not* set the default.
7687    This means we can return the appropriate method in applications that
7688    switch between FIPS and non-FIPS modes.
7689
7690    *Steve Henson*
7691
7692  * Redirect HMAC and CMAC operations to FIPS module in FIPS mode. If an
7693    ENGINE is used then we cannot handle that in the FIPS module so we
7694    keep original code iff non-FIPS operations are allowed.
7695
7696    *Steve Henson*
7697
7698  * Add -attime option to openssl utilities.
7699
7700    *Peter Eckersley <pde@eff.org>, Ben Laurie and Steve Henson*
7701
7702  * Redirect DSA and DH operations to FIPS module in FIPS mode.
7703
7704    *Steve Henson*
7705
7706  * Redirect ECDSA and ECDH operations to FIPS module in FIPS mode. Also use
7707    FIPS EC methods unconditionally for now.
7708
7709    *Steve Henson*
7710
7711  * New build option no-ec2m to disable characteristic 2 code.
7712
7713    *Steve Henson*
7714
7715  * Backport libcrypto audit of return value checking from 1.1.0-dev; not
7716    all cases can be covered as some introduce binary incompatibilities.
7717
7718    *Steve Henson*
7719
7720  * Redirect RSA operations to FIPS module including keygen,
7721    encrypt, decrypt, sign and verify. Block use of non FIPS RSA methods.
7722
7723    *Steve Henson*
7724
7725  * Add similar low-level API blocking to ciphers.
7726
7727    *Steve Henson*
7728
7729  * low-level digest APIs are not approved in FIPS mode: any attempt
7730    to use these will cause a fatal error. Applications that *really* want
7731    to use them can use the `private_*` version instead.
7732
7733    *Steve Henson*
7734
7735  * Redirect cipher operations to FIPS module for FIPS builds.
7736
7737    *Steve Henson*
7738
7739  * Redirect digest operations to FIPS module for FIPS builds.
7740
7741    *Steve Henson*
7742
7743  * Update build system to add "fips" flag which will link in fipscanister.o
7744    for static and shared library builds embedding a signature if needed.
7745
7746    *Steve Henson*
7747
7748  * Output TLS supported curves in preference order instead of numerical
7749    order. This is currently hardcoded for the highest order curves first.
7750    This should be configurable so applications can judge speed vs strength.
7751
7752    *Steve Henson*
7753
7754  * Add TLS v1.2 server support for client authentication.
7755
7756    *Steve Henson*
7757
7758  * Add support for FIPS mode in ssl library: disable SSLv3, non-FIPS ciphers
7759    and enable MD5.
7760
7761    *Steve Henson*
7762
7763  * Functions FIPS_mode_set() and FIPS_mode() which call the underlying
7764    FIPS modules versions.
7765
7766    *Steve Henson*
7767
7768  * Add TLS v1.2 client side support for client authentication. Keep cache
7769    of handshake records longer as we don't know the hash algorithm to use
7770    until after the certificate request message is received.
7771
7772    *Steve Henson*
7773
7774  * Initial TLS v1.2 client support. Add a default signature algorithms
7775    extension including all the algorithms we support. Parse new signature
7776    format in client key exchange. Relax some ECC signing restrictions for
7777    TLS v1.2 as indicated in RFC5246.
7778
7779    *Steve Henson*
7780
7781  * Add server support for TLS v1.2 signature algorithms extension. Switch
7782    to new signature format when needed using client digest preference.
7783    All server ciphersuites should now work correctly in TLS v1.2. No client
7784    support yet and no support for client certificates.
7785
7786    *Steve Henson*
7787
7788  * Initial TLS v1.2 support. Add new SHA256 digest to ssl code, switch
7789    to SHA256 for PRF when using TLS v1.2 and later. Add new SHA256 based
7790    ciphersuites. At present only RSA key exchange ciphersuites work with
7791    TLS v1.2. Add new option for TLS v1.2 replacing the old and obsolete
7792    SSL_OP_PKCS1_CHECK flags with SSL_OP_NO_TLSv1_2. New TLSv1.2 methods
7793    and version checking.
7794
7795    *Steve Henson*
7796
7797  * New option OPENSSL_NO_SSL_INTERN. If an application can be compiled
7798    with this defined it will not be affected by any changes to ssl internal
7799    structures. Add several utility functions to allow openssl application
7800    to work with OPENSSL_NO_SSL_INTERN defined.
7801
7802    *Steve Henson*
7803
7804  * A long standing patch to add support for SRP from EdelWeb (Peter
7805    Sylvester and Christophe Renou) was integrated.
7806    *Christophe Renou <christophe.renou@edelweb.fr>, Peter Sylvester
7807    <peter.sylvester@edelweb.fr>, Tom Wu <tjw@cs.stanford.edu>, and
7808    Ben Laurie*
7809
7810  * Add functions to copy EVP_PKEY_METHOD and retrieve flags and id.
7811
7812    *Steve Henson*
7813
7814  * Permit abbreviated handshakes when renegotiating using the function
7815    SSL_renegotiate_abbreviated().
7816
7817    *Robin Seggelmann <seggelmann@fh-muenster.de>*
7818
7819  * Add call to ENGINE_register_all_complete() to
7820    ENGINE_load_builtin_engines(), so some implementations get used
7821    automatically instead of needing explicit application support.
7822
7823    *Steve Henson*
7824
7825  * Add support for TLS key exporter as described in RFC5705.
7826
7827    *Robin Seggelmann <seggelmann@fh-muenster.de>, Steve Henson*
7828
7829  * Initial TLSv1.1 support. Since TLSv1.1 is very similar to TLS v1.0 only
7830    a few changes are required:
7831
7832      Add SSL_OP_NO_TLSv1_1 flag.
7833      Add TLSv1_1 methods.
7834      Update version checking logic to handle version 1.1.
7835      Add explicit IV handling (ported from DTLS code).
7836      Add command line options to s_client/s_server.
7837
7838    *Steve Henson*
7839
7840 OpenSSL 1.0.0
7841 -------------
7842
7843 ### Changes between 1.0.0s and 1.0.0t [3 Dec 2015]
7844
7845  * X509_ATTRIBUTE memory leak
7846
7847    When presented with a malformed X509_ATTRIBUTE structure OpenSSL will leak
7848    memory. This structure is used by the PKCS#7 and CMS routines so any
7849    application which reads PKCS#7 or CMS data from untrusted sources is
7850    affected. SSL/TLS is not affected.
7851
7852    This issue was reported to OpenSSL by Adam Langley (Google/BoringSSL) using
7853    libFuzzer.
7854    ([CVE-2015-3195])
7855
7856    *Stephen Henson*
7857
7858  * Race condition handling PSK identify hint
7859
7860    If PSK identity hints are received by a multi-threaded client then
7861    the values are wrongly updated in the parent SSL_CTX structure. This can
7862    result in a race condition potentially leading to a double free of the
7863    identify hint data.
7864    ([CVE-2015-3196])
7865
7866    *Stephen Henson*
7867
7868 ### Changes between 1.0.0r and 1.0.0s [11 Jun 2015]
7869
7870  * Malformed ECParameters causes infinite loop
7871
7872    When processing an ECParameters structure OpenSSL enters an infinite loop
7873    if the curve specified is over a specially malformed binary polynomial
7874    field.
7875
7876    This can be used to perform denial of service against any
7877    system which processes public keys, certificate requests or
7878    certificates.  This includes TLS clients and TLS servers with
7879    client authentication enabled.
7880
7881    This issue was reported to OpenSSL by Joseph Barr-Pixton.
7882    ([CVE-2015-1788])
7883
7884    *Andy Polyakov*
7885
7886  * Exploitable out-of-bounds read in X509_cmp_time
7887
7888    X509_cmp_time does not properly check the length of the ASN1_TIME
7889    string and can read a few bytes out of bounds. In addition,
7890    X509_cmp_time accepts an arbitrary number of fractional seconds in the
7891    time string.
7892
7893    An attacker can use this to craft malformed certificates and CRLs of
7894    various sizes and potentially cause a segmentation fault, resulting in
7895    a DoS on applications that verify certificates or CRLs. TLS clients
7896    that verify CRLs are affected. TLS clients and servers with client
7897    authentication enabled may be affected if they use custom verification
7898    callbacks.
7899
7900    This issue was reported to OpenSSL by Robert Swiecki (Google), and
7901    independently by Hanno Böck.
7902    ([CVE-2015-1789])
7903
7904    *Emilia Käsper*
7905
7906  * PKCS7 crash with missing EnvelopedContent
7907
7908    The PKCS#7 parsing code does not handle missing inner EncryptedContent
7909    correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs
7910    with missing content and trigger a NULL pointer dereference on parsing.
7911
7912    Applications that decrypt PKCS#7 data or otherwise parse PKCS#7
7913    structures from untrusted sources are affected. OpenSSL clients and
7914    servers are not affected.
7915
7916    This issue was reported to OpenSSL by Michal Zalewski (Google).
7917    ([CVE-2015-1790])
7918
7919    *Emilia Käsper*
7920
7921  * CMS verify infinite loop with unknown hash function
7922
7923    When verifying a signedData message the CMS code can enter an infinite loop
7924    if presented with an unknown hash function OID. This can be used to perform
7925    denial of service against any system which verifies signedData messages using
7926    the CMS code.
7927    This issue was reported to OpenSSL by Johannes Bauer.
7928    ([CVE-2015-1792])
7929
7930    *Stephen Henson*
7931
7932  * Race condition handling NewSessionTicket
7933
7934    If a NewSessionTicket is received by a multi-threaded client when attempting to
7935    reuse a previous ticket then a race condition can occur potentially leading to
7936    a double free of the ticket data.
7937    ([CVE-2015-1791])
7938
7939    *Matt Caswell*
7940
7941 ### Changes between 1.0.0q and 1.0.0r [19 Mar 2015]
7942
7943  * Segmentation fault in ASN1_TYPE_cmp fix
7944
7945    The function ASN1_TYPE_cmp will crash with an invalid read if an attempt is
7946    made to compare ASN.1 boolean types. Since ASN1_TYPE_cmp is used to check
7947    certificate signature algorithm consistency this can be used to crash any
7948    certificate verification operation and exploited in a DoS attack. Any
7949    application which performs certificate verification is vulnerable including
7950    OpenSSL clients and servers which enable client authentication.
7951    ([CVE-2015-0286])
7952
7953    *Stephen Henson*
7954
7955  * ASN.1 structure reuse memory corruption fix
7956
7957    Reusing a structure in ASN.1 parsing may allow an attacker to cause
7958    memory corruption via an invalid write. Such reuse is and has been
7959    strongly discouraged and is believed to be rare.
7960
7961    Applications that parse structures containing CHOICE or ANY DEFINED BY
7962    components may be affected. Certificate parsing (d2i_X509 and related
7963    functions) are however not affected. OpenSSL clients and servers are
7964    not affected.
7965    ([CVE-2015-0287])
7966
7967    *Stephen Henson*
7968
7969  * PKCS7 NULL pointer dereferences fix
7970
7971    The PKCS#7 parsing code does not handle missing outer ContentInfo
7972    correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs with
7973    missing content and trigger a NULL pointer dereference on parsing.
7974
7975    Applications that verify PKCS#7 signatures, decrypt PKCS#7 data or
7976    otherwise parse PKCS#7 structures from untrusted sources are
7977    affected. OpenSSL clients and servers are not affected.
7978
7979    This issue was reported to OpenSSL by Michal Zalewski (Google).
7980    ([CVE-2015-0289])
7981
7982    *Emilia Käsper*
7983
7984  * DoS via reachable assert in SSLv2 servers fix
7985
7986    A malicious client can trigger an OPENSSL_assert (i.e., an abort) in
7987    servers that both support SSLv2 and enable export cipher suites by sending
7988    a specially crafted SSLv2 CLIENT-MASTER-KEY message.
7989
7990    This issue was discovered by Sean Burford (Google) and Emilia Käsper
7991    (OpenSSL development team).
7992    ([CVE-2015-0293])
7993
7994    *Emilia Käsper*
7995
7996  * Use After Free following d2i_ECPrivatekey error fix
7997
7998    A malformed EC private key file consumed via the d2i_ECPrivateKey function
7999    could cause a use after free condition. This, in turn, could cause a double
8000    free in several private key parsing functions (such as d2i_PrivateKey
8001    or EVP_PKCS82PKEY) and could lead to a DoS attack or memory corruption
8002    for applications that receive EC private keys from untrusted
8003    sources. This scenario is considered rare.
8004
8005    This issue was discovered by the BoringSSL project and fixed in their
8006    commit 517073cd4b.
8007    ([CVE-2015-0209])
8008
8009    *Matt Caswell*
8010
8011  * X509_to_X509_REQ NULL pointer deref fix
8012
8013    The function X509_to_X509_REQ will crash with a NULL pointer dereference if
8014    the certificate key is invalid. This function is rarely used in practice.
8015
8016    This issue was discovered by Brian Carpenter.
8017    ([CVE-2015-0288])
8018
8019    *Stephen Henson*
8020
8021  * Removed the export ciphers from the DEFAULT ciphers
8022
8023    *Kurt Roeckx*
8024
8025 ### Changes between 1.0.0p and 1.0.0q [15 Jan 2015]
8026
8027  * Build fixes for the Windows and OpenVMS platforms
8028
8029    *Matt Caswell and Richard Levitte*
8030
8031 ### Changes between 1.0.0o and 1.0.0p [8 Jan 2015]
8032
8033  * Fix DTLS segmentation fault in dtls1_get_record. A carefully crafted DTLS
8034    message can cause a segmentation fault in OpenSSL due to a NULL pointer
8035    dereference. This could lead to a Denial Of Service attack. Thanks to
8036    Markus Stenberg of Cisco Systems, Inc. for reporting this issue.
8037    ([CVE-2014-3571])
8038
8039    *Steve Henson*
8040
8041  * Fix DTLS memory leak in dtls1_buffer_record. A memory leak can occur in the
8042    dtls1_buffer_record function under certain conditions. In particular this
8043    could occur if an attacker sent repeated DTLS records with the same
8044    sequence number but for the next epoch. The memory leak could be exploited
8045    by an attacker in a Denial of Service attack through memory exhaustion.
8046    Thanks to Chris Mueller for reporting this issue.
8047    ([CVE-2015-0206])
8048
8049    *Matt Caswell*
8050
8051  * Fix issue where no-ssl3 configuration sets method to NULL. When openssl is
8052    built with the no-ssl3 option and a SSL v3 ClientHello is received the ssl
8053    method would be set to NULL which could later result in a NULL pointer
8054    dereference. Thanks to Frank Schmirler for reporting this issue.
8055    ([CVE-2014-3569])
8056
8057    *Kurt Roeckx*
8058
8059  * Abort handshake if server key exchange message is omitted for ephemeral
8060    ECDH ciphersuites.
8061
8062    Thanks to Karthikeyan Bhargavan of the PROSECCO team at INRIA for
8063    reporting this issue.
8064    ([CVE-2014-3572])
8065
8066    *Steve Henson*
8067
8068  * Remove non-export ephemeral RSA code on client and server. This code
8069    violated the TLS standard by allowing the use of temporary RSA keys in
8070    non-export ciphersuites and could be used by a server to effectively
8071    downgrade the RSA key length used to a value smaller than the server
8072    certificate. Thanks for Karthikeyan Bhargavan of the PROSECCO team at
8073    INRIA or reporting this issue.
8074    ([CVE-2015-0204])
8075
8076    *Steve Henson*
8077
8078  * Fixed issue where DH client certificates are accepted without verification.
8079    An OpenSSL server will accept a DH certificate for client authentication
8080    without the certificate verify message. This effectively allows a client to
8081    authenticate without the use of a private key. This only affects servers
8082    which trust a client certificate authority which issues certificates
8083    containing DH keys: these are extremely rare and hardly ever encountered.
8084    Thanks for Karthikeyan Bhargavan of the PROSECCO team at INRIA or reporting
8085    this issue.
8086    ([CVE-2015-0205])
8087
8088    *Steve Henson*
8089
8090  * Correct Bignum squaring. Bignum squaring (BN_sqr) may produce incorrect
8091    results on some platforms, including x86_64. This bug occurs at random
8092    with a very low probability, and is not known to be exploitable in any
8093    way, though its exact impact is difficult to determine. Thanks to Pieter
8094    Wuille (Blockstream) who reported this issue and also suggested an initial
8095    fix. Further analysis was conducted by the OpenSSL development team and
8096    Adam Langley of Google. The final fix was developed by Andy Polyakov of
8097    the OpenSSL core team.
8098    ([CVE-2014-3570])
8099
8100    *Andy Polyakov*
8101
8102  * Fix various certificate fingerprint issues.
8103
8104    By using non-DER or invalid encodings outside the signed portion of a
8105    certificate the fingerprint can be changed without breaking the signature.
8106    Although no details of the signed portion of the certificate can be changed
8107    this can cause problems with some applications: e.g. those using the
8108    certificate fingerprint for blacklists.
8109
8110    1. Reject signatures with non zero unused bits.
8111
8112    If the BIT STRING containing the signature has non zero unused bits reject
8113    the signature. All current signature algorithms require zero unused bits.
8114
8115    2. Check certificate algorithm consistency.
8116
8117    Check the AlgorithmIdentifier inside TBS matches the one in the
8118    certificate signature. NB: this will result in signature failure
8119    errors for some broken certificates.
8120
8121    Thanks to Konrad Kraszewski from Google for reporting this issue.
8122
8123    3. Check DSA/ECDSA signatures use DER.
8124
8125    Reencode DSA/ECDSA signatures and compare with the original received
8126    signature. Return an error if there is a mismatch.
8127
8128    This will reject various cases including garbage after signature
8129    (thanks to Antti Karjalainen and Tuomo Untinen from the Codenomicon CROSS
8130    program for discovering this case) and use of BER or invalid ASN.1 INTEGERs
8131    (negative or with leading zeroes).
8132
8133    Further analysis was conducted and fixes were developed by Stephen Henson
8134    of the OpenSSL core team.
8135
8136    ([CVE-2014-8275])
8137
8138    *Steve Henson*
8139
8140 ### Changes between 1.0.0n and 1.0.0o [15 Oct 2014]
8141
8142  * Session Ticket Memory Leak.
8143
8144    When an OpenSSL SSL/TLS/DTLS server receives a session ticket the
8145    integrity of that ticket is first verified. In the event of a session
8146    ticket integrity check failing, OpenSSL will fail to free memory
8147    causing a memory leak. By sending a large number of invalid session
8148    tickets an attacker could exploit this issue in a Denial Of Service
8149    attack.
8150    ([CVE-2014-3567])
8151
8152    *Steve Henson*
8153
8154  * Build option no-ssl3 is incomplete.
8155
8156    When OpenSSL is configured with "no-ssl3" as a build option, servers
8157    could accept and complete a SSL 3.0 handshake, and clients could be
8158    configured to send them.
8159    ([CVE-2014-3568])
8160
8161    *Akamai and the OpenSSL team*
8162
8163  * Add support for TLS_FALLBACK_SCSV.
8164    Client applications doing fallback retries should call
8165    SSL_set_mode(s, SSL_MODE_SEND_FALLBACK_SCSV).
8166    ([CVE-2014-3566])
8167
8168    *Adam Langley, Bodo Moeller*
8169
8170  * Add additional DigestInfo checks.
8171
8172    Reencode DigestInto in DER and check against the original when
8173    verifying RSA signature: this will reject any improperly encoded
8174    DigestInfo structures.
8175
8176    Note: this is a precautionary measure and no attacks are currently known.
8177
8178    *Steve Henson*
8179
8180 ### Changes between 1.0.0m and 1.0.0n [6 Aug 2014]
8181
8182  * OpenSSL DTLS clients enabling anonymous (EC)DH ciphersuites are subject
8183    to a denial of service attack. A malicious server can crash the client
8184    with a null pointer dereference (read) by specifying an anonymous (EC)DH
8185    ciphersuite and sending carefully crafted handshake messages.
8186
8187    Thanks to Felix Gröbert (Google) for discovering and researching this
8188    issue.
8189    ([CVE-2014-3510])
8190
8191    *Emilia Käsper*
8192
8193  * By sending carefully crafted DTLS packets an attacker could cause openssl
8194    to leak memory. This can be exploited through a Denial of Service attack.
8195    Thanks to Adam Langley for discovering and researching this issue.
8196    ([CVE-2014-3507])
8197
8198    *Adam Langley*
8199
8200  * An attacker can force openssl to consume large amounts of memory whilst
8201    processing DTLS handshake messages. This can be exploited through a
8202    Denial of Service attack.
8203    Thanks to Adam Langley for discovering and researching this issue.
8204    ([CVE-2014-3506])
8205
8206    *Adam Langley*
8207
8208  * An attacker can force an error condition which causes openssl to crash
8209    whilst processing DTLS packets due to memory being freed twice. This
8210    can be exploited through a Denial of Service attack.
8211    Thanks to Adam Langley and Wan-Teh Chang for discovering and researching
8212    this issue.
8213    ([CVE-2014-3505])
8214
8215    *Adam Langley*
8216
8217  * If a multithreaded client connects to a malicious server using a resumed
8218    session and the server sends an ec point format extension it could write
8219    up to 255 bytes to freed memory.
8220
8221    Thanks to Gabor Tyukasz (LogMeIn Inc) for discovering and researching this
8222    issue.
8223    ([CVE-2014-3509])
8224
8225    *Gabor Tyukasz*
8226
8227  * A flaw in OBJ_obj2txt may cause pretty printing functions such as
8228    X509_name_oneline, X509_name_print_ex et al. to leak some information
8229    from the stack. Applications may be affected if they echo pretty printing
8230    output to the attacker.
8231
8232    Thanks to Ivan Fratric (Google) for discovering this issue.
8233    ([CVE-2014-3508])
8234
8235    *Emilia Käsper, and Steve Henson*
8236
8237  * Fix ec_GFp_simple_points_make_affine (thus, EC_POINTs_mul etc.)
8238    for corner cases. (Certain input points at infinity could lead to
8239    bogus results, with non-infinity inputs mapped to infinity too.)
8240
8241    *Bodo Moeller*
8242
8243 ### Changes between 1.0.0l and 1.0.0m [5 Jun 2014]
8244
8245  * Fix for SSL/TLS MITM flaw. An attacker using a carefully crafted
8246    handshake can force the use of weak keying material in OpenSSL
8247    SSL/TLS clients and servers.
8248
8249    Thanks to KIKUCHI Masashi (Lepidum Co. Ltd.) for discovering and
8250    researching this issue. ([CVE-2014-0224])
8251
8252    *KIKUCHI Masashi, Steve Henson*
8253
8254  * Fix DTLS recursion flaw. By sending an invalid DTLS handshake to an
8255    OpenSSL DTLS client the code can be made to recurse eventually crashing
8256    in a DoS attack.
8257
8258    Thanks to Imre Rad (Search-Lab Ltd.) for discovering this issue.
8259    ([CVE-2014-0221])
8260
8261    *Imre Rad, Steve Henson*
8262
8263  * Fix DTLS invalid fragment vulnerability. A buffer overrun attack can
8264    be triggered by sending invalid DTLS fragments to an OpenSSL DTLS
8265    client or server. This is potentially exploitable to run arbitrary
8266    code on a vulnerable client or server.
8267
8268    Thanks to Jüri Aedla for reporting this issue. ([CVE-2014-0195])
8269
8270    *Jüri Aedla, Steve Henson*
8271
8272  * Fix bug in TLS code where clients enable anonymous ECDH ciphersuites
8273    are subject to a denial of service attack.
8274
8275    Thanks to Felix Gröbert and Ivan Fratric at Google for discovering
8276    this issue. ([CVE-2014-3470])
8277
8278    *Felix Gröbert, Ivan Fratric, Steve Henson*
8279
8280  * Harmonize version and its documentation. -f flag is used to display
8281    compilation flags.
8282
8283    *mancha <mancha1@zoho.com>*
8284
8285  * Fix eckey_priv_encode so it immediately returns an error upon a failure
8286    in i2d_ECPrivateKey.
8287
8288    *mancha <mancha1@zoho.com>*
8289
8290  * Fix some double frees. These are not thought to be exploitable.
8291
8292    *mancha <mancha1@zoho.com>*
8293
8294  * Fix for the attack described in the paper "Recovering OpenSSL
8295    ECDSA Nonces Using the FLUSH+RELOAD Cache Side-channel Attack"
8296    by Yuval Yarom and Naomi Benger. Details can be obtained from:
8297    <http://eprint.iacr.org/2014/140>
8298
8299    Thanks to Yuval Yarom and Naomi Benger for discovering this
8300    flaw and to Yuval Yarom for supplying a fix ([CVE-2014-0076])
8301
8302    *Yuval Yarom and Naomi Benger*
8303
8304 ### Changes between 1.0.0k and 1.0.0l [6 Jan 2014]
8305
8306  * Keep original DTLS digest and encryption contexts in retransmission
8307    structures so we can use the previous session parameters if they need
8308    to be resent. ([CVE-2013-6450])
8309
8310    *Steve Henson*
8311
8312  * Add option SSL_OP_SAFARI_ECDHE_ECDSA_BUG (part of SSL_OP_ALL) which
8313    avoids preferring ECDHE-ECDSA ciphers when the client appears to be
8314    Safari on OS X.  Safari on OS X 10.8..10.8.3 advertises support for
8315    several ECDHE-ECDSA ciphers, but fails to negotiate them.  The bug
8316    is fixed in OS X 10.8.4, but Apple have ruled out both hot fixing
8317    10.8..10.8.3 and forcing users to upgrade to 10.8.4 or newer.
8318
8319    *Rob Stradling, Adam Langley*
8320
8321 ### Changes between 1.0.0j and 1.0.0k [5 Feb 2013]
8322
8323  * Make the decoding of SSLv3, TLS and DTLS CBC records constant time.
8324
8325    This addresses the flaw in CBC record processing discovered by
8326    Nadhem Alfardan and Kenny Paterson. Details of this attack can be found
8327    at: <http://www.isg.rhul.ac.uk/tls/>
8328
8329    Thanks go to Nadhem Alfardan and Kenny Paterson of the Information
8330    Security Group at Royal Holloway, University of London
8331    (www.isg.rhul.ac.uk) for discovering this flaw and Adam Langley and
8332    Emilia Käsper for the initial patch.
8333    ([CVE-2013-0169])
8334
8335    *Emilia Käsper, Adam Langley, Ben Laurie, Andy Polyakov, Steve Henson*
8336
8337  * Return an error when checking OCSP signatures when key is NULL.
8338    This fixes a DoS attack. ([CVE-2013-0166])
8339
8340    *Steve Henson*
8341
8342  * Call OCSP Stapling callback after ciphersuite has been chosen, so
8343    the right response is stapled. Also change SSL_get_certificate()
8344    so it returns the certificate actually sent.
8345    See <http://rt.openssl.org/Ticket/Display.html?id=2836>.
8346    (This is a backport)
8347
8348    *Rob Stradling <rob.stradling@comodo.com>*
8349
8350  * Fix possible deadlock when decoding public keys.
8351
8352    *Steve Henson*
8353
8354 ### Changes between 1.0.0i and 1.0.0j [10 May 2012]
8355
8356 [NB: OpenSSL 1.0.0i and later 1.0.0 patch levels were released after
8357 OpenSSL 1.0.1.]
8358
8359  * Sanity check record length before skipping explicit IV in DTLS
8360    to fix DoS attack.
8361
8362    Thanks to Codenomicon for discovering this issue using Fuzz-o-Matic
8363    fuzzing as a service testing platform.
8364    ([CVE-2012-2333])
8365
8366    *Steve Henson*
8367
8368  * Initialise tkeylen properly when encrypting CMS messages.
8369    Thanks to Solar Designer of Openwall for reporting this issue.
8370
8371    *Steve Henson*
8372
8373 ### Changes between 1.0.0h and 1.0.0i [19 Apr 2012]
8374
8375  * Check for potentially exploitable overflows in asn1_d2i_read_bio
8376    BUF_mem_grow and BUF_mem_grow_clean. Refuse attempts to shrink buffer
8377    in CRYPTO_realloc_clean.
8378
8379    Thanks to Tavis Ormandy, Google Security Team, for discovering this
8380    issue and to Adam Langley <agl@chromium.org> for fixing it.
8381    ([CVE-2012-2110])
8382
8383    *Adam Langley (Google), Tavis Ormandy, Google Security Team*
8384
8385 ### Changes between 1.0.0g and 1.0.0h [12 Mar 2012]
8386
8387  * Fix MMA (Bleichenbacher's attack on PKCS #1 v1.5 RSA padding) weakness
8388    in CMS and PKCS7 code. When RSA decryption fails use a random key for
8389    content decryption and always return the same error. Note: this attack
8390    needs on average 2^20 messages so it only affects automated senders. The
8391    old behaviour can be re-enabled in the CMS code by setting the
8392    CMS_DEBUG_DECRYPT flag: this is useful for debugging and testing where
8393    an MMA defence is not necessary.
8394    Thanks to Ivan Nestlerode <inestlerode@us.ibm.com> for discovering
8395    this issue. ([CVE-2012-0884])
8396
8397    *Steve Henson*
8398
8399  * Fix CVE-2011-4619: make sure we really are receiving a
8400    client hello before rejecting multiple SGC restarts. Thanks to
8401    Ivan Nestlerode <inestlerode@us.ibm.com> for discovering this bug.
8402
8403    *Steve Henson*
8404
8405 ### Changes between 1.0.0f and 1.0.0g [18 Jan 2012]
8406
8407  * Fix for DTLS DoS issue introduced by fix for CVE-2011-4109.
8408    Thanks to Antonio Martin, Enterprise Secure Access Research and
8409    Development, Cisco Systems, Inc. for discovering this bug and
8410    preparing a fix. ([CVE-2012-0050])
8411
8412    *Antonio Martin*
8413
8414 ### Changes between 1.0.0e and 1.0.0f [4 Jan 2012]
8415
8416  * Nadhem Alfardan and Kenny Paterson have discovered an extension
8417    of the Vaudenay padding oracle attack on CBC mode encryption
8418    which enables an efficient plaintext recovery attack against
8419    the OpenSSL implementation of DTLS. Their attack exploits timing
8420    differences arising during decryption processing. A research
8421    paper describing this attack can be found at:
8422    <http://www.isg.rhul.ac.uk/~kp/dtls.pdf>
8423    Thanks go to Nadhem Alfardan and Kenny Paterson of the Information
8424    Security Group at Royal Holloway, University of London
8425    (www.isg.rhul.ac.uk) for discovering this flaw and to Robin Seggelmann
8426    <seggelmann@fh-muenster.de> and Michael Tuexen <tuexen@fh-muenster.de>
8427    for preparing the fix. ([CVE-2011-4108])
8428
8429    *Robin Seggelmann, Michael Tuexen*
8430
8431  * Clear bytes used for block padding of SSL 3.0 records.
8432    ([CVE-2011-4576])
8433
8434    *Adam Langley (Google)*
8435
8436  * Only allow one SGC handshake restart for SSL/TLS. Thanks to George
8437    Kadianakis <desnacked@gmail.com> for discovering this issue and
8438    Adam Langley for preparing the fix. ([CVE-2011-4619])
8439
8440    *Adam Langley (Google)*
8441
8442  * Check parameters are not NULL in GOST ENGINE. ([CVE-2012-0027])
8443
8444    *Andrey Kulikov <amdeich@gmail.com>*
8445
8446  * Prevent malformed RFC3779 data triggering an assertion failure.
8447    Thanks to Andrew Chi, BBN Technologies, for discovering the flaw
8448    and Rob Austein <sra@hactrn.net> for fixing it. ([CVE-2011-4577])
8449
8450    *Rob Austein <sra@hactrn.net>*
8451
8452  * Improved PRNG seeding for VOS.
8453
8454    *Paul Green <Paul.Green@stratus.com>*
8455
8456  * Fix ssl_ciph.c set-up race.
8457
8458    *Adam Langley (Google)*
8459
8460  * Fix spurious failures in ecdsatest.c.
8461
8462    *Emilia Käsper (Google)*
8463
8464  * Fix the BIO_f_buffer() implementation (which was mixing different
8465    interpretations of the `..._len` fields).
8466
8467    *Adam Langley (Google)*
8468
8469  * Fix handling of BN_BLINDING: now BN_BLINDING_invert_ex (rather than
8470    BN_BLINDING_invert_ex) calls BN_BLINDING_update, ensuring that concurrent
8471    threads won't reuse the same blinding coefficients.
8472
8473    This also avoids the need to obtain the CRYPTO_LOCK_RSA_BLINDING
8474    lock to call BN_BLINDING_invert_ex, and avoids one use of
8475    BN_BLINDING_update for each BN_BLINDING structure (previously,
8476    the last update always remained unused).
8477
8478    *Emilia Käsper (Google)*
8479
8480  * In ssl3_clear, preserve s3->init_extra along with s3->rbuf.
8481
8482    *Bob Buckholz (Google)*
8483
8484 ### Changes between 1.0.0d and 1.0.0e [6 Sep 2011]
8485
8486  * Fix bug where CRLs with nextUpdate in the past are sometimes accepted
8487    by initialising X509_STORE_CTX properly. ([CVE-2011-3207])
8488
8489    *Kaspar Brand <ossl@velox.ch>*
8490
8491  * Fix SSL memory handling for (EC)DH ciphersuites, in particular
8492    for multi-threaded use of ECDH. ([CVE-2011-3210])
8493
8494    *Adam Langley (Google)*
8495
8496  * Fix x509_name_ex_d2i memory leak on bad inputs.
8497
8498    *Bodo Moeller*
8499
8500  * Remove hard coded ecdsaWithSHA1 signature tests in ssl code and check
8501    signature public key algorithm by using OID xref utilities instead.
8502    Before this you could only use some ECC ciphersuites with SHA1 only.
8503
8504    *Steve Henson*
8505
8506  * Add protection against ECDSA timing attacks as mentioned in the paper
8507    by Billy Bob Brumley and Nicola Tuveri, see:
8508    <http://eprint.iacr.org/2011/232.pdf>
8509
8510    *Billy Bob Brumley and Nicola Tuveri*
8511
8512 ### Changes between 1.0.0c and 1.0.0d [8 Feb 2011]
8513
8514  * Fix parsing of OCSP stapling ClientHello extension. CVE-2011-0014
8515
8516    *Neel Mehta, Adam Langley, Bodo Moeller (Google)*
8517
8518  * Fix bug in string printing code: if *any* escaping is enabled we must
8519    escape the escape character (backslash) or the resulting string is
8520    ambiguous.
8521
8522    *Steve Henson*
8523
8524 ### Changes between 1.0.0b and 1.0.0c  [2 Dec 2010]
8525
8526  * Disable code workaround for ancient and obsolete Netscape browsers
8527    and servers: an attacker can use it in a ciphersuite downgrade attack.
8528    Thanks to Martin Rex for discovering this bug. CVE-2010-4180
8529
8530    *Steve Henson*
8531
8532  * Fixed J-PAKE implementation error, originally discovered by
8533    Sebastien Martini, further info and confirmation from Stefan
8534    Arentz and Feng Hao. Note that this fix is a security fix. CVE-2010-4252
8535
8536    *Ben Laurie*
8537
8538 ### Changes between 1.0.0a and 1.0.0b  [16 Nov 2010]
8539
8540  * Fix extension code to avoid race conditions which can result in a buffer
8541    overrun vulnerability: resumed sessions must not be modified as they can
8542    be shared by multiple threads. CVE-2010-3864
8543
8544    *Steve Henson*
8545
8546  * Fix WIN32 build system to correctly link an ENGINE directory into
8547    a DLL.
8548
8549    *Steve Henson*
8550
8551 ### Changes between 1.0.0 and 1.0.0a  [01 Jun 2010]
8552
8553  * Check return value of int_rsa_verify in pkey_rsa_verifyrecover
8554    ([CVE-2010-1633])
8555
8556    *Steve Henson, Peter-Michael Hager <hager@dortmund.net>*
8557
8558 ### Changes between 0.9.8n and 1.0.0  [29 Mar 2010]
8559
8560  * Add "missing" function EVP_CIPHER_CTX_copy(). This copies a cipher
8561    context. The operation can be customised via the ctrl mechanism in
8562    case ENGINEs want to include additional functionality.
8563
8564    *Steve Henson*
8565
8566  * Tolerate yet another broken PKCS#8 key format: private key value negative.
8567
8568    *Steve Henson*
8569
8570  * Add new -subject_hash_old and -issuer_hash_old options to x509 utility to
8571    output hashes compatible with older versions of OpenSSL.
8572
8573    *Willy Weisz <weisz@vcpc.univie.ac.at>*
8574
8575  * Fix compression algorithm handling: if resuming a session use the
8576    compression algorithm of the resumed session instead of determining
8577    it from client hello again. Don't allow server to change algorithm.
8578
8579    *Steve Henson*
8580
8581  * Add load_crls() function to commands tidying load_certs() too. Add option
8582    to verify utility to allow additional CRLs to be included.
8583
8584    *Steve Henson*
8585
8586  * Update OCSP request code to permit adding custom headers to the request:
8587    some responders need this.
8588
8589    *Steve Henson*
8590
8591  * The function EVP_PKEY_sign() returns <=0 on error: check return code
8592    correctly.
8593
8594    *Julia Lawall <julia@diku.dk>*
8595
8596  * Update verify callback code in `apps/s_cb.c` and `apps/verify.c`, it
8597    needlessly dereferenced structures, used obsolete functions and
8598    didn't handle all updated verify codes correctly.
8599
8600    *Steve Henson*
8601
8602  * Disable MD2 in the default configuration.
8603
8604    *Steve Henson*
8605
8606  * In BIO_pop() and BIO_push() use the ctrl argument (which was NULL) to
8607    indicate the initial BIO being pushed or popped. This makes it possible
8608    to determine whether the BIO is the one explicitly called or as a result
8609    of the ctrl being passed down the chain. Fix BIO_pop() and SSL BIOs so
8610    it handles reference counts correctly and doesn't zero out the I/O bio
8611    when it is not being explicitly popped. WARNING: applications which
8612    included workarounds for the old buggy behaviour will need to be modified
8613    or they could free up already freed BIOs.
8614
8615    *Steve Henson*
8616
8617  * Extend the uni2asc/asc2uni => OPENSSL_uni2asc/OPENSSL_asc2uni
8618    renaming to all platforms (within the 0.9.8 branch, this was
8619    done conditionally on Netware platforms to avoid a name clash).
8620
8621    *Guenter <lists@gknw.net>*
8622
8623  * Add ECDHE and PSK support to DTLS.
8624
8625    *Michael Tuexen <tuexen@fh-muenster.de>*
8626
8627  * Add CHECKED_STACK_OF macro to safestack.h, otherwise safestack can't
8628    be used on C++.
8629
8630    *Steve Henson*
8631
8632  * Add "missing" function EVP_MD_flags() (without this the only way to
8633    retrieve a digest flags is by accessing the structure directly. Update
8634    `EVP_MD_do_all*()` and `EVP_CIPHER_do_all*()` to include the name a digest
8635    or cipher is registered as in the "from" argument. Print out all
8636    registered digests in the dgst usage message instead of manually
8637    attempting to work them out.
8638
8639    *Steve Henson*
8640
8641  * If no SSLv2 ciphers are used don't use an SSLv2 compatible client hello:
8642    this allows the use of compression and extensions. Change default cipher
8643    string to remove SSLv2 ciphersuites. This effectively avoids ancient SSLv2
8644    by default unless an application cipher string requests it.
8645
8646    *Steve Henson*
8647
8648  * Alter match criteria in PKCS12_parse(). It used to try to use local
8649    key ids to find matching certificates and keys but some PKCS#12 files
8650    don't follow the (somewhat unwritten) rules and this strategy fails.
8651    Now just gather all certificates together and the first private key
8652    then look for the first certificate that matches the key.
8653
8654    *Steve Henson*
8655
8656  * Support use of registered digest and cipher names for dgst and cipher
8657    commands instead of having to add each one as a special case. So now
8658    you can do:
8659
8660            openssl sha256 foo
8661
8662    as well as:
8663
8664            openssl dgst -sha256 foo
8665
8666    and this works for ENGINE based algorithms too.
8667
8668    *Steve Henson*
8669
8670  * Update Gost ENGINE to support parameter files.
8671
8672    *Victor B. Wagner <vitus@cryptocom.ru>*
8673
8674  * Support GeneralizedTime in ca utility.
8675
8676    *Oliver Martin <oliver@volatilevoid.net>, Steve Henson*
8677
8678  * Enhance the hash format used for certificate directory links. The new
8679    form uses the canonical encoding (meaning equivalent names will work
8680    even if they aren't identical) and uses SHA1 instead of MD5. This form
8681    is incompatible with the older format and as a result c_rehash should
8682    be used to rebuild symbolic links.
8683
8684    *Steve Henson*
8685
8686  * Make PKCS#8 the default write format for private keys, replacing the
8687    traditional format. This form is standardised, more secure and doesn't
8688    include an implicit MD5 dependency.
8689
8690    *Steve Henson*
8691
8692  * Add a $gcc_devteam_warn option to Configure. The idea is that any code
8693    committed to OpenSSL should pass this lot as a minimum.
8694
8695    *Steve Henson*
8696
8697  * Add session ticket override functionality for use by EAP-FAST.
8698
8699    *Jouni Malinen <j@w1.fi>*
8700
8701  * Modify HMAC functions to return a value. Since these can be implemented
8702    in an ENGINE errors can occur.
8703
8704    *Steve Henson*
8705
8706  * Type-checked OBJ_bsearch_ex.
8707
8708    *Ben Laurie*
8709
8710  * Type-checked OBJ_bsearch. Also some constification necessitated
8711    by type-checking.  Still to come: TXT_DB, bsearch(?),
8712    OBJ_bsearch_ex, qsort, CRYPTO_EX_DATA, ASN1_VALUE, ASN1_STRING,
8713    CONF_VALUE.
8714
8715    *Ben Laurie*
8716
8717  * New function OPENSSL_gmtime_adj() to add a specific number of days and
8718    seconds to a tm structure directly, instead of going through OS
8719    specific date routines. This avoids any issues with OS routines such
8720    as the year 2038 bug. New `*_adj()` functions for ASN1 time structures
8721    and X509_time_adj_ex() to cover the extended range. The existing
8722    X509_time_adj() is still usable and will no longer have any date issues.
8723
8724    *Steve Henson*
8725
8726  * Delta CRL support. New use deltas option which will attempt to locate
8727    and search any appropriate delta CRLs available.
8728
8729    This work was sponsored by Google.
8730
8731    *Steve Henson*
8732
8733  * Support for CRLs partitioned by reason code. Reorganise CRL processing
8734    code and add additional score elements. Validate alternate CRL paths
8735    as part of the CRL checking and indicate a new error "CRL path validation
8736    error" in this case. Applications wanting additional details can use
8737    the verify callback and check the new "parent" field. If this is not
8738    NULL CRL path validation is taking place. Existing applications won't
8739    see this because it requires extended CRL support which is off by
8740    default.
8741
8742    This work was sponsored by Google.
8743
8744    *Steve Henson*
8745
8746  * Support for freshest CRL extension.
8747
8748    This work was sponsored by Google.
8749
8750    *Steve Henson*
8751
8752  * Initial indirect CRL support. Currently only supported in the CRLs
8753    passed directly and not via lookup. Process certificate issuer
8754    CRL entry extension and lookup CRL entries by bother issuer name
8755    and serial number. Check and process CRL issuer entry in IDP extension.
8756
8757    This work was sponsored by Google.
8758
8759    *Steve Henson*
8760
8761  * Add support for distinct certificate and CRL paths. The CRL issuer
8762    certificate is validated separately in this case. Only enabled if
8763    an extended CRL support flag is set: this flag will enable additional
8764    CRL functionality in future.
8765
8766    This work was sponsored by Google.
8767
8768    *Steve Henson*
8769
8770  * Add support for policy mappings extension.
8771
8772    This work was sponsored by Google.
8773
8774    *Steve Henson*
8775
8776  * Fixes to pathlength constraint, self issued certificate handling,
8777    policy processing to align with RFC3280 and PKITS tests.
8778
8779    This work was sponsored by Google.
8780
8781    *Steve Henson*
8782
8783  * Support for name constraints certificate extension. DN, email, DNS
8784    and URI types are currently supported.
8785
8786    This work was sponsored by Google.
8787
8788    *Steve Henson*
8789
8790  * To cater for systems that provide a pointer-based thread ID rather
8791    than numeric, deprecate the current numeric thread ID mechanism and
8792    replace it with a structure and associated callback type. This
8793    mechanism allows a numeric "hash" to be extracted from a thread ID in
8794    either case, and on platforms where pointers are larger than 'long',
8795    mixing is done to help ensure the numeric 'hash' is usable even if it
8796    can't be guaranteed unique. The default mechanism is to use "&errno"
8797    as a pointer-based thread ID to distinguish between threads.
8798
8799    Applications that want to provide their own thread IDs should now use
8800    CRYPTO_THREADID_set_callback() to register a callback that will call
8801    either CRYPTO_THREADID_set_numeric() or CRYPTO_THREADID_set_pointer().
8802
8803    Note that ERR_remove_state() is now deprecated, because it is tied
8804    to the assumption that thread IDs are numeric.  ERR_remove_state(0)
8805    to free the current thread's error state should be replaced by
8806    ERR_remove_thread_state(NULL).
8807
8808    (This new approach replaces the functions CRYPTO_set_idptr_callback(),
8809    CRYPTO_get_idptr_callback(), and CRYPTO_thread_idptr() that existed in
8810    OpenSSL 0.9.9-dev between June 2006 and August 2008. Also, if an
8811    application was previously providing a numeric thread callback that
8812    was inappropriate for distinguishing threads, then uniqueness might
8813    have been obtained with &errno that happened immediately in the
8814    intermediate development versions of OpenSSL; this is no longer the
8815    case, the numeric thread callback will now override the automatic use
8816    of &errno.)
8817
8818    *Geoff Thorpe, with help from Bodo Moeller*
8819
8820  * Initial support for different CRL issuing certificates. This covers a
8821    simple case where the self issued certificates in the chain exist and
8822    the real CRL issuer is higher in the existing chain.
8823
8824    This work was sponsored by Google.
8825
8826    *Steve Henson*
8827
8828  * Removed effectively defunct crypto/store from the build.
8829
8830    *Ben Laurie*
8831
8832  * Revamp of STACK to provide stronger type-checking. Still to come:
8833    TXT_DB, bsearch(?), OBJ_bsearch, qsort, CRYPTO_EX_DATA, ASN1_VALUE,
8834    ASN1_STRING, CONF_VALUE.
8835
8836    *Ben Laurie*
8837
8838  * Add a new SSL_MODE_RELEASE_BUFFERS mode flag to release unused buffer
8839    RAM on SSL connections.  This option can save about 34k per idle SSL.
8840
8841    *Nick Mathewson*
8842
8843  * Revamp of LHASH to provide stronger type-checking. Still to come:
8844    STACK, TXT_DB, bsearch, qsort.
8845
8846    *Ben Laurie*
8847
8848  * Initial support for Cryptographic Message Syntax (aka CMS) based
8849    on RFC3850, RFC3851 and RFC3852. New cms directory and cms utility,
8850    support for data, signedData, compressedData, digestedData and
8851    encryptedData, envelopedData types included. Scripts to check against
8852    RFC4134 examples draft and interop and consistency checks of many
8853    content types and variants.
8854
8855    *Steve Henson*
8856
8857  * Add options to enc utility to support use of zlib compression BIO.
8858
8859    *Steve Henson*
8860
8861  * Extend mk1mf to support importing of options and assembly language
8862    files from Configure script, currently only included in VC-WIN32.
8863    The assembly language rules can now optionally generate the source
8864    files from the associated perl scripts.
8865
8866    *Steve Henson*
8867
8868  * Implement remaining functionality needed to support GOST ciphersuites.
8869    Interop testing has been performed using CryptoPro implementations.
8870
8871    *Victor B. Wagner <vitus@cryptocom.ru>*
8872
8873  * s390x assembler pack.
8874
8875    *Andy Polyakov*
8876
8877  * ARMv4 assembler pack. ARMv4 refers to v4 and later ISA, not CPU
8878    "family."
8879
8880    *Andy Polyakov*
8881
8882  * Implement Opaque PRF Input TLS extension as specified in
8883    draft-rescorla-tls-opaque-prf-input-00.txt.  Since this is not an
8884    official specification yet and no extension type assignment by
8885    IANA exists, this extension (for now) will have to be explicitly
8886    enabled when building OpenSSL by providing the extension number
8887    to use.  For example, specify an option
8888
8889            -DTLSEXT_TYPE_opaque_prf_input=0x9527
8890
8891    to the "config" or "Configure" script to enable the extension,
8892    assuming extension number 0x9527 (which is a completely arbitrary
8893    and unofficial assignment based on the MD5 hash of the Internet
8894    Draft).  Note that by doing so, you potentially lose
8895    interoperability with other TLS implementations since these might
8896    be using the same extension number for other purposes.
8897
8898    SSL_set_tlsext_opaque_prf_input(ssl, src, len) is used to set the
8899    opaque PRF input value to use in the handshake.  This will create
8900    an internal copy of the length-'len' string at 'src', and will
8901    return non-zero for success.
8902
8903    To get more control and flexibility, provide a callback function
8904    by using
8905
8906            SSL_CTX_set_tlsext_opaque_prf_input_callback(ctx, cb)
8907            SSL_CTX_set_tlsext_opaque_prf_input_callback_arg(ctx, arg)
8908
8909    where
8910
8911            int (*cb)(SSL *, void *peerinput, size_t len, void *arg);
8912            void *arg;
8913
8914    Callback function 'cb' will be called in handshakes, and is
8915    expected to use SSL_set_tlsext_opaque_prf_input() as appropriate.
8916    Argument 'arg' is for application purposes (the value as given to
8917    SSL_CTX_set_tlsext_opaque_prf_input_callback_arg() will directly
8918    be provided to the callback function).  The callback function
8919    has to return non-zero to report success: usually 1 to use opaque
8920    PRF input just if possible, or 2 to enforce use of the opaque PRF
8921    input.  In the latter case, the library will abort the handshake
8922    if opaque PRF input is not successfully negotiated.
8923
8924    Arguments 'peerinput' and 'len' given to the callback function
8925    will always be NULL and 0 in the case of a client.  A server will
8926    see the client's opaque PRF input through these variables if
8927    available (NULL and 0 otherwise).  Note that if the server
8928    provides an opaque PRF input, the length must be the same as the
8929    length of the client's opaque PRF input.
8930
8931    Note that the callback function will only be called when creating
8932    a new session (session resumption can resume whatever was
8933    previously negotiated), and will not be called in SSL 2.0
8934    handshakes; thus, SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2) or
8935    SSL_set_options(ssl, SSL_OP_NO_SSLv2) is especially recommended
8936    for applications that need to enforce opaque PRF input.
8937
8938    *Bodo Moeller*
8939
8940  * Update ssl code to support digests other than SHA1+MD5 for handshake
8941    MAC.
8942
8943    *Victor B. Wagner <vitus@cryptocom.ru>*
8944
8945  * Add RFC4507 support to OpenSSL. This includes the corrections in
8946    RFC4507bis. The encrypted ticket format is an encrypted encoded
8947    SSL_SESSION structure, that way new session features are automatically
8948    supported.
8949
8950    If a client application caches session in an SSL_SESSION structure
8951    support is transparent because tickets are now stored in the encoded
8952    SSL_SESSION.
8953
8954    The SSL_CTX structure automatically generates keys for ticket
8955    protection in servers so again support should be possible
8956    with no application modification.
8957
8958    If a client or server wishes to disable RFC4507 support then the option
8959    SSL_OP_NO_TICKET can be set.
8960
8961    Add a TLS extension debugging callback to allow the contents of any client
8962    or server extensions to be examined.
8963
8964    This work was sponsored by Google.
8965
8966    *Steve Henson*
8967
8968  * Final changes to avoid use of pointer pointer casts in OpenSSL.
8969    OpenSSL should now compile cleanly on gcc 4.2
8970
8971    *Peter Hartley <pdh@utter.chaos.org.uk>, Steve Henson*
8972
8973  * Update SSL library to use new EVP_PKEY MAC API. Include generic MAC
8974    support including streaming MAC support: this is required for GOST
8975    ciphersuite support.
8976
8977    *Victor B. Wagner <vitus@cryptocom.ru>, Steve Henson*
8978
8979  * Add option -stream to use PKCS#7 streaming in smime utility. New
8980    function i2d_PKCS7_bio_stream() and PEM_write_PKCS7_bio_stream()
8981    to output in BER and PEM format.
8982
8983    *Steve Henson*
8984
8985  * Experimental support for use of HMAC via EVP_PKEY interface. This
8986    allows HMAC to be handled via the `EVP_DigestSign*()` interface. The
8987    EVP_PKEY "key" in this case is the HMAC key, potentially allowing
8988    ENGINE support for HMAC keys which are unextractable. New -mac and
8989    -macopt options to dgst utility.
8990
8991    *Steve Henson*
8992
8993  * New option -sigopt to dgst utility. Update dgst to use
8994    `EVP_Digest{Sign,Verify}*`. These two changes make it possible to use
8995    alternative signing parameters such as X9.31 or PSS in the dgst
8996    utility.
8997
8998    *Steve Henson*
8999
9000  * Change ssl_cipher_apply_rule(), the internal function that does
9001    the work each time a ciphersuite string requests enabling
9002    ("foo+bar"), moving ("+foo+bar"), disabling ("-foo+bar", or
9003    removing ("!foo+bar") a class of ciphersuites: Now it maintains
9004    the order of disabled ciphersuites such that those ciphersuites
9005    that most recently went from enabled to disabled not only stay
9006    in order with respect to each other, but also have higher priority
9007    than other disabled ciphersuites the next time ciphersuites are
9008    enabled again.
9009
9010    This means that you can now say, e.g., "PSK:-PSK:HIGH" to enable
9011    the same ciphersuites as with "HIGH" alone, but in a specific
9012    order where the PSK ciphersuites come first (since they are the
9013    most recently disabled ciphersuites when "HIGH" is parsed).
9014
9015    Also, change ssl_create_cipher_list() (using this new
9016    functionality) such that between otherwise identical
9017    ciphersuites, ephemeral ECDH is preferred over ephemeral DH in
9018    the default order.
9019
9020    *Bodo Moeller*
9021
9022  * Change ssl_create_cipher_list() so that it automatically
9023    arranges the ciphersuites in reasonable order before starting
9024    to process the rule string.  Thus, the definition for "DEFAULT"
9025    (SSL_DEFAULT_CIPHER_LIST) now is just "ALL:!aNULL:!eNULL", but
9026    remains equivalent to `"AES:ALL:!aNULL:!eNULL:+aECDH:+kRSA:+RC4:@STRENGTH"`.
9027    This makes it much easier to arrive at a reasonable default order
9028    in applications for which anonymous ciphers are OK (meaning
9029    that you can't actually use DEFAULT).
9030
9031    *Bodo Moeller; suggested by Victor Duchovni*
9032
9033  * Split the SSL/TLS algorithm mask (as used for ciphersuite string
9034    processing) into multiple integers instead of setting
9035    "SSL_MKEY_MASK" bits, "SSL_AUTH_MASK" bits, "SSL_ENC_MASK",
9036    "SSL_MAC_MASK", and "SSL_SSL_MASK" bits all in a single integer.
9037    (These masks as well as the individual bit definitions are hidden
9038    away into the non-exported interface ssl/ssl_locl.h, so this
9039    change to the definition of the SSL_CIPHER structure shouldn't
9040    affect applications.)  This give us more bits for each of these
9041    categories, so there is no longer a need to coagulate AES128 and
9042    AES256 into a single algorithm bit, and to coagulate Camellia128
9043    and Camellia256 into a single algorithm bit, which has led to all
9044    kinds of kludges.
9045
9046    Thus, among other things, the kludge introduced in 0.9.7m and
9047    0.9.8e for masking out AES256 independently of AES128 or masking
9048    out Camellia256 independently of AES256 is not needed here in 0.9.9.
9049
9050    With the change, we also introduce new ciphersuite aliases that
9051    so far were missing: "AES128", "AES256", "CAMELLIA128", and
9052    "CAMELLIA256".
9053
9054    *Bodo Moeller*
9055
9056  * Add support for dsa-with-SHA224 and dsa-with-SHA256.
9057    Use the leftmost N bytes of the signature input if the input is
9058    larger than the prime q (with N being the size in bytes of q).
9059
9060    *Nils Larsch*
9061
9062  * Very *very* experimental PKCS#7 streaming encoder support. Nothing uses
9063    it yet and it is largely untested.
9064
9065    *Steve Henson*
9066
9067  * Add support for the ecdsa-with-SHA224/256/384/512 signature types.
9068
9069    *Nils Larsch*
9070
9071  * Initial incomplete changes to avoid need for function casts in OpenSSL
9072    some compilers (gcc 4.2 and later) reject their use. Safestack is
9073    reimplemented.  Update ASN1 to avoid use of legacy functions.
9074
9075    *Steve Henson*
9076
9077  * Win32/64 targets are linked with Winsock2.
9078
9079    *Andy Polyakov*
9080
9081  * Add an X509_CRL_METHOD structure to allow CRL processing to be redirected
9082    to external functions. This can be used to increase CRL handling
9083    efficiency especially when CRLs are very large by (for example) storing
9084    the CRL revoked certificates in a database.
9085
9086    *Steve Henson*
9087
9088  * Overhaul of by_dir code. Add support for dynamic loading of CRLs so
9089    new CRLs added to a directory can be used. New command line option
9090    -verify_return_error to s_client and s_server. This causes real errors
9091    to be returned by the verify callback instead of carrying on no matter
9092    what. This reflects the way a "real world" verify callback would behave.
9093
9094    *Steve Henson*
9095
9096  * GOST engine, supporting several GOST algorithms and public key formats.
9097    Kindly donated by Cryptocom.
9098
9099    *Cryptocom*
9100
9101  * Partial support for Issuing Distribution Point CRL extension. CRLs
9102    partitioned by DP are handled but no indirect CRL or reason partitioning
9103    (yet). Complete overhaul of CRL handling: now the most suitable CRL is
9104    selected via a scoring technique which handles IDP and AKID in CRLs.
9105
9106    *Steve Henson*
9107
9108  * New X509_STORE_CTX callbacks lookup_crls() and lookup_certs() which
9109    will ultimately be used for all verify operations: this will remove the
9110    X509_STORE dependency on certificate verification and allow alternative
9111    lookup methods.  X509_STORE based implementations of these two callbacks.
9112
9113    *Steve Henson*
9114
9115  * Allow multiple CRLs to exist in an X509_STORE with matching issuer names.
9116    Modify get_crl() to find a valid (unexpired) CRL if possible.
9117
9118    *Steve Henson*
9119
9120  * New function X509_CRL_match() to check if two CRLs are identical. Normally
9121    this would be called X509_CRL_cmp() but that name is already used by
9122    a function that just compares CRL issuer names. Cache several CRL
9123    extensions in X509_CRL structure and cache CRLDP in X509.
9124
9125    *Steve Henson*
9126
9127  * Store a "canonical" representation of X509_NAME structure (ASN1 Name)
9128    this maps equivalent X509_NAME structures into a consistent structure.
9129    Name comparison can then be performed rapidly using memcmp().
9130
9131    *Steve Henson*
9132
9133  * Non-blocking OCSP request processing. Add -timeout option to ocsp
9134    utility.
9135
9136    *Steve Henson*
9137
9138  * Allow digests to supply their own micalg string for S/MIME type using
9139    the ctrl EVP_MD_CTRL_MICALG.
9140
9141    *Steve Henson*
9142
9143  * During PKCS7 signing pass the PKCS7 SignerInfo structure to the
9144    EVP_PKEY_METHOD before and after signing via the EVP_PKEY_CTRL_PKCS7_SIGN
9145    ctrl. It can then customise the structure before and/or after signing
9146    if necessary.
9147
9148    *Steve Henson*
9149
9150  * New function OBJ_add_sigid() to allow application defined signature OIDs
9151    to be added to OpenSSLs internal tables. New function OBJ_sigid_free()
9152    to free up any added signature OIDs.
9153
9154    *Steve Henson*
9155
9156  * New functions EVP_CIPHER_do_all(), EVP_CIPHER_do_all_sorted(),
9157    EVP_MD_do_all() and EVP_MD_do_all_sorted() to enumerate internal
9158    digest and cipher tables. New options added to openssl utility:
9159    list-message-digest-algorithms and list-cipher-algorithms.
9160
9161    *Steve Henson*
9162
9163  * Change the array representation of binary polynomials: the list
9164    of degrees of non-zero coefficients is now terminated with -1.
9165    Previously it was terminated with 0, which was also part of the
9166    value; thus, the array representation was not applicable to
9167    polynomials where t^0 has coefficient zero.  This change makes
9168    the array representation useful in a more general context.
9169
9170    *Douglas Stebila*
9171
9172  * Various modifications and fixes to SSL/TLS cipher string
9173    handling.  For ECC, the code now distinguishes between fixed ECDH
9174    with RSA certificates on the one hand and with ECDSA certificates
9175    on the other hand, since these are separate ciphersuites.  The
9176    unused code for Fortezza ciphersuites has been removed.
9177
9178    For consistency with EDH, ephemeral ECDH is now called "EECDH"
9179    (not "ECDHE").  For consistency with the code for DH
9180    certificates, use of ECDH certificates is now considered ECDH
9181    authentication, not RSA or ECDSA authentication (the latter is
9182    merely the CA's signing algorithm and not actively used in the
9183    protocol).
9184
9185    The temporary ciphersuite alias "ECCdraft" is no longer
9186    available, and ECC ciphersuites are no longer excluded from "ALL"
9187    and "DEFAULT".  The following aliases now exist for RFC 4492
9188    ciphersuites, most of these by analogy with the DH case:
9189
9190            kECDHr   - ECDH cert, signed with RSA
9191            kECDHe   - ECDH cert, signed with ECDSA
9192            kECDH    - ECDH cert (signed with either RSA or ECDSA)
9193            kEECDH   - ephemeral ECDH
9194            ECDH     - ECDH cert or ephemeral ECDH
9195
9196            aECDH    - ECDH cert
9197            aECDSA   - ECDSA cert
9198            ECDSA    - ECDSA cert
9199
9200            AECDH    - anonymous ECDH
9201            EECDH    - non-anonymous ephemeral ECDH (equivalent to "kEECDH:-AECDH")
9202
9203    *Bodo Moeller*
9204
9205  * Add additional S/MIME capabilities for AES and GOST ciphers if supported.
9206    Use correct micalg parameters depending on digest(s) in signed message.
9207
9208    *Steve Henson*
9209
9210  * Add engine support for EVP_PKEY_ASN1_METHOD. Add functions to process
9211    an ENGINE asn1 method. Support ENGINE lookups in the ASN1 code.
9212
9213    *Steve Henson*
9214
9215  * Initial engine support for EVP_PKEY_METHOD. New functions to permit
9216    an engine to register a method. Add ENGINE lookups for methods and
9217    functional reference processing.
9218
9219    *Steve Henson*
9220
9221  * New functions `EVP_Digest{Sign,Verify)*`. These are enhanced versions of
9222    `EVP_{Sign,Verify}*` which allow an application to customise the signature
9223    process.
9224
9225    *Steve Henson*
9226
9227  * New -resign option to smime utility. This adds one or more signers
9228    to an existing PKCS#7 signedData structure. Also -md option to use an
9229    alternative message digest algorithm for signing.
9230
9231    *Steve Henson*
9232
9233  * Tidy up PKCS#7 routines and add new functions to make it easier to
9234    create PKCS7 structures containing multiple signers. Update smime
9235    application to support multiple signers.
9236
9237    *Steve Henson*
9238
9239  * New -macalg option to pkcs12 utility to allow setting of an alternative
9240    digest MAC.
9241
9242    *Steve Henson*
9243
9244  * Initial support for PKCS#5 v2.0 PRFs other than default SHA1 HMAC.
9245    Reorganize PBE internals to lookup from a static table using NIDs,
9246    add support for HMAC PBE OID translation. Add a EVP_CIPHER ctrl:
9247    EVP_CTRL_PBE_PRF_NID this allows a cipher to specify an alternative
9248    PRF which will be automatically used with PBES2.
9249
9250    *Steve Henson*
9251
9252  * Replace the algorithm specific calls to generate keys in "req" with the
9253    new API.
9254
9255    *Steve Henson*
9256
9257  * Update PKCS#7 enveloped data routines to use new API. This is now
9258    supported by any public key method supporting the encrypt operation. A
9259    ctrl is added to allow the public key algorithm to examine or modify
9260    the PKCS#7 RecipientInfo structure if it needs to: for RSA this is
9261    a no op.
9262
9263    *Steve Henson*
9264
9265  * Add a ctrl to asn1 method to allow a public key algorithm to express
9266    a default digest type to use. In most cases this will be SHA1 but some
9267    algorithms (such as GOST) need to specify an alternative digest. The
9268    return value indicates how strong the preference is 1 means optional and
9269    2 is mandatory (that is it is the only supported type). Modify
9270    ASN1_item_sign() to accept a NULL digest argument to indicate it should
9271    use the default md. Update openssl utilities to use the default digest
9272    type for signing if it is not explicitly indicated.
9273
9274    *Steve Henson*
9275
9276  * Use OID cross reference table in ASN1_sign() and ASN1_verify(). New
9277    EVP_MD flag EVP_MD_FLAG_PKEY_METHOD_SIGNATURE. This uses the relevant
9278    signing method from the key type. This effectively removes the link
9279    between digests and public key types.
9280
9281    *Steve Henson*
9282
9283  * Add an OID cross reference table and utility functions. Its purpose is to
9284    translate between signature OIDs such as SHA1WithrsaEncryption and SHA1,
9285    rsaEncryption. This will allow some of the algorithm specific hackery
9286    needed to use the correct OID to be removed.
9287
9288    *Steve Henson*
9289
9290  * Remove algorithm specific dependencies when setting PKCS7_SIGNER_INFO
9291    structures for PKCS7_sign(). They are now set up by the relevant public
9292    key ASN1 method.
9293
9294    *Steve Henson*
9295
9296  * Add provisional EC pkey method with support for ECDSA and ECDH.
9297
9298    *Steve Henson*
9299
9300  * Add support for key derivation (agreement) in the API, DH method and
9301    pkeyutl.
9302
9303    *Steve Henson*
9304
9305  * Add DSA pkey method and DH pkey methods, extend DH ASN1 method to support
9306    public and private key formats. As a side effect these add additional
9307    command line functionality not previously available: DSA signatures can be
9308    generated and verified using pkeyutl and DH key support and generation in
9309    pkey, genpkey.
9310
9311    *Steve Henson*
9312
9313  * BeOS support.
9314
9315    *Oliver Tappe <zooey@hirschkaefer.de>*
9316
9317  * New make target "install_html_docs" installs HTML renditions of the
9318    manual pages.
9319
9320    *Oliver Tappe <zooey@hirschkaefer.de>*
9321
9322  * New utility "genpkey" this is analogous to "genrsa" etc except it can
9323    generate keys for any algorithm. Extend and update EVP_PKEY_METHOD to
9324    support key and parameter generation and add initial key generation
9325    functionality for RSA.
9326
9327    *Steve Henson*
9328
9329  * Add functions for main EVP_PKEY_method operations. The undocumented
9330    functions `EVP_PKEY_{encrypt,decrypt}` have been renamed to
9331    `EVP_PKEY_{encrypt,decrypt}_old`.
9332
9333    *Steve Henson*
9334
9335  * Initial definitions for EVP_PKEY_METHOD. This will be a high level public
9336    key API, doesn't do much yet.
9337
9338    *Steve Henson*
9339
9340  * New function EVP_PKEY_asn1_get0_info() to retrieve information about
9341    public key algorithms. New option to openssl utility:
9342    "list-public-key-algorithms" to print out info.
9343
9344    *Steve Henson*
9345
9346  * Implement the Supported Elliptic Curves Extension for
9347    ECC ciphersuites from draft-ietf-tls-ecc-12.txt.
9348
9349    *Douglas Stebila*
9350
9351  * Don't free up OIDs in OBJ_cleanup() if they are in use by EVP_MD or
9352    EVP_CIPHER structures to avoid later problems in EVP_cleanup().
9353
9354    *Steve Henson*
9355
9356  * New utilities pkey and pkeyparam. These are similar to algorithm specific
9357    utilities such as rsa, dsa, dsaparam etc except they process any key
9358    type.
9359
9360    *Steve Henson*
9361
9362  * Transfer public key printing routines to EVP_PKEY_ASN1_METHOD. New
9363    functions EVP_PKEY_print_public(), EVP_PKEY_print_private(),
9364    EVP_PKEY_print_param() to print public key data from an EVP_PKEY
9365    structure.
9366
9367    *Steve Henson*
9368
9369  * Initial support for pluggable public key ASN1.
9370    De-spaghettify the public key ASN1 handling. Move public and private
9371    key ASN1 handling to a new EVP_PKEY_ASN1_METHOD structure. Relocate
9372    algorithm specific handling to a single module within the relevant
9373    algorithm directory. Add functions to allow (near) opaque processing
9374    of public and private key structures.
9375
9376    *Steve Henson*
9377
9378  * Implement the Supported Point Formats Extension for
9379    ECC ciphersuites from draft-ietf-tls-ecc-12.txt.
9380
9381    *Douglas Stebila*
9382
9383  * Add initial support for RFC 4279 PSK TLS ciphersuites. Add members
9384    for the psk identity [hint] and the psk callback functions to the
9385    SSL_SESSION, SSL and SSL_CTX structure.
9386
9387    New ciphersuites:
9388            PSK-RC4-SHA, PSK-3DES-EDE-CBC-SHA, PSK-AES128-CBC-SHA,
9389            PSK-AES256-CBC-SHA
9390
9391    New functions:
9392            SSL_CTX_use_psk_identity_hint
9393            SSL_get_psk_identity_hint
9394            SSL_get_psk_identity
9395            SSL_use_psk_identity_hint
9396
9397    *Mika Kousa and Pasi Eronen of Nokia Corporation*
9398
9399  * Add RFC 3161 compliant time stamp request creation, response generation
9400    and response verification functionality.
9401
9402    *Zoltán Glózik <zglozik@opentsa.org>, The OpenTSA Project*
9403
9404  * Add initial support for TLS extensions, specifically for the server_name
9405    extension so far.  The SSL_SESSION, SSL_CTX, and SSL data structures now
9406    have new members for a host name.  The SSL data structure has an
9407    additional member `SSL_CTX *initial_ctx` so that new sessions can be
9408    stored in that context to allow for session resumption, even after the
9409    SSL has been switched to a new SSL_CTX in reaction to a client's
9410    server_name extension.
9411
9412    New functions (subject to change):
9413
9414            SSL_get_servername()
9415            SSL_get_servername_type()
9416            SSL_set_SSL_CTX()
9417
9418    New CTRL codes and macros (subject to change):
9419
9420            SSL_CTRL_SET_TLSEXT_SERVERNAME_CB
9421                                - SSL_CTX_set_tlsext_servername_callback()
9422            SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG
9423                                     - SSL_CTX_set_tlsext_servername_arg()
9424            SSL_CTRL_SET_TLSEXT_HOSTNAME           - SSL_set_tlsext_host_name()
9425
9426    openssl s_client has a new '-servername ...' option.
9427
9428    openssl s_server has new options '-servername_host ...', '-cert2 ...',
9429    '-key2 ...', '-servername_fatal' (subject to change).  This allows
9430    testing the HostName extension for a specific single host name ('-cert'
9431    and '-key' remain fallbacks for handshakes without HostName
9432    negotiation).  If the unrecognized_name alert has to be sent, this by
9433    default is a warning; it becomes fatal with the '-servername_fatal'
9434    option.
9435
9436    *Peter Sylvester,  Remy Allais, Christophe Renou*
9437
9438  * Whirlpool hash implementation is added.
9439
9440    *Andy Polyakov*
9441
9442  * BIGNUM code on 64-bit SPARCv9 targets is switched from bn(64,64) to
9443    bn(64,32). Because of instruction set limitations it doesn't have
9444    any negative impact on performance. This was done mostly in order
9445    to make it possible to share assembler modules, such as bn_mul_mont
9446    implementations, between 32- and 64-bit builds without hassle.
9447
9448    *Andy Polyakov*
9449
9450  * Move code previously exiled into file crypto/ec/ec2_smpt.c
9451    to ec2_smpl.c, and no longer require the OPENSSL_EC_BIN_PT_COMP
9452    macro.
9453
9454    *Bodo Moeller*
9455
9456  * New candidate for BIGNUM assembler implementation, bn_mul_mont,
9457    dedicated Montgomery multiplication procedure, is introduced.
9458    BN_MONT_CTX is modified to allow bn_mul_mont to reach for higher
9459    "64-bit" performance on certain 32-bit targets.
9460
9461    *Andy Polyakov*
9462
9463  * New option SSL_OP_NO_COMP to disable use of compression selectively
9464    in SSL structures. New SSL ctrl to set maximum send fragment size.
9465    Save memory by setting the I/O buffer sizes dynamically instead of
9466    using the maximum available value.
9467
9468    *Steve Henson*
9469
9470  * New option -V for 'openssl ciphers'. This prints the ciphersuite code
9471    in addition to the text details.
9472
9473    *Bodo Moeller*
9474
9475  * Very, very preliminary EXPERIMENTAL support for printing of general
9476    ASN1 structures. This currently produces rather ugly output and doesn't
9477    handle several customised structures at all.
9478
9479    *Steve Henson*
9480
9481  * Integrated support for PVK file format and some related formats such
9482    as MS PUBLICKEYBLOB and PRIVATEKEYBLOB. Command line switches to support
9483    these in the 'rsa' and 'dsa' utilities.
9484
9485    *Steve Henson*
9486
9487  * Support for PKCS#1 RSAPublicKey format on rsa utility command line.
9488
9489    *Steve Henson*
9490
9491  * Remove the ancient ASN1_METHOD code. This was only ever used in one
9492    place for the (very old) "NETSCAPE" format certificates which are now
9493    handled using new ASN1 code equivalents.
9494
9495    *Steve Henson*
9496
9497  * Let the TLSv1_method() etc. functions return a 'const' SSL_METHOD
9498    pointer and make the SSL_METHOD parameter in SSL_CTX_new,
9499    SSL_CTX_set_ssl_version and SSL_set_ssl_method 'const'.
9500
9501    *Nils Larsch*
9502
9503  * Modify CRL distribution points extension code to print out previously
9504    unsupported fields. Enhance extension setting code to allow setting of
9505    all fields.
9506
9507    *Steve Henson*
9508
9509  * Add print and set support for Issuing Distribution Point CRL extension.
9510
9511    *Steve Henson*
9512
9513  * Change 'Configure' script to enable Camellia by default.
9514
9515    *NTT*
9516
9517 OpenSSL 0.9.x
9518 -------------
9519
9520 ### Changes between 0.9.8m and 0.9.8n [24 Mar 2010]
9521
9522  * When rejecting SSL/TLS records due to an incorrect version number, never
9523    update s->server with a new major version number.  As of
9524    - OpenSSL 0.9.8m if 'short' is a 16-bit type,
9525    - OpenSSL 0.9.8f if 'short' is longer than 16 bits,
9526    the previous behavior could result in a read attempt at NULL when
9527    receiving specific incorrect SSL/TLS records once record payload
9528    protection is active.  ([CVE-2010-0740])
9529
9530    *Bodo Moeller, Adam Langley <agl@chromium.org>*
9531
9532  * Fix for CVE-2010-0433 where some kerberos enabled versions of OpenSSL
9533    could be crashed if the relevant tables were not present (e.g. chrooted).
9534
9535    *Tomas Hoger <thoger@redhat.com>*
9536
9537 ### Changes between 0.9.8l and 0.9.8m [25 Feb 2010]
9538
9539  * Always check bn_wexpand() return values for failure.  ([CVE-2009-3245])
9540
9541    *Martin Olsson, Neel Mehta*
9542
9543  * Fix X509_STORE locking: Every 'objs' access requires a lock (to
9544    accommodate for stack sorting, always a write lock!).
9545
9546    *Bodo Moeller*
9547
9548  * On some versions of WIN32 Heap32Next is very slow. This can cause
9549    excessive delays in the RAND_poll(): over a minute. As a workaround
9550    include a time check in the inner Heap32Next loop too.
9551
9552    *Steve Henson*
9553
9554  * The code that handled flushing of data in SSL/TLS originally used the
9555    BIO_CTRL_INFO ctrl to see if any data was pending first. This caused
9556    the problem outlined in PR#1949. The fix suggested there however can
9557    trigger problems with buggy BIO_CTRL_WPENDING (e.g. some versions
9558    of Apache). So instead simplify the code to flush unconditionally.
9559    This should be fine since flushing with no data to flush is a no op.
9560
9561    *Steve Henson*
9562
9563  * Handle TLS versions 2.0 and later properly and correctly use the
9564    highest version of TLS/SSL supported. Although TLS >= 2.0 is some way
9565    off ancient servers have a habit of sticking around for a while...
9566
9567    *Steve Henson*
9568
9569  * Modify compression code so it frees up structures without using the
9570    ex_data callbacks. This works around a problem where some applications
9571    call CRYPTO_cleanup_all_ex_data() before application exit (e.g. when
9572    restarting) then use compression (e.g. SSL with compression) later.
9573    This results in significant per-connection memory leaks and
9574    has caused some security issues including CVE-2008-1678 and
9575    CVE-2009-4355.
9576
9577    *Steve Henson*
9578
9579  * Constify crypto/cast (i.e., <openssl/cast.h>): a CAST_KEY doesn't
9580    change when encrypting or decrypting.
9581
9582    *Bodo Moeller*
9583
9584  * Add option SSL_OP_LEGACY_SERVER_CONNECT which will allow clients to
9585    connect and renegotiate with servers which do not support RI.
9586    Until RI is more widely deployed this option is enabled by default.
9587
9588    *Steve Henson*
9589
9590  * Add "missing" ssl ctrls to clear options and mode.
9591
9592    *Steve Henson*
9593
9594  * If client attempts to renegotiate and doesn't support RI respond with
9595    a no_renegotiation alert as required by RFC5746.  Some renegotiating
9596    TLS clients will continue a connection gracefully when they receive
9597    the alert. Unfortunately OpenSSL mishandled this alert and would hang
9598    waiting for a server hello which it will never receive. Now we treat a
9599    received no_renegotiation alert as a fatal error. This is because
9600    applications requesting a renegotiation might well expect it to succeed
9601    and would have no code in place to handle the server denying it so the
9602    only safe thing to do is to terminate the connection.
9603
9604    *Steve Henson*
9605
9606  * Add ctrl macro SSL_get_secure_renegotiation_support() which returns 1 if
9607    peer supports secure renegotiation and 0 otherwise. Print out peer
9608    renegotiation support in s_client/s_server.
9609
9610    *Steve Henson*
9611
9612  * Replace the highly broken and deprecated SPKAC certification method with
9613    the updated NID creation version. This should correctly handle UTF8.
9614
9615    *Steve Henson*
9616
9617  * Implement RFC5746. Re-enable renegotiation but require the extension
9618    as needed. Unfortunately, SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION
9619    turns out to be a bad idea. It has been replaced by
9620    SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION which can be set with
9621    SSL_CTX_set_options(). This is really not recommended unless you
9622    know what you are doing.
9623
9624    *Eric Rescorla <ekr@networkresonance.com>, Ben Laurie, Steve Henson*
9625
9626  * Fixes to stateless session resumption handling. Use initial_ctx when
9627    issuing and attempting to decrypt tickets in case it has changed during
9628    servername handling. Use a non-zero length session ID when attempting
9629    stateless session resumption: this makes it possible to determine if
9630    a resumption has occurred immediately after receiving server hello
9631    (several places in OpenSSL subtly assume this) instead of later in
9632    the handshake.
9633
9634    *Steve Henson*
9635
9636  * The functions ENGINE_ctrl(), OPENSSL_isservice(),
9637    CMS_get1_RecipientRequest() and RAND_bytes() can return <=0 on error
9638    fixes for a few places where the return code is not checked
9639    correctly.
9640
9641    *Julia Lawall <julia@diku.dk>*
9642
9643  * Add --strict-warnings option to Configure script to include devteam
9644    warnings in other configurations.
9645
9646    *Steve Henson*
9647
9648  * Add support for --libdir option and LIBDIR variable in makefiles. This
9649    makes it possible to install openssl libraries in locations which
9650    have names other than "lib", for example "/usr/lib64" which some
9651    systems need.
9652
9653    *Steve Henson, based on patch from Jeremy Utley*
9654
9655  * Don't allow the use of leading 0x80 in OIDs. This is a violation of
9656    X690 8.9.12 and can produce some misleading textual output of OIDs.
9657
9658    *Steve Henson, reported by Dan Kaminsky*
9659
9660  * Delete MD2 from algorithm tables. This follows the recommendation in
9661    several standards that it is not used in new applications due to
9662    several cryptographic weaknesses. For binary compatibility reasons
9663    the MD2 API is still compiled in by default.
9664
9665    *Steve Henson*
9666
9667  * Add compression id to {d2i,i2d}_SSL_SESSION so it is correctly saved
9668    and restored.
9669
9670    *Steve Henson*
9671
9672  * Rename uni2asc and asc2uni functions to OPENSSL_uni2asc and
9673    OPENSSL_asc2uni conditionally on Netware platforms to avoid a name
9674    clash.
9675
9676    *Guenter <lists@gknw.net>*
9677
9678  * Fix the server certificate chain building code to use X509_verify_cert(),
9679    it used to have an ad-hoc builder which was unable to cope with anything
9680    other than a simple chain.
9681
9682    *David Woodhouse <dwmw2@infradead.org>, Steve Henson*
9683
9684  * Don't check self signed certificate signatures in X509_verify_cert()
9685    by default (a flag can override this): it just wastes time without
9686    adding any security. As a useful side effect self signed root CAs
9687    with non-FIPS digests are now usable in FIPS mode.
9688
9689    *Steve Henson*
9690
9691  * In dtls1_process_out_of_seq_message() the check if the current message
9692    is already buffered was missing. For every new message was memory
9693    allocated, allowing an attacker to perform an denial of service attack
9694    with sending out of seq handshake messages until there is no memory
9695    left. Additionally every future message was buffered, even if the
9696    sequence number made no sense and would be part of another handshake.
9697    So only messages with sequence numbers less than 10 in advance will be
9698    buffered.  ([CVE-2009-1378])
9699
9700    *Robin Seggelmann, discovered by Daniel Mentz*
9701
9702  * Records are buffered if they arrive with a future epoch to be
9703    processed after finishing the corresponding handshake. There is
9704    currently no limitation to this buffer allowing an attacker to perform
9705    a DOS attack with sending records with future epochs until there is no
9706    memory left. This patch adds the pqueue_size() function to determine
9707    the size of a buffer and limits the record buffer to 100 entries.
9708    ([CVE-2009-1377])
9709
9710    *Robin Seggelmann, discovered by Daniel Mentz*
9711
9712  * Keep a copy of frag->msg_header.frag_len so it can be used after the
9713    parent structure is freed.  ([CVE-2009-1379])
9714
9715    *Daniel Mentz*
9716
9717  * Handle non-blocking I/O properly in SSL_shutdown() call.
9718
9719    *Darryl Miles <darryl-mailinglists@netbauds.net>*
9720
9721  * Add `2.5.4.*` OIDs
9722
9723    *Ilya O. <vrghost@gmail.com>*
9724
9725 ### Changes between 0.9.8k and 0.9.8l  [5 Nov 2009]
9726
9727  * Disable renegotiation completely - this fixes a severe security
9728    problem ([CVE-2009-3555]) at the cost of breaking all
9729    renegotiation. Renegotiation can be re-enabled by setting
9730    SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION in s3->flags at
9731    run-time. This is really not recommended unless you know what
9732    you're doing.
9733
9734    *Ben Laurie*
9735
9736 ### Changes between 0.9.8j and 0.9.8k  [25 Mar 2009]
9737
9738  * Don't set val to NULL when freeing up structures, it is freed up by
9739    underlying code. If `sizeof(void *) > sizeof(long)` this can result in
9740    zeroing past the valid field. ([CVE-2009-0789])
9741
9742    *Paolo Ganci <Paolo.Ganci@AdNovum.CH>*
9743
9744  * Fix bug where return value of CMS_SignerInfo_verify_content() was not
9745    checked correctly. This would allow some invalid signed attributes to
9746    appear to verify correctly. ([CVE-2009-0591])
9747
9748    *Ivan Nestlerode <inestlerode@us.ibm.com>*
9749
9750  * Reject UniversalString and BMPString types with invalid lengths. This
9751    prevents a crash in ASN1_STRING_print_ex() which assumes the strings have
9752    a legal length. ([CVE-2009-0590])
9753
9754    *Steve Henson*
9755
9756  * Set S/MIME signing as the default purpose rather than setting it
9757    unconditionally. This allows applications to override it at the store
9758    level.
9759
9760    *Steve Henson*
9761
9762  * Permit restricted recursion of ASN1 strings. This is needed in practice
9763    to handle some structures.
9764
9765    *Steve Henson*
9766
9767  * Improve efficiency of mem_gets: don't search whole buffer each time
9768    for a '\n'
9769
9770    *Jeremy Shapiro <jnshapir@us.ibm.com>*
9771
9772  * New -hex option for openssl rand.
9773
9774    *Matthieu Herrb*
9775
9776  * Print out UTF8String and NumericString when parsing ASN1.
9777
9778    *Steve Henson*
9779
9780  * Support NumericString type for name components.
9781
9782    *Steve Henson*
9783
9784  * Allow CC in the environment to override the automatically chosen
9785    compiler. Note that nothing is done to ensure flags work with the
9786    chosen compiler.
9787
9788    *Ben Laurie*
9789
9790 ### Changes between 0.9.8i and 0.9.8j  [07 Jan 2009]
9791
9792  * Properly check EVP_VerifyFinal() and similar return values
9793    ([CVE-2008-5077]).
9794
9795    *Ben Laurie, Bodo Moeller, Google Security Team*
9796
9797  * Enable TLS extensions by default.
9798
9799    *Ben Laurie*
9800
9801  * Allow the CHIL engine to be loaded, whether the application is
9802    multithreaded or not. (This does not release the developer from the
9803    obligation to set up the dynamic locking callbacks.)
9804
9805    *Sander Temme <sander@temme.net>*
9806
9807  * Use correct exit code if there is an error in dgst command.
9808
9809    *Steve Henson; problem pointed out by Roland Dirlewanger*
9810
9811  * Tweak Configure so that you need to say "experimental-jpake" to enable
9812    JPAKE, and need to use -DOPENSSL_EXPERIMENTAL_JPAKE in applications.
9813
9814    *Bodo Moeller*
9815
9816  * Add experimental JPAKE support, including demo authentication in
9817    s_client and s_server.
9818
9819    *Ben Laurie*
9820
9821  * Set the comparison function in v3_addr_canonize().
9822
9823    *Rob Austein <sra@hactrn.net>*
9824
9825  * Add support for XMPP STARTTLS in s_client.
9826
9827    *Philip Paeps <philip@freebsd.org>*
9828
9829  * Change the server-side SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG behavior
9830    to ensure that even with this option, only ciphersuites in the
9831    server's preference list will be accepted.  (Note that the option
9832    applies only when resuming a session, so the earlier behavior was
9833    just about the algorithm choice for symmetric cryptography.)
9834
9835    *Bodo Moeller*
9836
9837 ### Changes between 0.9.8h and 0.9.8i  [15 Sep 2008]
9838
9839  * Fix NULL pointer dereference if a DTLS server received
9840    ChangeCipherSpec as first record ([CVE-2009-1386]).
9841
9842    *PR #1679*
9843
9844  * Fix a state transition in s3_srvr.c and d1_srvr.c
9845    (was using SSL3_ST_CW_CLNT_HELLO_B, should be `..._ST_SW_SRVR_...`).
9846
9847    *Nagendra Modadugu*
9848
9849  * The fix in 0.9.8c that supposedly got rid of unsafe
9850    double-checked locking was incomplete for RSA blinding,
9851    addressing just one layer of what turns out to have been
9852    doubly unsafe triple-checked locking.
9853
9854    So now fix this for real by retiring the MONT_HELPER macro
9855    in crypto/rsa/rsa_eay.c.
9856
9857    *Bodo Moeller; problem pointed out by Marius Schilder*
9858
9859  * Various precautionary measures:
9860
9861    - Avoid size_t integer overflow in HASH_UPDATE (md32_common.h).
9862
9863    - Avoid a buffer overflow in d2i_SSL_SESSION() (ssl_asn1.c).
9864      (NB: This would require knowledge of the secret session ticket key
9865      to exploit, in which case you'd be SOL either way.)
9866
9867    - Change bn_nist.c so that it will properly handle input BIGNUMs
9868      outside the expected range.
9869
9870    - Enforce the 'num' check in BN_div() (bn_div.c) for non-BN_DEBUG
9871      builds.
9872
9873    *Neel Mehta, Bodo Moeller*
9874
9875  * Allow engines to be "soft loaded" - i.e. optionally don't die if
9876    the load fails. Useful for distros.
9877
9878    *Ben Laurie and the FreeBSD team*
9879
9880  * Add support for Local Machine Keyset attribute in PKCS#12 files.
9881
9882    *Steve Henson*
9883
9884  * Fix BN_GF2m_mod_arr() top-bit cleanup code.
9885
9886    *Huang Ying*
9887
9888  * Expand ENGINE to support engine supplied SSL client certificate functions.
9889
9890    This work was sponsored by Logica.
9891
9892    *Steve Henson*
9893
9894  * Add CryptoAPI ENGINE to support use of RSA and DSA keys held in Windows
9895    keystores. Support for SSL/TLS client authentication too.
9896    Not compiled unless enable-capieng specified to Configure.
9897
9898    This work was sponsored by Logica.
9899
9900    *Steve Henson*
9901
9902  * Fix bug in X509_ATTRIBUTE creation: don't set attribute using
9903    ASN1_TYPE_set1 if MBSTRING flag set. This bug would crash certain
9904    attribute creation routines such as certificate requests and PKCS#12
9905    files.
9906
9907    *Steve Henson*
9908
9909 ### Changes between 0.9.8g and 0.9.8h  [28 May 2008]
9910
9911  * Fix flaw if 'Server Key exchange message' is omitted from a TLS
9912    handshake which could lead to a client crash as found using the
9913    Codenomicon TLS test suite ([CVE-2008-1672])
9914
9915    *Steve Henson, Mark Cox*
9916
9917  * Fix double free in TLS server name extensions which could lead to
9918    a remote crash found by Codenomicon TLS test suite ([CVE-2008-0891])
9919
9920    *Joe Orton*
9921
9922  * Clear error queue in SSL_CTX_use_certificate_chain_file()
9923
9924    Clear the error queue to ensure that error entries left from
9925    older function calls do not interfere with the correct operation.
9926
9927    *Lutz Jaenicke, Erik de Castro Lopo*
9928
9929  * Remove root CA certificates of commercial CAs:
9930
9931    The OpenSSL project does not recommend any specific CA and does not
9932    have any policy with respect to including or excluding any CA.
9933    Therefore it does not make any sense to ship an arbitrary selection
9934    of root CA certificates with the OpenSSL software.
9935
9936    *Lutz Jaenicke*
9937
9938  * RSA OAEP patches to fix two separate invalid memory reads.
9939    The first one involves inputs when 'lzero' is greater than
9940    'SHA_DIGEST_LENGTH' (it would read about SHA_DIGEST_LENGTH bytes
9941    before the beginning of from). The second one involves inputs where
9942    the 'db' section contains nothing but zeroes (there is a one-byte
9943    invalid read after the end of 'db').
9944
9945    *Ivan Nestlerode <inestlerode@us.ibm.com>*
9946
9947  * Partial backport from 0.9.9-dev:
9948
9949    Introduce bn_mul_mont (dedicated Montgomery multiplication
9950    procedure) as a candidate for BIGNUM assembler implementation.
9951    While 0.9.9-dev uses assembler for various architectures, only
9952    x86_64 is available by default here in the 0.9.8 branch, and
9953    32-bit x86 is available through a compile-time setting.
9954
9955    To try the 32-bit x86 assembler implementation, use Configure
9956    option "enable-montasm" (which exists only for this backport).
9957
9958    As "enable-montasm" for 32-bit x86 disclaims code stability
9959    anyway, in this constellation we activate additional code
9960    backported from 0.9.9-dev for further performance improvements,
9961    namely BN_from_montgomery_word.  (To enable this otherwise,
9962    e.g. x86_64, try `-DMONT_FROM_WORD___NON_DEFAULT_0_9_8_BUILD`.)
9963
9964    *Andy Polyakov (backport partially by Bodo Moeller)*
9965
9966  * Add TLS session ticket callback. This allows an application to set
9967    TLS ticket cipher and HMAC keys rather than relying on hardcoded fixed
9968    values. This is useful for key rollover for example where several key
9969    sets may exist with different names.
9970
9971    *Steve Henson*
9972
9973  * Reverse ENGINE-internal logic for caching default ENGINE handles.
9974    This was broken until now in 0.9.8 releases, such that the only way
9975    a registered ENGINE could be used (assuming it initialises
9976    successfully on the host) was to explicitly set it as the default
9977    for the relevant algorithms. This is in contradiction with 0.9.7
9978    behaviour and the documentation. With this fix, when an ENGINE is
9979    registered into a given algorithm's table of implementations, the
9980    'uptodate' flag is reset so that auto-discovery will be used next
9981    time a new context for that algorithm attempts to select an
9982    implementation.
9983
9984    *Ian Lister (tweaked by Geoff Thorpe)*
9985
9986  * Backport of CMS code to OpenSSL 0.9.8. This differs from the 0.9.9
9987    implementation in the following ways:
9988
9989    Lack of EVP_PKEY_ASN1_METHOD means algorithm parameters have to be
9990    hard coded.
9991
9992    Lack of BER streaming support means one pass streaming processing is
9993    only supported if data is detached: setting the streaming flag is
9994    ignored for embedded content.
9995
9996    CMS support is disabled by default and must be explicitly enabled
9997    with the enable-cms configuration option.
9998
9999    *Steve Henson*
10000
10001  * Update the GMP engine glue to do direct copies between BIGNUM and
10002    mpz_t when openssl and GMP use the same limb size. Otherwise the
10003    existing "conversion via a text string export" trick is still used.
10004
10005    *Paul Sheer <paulsheer@gmail.com>*
10006
10007  * Zlib compression BIO. This is a filter BIO which compressed and
10008    uncompresses any data passed through it.
10009
10010    *Steve Henson*
10011
10012  * Add AES_wrap_key() and AES_unwrap_key() functions to implement
10013    RFC3394 compatible AES key wrapping.
10014
10015    *Steve Henson*
10016
10017  * Add utility functions to handle ASN1 structures. ASN1_STRING_set0():
10018    sets string data without copying. X509_ALGOR_set0() and
10019    X509_ALGOR_get0(): set and retrieve X509_ALGOR (AlgorithmIdentifier)
10020    data. Attribute function X509at_get0_data_by_OBJ(): retrieves data
10021    from an X509_ATTRIBUTE structure optionally checking it occurs only
10022    once. ASN1_TYPE_set1(): set and ASN1_TYPE structure copying supplied
10023    data.
10024
10025    *Steve Henson*
10026
10027  * Fix BN flag handling in RSA_eay_mod_exp() and BN_MONT_CTX_set()
10028    to get the expected BN_FLG_CONSTTIME behavior.
10029
10030    *Bodo Moeller (Google)*
10031
10032  * Netware support:
10033
10034    - fixed wrong usage of ioctlsocket() when build for LIBC BSD sockets
10035    - fixed do_tests.pl to run the test suite with CLIB builds too (CLIB_OPT)
10036    - added some more tests to do_tests.pl
10037    - fixed RunningProcess usage so that it works with newer LIBC NDKs too
10038    - removed usage of BN_LLONG for CLIB builds to avoid runtime dependency
10039    - added new Configure targets netware-clib-bsdsock, netware-clib-gcc,
10040      netware-clib-bsdsock-gcc, netware-libc-bsdsock-gcc
10041    - various changes to netware.pl to enable gcc-cross builds on Win32
10042      platform
10043    - changed crypto/bio/b_sock.c to work with macro functions (CLIB BSD)
10044    - various changes to fix missing prototype warnings
10045    - fixed x86nasm.pl to create correct asm files for NASM COFF output
10046    - added AES, WHIRLPOOL and CPUID assembler code to build files
10047    - added missing AES assembler make rules to mk1mf.pl
10048    - fixed order of includes in `apps/ocsp.c` so that `e_os.h` settings apply
10049
10050    *Guenter Knauf <eflash@gmx.net>*
10051
10052  * Implement certificate status request TLS extension defined in RFC3546.
10053    A client can set the appropriate parameters and receive the encoded
10054    OCSP response via a callback. A server can query the supplied parameters
10055    and set the encoded OCSP response in the callback. Add simplified examples
10056    to s_client and s_server.
10057
10058    *Steve Henson*
10059
10060 ### Changes between 0.9.8f and 0.9.8g  [19 Oct 2007]
10061
10062  * Fix various bugs:
10063    + Binary incompatibility of ssl_ctx_st structure
10064    + DTLS interoperation with non-compliant servers
10065    + Don't call get_session_cb() without proposed session
10066    + Fix ia64 assembler code
10067
10068    *Andy Polyakov, Steve Henson*
10069
10070 ### Changes between 0.9.8e and 0.9.8f  [11 Oct 2007]
10071
10072  * DTLS Handshake overhaul. There were longstanding issues with
10073    OpenSSL DTLS implementation, which were making it impossible for
10074    RFC 4347 compliant client to communicate with OpenSSL server.
10075    Unfortunately just fixing these incompatibilities would "cut off"
10076    pre-0.9.8f clients. To allow for hassle free upgrade post-0.9.8e
10077    server keeps tolerating non RFC compliant syntax. The opposite is
10078    not true, 0.9.8f client can not communicate with earlier server.
10079    This update even addresses CVE-2007-4995.
10080
10081    *Andy Polyakov*
10082
10083  * Changes to avoid need for function casts in OpenSSL: some compilers
10084    (gcc 4.2 and later) reject their use.
10085    *Kurt Roeckx <kurt@roeckx.be>, Peter Hartley <pdh@utter.chaos.org.uk>,
10086     Steve Henson*
10087
10088  * Add RFC4507 support to OpenSSL. This includes the corrections in
10089    RFC4507bis. The encrypted ticket format is an encrypted encoded
10090    SSL_SESSION structure, that way new session features are automatically
10091    supported.
10092
10093    If a client application caches session in an SSL_SESSION structure
10094    support is transparent because tickets are now stored in the encoded
10095    SSL_SESSION.
10096
10097    The SSL_CTX structure automatically generates keys for ticket
10098    protection in servers so again support should be possible
10099    with no application modification.
10100
10101    If a client or server wishes to disable RFC4507 support then the option
10102    SSL_OP_NO_TICKET can be set.
10103
10104    Add a TLS extension debugging callback to allow the contents of any client
10105    or server extensions to be examined.
10106
10107    This work was sponsored by Google.
10108
10109    *Steve Henson*
10110
10111  * Add initial support for TLS extensions, specifically for the server_name
10112    extension so far.  The SSL_SESSION, SSL_CTX, and SSL data structures now
10113    have new members for a host name.  The SSL data structure has an
10114    additional member `SSL_CTX *initial_ctx` so that new sessions can be
10115    stored in that context to allow for session resumption, even after the
10116    SSL has been switched to a new SSL_CTX in reaction to a client's
10117    server_name extension.
10118
10119    New functions (subject to change):
10120
10121            SSL_get_servername()
10122            SSL_get_servername_type()
10123            SSL_set_SSL_CTX()
10124
10125    New CTRL codes and macros (subject to change):
10126
10127            SSL_CTRL_SET_TLSEXT_SERVERNAME_CB
10128                                - SSL_CTX_set_tlsext_servername_callback()
10129            SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG
10130                                     - SSL_CTX_set_tlsext_servername_arg()
10131            SSL_CTRL_SET_TLSEXT_HOSTNAME           - SSL_set_tlsext_host_name()
10132
10133    openssl s_client has a new '-servername ...' option.
10134
10135    openssl s_server has new options '-servername_host ...', '-cert2 ...',
10136    '-key2 ...', '-servername_fatal' (subject to change).  This allows
10137    testing the HostName extension for a specific single host name ('-cert'
10138    and '-key' remain fallbacks for handshakes without HostName
10139    negotiation).  If the unrecognized_name alert has to be sent, this by
10140    default is a warning; it becomes fatal with the '-servername_fatal'
10141    option.
10142
10143    *Peter Sylvester,  Remy Allais, Christophe Renou, Steve Henson*
10144
10145  * Add AES and SSE2 assembly language support to VC++ build.
10146
10147    *Steve Henson*
10148
10149  * Mitigate attack on final subtraction in Montgomery reduction.
10150
10151    *Andy Polyakov*
10152
10153  * Fix crypto/ec/ec_mult.c to work properly with scalars of value 0
10154    (which previously caused an internal error).
10155
10156    *Bodo Moeller*
10157
10158  * Squeeze another 10% out of IGE mode when in != out.
10159
10160    *Ben Laurie*
10161
10162  * AES IGE mode speedup.
10163
10164    *Dean Gaudet (Google)*
10165
10166  * Add the Korean symmetric 128-bit cipher SEED (see
10167    <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>) and
10168    add SEED ciphersuites from RFC 4162:
10169
10170            TLS_RSA_WITH_SEED_CBC_SHA      =  "SEED-SHA"
10171            TLS_DHE_DSS_WITH_SEED_CBC_SHA  =  "DHE-DSS-SEED-SHA"
10172            TLS_DHE_RSA_WITH_SEED_CBC_SHA  =  "DHE-RSA-SEED-SHA"
10173            TLS_DH_anon_WITH_SEED_CBC_SHA  =  "ADH-SEED-SHA"
10174
10175    To minimize changes between patchlevels in the OpenSSL 0.9.8
10176    series, SEED remains excluded from compilation unless OpenSSL
10177    is configured with 'enable-seed'.
10178
10179    *KISA, Bodo Moeller*
10180
10181  * Mitigate branch prediction attacks, which can be practical if a
10182    single processor is shared, allowing a spy process to extract
10183    information.  For detailed background information, see
10184    <http://eprint.iacr.org/2007/039> (O. Aciicmez, S. Gueron,
10185    J.-P. Seifert, "New Branch Prediction Vulnerabilities in OpenSSL
10186    and Necessary Software Countermeasures").  The core of the change
10187    are new versions BN_div_no_branch() and
10188    BN_mod_inverse_no_branch() of BN_div() and BN_mod_inverse(),
10189    respectively, which are slower, but avoid the security-relevant
10190    conditional branches.  These are automatically called by BN_div()
10191    and BN_mod_inverse() if the flag BN_FLG_CONSTTIME is set for one
10192    of the input BIGNUMs.  Also, BN_is_bit_set() has been changed to
10193    remove a conditional branch.
10194
10195    BN_FLG_CONSTTIME is the new name for the previous
10196    BN_FLG_EXP_CONSTTIME flag, since it now affects more than just
10197    modular exponentiation.  (Since OpenSSL 0.9.7h, setting this flag
10198    in the exponent causes BN_mod_exp_mont() to use the alternative
10199    implementation in BN_mod_exp_mont_consttime().)  The old name
10200    remains as a deprecated alias.
10201
10202    Similarly, RSA_FLAG_NO_EXP_CONSTTIME is replaced by a more general
10203    RSA_FLAG_NO_CONSTTIME flag since the RSA implementation now uses
10204    constant-time implementations for more than just exponentiation.
10205    Here too the old name is kept as a deprecated alias.
10206
10207    BN_BLINDING_new() will now use BN_dup() for the modulus so that
10208    the BN_BLINDING structure gets an independent copy of the
10209    modulus.  This means that the previous `BIGNUM *m` argument to
10210    BN_BLINDING_new() and to BN_BLINDING_create_param() now
10211    essentially becomes `const BIGNUM *m`, although we can't actually
10212    change this in the header file before 0.9.9.  It allows
10213    RSA_setup_blinding() to use BN_with_flags() on the modulus to
10214    enable BN_FLG_CONSTTIME.
10215
10216    *Matthew D Wood (Intel Corp)*
10217
10218  * In the SSL/TLS server implementation, be strict about session ID
10219    context matching (which matters if an application uses a single
10220    external cache for different purposes).  Previously,
10221    out-of-context reuse was forbidden only if SSL_VERIFY_PEER was
10222    set.  This did ensure strict client verification, but meant that,
10223    with applications using a single external cache for quite
10224    different requirements, clients could circumvent ciphersuite
10225    restrictions for a given session ID context by starting a session
10226    in a different context.
10227
10228    *Bodo Moeller*
10229
10230  * Include "!eNULL" in SSL_DEFAULT_CIPHER_LIST to make sure that
10231    a ciphersuite string such as "DEFAULT:RSA" cannot enable
10232    authentication-only ciphersuites.
10233
10234    *Bodo Moeller*
10235
10236  * Update the SSL_get_shared_ciphers() fix CVE-2006-3738 which was
10237    not complete and could lead to a possible single byte overflow
10238    ([CVE-2007-5135]) [Ben Laurie]
10239
10240 ### Changes between 0.9.8d and 0.9.8e  [23 Feb 2007]
10241
10242  * Since AES128 and AES256 (and similarly Camellia128 and
10243    Camellia256) share a single mask bit in the logic of
10244    ssl/ssl_ciph.c, the code for masking out disabled ciphers needs a
10245    kludge to work properly if AES128 is available and AES256 isn't
10246    (or if Camellia128 is available and Camellia256 isn't).
10247
10248    *Victor Duchovni*
10249
10250  * Fix the BIT STRING encoding generated by crypto/ec/ec_asn1.c
10251    (within i2d_ECPrivateKey, i2d_ECPKParameters, i2d_ECParameters):
10252    When a point or a seed is encoded in a BIT STRING, we need to
10253    prevent the removal of trailing zero bits to get the proper DER
10254    encoding.  (By default, crypto/asn1/a_bitstr.c assumes the case
10255    of a NamedBitList, for which trailing 0 bits need to be removed.)
10256
10257    *Bodo Moeller*
10258
10259  * Have SSL/TLS server implementation tolerate "mismatched" record
10260    protocol version while receiving ClientHello even if the
10261    ClientHello is fragmented.  (The server can't insist on the
10262    particular protocol version it has chosen before the ServerHello
10263    message has informed the client about his choice.)
10264
10265    *Bodo Moeller*
10266
10267  * Add RFC 3779 support.
10268
10269    *Rob Austein for ARIN, Ben Laurie*
10270
10271  * Load error codes if they are not already present instead of using a
10272    static variable. This allows them to be cleanly unloaded and reloaded.
10273    Improve header file function name parsing.
10274
10275    *Steve Henson*
10276
10277  * extend SMTP and IMAP protocol emulation in s_client to use EHLO
10278    or CAPABILITY handshake as required by RFCs.
10279
10280    *Goetz Babin-Ebell*
10281
10282 ### Changes between 0.9.8c and 0.9.8d  [28 Sep 2006]
10283
10284  * Introduce limits to prevent malicious keys being able to
10285    cause a denial of service.  ([CVE-2006-2940])
10286
10287    *Steve Henson, Bodo Moeller*
10288
10289  * Fix ASN.1 parsing of certain invalid structures that can result
10290    in a denial of service.  ([CVE-2006-2937])  [Steve Henson]
10291
10292  * Fix buffer overflow in SSL_get_shared_ciphers() function.
10293    ([CVE-2006-3738]) [Tavis Ormandy and Will Drewry, Google Security Team]
10294
10295  * Fix SSL client code which could crash if connecting to a
10296    malicious SSLv2 server.  ([CVE-2006-4343])
10297
10298    *Tavis Ormandy and Will Drewry, Google Security Team*
10299
10300  * Since 0.9.8b, ciphersuite strings naming explicit ciphersuites
10301    match only those.  Before that, "AES256-SHA" would be interpreted
10302    as a pattern and match "AES128-SHA" too (since AES128-SHA got
10303    the same strength classification in 0.9.7h) as we currently only
10304    have a single AES bit in the ciphersuite description bitmap.
10305    That change, however, also applied to ciphersuite strings such as
10306    "RC4-MD5" that intentionally matched multiple ciphersuites --
10307    namely, SSL 2.0 ciphersuites in addition to the more common ones
10308    from SSL 3.0/TLS 1.0.
10309
10310    So we change the selection algorithm again: Naming an explicit
10311    ciphersuite selects this one ciphersuite, and any other similar
10312    ciphersuite (same bitmap) from *other* protocol versions.
10313    Thus, "RC4-MD5" again will properly select both the SSL 2.0
10314    ciphersuite and the SSL 3.0/TLS 1.0 ciphersuite.
10315
10316    Since SSL 2.0 does not have any ciphersuites for which the
10317    128/256 bit distinction would be relevant, this works for now.
10318    The proper fix will be to use different bits for AES128 and
10319    AES256, which would have avoided the problems from the beginning;
10320    however, bits are scarce, so we can only do this in a new release
10321    (not just a patchlevel) when we can change the SSL_CIPHER
10322    definition to split the single 'unsigned long mask' bitmap into
10323    multiple values to extend the available space.
10324
10325    *Bodo Moeller*
10326
10327 ### Changes between 0.9.8b and 0.9.8c  [05 Sep 2006]
10328
10329  * Avoid PKCS #1 v1.5 signature attack discovered by Daniel Bleichenbacher
10330    ([CVE-2006-4339])  [Ben Laurie and Google Security Team]
10331
10332  * Add AES IGE and biIGE modes.
10333
10334    *Ben Laurie*
10335
10336  * Change the Unix randomness entropy gathering to use poll() when
10337    possible instead of select(), since the latter has some
10338    undesirable limitations.
10339
10340    *Darryl Miles via Richard Levitte and Bodo Moeller*
10341
10342  * Disable "ECCdraft" ciphersuites more thoroughly.  Now special
10343    treatment in ssl/ssl_ciph.s makes sure that these ciphersuites
10344    cannot be implicitly activated as part of, e.g., the "AES" alias.
10345    However, please upgrade to OpenSSL 0.9.9[-dev] for
10346    non-experimental use of the ECC ciphersuites to get TLS extension
10347    support, which is required for curve and point format negotiation
10348    to avoid potential handshake problems.
10349
10350    *Bodo Moeller*
10351
10352  * Disable rogue ciphersuites:
10353
10354    - SSLv2 0x08 0x00 0x80 ("RC4-64-MD5")
10355    - SSLv3/TLSv1 0x00 0x61 ("EXP1024-RC2-CBC-MD5")
10356    - SSLv3/TLSv1 0x00 0x60 ("EXP1024-RC4-MD5")
10357
10358    The latter two were purportedly from
10359    draft-ietf-tls-56-bit-ciphersuites-0[01].txt, but do not really
10360    appear there.
10361
10362    Also deactivate the remaining ciphersuites from
10363    draft-ietf-tls-56-bit-ciphersuites-01.txt.  These are just as
10364    unofficial, and the ID has long expired.
10365
10366    *Bodo Moeller*
10367
10368  * Fix RSA blinding Heisenbug (problems sometimes occurred on
10369    dual-core machines) and other potential thread-safety issues.
10370
10371    *Bodo Moeller*
10372
10373  * Add the symmetric cipher Camellia (128-bit, 192-bit, 256-bit key
10374    versions), which is now available for royalty-free use
10375    (see <http://info.isl.ntt.co.jp/crypt/eng/info/chiteki.html>).
10376    Also, add Camellia TLS ciphersuites from RFC 4132.
10377
10378    To minimize changes between patchlevels in the OpenSSL 0.9.8
10379    series, Camellia remains excluded from compilation unless OpenSSL
10380    is configured with 'enable-camellia'.
10381
10382    *NTT*
10383
10384  * Disable the padding bug check when compression is in use. The padding
10385    bug check assumes the first packet is of even length, this is not
10386    necessarily true if compression is enabled and can result in false
10387    positives causing handshake failure. The actual bug test is ancient
10388    code so it is hoped that implementations will either have fixed it by
10389    now or any which still have the bug do not support compression.
10390
10391    *Steve Henson*
10392
10393 ### Changes between 0.9.8a and 0.9.8b  [04 May 2006]
10394
10395  * When applying a cipher rule check to see if string match is an explicit
10396    cipher suite and only match that one cipher suite if it is.
10397
10398    *Steve Henson*
10399
10400  * Link in manifests for VC++ if needed.
10401
10402    *Austin Ziegler <halostatue@gmail.com>*
10403
10404  * Update support for ECC-based TLS ciphersuites according to
10405    draft-ietf-tls-ecc-12.txt with proposed changes (but without
10406    TLS extensions, which are supported starting with the 0.9.9
10407    branch, not in the OpenSSL 0.9.8 branch).
10408
10409    *Douglas Stebila*
10410
10411  * New functions EVP_CIPHER_CTX_new() and EVP_CIPHER_CTX_free() to support
10412    opaque EVP_CIPHER_CTX handling.
10413
10414    *Steve Henson*
10415
10416  * Fixes and enhancements to zlib compression code. We now only use
10417    "zlib1.dll" and use the default `__cdecl` calling convention on Win32
10418    to conform with the standards mentioned here:
10419    <http://www.zlib.net/DLL_FAQ.txt>
10420    Static zlib linking now works on Windows and the new --with-zlib-include
10421    --with-zlib-lib options to Configure can be used to supply the location
10422    of the headers and library. Gracefully handle case where zlib library
10423    can't be loaded.
10424
10425    *Steve Henson*
10426
10427  * Several fixes and enhancements to the OID generation code. The old code
10428    sometimes allowed invalid OIDs (1.X for X >= 40 for example), couldn't
10429    handle numbers larger than ULONG_MAX, truncated printing and had a
10430    non standard OBJ_obj2txt() behaviour.
10431
10432    *Steve Henson*
10433
10434  * Add support for building of engines under engine/ as shared libraries
10435    under VC++ build system.
10436
10437    *Steve Henson*
10438
10439  * Corrected the numerous bugs in the Win32 path splitter in DSO.
10440    Hopefully, we will not see any false combination of paths any more.
10441
10442    *Richard Levitte*
10443
10444 ### Changes between 0.9.8 and 0.9.8a  [11 Oct 2005]
10445
10446  * Remove the functionality of SSL_OP_MSIE_SSLV2_RSA_PADDING
10447    (part of SSL_OP_ALL).  This option used to disable the
10448    countermeasure against man-in-the-middle protocol-version
10449    rollback in the SSL 2.0 server implementation, which is a bad
10450    idea.  ([CVE-2005-2969])
10451
10452    *Bodo Moeller; problem pointed out by Yutaka Oiwa (Research Center
10453    for Information Security, National Institute of Advanced Industrial
10454    Science and Technology [AIST], Japan)*
10455
10456  * Add two function to clear and return the verify parameter flags.
10457
10458    *Steve Henson*
10459
10460  * Keep cipherlists sorted in the source instead of sorting them at
10461    runtime, thus removing the need for a lock.
10462
10463    *Nils Larsch*
10464
10465  * Avoid some small subgroup attacks in Diffie-Hellman.
10466
10467    *Nick Mathewson and Ben Laurie*
10468
10469  * Add functions for well-known primes.
10470
10471    *Nick Mathewson*
10472
10473  * Extended Windows CE support.
10474
10475    *Satoshi Nakamura and Andy Polyakov*
10476
10477  * Initialize SSL_METHOD structures at compile time instead of during
10478    runtime, thus removing the need for a lock.
10479
10480    *Steve Henson*
10481
10482  * Make PKCS7_decrypt() work even if no certificate is supplied by
10483    attempting to decrypt each encrypted key in turn. Add support to
10484    smime utility.
10485
10486    *Steve Henson*
10487
10488 ### Changes between 0.9.7h and 0.9.8  [05 Jul 2005]
10489
10490 [NB: OpenSSL 0.9.7i and later 0.9.7 patch levels were released after
10491 OpenSSL 0.9.8.]
10492
10493  * Add libcrypto.pc and libssl.pc for those who feel they need them.
10494
10495    *Richard Levitte*
10496
10497  * Change CA.sh and CA.pl so they don't bundle the CSR and the private
10498    key into the same file any more.
10499
10500    *Richard Levitte*
10501
10502  * Add initial support for Win64, both IA64 and AMD64/x64 flavors.
10503
10504    *Andy Polyakov*
10505
10506  * Add -utf8 command line and config file option to 'ca'.
10507
10508    *Stefan <stf@udoma.org*
10509
10510  * Removed the macro des_crypt(), as it seems to conflict with some
10511    libraries.  Use DES_crypt().
10512
10513    *Richard Levitte*
10514
10515  * Correct naming of the 'chil' and '4758cca' ENGINEs. This
10516    involves renaming the source and generated shared-libs for
10517    both. The engines will accept the corrected or legacy ids
10518    ('ncipher' and '4758_cca' respectively) when binding. NB,
10519    this only applies when building 'shared'.
10520
10521    *Corinna Vinschen <vinschen@redhat.com> and Geoff Thorpe*
10522
10523  * Add attribute functions to EVP_PKEY structure. Modify
10524    PKCS12_create() to recognize a CSP name attribute and
10525    use it. Make -CSP option work again in pkcs12 utility.
10526
10527    *Steve Henson*
10528
10529  * Add new functionality to the bn blinding code:
10530    - automatic re-creation of the BN_BLINDING parameters after
10531      a fixed number of uses (currently 32)
10532    - add new function for parameter creation
10533    - introduce flags to control the update behaviour of the
10534      BN_BLINDING parameters
10535    - hide BN_BLINDING structure
10536    Add a second BN_BLINDING slot to the RSA structure to improve
10537    performance when a single RSA object is shared among several
10538    threads.
10539
10540    *Nils Larsch*
10541
10542  * Add support for DTLS.
10543
10544    *Nagendra Modadugu <nagendra@cs.stanford.edu> and Ben Laurie*
10545
10546  * Add support for DER encoded private keys (SSL_FILETYPE_ASN1)
10547    to SSL_CTX_use_PrivateKey_file() and SSL_use_PrivateKey_file()
10548
10549    *Walter Goulet*
10550
10551  * Remove buggy and incomplete DH cert support from
10552    ssl/ssl_rsa.c and ssl/s3_both.c
10553
10554    *Nils Larsch*
10555
10556  * Use SHA-1 instead of MD5 as the default digest algorithm for
10557    the `apps/openssl` commands.
10558
10559    *Nils Larsch*
10560
10561  * Compile clean with "-Wall -Wmissing-prototypes
10562    -Wstrict-prototypes -Wmissing-declarations -Werror". Currently
10563    DEBUG_SAFESTACK must also be set.
10564
10565    *Ben Laurie*
10566
10567  * Change ./Configure so that certain algorithms can be disabled by default.
10568    The new counterpiece to "no-xxx" is "enable-xxx".
10569
10570    The patented RC5 and MDC2 algorithms will now be disabled unless
10571    "enable-rc5" and "enable-mdc2", respectively, are specified.
10572
10573    (IDEA remains enabled despite being patented.  This is because IDEA
10574    is frequently required for interoperability, and there is no license
10575    fee for non-commercial use.  As before, "no-idea" can be used to
10576    avoid this algorithm.)
10577
10578    *Bodo Moeller*
10579
10580  * Add processing of proxy certificates (see RFC 3820).  This work was
10581    sponsored by KTH (The Royal Institute of Technology in Stockholm) and
10582    EGEE (Enabling Grids for E-science in Europe).
10583
10584    *Richard Levitte*
10585
10586  * RC4 performance overhaul on modern architectures/implementations, such
10587    as Intel P4, IA-64 and AMD64.
10588
10589    *Andy Polyakov*
10590
10591  * New utility extract-section.pl. This can be used specify an alternative
10592    section number in a pod file instead of having to treat each file as
10593    a separate case in Makefile. This can be done by adding two lines to the
10594    pod file:
10595
10596    =for comment openssl_section:XXX
10597
10598    The blank line is mandatory.
10599
10600    *Steve Henson*
10601
10602  * New arguments -certform, -keyform and -pass for s_client and s_server
10603    to allow alternative format key and certificate files and passphrase
10604    sources.
10605
10606    *Steve Henson*
10607
10608  * New structure X509_VERIFY_PARAM which combines current verify parameters,
10609    update associated structures and add various utility functions.
10610
10611    Add new policy related verify parameters, include policy checking in
10612    standard verify code. Enhance 'smime' application with extra parameters
10613    to support policy checking and print out.
10614
10615    *Steve Henson*
10616
10617  * Add a new engine to support VIA PadLock ACE extensions in the VIA C3
10618    Nehemiah processors. These extensions support AES encryption in hardware
10619    as well as RNG (though RNG support is currently disabled).
10620
10621    *Michal Ludvig <michal@logix.cz>, with help from Andy Polyakov*
10622
10623  * Deprecate `BN_[get|set]_params()` functions (they were ignored internally).
10624
10625    *Geoff Thorpe*
10626
10627  * New FIPS 180-2 algorithms, SHA-224/-256/-384/-512 are implemented.
10628
10629    *Andy Polyakov and a number of other people*
10630
10631  * Improved PowerPC platform support. Most notably BIGNUM assembler
10632    implementation contributed by IBM.
10633
10634    *Suresh Chari, Peter Waltenberg, Andy Polyakov*
10635
10636  * The new 'RSA_generate_key_ex' function now takes a BIGNUM for the public
10637    exponent rather than 'unsigned long'. There is a corresponding change to
10638    the new 'rsa_keygen' element of the RSA_METHOD structure.
10639
10640    *Jelte Jansen, Geoff Thorpe*
10641
10642  * Functionality for creating the initial serial number file is now
10643    moved from CA.pl to the 'ca' utility with a new option -create_serial.
10644
10645    (Before OpenSSL 0.9.7e, CA.pl used to initialize the serial
10646    number file to 1, which is bound to cause problems.  To avoid
10647    the problems while respecting compatibility between different 0.9.7
10648    patchlevels, 0.9.7e  employed 'openssl x509 -next_serial' in
10649    CA.pl for serial number initialization.  With the new release 0.9.8,
10650    we can fix the problem directly in the 'ca' utility.)
10651
10652    *Steve Henson*
10653
10654  * Reduced header interdependencies by declaring more opaque objects in
10655    ossl_typ.h. As a consequence, including some headers (eg. engine.h) will
10656    give fewer recursive includes, which could break lazy source code - so
10657    this change is covered by the OPENSSL_NO_DEPRECATED symbol. As always,
10658    developers should define this symbol when building and using openssl to
10659    ensure they track the recommended behaviour, interfaces, [etc], but
10660    backwards-compatible behaviour prevails when this isn't defined.
10661
10662    *Geoff Thorpe*
10663
10664  * New function X509_POLICY_NODE_print() which prints out policy nodes.
10665
10666    *Steve Henson*
10667
10668  * Add new EVP function EVP_CIPHER_CTX_rand_key and associated functionality.
10669    This will generate a random key of the appropriate length based on the
10670    cipher context. The EVP_CIPHER can provide its own random key generation
10671    routine to support keys of a specific form. This is used in the des and
10672    3des routines to generate a key of the correct parity. Update S/MIME
10673    code to use new functions and hence generate correct parity DES keys.
10674    Add EVP_CHECK_DES_KEY #define to return an error if the key is not
10675    valid (weak or incorrect parity).
10676
10677    *Steve Henson*
10678
10679  * Add a local set of CRLs that can be used by X509_verify_cert() as well
10680    as looking them up. This is useful when the verified structure may contain
10681    CRLs, for example PKCS#7 signedData. Modify PKCS7_verify() to use any CRLs
10682    present unless the new PKCS7_NO_CRL flag is asserted.
10683
10684    *Steve Henson*
10685
10686  * Extend ASN1 oid configuration module. It now additionally accepts the
10687    syntax:
10688
10689    shortName = some long name, 1.2.3.4
10690
10691    *Steve Henson*
10692
10693  * Reimplemented the BN_CTX implementation. There is now no more static
10694    limitation on the number of variables it can handle nor the depth of the
10695    "stack" handling for BN_CTX_start()/BN_CTX_end() pairs. The stack
10696    information can now expand as required, and rather than having a single
10697    static array of bignums, BN_CTX now uses a linked-list of such arrays
10698    allowing it to expand on demand whilst maintaining the usefulness of
10699    BN_CTX's "bundling".
10700
10701    *Geoff Thorpe*
10702
10703  * Add a missing BN_CTX parameter to the 'rsa_mod_exp' callback in RSA_METHOD
10704    to allow all RSA operations to function using a single BN_CTX.
10705
10706    *Geoff Thorpe*
10707
10708  * Preliminary support for certificate policy evaluation and checking. This
10709    is initially intended to pass the tests outlined in "Conformance Testing
10710    of Relying Party Client Certificate Path Processing Logic" v1.07.
10711
10712    *Steve Henson*
10713
10714  * bn_dup_expand() has been deprecated, it was introduced in 0.9.7 and
10715    remained unused and not that useful. A variety of other little bignum
10716    tweaks and fixes have also been made continuing on from the audit (see
10717    below).
10718
10719    *Geoff Thorpe*
10720
10721  * Constify all or almost all d2i, c2i, s2i and r2i functions, along with
10722    associated ASN1, EVP and SSL functions and old ASN1 macros.
10723
10724    *Richard Levitte*
10725
10726  * BN_zero() only needs to set 'top' and 'neg' to zero for correct results,
10727    and this should never fail. So the return value from the use of
10728    BN_set_word() (which can fail due to needless expansion) is now deprecated;
10729    if OPENSSL_NO_DEPRECATED is defined, BN_zero() is a void macro.
10730
10731    *Geoff Thorpe*
10732
10733  * BN_CTX_get() should return zero-valued bignums, providing the same
10734    initialised value as BN_new().
10735
10736    *Geoff Thorpe, suggested by Ulf Möller*
10737
10738  * Support for inhibitAnyPolicy certificate extension.
10739
10740    *Steve Henson*
10741
10742  * An audit of the BIGNUM code is underway, for which debugging code is
10743    enabled when BN_DEBUG is defined. This makes stricter enforcements on what
10744    is considered valid when processing BIGNUMs, and causes execution to
10745    assert() when a problem is discovered. If BN_DEBUG_RAND is defined,
10746    further steps are taken to deliberately pollute unused data in BIGNUM
10747    structures to try and expose faulty code further on. For now, openssl will
10748    (in its default mode of operation) continue to tolerate the inconsistent
10749    forms that it has tolerated in the past, but authors and packagers should
10750    consider trying openssl and their own applications when compiled with
10751    these debugging symbols defined. It will help highlight potential bugs in
10752    their own code, and will improve the test coverage for OpenSSL itself. At
10753    some point, these tighter rules will become openssl's default to improve
10754    maintainability, though the assert()s and other overheads will remain only
10755    in debugging configurations. See bn.h for more details.
10756
10757    *Geoff Thorpe, Nils Larsch, Ulf Möller*
10758
10759  * BN_CTX_init() has been deprecated, as BN_CTX is an opaque structure
10760    that can only be obtained through BN_CTX_new() (which implicitly
10761    initialises it). The presence of this function only made it possible
10762    to overwrite an existing structure (and cause memory leaks).
10763
10764    *Geoff Thorpe*
10765
10766  * Because of the callback-based approach for implementing LHASH as a
10767    template type, lh_insert() adds opaque objects to hash-tables and
10768    lh_doall() or lh_doall_arg() are typically used with a destructor callback
10769    to clean up those corresponding objects before destroying the hash table
10770    (and losing the object pointers). So some over-zealous constifications in
10771    LHASH have been relaxed so that lh_insert() does not take (nor store) the
10772    objects as "const" and the `lh_doall[_arg]` callback wrappers are not
10773    prototyped to have "const" restrictions on the object pointers they are
10774    given (and so aren't required to cast them away any more).
10775
10776    *Geoff Thorpe*
10777
10778  * The tmdiff.h API was so ugly and minimal that our own timing utility
10779    (speed) prefers to use its own implementation. The two implementations
10780    haven't been consolidated as yet (volunteers?) but the tmdiff API has had
10781    its object type properly exposed (MS_TM) instead of casting to/from
10782    `char *`. This may still change yet if someone realises MS_TM and
10783    `ms_time_***`
10784    aren't necessarily the greatest nomenclatures - but this is what was used
10785    internally to the implementation so I've used that for now.
10786
10787    *Geoff Thorpe*
10788
10789  * Ensure that deprecated functions do not get compiled when
10790    OPENSSL_NO_DEPRECATED is defined. Some "openssl" subcommands and a few of
10791    the self-tests were still using deprecated key-generation functions so
10792    these have been updated also.
10793
10794    *Geoff Thorpe*
10795
10796  * Reorganise PKCS#7 code to separate the digest location functionality
10797    into PKCS7_find_digest(), digest addition into PKCS7_bio_add_digest().
10798    New function PKCS7_set_digest() to set the digest type for PKCS#7
10799    digestedData type. Add additional code to correctly generate the
10800    digestedData type and add support for this type in PKCS7 initialization
10801    functions.
10802
10803    *Steve Henson*
10804
10805  * New function PKCS7_set0_type_other() this initializes a PKCS7
10806    structure of type "other".
10807
10808    *Steve Henson*
10809
10810  * Fix prime generation loop in crypto/bn/bn_prime.pl by making
10811    sure the loop does correctly stop and breaking ("division by zero")
10812    modulus operations are not performed. The (pre-generated) prime
10813    table crypto/bn/bn_prime.h was already correct, but it could not be
10814    re-generated on some platforms because of the "division by zero"
10815    situation in the script.
10816
10817    *Ralf S. Engelschall*
10818
10819  * Update support for ECC-based TLS ciphersuites according to
10820    draft-ietf-tls-ecc-03.txt: the KDF1 key derivation function with
10821    SHA-1 now is only used for "small" curves (where the
10822    representation of a field element takes up to 24 bytes); for
10823    larger curves, the field element resulting from ECDH is directly
10824    used as premaster secret.
10825
10826    *Douglas Stebila (Sun Microsystems Laboratories)*
10827
10828  * Add code for kP+lQ timings to crypto/ec/ectest.c, and add SEC2
10829    curve secp160r1 to the tests.
10830
10831    *Douglas Stebila (Sun Microsystems Laboratories)*
10832
10833  * Add the possibility to load symbols globally with DSO.
10834
10835    *Götz Babin-Ebell <babin-ebell@trustcenter.de> via Richard Levitte*
10836
10837  * Add the functions ERR_set_mark() and ERR_pop_to_mark() for better
10838    control of the error stack.
10839
10840    *Richard Levitte*
10841
10842  * Add support for STORE in ENGINE.
10843
10844    *Richard Levitte*
10845
10846  * Add the STORE type.  The intention is to provide a common interface
10847    to certificate and key stores, be they simple file-based stores, or
10848    HSM-type store, or LDAP stores, or...
10849    NOTE: The code is currently UNTESTED and isn't really used anywhere.
10850
10851    *Richard Levitte*
10852
10853  * Add a generic structure called OPENSSL_ITEM.  This can be used to
10854    pass a list of arguments to any function as well as provide a way
10855    for a function to pass data back to the caller.
10856
10857    *Richard Levitte*
10858
10859  * Add the functions BUF_strndup() and BUF_memdup().  BUF_strndup()
10860    works like BUF_strdup() but can be used to duplicate a portion of
10861    a string.  The copy gets NUL-terminated.  BUF_memdup() duplicates
10862    a memory area.
10863
10864    *Richard Levitte*
10865
10866  * Add the function sk_find_ex() which works like sk_find(), but will
10867    return an index to an element even if an exact match couldn't be
10868    found.  The index is guaranteed to point at the element where the
10869    searched-for key would be inserted to preserve sorting order.
10870
10871    *Richard Levitte*
10872
10873  * Add the function OBJ_bsearch_ex() which works like OBJ_bsearch() but
10874    takes an extra flags argument for optional functionality.  Currently,
10875    the following flags are defined:
10876
10877       OBJ_BSEARCH_VALUE_ON_NOMATCH
10878       This one gets OBJ_bsearch_ex() to return a pointer to the first
10879       element where the comparing function returns a negative or zero
10880       number.
10881
10882       OBJ_BSEARCH_FIRST_VALUE_ON_MATCH
10883       This one gets OBJ_bsearch_ex() to return a pointer to the first
10884       element where the comparing function returns zero.  This is useful
10885       if there are more than one element where the comparing function
10886       returns zero.
10887
10888    *Richard Levitte*
10889
10890  * Make it possible to create self-signed certificates with 'openssl ca'
10891    in such a way that the self-signed certificate becomes part of the
10892    CA database and uses the same mechanisms for serial number generation
10893    as all other certificate signing.  The new flag '-selfsign' enables
10894    this functionality.  Adapt CA.sh and CA.pl.in.
10895
10896    *Richard Levitte*
10897
10898  * Add functionality to check the public key of a certificate request
10899    against a given private.  This is useful to check that a certificate
10900    request can be signed by that key (self-signing).
10901
10902    *Richard Levitte*
10903
10904  * Make it possible to have multiple active certificates with the same
10905    subject in the CA index file.  This is done only if the keyword
10906    'unique_subject' is set to 'no' in the main CA section (default
10907    if 'CA_default') of the configuration file.  The value is saved
10908    with the database itself in a separate index attribute file,
10909    named like the index file with '.attr' appended to the name.
10910
10911    *Richard Levitte*
10912
10913  * Generate multi-valued AVAs using '+' notation in config files for
10914    req and dirName.
10915
10916    *Steve Henson*
10917
10918  * Support for nameConstraints certificate extension.
10919
10920    *Steve Henson*
10921
10922  * Support for policyConstraints certificate extension.
10923
10924    *Steve Henson*
10925
10926  * Support for policyMappings certificate extension.
10927
10928    *Steve Henson*
10929
10930  * Make sure the default DSA_METHOD implementation only uses its
10931    dsa_mod_exp() and/or bn_mod_exp() handlers if they are non-NULL,
10932    and change its own handlers to be NULL so as to remove unnecessary
10933    indirection. This lets alternative implementations fallback to the
10934    default implementation more easily.
10935
10936    *Geoff Thorpe*
10937
10938  * Support for directoryName in GeneralName related extensions
10939    in config files.
10940
10941    *Steve Henson*
10942
10943  * Make it possible to link applications using Makefile.shared.
10944    Make that possible even when linking against static libraries!
10945
10946    *Richard Levitte*
10947
10948  * Support for single pass processing for S/MIME signing. This now
10949    means that S/MIME signing can be done from a pipe, in addition
10950    cleartext signing (multipart/signed type) is effectively streaming
10951    and the signed data does not need to be all held in memory.
10952
10953    This is done with a new flag PKCS7_STREAM. When this flag is set
10954    PKCS7_sign() only initializes the PKCS7 structure and the actual signing
10955    is done after the data is output (and digests calculated) in
10956    SMIME_write_PKCS7().
10957
10958    *Steve Henson*
10959
10960  * Add full support for -rpath/-R, both in shared libraries and
10961    applications, at least on the platforms where it's known how
10962    to do it.
10963
10964    *Richard Levitte*
10965
10966  * In crypto/ec/ec_mult.c, implement fast point multiplication with
10967    precomputation, based on wNAF splitting: EC_GROUP_precompute_mult()
10968    will now compute a table of multiples of the generator that
10969    makes subsequent invocations of EC_POINTs_mul() or EC_POINT_mul()
10970    faster (notably in the case of a single point multiplication,
10971    scalar * generator).
10972
10973    *Nils Larsch, Bodo Moeller*
10974
10975  * IPv6 support for certificate extensions. The various extensions
10976    which use the IP:a.b.c.d can now take IPv6 addresses using the
10977    formats of RFC1884 2.2 . IPv6 addresses are now also displayed
10978    correctly.
10979
10980    *Steve Henson*
10981
10982  * Added an ENGINE that implements RSA by performing private key
10983    exponentiations with the GMP library. The conversions to and from
10984    GMP's mpz_t format aren't optimised nor are any montgomery forms
10985    cached, and on x86 it appears OpenSSL's own performance has caught up.
10986    However there are likely to be other architectures where GMP could
10987    provide a boost. This ENGINE is not built in by default, but it can be
10988    specified at Configure time and should be accompanied by the necessary
10989    linker additions, eg;
10990            ./config -DOPENSSL_USE_GMP -lgmp
10991
10992    *Geoff Thorpe*
10993
10994  * "openssl engine" will not display ENGINE/DSO load failure errors when
10995    testing availability of engines with "-t" - the old behaviour is
10996    produced by increasing the feature's verbosity with "-tt".
10997
10998    *Geoff Thorpe*
10999
11000  * ECDSA routines: under certain error conditions uninitialized BN objects
11001    could be freed. Solution: make sure initialization is performed early
11002    enough. (Reported and fix supplied by Nils Larsch <nla@trustcenter.de>
11003    via PR#459)
11004
11005    *Lutz Jaenicke*
11006
11007  * Key-generation can now be implemented in RSA_METHOD, DSA_METHOD
11008    and DH_METHOD (eg. by ENGINE implementations) to override the normal
11009    software implementations. For DSA and DH, parameter generation can
11010    also be overridden by providing the appropriate method callbacks.
11011
11012    *Geoff Thorpe*
11013
11014  * Change the "progress" mechanism used in key-generation and
11015    primality testing to functions that take a new BN_GENCB pointer in
11016    place of callback/argument pairs. The new API functions have `_ex`
11017    postfixes and the older functions are reimplemented as wrappers for
11018    the new ones. The OPENSSL_NO_DEPRECATED symbol can be used to hide
11019    declarations of the old functions to help (graceful) attempts to
11020    migrate to the new functions. Also, the new key-generation API
11021    functions operate on a caller-supplied key-structure and return
11022    success/failure rather than returning a key or NULL - this is to
11023    help make "keygen" another member function of RSA_METHOD etc.
11024
11025    Example for using the new callback interface:
11026
11027            int (*my_callback)(int a, int b, BN_GENCB *cb) = ...;
11028            void *my_arg = ...;
11029            BN_GENCB my_cb;
11030
11031            BN_GENCB_set(&my_cb, my_callback, my_arg);
11032
11033            return BN_is_prime_ex(some_bignum, BN_prime_checks, NULL, &cb);
11034            /* For the meaning of a, b in calls to my_callback(), see the
11035             * documentation of the function that calls the callback.
11036             * cb will point to my_cb; my_arg can be retrieved as cb->arg.
11037             * my_callback should return 1 if it wants BN_is_prime_ex()
11038             * to continue, or 0 to stop.
11039             */
11040
11041    *Geoff Thorpe*
11042
11043  * Change the ZLIB compression method to be stateful, and make it
11044    available to TLS with the number defined in
11045    draft-ietf-tls-compression-04.txt.
11046
11047    *Richard Levitte*
11048
11049  * Add the ASN.1 structures and functions for CertificatePair, which
11050    is defined as follows (according to X.509_4thEditionDraftV6.pdf):
11051
11052            CertificatePair ::= SEQUENCE {
11053               forward         [0]     Certificate OPTIONAL,
11054               reverse         [1]     Certificate OPTIONAL,
11055               -- at least one of the pair shall be present -- }
11056
11057    Also implement the PEM functions to read and write certificate
11058    pairs, and defined the PEM tag as "CERTIFICATE PAIR".
11059
11060    This needed to be defined, mostly for the sake of the LDAP
11061    attribute crossCertificatePair, but may prove useful elsewhere as
11062    well.
11063
11064    *Richard Levitte*
11065
11066  * Make it possible to inhibit symlinking of shared libraries in
11067    Makefile.shared, for Cygwin's sake.
11068
11069    *Richard Levitte*
11070
11071  * Extend the BIGNUM API by creating a function
11072            void BN_set_negative(BIGNUM *a, int neg);
11073    and a macro that behave like
11074            int  BN_is_negative(const BIGNUM *a);
11075
11076    to avoid the need to access 'a->neg' directly in applications.
11077
11078    *Nils Larsch*
11079
11080  * Implement fast modular reduction for pseudo-Mersenne primes
11081    used in NIST curves (crypto/bn/bn_nist.c, crypto/ec/ecp_nist.c).
11082    EC_GROUP_new_curve_GFp() will now automatically use this
11083    if applicable.
11084
11085    *Nils Larsch <nla@trustcenter.de>*
11086
11087  * Add new lock type (CRYPTO_LOCK_BN).
11088
11089    *Bodo Moeller*
11090
11091  * Change the ENGINE framework to automatically load engines
11092    dynamically from specific directories unless they could be
11093    found to already be built in or loaded.  Move all the
11094    current engines except for the cryptodev one to a new
11095    directory engines/.
11096    The engines in engines/ are built as shared libraries if
11097    the "shared" options was given to ./Configure or ./config.
11098    Otherwise, they are inserted in libcrypto.a.
11099    /usr/local/ssl/engines is the default directory for dynamic
11100    engines, but that can be overridden at configure time through
11101    the usual use of --prefix and/or --openssldir, and at run
11102    time with the environment variable OPENSSL_ENGINES.
11103
11104    *Geoff Thorpe and Richard Levitte*
11105
11106  * Add Makefile.shared, a helper makefile to build shared
11107    libraries.  Adapt Makefile.org.
11108
11109    *Richard Levitte*
11110
11111  * Add version info to Win32 DLLs.
11112
11113    *Peter 'Luna' Runestig" <peter@runestig.com>*
11114
11115  * Add new 'medium level' PKCS#12 API. Certificates and keys
11116    can be added using this API to created arbitrary PKCS#12
11117    files while avoiding the low-level API.
11118
11119    New options to PKCS12_create(), key or cert can be NULL and
11120    will then be omitted from the output file. The encryption
11121    algorithm NIDs can be set to -1 for no encryption, the mac
11122    iteration count can be set to 0 to omit the mac.
11123
11124    Enhance pkcs12 utility by making the -nokeys and -nocerts
11125    options work when creating a PKCS#12 file. New option -nomac
11126    to omit the mac, NONE can be set for an encryption algorithm.
11127    New code is modified to use the enhanced PKCS12_create()
11128    instead of the low-level API.
11129
11130    *Steve Henson*
11131
11132  * Extend ASN1 encoder to support indefinite length constructed
11133    encoding. This can output sequences tags and octet strings in
11134    this form. Modify pk7_asn1.c to support indefinite length
11135    encoding. This is experimental and needs additional code to
11136    be useful, such as an ASN1 bio and some enhanced streaming
11137    PKCS#7 code.
11138
11139    Extend template encode functionality so that tagging is passed
11140    down to the template encoder.
11141
11142    *Steve Henson*
11143
11144  * Let 'openssl req' fail if an argument to '-newkey' is not
11145    recognized instead of using RSA as a default.
11146
11147    *Bodo Moeller*
11148
11149  * Add support for ECC-based ciphersuites from draft-ietf-tls-ecc-01.txt.
11150    As these are not official, they are not included in "ALL";
11151    the "ECCdraft" ciphersuite group alias can be used to select them.
11152
11153    *Vipul Gupta and Sumit Gupta (Sun Microsystems Laboratories)*
11154
11155  * Add ECDH engine support.
11156
11157    *Nils Gura and Douglas Stebila (Sun Microsystems Laboratories)*
11158
11159  * Add ECDH in new directory crypto/ecdh/.
11160
11161    *Douglas Stebila (Sun Microsystems Laboratories)*
11162
11163  * Let BN_rand_range() abort with an error after 100 iterations
11164    without success (which indicates a broken PRNG).
11165
11166    *Bodo Moeller*
11167
11168  * Change BN_mod_sqrt() so that it verifies that the input value
11169    is really the square of the return value.  (Previously,
11170    BN_mod_sqrt would show GIGO behaviour.)
11171
11172    *Bodo Moeller*
11173
11174  * Add named elliptic curves over binary fields from X9.62, SECG,
11175    and WAP/WTLS; add OIDs that were still missing.
11176
11177    *Sheueling Chang Shantz and Douglas Stebila (Sun Microsystems Laboratories)*
11178
11179  * Extend the EC library for elliptic curves over binary fields
11180    (new files ec2_smpl.c, ec2_smpt.c, ec2_mult.c in crypto/ec/).
11181    New EC_METHOD:
11182
11183            EC_GF2m_simple_method
11184
11185    New API functions:
11186
11187            EC_GROUP_new_curve_GF2m
11188            EC_GROUP_set_curve_GF2m
11189            EC_GROUP_get_curve_GF2m
11190            EC_POINT_set_affine_coordinates_GF2m
11191            EC_POINT_get_affine_coordinates_GF2m
11192            EC_POINT_set_compressed_coordinates_GF2m
11193
11194    Point compression for binary fields is disabled by default for
11195    patent reasons (compile with OPENSSL_EC_BIN_PT_COMP defined to
11196    enable it).
11197
11198    As binary polynomials are represented as BIGNUMs, various members
11199    of the EC_GROUP and EC_POINT data structures can be shared
11200    between the implementations for prime fields and binary fields;
11201    the above `..._GF2m functions` (except for EX_GROUP_new_curve_GF2m)
11202    are essentially identical to their `..._GFp` counterparts.
11203    (For simplicity, the `..._GFp` prefix has been dropped from
11204    various internal method names.)
11205
11206    An internal 'field_div' method (similar to 'field_mul' and
11207    'field_sqr') has been added; this is used only for binary fields.
11208
11209    *Sheueling Chang Shantz and Douglas Stebila (Sun Microsystems Laboratories)*
11210
11211  * Optionally dispatch EC_POINT_mul(), EC_POINT_precompute_mult()
11212    through methods ('mul', 'precompute_mult').
11213
11214    The generic implementations (now internally called 'ec_wNAF_mul'
11215    and 'ec_wNAF_precomputed_mult') remain the default if these
11216    methods are undefined.
11217
11218    *Sheueling Chang Shantz and Douglas Stebila (Sun Microsystems Laboratories)*
11219
11220  * New function EC_GROUP_get_degree, which is defined through
11221    EC_METHOD.  For curves over prime fields, this returns the bit
11222    length of the modulus.
11223
11224    *Sheueling Chang Shantz and Douglas Stebila (Sun Microsystems Laboratories)*
11225
11226  * New functions EC_GROUP_dup, EC_POINT_dup.
11227    (These simply call ..._new  and ..._copy).
11228
11229    *Sheueling Chang Shantz and Douglas Stebila (Sun Microsystems Laboratories)*
11230
11231  * Add binary polynomial arithmetic software in crypto/bn/bn_gf2m.c.
11232    Polynomials are represented as BIGNUMs (where the sign bit is not
11233    used) in the following functions [macros]:
11234
11235            BN_GF2m_add
11236            BN_GF2m_sub             [= BN_GF2m_add]
11237            BN_GF2m_mod             [wrapper for BN_GF2m_mod_arr]
11238            BN_GF2m_mod_mul         [wrapper for BN_GF2m_mod_mul_arr]
11239            BN_GF2m_mod_sqr         [wrapper for BN_GF2m_mod_sqr_arr]
11240            BN_GF2m_mod_inv
11241            BN_GF2m_mod_exp         [wrapper for BN_GF2m_mod_exp_arr]
11242            BN_GF2m_mod_sqrt        [wrapper for BN_GF2m_mod_sqrt_arr]
11243            BN_GF2m_mod_solve_quad  [wrapper for BN_GF2m_mod_solve_quad_arr]
11244            BN_GF2m_cmp             [= BN_ucmp]
11245
11246    (Note that only the 'mod' functions are actually for fields GF(2^m).
11247    BN_GF2m_add() is misnomer, but this is for the sake of consistency.)
11248
11249    For some functions, an the irreducible polynomial defining a
11250    field can be given as an 'unsigned int[]' with strictly
11251    decreasing elements giving the indices of those bits that are set;
11252    i.e., p[] represents the polynomial
11253            f(t) = t^p[0] + t^p[1] + ... + t^p[k]
11254    where
11255            p[0] > p[1] > ... > p[k] = 0.
11256    This applies to the following functions:
11257
11258            BN_GF2m_mod_arr
11259            BN_GF2m_mod_mul_arr
11260            BN_GF2m_mod_sqr_arr
11261            BN_GF2m_mod_inv_arr        [wrapper for BN_GF2m_mod_inv]
11262            BN_GF2m_mod_div_arr        [wrapper for BN_GF2m_mod_div]
11263            BN_GF2m_mod_exp_arr
11264            BN_GF2m_mod_sqrt_arr
11265            BN_GF2m_mod_solve_quad_arr
11266            BN_GF2m_poly2arr
11267            BN_GF2m_arr2poly
11268
11269    Conversion can be performed by the following functions:
11270
11271            BN_GF2m_poly2arr
11272            BN_GF2m_arr2poly
11273
11274    bntest.c has additional tests for binary polynomial arithmetic.
11275
11276    Two implementations for BN_GF2m_mod_div() are available.
11277    The default algorithm simply uses BN_GF2m_mod_inv() and
11278    BN_GF2m_mod_mul().  The alternative algorithm is compiled in only
11279    if OPENSSL_SUN_GF2M_DIV is defined (patent pending; read the
11280    copyright notice in crypto/bn/bn_gf2m.c before enabling it).
11281
11282    *Sheueling Chang Shantz and Douglas Stebila (Sun Microsystems Laboratories)*
11283
11284  * Add new error code 'ERR_R_DISABLED' that can be used when some
11285    functionality is disabled at compile-time.
11286
11287    *Douglas Stebila <douglas.stebila@sun.com>*
11288
11289  * Change default behaviour of 'openssl asn1parse' so that more
11290    information is visible when viewing, e.g., a certificate:
11291
11292    Modify asn1_parse2 (crypto/asn1/asn1_par.c) so that in non-'dump'
11293    mode the content of non-printable OCTET STRINGs is output in a
11294    style similar to INTEGERs, but with '[HEX DUMP]' prepended to
11295    avoid the appearance of a printable string.
11296
11297    *Nils Larsch <nla@trustcenter.de>*
11298
11299  * Add 'asn1_flag' and 'asn1_form' member to EC_GROUP with access
11300    functions
11301            EC_GROUP_set_asn1_flag()
11302            EC_GROUP_get_asn1_flag()
11303            EC_GROUP_set_point_conversion_form()
11304            EC_GROUP_get_point_conversion_form()
11305    These control ASN1 encoding details:
11306    - Curves (i.e., groups) are encoded explicitly unless asn1_flag
11307      has been set to OPENSSL_EC_NAMED_CURVE.
11308    - Points are encoded in uncompressed form by default; options for
11309      asn1_for are as for point2oct, namely
11310            POINT_CONVERSION_COMPRESSED
11311            POINT_CONVERSION_UNCOMPRESSED
11312            POINT_CONVERSION_HYBRID
11313
11314    Also add 'seed' and 'seed_len' members to EC_GROUP with access
11315    functions
11316            EC_GROUP_set_seed()
11317            EC_GROUP_get0_seed()
11318            EC_GROUP_get_seed_len()
11319    This is used only for ASN1 purposes (so far).
11320
11321    *Nils Larsch <nla@trustcenter.de>*
11322
11323  * Add 'field_type' member to EC_METHOD, which holds the NID
11324    of the appropriate field type OID.  The new function
11325    EC_METHOD_get_field_type() returns this value.
11326
11327    *Nils Larsch <nla@trustcenter.de>*
11328
11329  * Add functions
11330            EC_POINT_point2bn()
11331            EC_POINT_bn2point()
11332            EC_POINT_point2hex()
11333            EC_POINT_hex2point()
11334    providing useful interfaces to EC_POINT_point2oct() and
11335    EC_POINT_oct2point().
11336
11337    *Nils Larsch <nla@trustcenter.de>*
11338
11339  * Change internals of the EC library so that the functions
11340            EC_GROUP_set_generator()
11341            EC_GROUP_get_generator()
11342            EC_GROUP_get_order()
11343            EC_GROUP_get_cofactor()
11344    are implemented directly in crypto/ec/ec_lib.c and not dispatched
11345    to methods, which would lead to unnecessary code duplication when
11346    adding different types of curves.
11347
11348    *Nils Larsch <nla@trustcenter.de> with input by Bodo Moeller*
11349
11350  * Implement compute_wNAF (crypto/ec/ec_mult.c) without BIGNUM
11351    arithmetic, and such that modified wNAFs are generated
11352    (which avoid length expansion in many cases).
11353
11354    *Bodo Moeller*
11355
11356  * Add a function EC_GROUP_check_discriminant() (defined via
11357    EC_METHOD) that verifies that the curve discriminant is non-zero.
11358
11359    Add a function EC_GROUP_check() that makes some sanity tests
11360    on a EC_GROUP, its generator and order.  This includes
11361    EC_GROUP_check_discriminant().
11362
11363    *Nils Larsch <nla@trustcenter.de>*
11364
11365  * Add ECDSA in new directory crypto/ecdsa/.
11366
11367    Add applications 'openssl ecparam' and 'openssl ecdsa'
11368    (these are based on 'openssl dsaparam' and 'openssl dsa').
11369
11370    ECDSA support is also included in various other files across the
11371    library.  Most notably,
11372    - 'openssl req' now has a '-newkey ecdsa:file' option;
11373    - EVP_PKCS82PKEY (crypto/evp/evp_pkey.c) now can handle ECDSA;
11374    - X509_PUBKEY_get (crypto/asn1/x_pubkey.c) and
11375      d2i_PublicKey (crypto/asn1/d2i_pu.c) have been modified to make
11376      them suitable for ECDSA where domain parameters must be
11377      extracted before the specific public key;
11378    - ECDSA engine support has been added.
11379
11380    *Nils Larsch <nla@trustcenter.de>*
11381
11382  * Include some named elliptic curves, and add OIDs from X9.62,
11383    SECG, and WAP/WTLS.  Each curve can be obtained from the new
11384    function
11385            EC_GROUP_new_by_curve_name(),
11386    and the list of available named curves can be obtained with
11387            EC_get_builtin_curves().
11388    Also add a 'curve_name' member to EC_GROUP objects, which can be
11389    accessed via
11390            EC_GROUP_set_curve_name()
11391            EC_GROUP_get_curve_name()
11392
11393    *Nils Larsch <larsch@trustcenter.de, Bodo Moeller*
11394
11395  * Remove a few calls to bn_wexpand() in BN_sqr() (the one in there
11396    was actually never needed) and in BN_mul().  The removal in BN_mul()
11397    required a small change in bn_mul_part_recursive() and the addition
11398    of the functions bn_cmp_part_words(), bn_sub_part_words() and
11399    bn_add_part_words(), which do the same thing as bn_cmp_words(),
11400    bn_sub_words() and bn_add_words() except they take arrays with
11401    differing sizes.
11402
11403    *Richard Levitte*
11404
11405 ### Changes between 0.9.7l and 0.9.7m  [23 Feb 2007]
11406
11407  * Cleanse PEM buffers before freeing them since they may contain
11408    sensitive data.
11409
11410    *Benjamin Bennett <ben@psc.edu>*
11411
11412  * Include "!eNULL" in SSL_DEFAULT_CIPHER_LIST to make sure that
11413    a ciphersuite string such as "DEFAULT:RSA" cannot enable
11414    authentication-only ciphersuites.
11415
11416    *Bodo Moeller*
11417
11418  * Since AES128 and AES256 share a single mask bit in the logic of
11419    ssl/ssl_ciph.c, the code for masking out disabled ciphers needs a
11420    kludge to work properly if AES128 is available and AES256 isn't.
11421
11422    *Victor Duchovni*
11423
11424  * Expand security boundary to match 1.1.1 module.
11425
11426    *Steve Henson*
11427
11428  * Remove redundant features: hash file source, editing of test vectors
11429    modify fipsld to use external fips_premain.c signature.
11430
11431    *Steve Henson*
11432
11433  * New perl script mkfipsscr.pl to create shell scripts or batch files to
11434    run algorithm test programs.
11435
11436    *Steve Henson*
11437
11438  * Make algorithm test programs more tolerant of whitespace.
11439
11440    *Steve Henson*
11441
11442  * Have SSL/TLS server implementation tolerate "mismatched" record
11443    protocol version while receiving ClientHello even if the
11444    ClientHello is fragmented.  (The server can't insist on the
11445    particular protocol version it has chosen before the ServerHello
11446    message has informed the client about his choice.)
11447
11448    *Bodo Moeller*
11449
11450  * Load error codes if they are not already present instead of using a
11451    static variable. This allows them to be cleanly unloaded and reloaded.
11452
11453    *Steve Henson*
11454
11455 ### Changes between 0.9.7k and 0.9.7l  [28 Sep 2006]
11456
11457  * Introduce limits to prevent malicious keys being able to
11458    cause a denial of service.  ([CVE-2006-2940])
11459
11460    *Steve Henson, Bodo Moeller*
11461
11462  * Fix ASN.1 parsing of certain invalid structures that can result
11463    in a denial of service.  ([CVE-2006-2937])  [Steve Henson]
11464
11465  * Fix buffer overflow in SSL_get_shared_ciphers() function.
11466    ([CVE-2006-3738]) [Tavis Ormandy and Will Drewry, Google Security Team]
11467
11468  * Fix SSL client code which could crash if connecting to a
11469    malicious SSLv2 server.  ([CVE-2006-4343])
11470
11471    *Tavis Ormandy and Will Drewry, Google Security Team*
11472
11473  * Change ciphersuite string processing so that an explicit
11474    ciphersuite selects this one ciphersuite (so that "AES256-SHA"
11475    will no longer include "AES128-SHA"), and any other similar
11476    ciphersuite (same bitmap) from *other* protocol versions (so that
11477    "RC4-MD5" will still include both the SSL 2.0 ciphersuite and the
11478    SSL 3.0/TLS 1.0 ciphersuite).  This is a backport combining
11479    changes from 0.9.8b and 0.9.8d.
11480
11481    *Bodo Moeller*
11482
11483 ### Changes between 0.9.7j and 0.9.7k  [05 Sep 2006]
11484
11485  * Avoid PKCS #1 v1.5 signature attack discovered by Daniel Bleichenbacher
11486    ([CVE-2006-4339])  [Ben Laurie and Google Security Team]
11487
11488  * Change the Unix randomness entropy gathering to use poll() when
11489    possible instead of select(), since the latter has some
11490    undesirable limitations.
11491
11492    *Darryl Miles via Richard Levitte and Bodo Moeller*
11493
11494  * Disable rogue ciphersuites:
11495
11496    - SSLv2 0x08 0x00 0x80 ("RC4-64-MD5")
11497    - SSLv3/TLSv1 0x00 0x61 ("EXP1024-RC2-CBC-MD5")
11498    - SSLv3/TLSv1 0x00 0x60 ("EXP1024-RC4-MD5")
11499
11500    The latter two were purportedly from
11501    draft-ietf-tls-56-bit-ciphersuites-0[01].txt, but do not really
11502    appear there.
11503
11504    Also deactivate the remaining ciphersuites from
11505    draft-ietf-tls-56-bit-ciphersuites-01.txt.  These are just as
11506    unofficial, and the ID has long expired.
11507
11508    *Bodo Moeller*
11509
11510  * Fix RSA blinding Heisenbug (problems sometimes occurred on
11511    dual-core machines) and other potential thread-safety issues.
11512
11513    *Bodo Moeller*
11514
11515 ### Changes between 0.9.7i and 0.9.7j  [04 May 2006]
11516
11517  * Adapt fipsld and the build system to link against the validated FIPS
11518    module in FIPS mode.
11519
11520    *Steve Henson*
11521
11522  * Fixes for VC++ 2005 build under Windows.
11523
11524    *Steve Henson*
11525
11526  * Add new Windows build target VC-32-GMAKE for VC++. This uses GNU make
11527    from a Windows bash shell such as MSYS. It is autodetected from the
11528    "config" script when run from a VC++ environment. Modify standard VC++
11529    build to use fipscanister.o from the GNU make build.
11530
11531    *Steve Henson*
11532
11533 ### Changes between 0.9.7h and 0.9.7i  [14 Oct 2005]
11534
11535  * Wrapped the definition of EVP_MAX_MD_SIZE in a #ifdef OPENSSL_FIPS.
11536    The value now differs depending on if you build for FIPS or not.
11537    BEWARE!  A program linked with a shared FIPSed libcrypto can't be
11538    safely run with a non-FIPSed libcrypto, as it may crash because of
11539    the difference induced by this change.
11540
11541    *Andy Polyakov*
11542
11543 ### Changes between 0.9.7g and 0.9.7h  [11 Oct 2005]
11544
11545  * Remove the functionality of SSL_OP_MSIE_SSLV2_RSA_PADDING
11546    (part of SSL_OP_ALL).  This option used to disable the
11547    countermeasure against man-in-the-middle protocol-version
11548    rollback in the SSL 2.0 server implementation, which is a bad
11549    idea.  ([CVE-2005-2969])
11550
11551    *Bodo Moeller; problem pointed out by Yutaka Oiwa (Research Center
11552    for Information Security, National Institute of Advanced Industrial
11553    Science and Technology [AIST, Japan)]*
11554
11555  * Minimal support for X9.31 signatures and PSS padding modes. This is
11556    mainly for FIPS compliance and not fully integrated at this stage.
11557
11558    *Steve Henson*
11559
11560  * For DSA signing, unless DSA_FLAG_NO_EXP_CONSTTIME is set, perform
11561    the exponentiation using a fixed-length exponent.  (Otherwise,
11562    the information leaked through timing could expose the secret key
11563    after many signatures; cf. Bleichenbacher's attack on DSA with
11564    biased k.)
11565
11566    *Bodo Moeller*
11567
11568  * Make a new fixed-window mod_exp implementation the default for
11569    RSA, DSA, and DH private-key operations so that the sequence of
11570    squares and multiplies and the memory access pattern are
11571    independent of the particular secret key.  This will mitigate
11572    cache-timing and potential related attacks.
11573
11574    BN_mod_exp_mont_consttime() is the new exponentiation implementation,
11575    and this is automatically used by BN_mod_exp_mont() if the new flag
11576    BN_FLG_EXP_CONSTTIME is set for the exponent.  RSA, DSA, and DH
11577    will use this BN flag for private exponents unless the flag
11578    RSA_FLAG_NO_EXP_CONSTTIME, DSA_FLAG_NO_EXP_CONSTTIME, or
11579    DH_FLAG_NO_EXP_CONSTTIME, respectively, is set.
11580
11581    *Matthew D Wood (Intel Corp), with some changes by Bodo Moeller*
11582
11583  * Change the client implementation for SSLv23_method() and
11584    SSLv23_client_method() so that is uses the SSL 3.0/TLS 1.0
11585    Client Hello message format if the SSL_OP_NO_SSLv2 option is set.
11586    (Previously, the SSL 2.0 backwards compatible Client Hello
11587    message format would be used even with SSL_OP_NO_SSLv2.)
11588
11589    *Bodo Moeller*
11590
11591  * Add support for smime-type MIME parameter in S/MIME messages which some
11592    clients need.
11593
11594    *Steve Henson*
11595
11596  * New function BN_MONT_CTX_set_locked() to set montgomery parameters in
11597    a threadsafe manner. Modify rsa code to use new function and add calls
11598    to dsa and dh code (which had race conditions before).
11599
11600    *Steve Henson*
11601
11602  * Include the fixed error library code in the C error file definitions
11603    instead of fixing them up at runtime. This keeps the error code
11604    structures constant.
11605
11606    *Steve Henson*
11607
11608 ### Changes between 0.9.7f and 0.9.7g  [11 Apr 2005]
11609
11610 [NB: OpenSSL 0.9.7h and later 0.9.7 patch levels were released after
11611 OpenSSL 0.9.8.]
11612
11613  * Fixes for newer kerberos headers. NB: the casts are needed because
11614    the 'length' field is signed on one version and unsigned on another
11615    with no (?) obvious way to tell the difference, without these VC++
11616    complains. Also the "definition" of FAR (blank) is no longer included
11617    nor is the error ENOMEM. KRB5_PRIVATE has to be set to 1 to pick up
11618    some needed definitions.
11619
11620    *Steve Henson*
11621
11622  * Undo Cygwin change.
11623
11624    *Ulf Möller*
11625
11626  * Added support for proxy certificates according to RFC 3820.
11627    Because they may be a security thread to unaware applications,
11628    they must be explicitly allowed in run-time.  See
11629    docs/HOWTO/proxy_certificates.txt for further information.
11630
11631    *Richard Levitte*
11632
11633 ### Changes between 0.9.7e and 0.9.7f  [22 Mar 2005]
11634
11635  * Use (SSL_RANDOM_VALUE - 4) bytes of pseudo random data when generating
11636    server and client random values. Previously
11637    (SSL_RANDOM_VALUE - sizeof(time_t)) would be used which would result in
11638    less random data when sizeof(time_t) > 4 (some 64 bit platforms).
11639
11640    This change has negligible security impact because:
11641
11642    1. Server and client random values still have 24 bytes of pseudo random
11643       data.
11644
11645    2. Server and client random values are sent in the clear in the initial
11646       handshake.
11647
11648    3. The master secret is derived using the premaster secret (48 bytes in
11649       size for static RSA ciphersuites) as well as client server and random
11650       values.
11651
11652    The OpenSSL team would like to thank the UK NISCC for bringing this issue
11653    to our attention.
11654
11655    *Stephen Henson, reported by UK NISCC*
11656
11657  * Use Windows randomness collection on Cygwin.
11658
11659    *Ulf Möller*
11660
11661  * Fix hang in EGD/PRNGD query when communication socket is closed
11662    prematurely by EGD/PRNGD.
11663
11664    *Darren Tucker <dtucker@zip.com.au> via Lutz Jänicke, resolves #1014*
11665
11666  * Prompt for pass phrases when appropriate for PKCS12 input format.
11667
11668    *Steve Henson*
11669
11670  * Back-port of selected performance improvements from development
11671    branch, as well as improved support for PowerPC platforms.
11672
11673    *Andy Polyakov*
11674
11675  * Add lots of checks for memory allocation failure, error codes to indicate
11676    failure and freeing up memory if a failure occurs.
11677
11678    *Nauticus Networks SSL Team <openssl@nauticusnet.com>, Steve Henson*
11679
11680  * Add new -passin argument to dgst.
11681
11682    *Steve Henson*
11683
11684  * Perform some character comparisons of different types in X509_NAME_cmp:
11685    this is needed for some certificates that re-encode DNs into UTF8Strings
11686    (in violation of RFC3280) and can't or won't issue name rollover
11687    certificates.
11688
11689    *Steve Henson*
11690
11691  * Make an explicit check during certificate validation to see that
11692    the CA setting in each certificate on the chain is correct.  As a
11693    side effect always do the following basic checks on extensions,
11694    not just when there's an associated purpose to the check:
11695
11696    - if there is an unhandled critical extension (unless the user
11697      has chosen to ignore this fault)
11698    - if the path length has been exceeded (if one is set at all)
11699    - that certain extensions fit the associated purpose (if one has
11700      been given)
11701
11702    *Richard Levitte*
11703
11704 ### Changes between 0.9.7d and 0.9.7e  [25 Oct 2004]
11705
11706  * Avoid a race condition when CRLs are checked in a multi threaded
11707    environment. This would happen due to the reordering of the revoked
11708    entries during signature checking and serial number lookup. Now the
11709    encoding is cached and the serial number sort performed under a lock.
11710    Add new STACK function sk_is_sorted().
11711
11712    *Steve Henson*
11713
11714  * Add Delta CRL to the extension code.
11715
11716    *Steve Henson*
11717
11718  * Various fixes to s3_pkt.c so alerts are sent properly.
11719
11720    *David Holmes <d.holmes@f5.com>*
11721
11722  * Reduce the chances of duplicate issuer name and serial numbers (in
11723    violation of RFC3280) using the OpenSSL certificate creation utilities.
11724    This is done by creating a random 64 bit value for the initial serial
11725    number when a serial number file is created or when a self signed
11726    certificate is created using 'openssl req -x509'. The initial serial
11727    number file is created using 'openssl x509 -next_serial' in CA.pl
11728    rather than being initialized to 1.
11729
11730    *Steve Henson*
11731
11732 ### Changes between 0.9.7c and 0.9.7d  [17 Mar 2004]
11733
11734  * Fix null-pointer assignment in do_change_cipher_spec() revealed
11735    by using the Codenomicon TLS Test Tool ([CVE-2004-0079])
11736
11737    *Joe Orton, Steve Henson*
11738
11739  * Fix flaw in SSL/TLS handshaking when using Kerberos ciphersuites
11740    ([CVE-2004-0112])
11741
11742    *Joe Orton, Steve Henson*
11743
11744  * Make it possible to have multiple active certificates with the same
11745    subject in the CA index file.  This is done only if the keyword
11746    'unique_subject' is set to 'no' in the main CA section (default
11747    if 'CA_default') of the configuration file.  The value is saved
11748    with the database itself in a separate index attribute file,
11749    named like the index file with '.attr' appended to the name.
11750
11751    *Richard Levitte*
11752
11753  * X509 verify fixes. Disable broken certificate workarounds when
11754    X509_V_FLAGS_X509_STRICT is set. Check CRL issuer has cRLSign set if
11755    keyUsage extension present. Don't accept CRLs with unhandled critical
11756    extensions: since verify currently doesn't process CRL extensions this
11757    rejects a CRL with *any* critical extensions. Add new verify error codes
11758    for these cases.
11759
11760    *Steve Henson*
11761
11762  * When creating an OCSP nonce use an OCTET STRING inside the extnValue.
11763    A clarification of RFC2560 will require the use of OCTET STRINGs and
11764    some implementations cannot handle the current raw format. Since OpenSSL
11765    copies and compares OCSP nonces as opaque blobs without any attempt at
11766    parsing them this should not create any compatibility issues.
11767
11768    *Steve Henson*
11769
11770  * New md flag EVP_MD_CTX_FLAG_REUSE this allows md_data to be reused when
11771    calling EVP_MD_CTX_copy_ex() to avoid calling OPENSSL_malloc(). Without
11772    this HMAC (and other) operations are several times slower than OpenSSL
11773    < 0.9.7.
11774
11775    *Steve Henson*
11776
11777  * Print out GeneralizedTime and UTCTime in ASN1_STRING_print_ex().
11778
11779    *Peter Sylvester <Peter.Sylvester@EdelWeb.fr>*
11780
11781  * Use the correct content when signing type "other".
11782
11783    *Steve Henson*
11784
11785 ### Changes between 0.9.7b and 0.9.7c  [30 Sep 2003]
11786
11787  * Fix various bugs revealed by running the NISCC test suite:
11788
11789    Stop out of bounds reads in the ASN1 code when presented with
11790    invalid tags (CVE-2003-0543 and CVE-2003-0544).
11791
11792    Free up ASN1_TYPE correctly if ANY type is invalid ([CVE-2003-0545]).
11793
11794    If verify callback ignores invalid public key errors don't try to check
11795    certificate signature with the NULL public key.
11796
11797    *Steve Henson*
11798
11799  * New -ignore_err option in ocsp application to stop the server
11800    exiting on the first error in a request.
11801
11802    *Steve Henson*
11803
11804  * In ssl3_accept() (ssl/s3_srvr.c) only accept a client certificate
11805    if the server requested one: as stated in TLS 1.0 and SSL 3.0
11806    specifications.
11807
11808    *Steve Henson*
11809
11810  * In ssl3_get_client_hello() (ssl/s3_srvr.c), tolerate additional
11811    extra data after the compression methods not only for TLS 1.0
11812    but also for SSL 3.0 (as required by the specification).
11813
11814    *Bodo Moeller; problem pointed out by Matthias Loepfe*
11815
11816  * Change X509_certificate_type() to mark the key as exported/exportable
11817    when it's 512 *bits* long, not 512 bytes.
11818
11819    *Richard Levitte*
11820
11821  * Change AES_cbc_encrypt() so it outputs exact multiple of
11822    blocks during encryption.
11823
11824    *Richard Levitte*
11825
11826  * Various fixes to base64 BIO and non blocking I/O. On write
11827    flushes were not handled properly if the BIO retried. On read
11828    data was not being buffered properly and had various logic bugs.
11829    This also affects blocking I/O when the data being decoded is a
11830    certain size.
11831
11832    *Steve Henson*
11833
11834  * Various S/MIME bugfixes and compatibility changes:
11835    output correct application/pkcs7 MIME type if
11836    PKCS7_NOOLDMIMETYPE is set. Tolerate some broken signatures.
11837    Output CR+LF for EOL if PKCS7_CRLFEOL is set (this makes opening
11838    of files as .eml work). Correctly handle very long lines in MIME
11839    parser.
11840
11841    *Steve Henson*
11842
11843 ### Changes between 0.9.7a and 0.9.7b  [10 Apr 2003]
11844
11845  * Countermeasure against the Klima-Pokorny-Rosa extension of
11846    Bleichbacher's attack on PKCS #1 v1.5 padding: treat
11847    a protocol version number mismatch like a decryption error
11848    in ssl3_get_client_key_exchange (ssl/s3_srvr.c).
11849
11850    *Bodo Moeller*
11851
11852  * Turn on RSA blinding by default in the default implementation
11853    to avoid a timing attack. Applications that don't want it can call
11854    RSA_blinding_off() or use the new flag RSA_FLAG_NO_BLINDING.
11855    They would be ill-advised to do so in most cases.
11856
11857    *Ben Laurie, Steve Henson, Geoff Thorpe, Bodo Moeller*
11858
11859  * Change RSA blinding code so that it works when the PRNG is not
11860    seeded (in this case, the secret RSA exponent is abused as
11861    an unpredictable seed -- if it is not unpredictable, there
11862    is no point in blinding anyway).  Make RSA blinding thread-safe
11863    by remembering the creator's thread ID in rsa->blinding and
11864    having all other threads use local one-time blinding factors
11865    (this requires more computation than sharing rsa->blinding, but
11866    avoids excessive locking; and if an RSA object is not shared
11867    between threads, blinding will still be very fast).
11868
11869    *Bodo Moeller*
11870
11871  * Fixed a typo bug that would cause ENGINE_set_default() to set an
11872    ENGINE as defaults for all supported algorithms irrespective of
11873    the 'flags' parameter. 'flags' is now honoured, so applications
11874    should make sure they are passing it correctly.
11875
11876    *Geoff Thorpe*
11877
11878  * Target "mingw" now allows native Windows code to be generated in
11879    the Cygwin environment as well as with the MinGW compiler.
11880
11881    *Ulf Moeller*
11882
11883 ### Changes between 0.9.7 and 0.9.7a  [19 Feb 2003]
11884
11885  * In ssl3_get_record (ssl/s3_pkt.c), minimize information leaked
11886    via timing by performing a MAC computation even if incorrect
11887    block cipher padding has been found.  This is a countermeasure
11888    against active attacks where the attacker has to distinguish
11889    between bad padding and a MAC verification error. ([CVE-2003-0078])
11890
11891    *Bodo Moeller; problem pointed out by Brice Canvel (EPFL),
11892    Alain Hiltgen (UBS), Serge Vaudenay (EPFL), and
11893    Martin Vuagnoux (EPFL, Ilion)*
11894
11895  * Make the no-err option work as intended.  The intention with no-err
11896    is not to have the whole error stack handling routines removed from
11897    libcrypto, it's only intended to remove all the function name and
11898    reason texts, thereby removing some of the footprint that may not
11899    be interesting if those errors aren't displayed anyway.
11900
11901    NOTE: it's still possible for any application or module to have its
11902    own set of error texts inserted.  The routines are there, just not
11903    used by default when no-err is given.
11904
11905    *Richard Levitte*
11906
11907  * Add support for FreeBSD on IA64.
11908
11909    *dirk.meyer@dinoex.sub.org via Richard Levitte, resolves #454*
11910
11911  * Adjust DES_cbc_cksum() so it returns the same value as the MIT
11912    Kerberos function mit_des_cbc_cksum().  Before this change,
11913    the value returned by DES_cbc_cksum() was like the one from
11914    mit_des_cbc_cksum(), except the bytes were swapped.
11915
11916    *Kevin Greaney <Kevin.Greaney@hp.com> and Richard Levitte*
11917
11918  * Allow an application to disable the automatic SSL chain building.
11919    Before this a rather primitive chain build was always performed in
11920    ssl3_output_cert_chain(): an application had no way to send the
11921    correct chain if the automatic operation produced an incorrect result.
11922
11923    Now the chain builder is disabled if either:
11924
11925    1. Extra certificates are added via SSL_CTX_add_extra_chain_cert().
11926
11927    2. The mode flag SSL_MODE_NO_AUTO_CHAIN is set.
11928
11929    The reasoning behind this is that an application would not want the
11930    auto chain building to take place if extra chain certificates are
11931    present and it might also want a means of sending no additional
11932    certificates (for example the chain has two certificates and the
11933    root is omitted).
11934
11935    *Steve Henson*
11936
11937  * Add the possibility to build without the ENGINE framework.
11938
11939    *Steven Reddie <smr@essemer.com.au> via Richard Levitte*
11940
11941  * Under Win32 gmtime() can return NULL: check return value in
11942    OPENSSL_gmtime(). Add error code for case where gmtime() fails.
11943
11944    *Steve Henson*
11945
11946  * DSA routines: under certain error conditions uninitialized BN objects
11947    could be freed. Solution: make sure initialization is performed early
11948    enough. (Reported and fix supplied by Ivan D Nestlerode <nestler@MIT.EDU>,
11949    Nils Larsch <nla@trustcenter.de> via PR#459)
11950
11951    *Lutz Jaenicke*
11952
11953  * Another fix for SSLv2 session ID handling: the session ID was incorrectly
11954    checked on reconnect on the client side, therefore session resumption
11955    could still fail with a "ssl session id is different" error. This
11956    behaviour is masked when SSL_OP_ALL is used due to
11957    SSL_OP_MICROSOFT_SESS_ID_BUG being set.
11958    Behaviour observed by Crispin Flowerday <crispin@flowerday.cx> as
11959    followup to PR #377.
11960
11961    *Lutz Jaenicke*
11962
11963  * IA-32 assembler support enhancements: unified ELF targets, support
11964    for SCO/Caldera platforms, fix for Cygwin shared build.
11965
11966    *Andy Polyakov*
11967
11968  * Add support for FreeBSD on sparc64.  As a consequence, support for
11969    FreeBSD on non-x86 processors is separate from x86 processors on
11970    the config script, much like the NetBSD support.
11971
11972    *Richard Levitte & Kris Kennaway <kris@obsecurity.org>*
11973
11974 ### Changes between 0.9.6h and 0.9.7  [31 Dec 2002]
11975
11976 [NB: OpenSSL 0.9.6i and later 0.9.6 patch levels were released after
11977 OpenSSL 0.9.7.]
11978
11979  * Fix session ID handling in SSLv2 client code: the SERVER FINISHED
11980    code (06) was taken as the first octet of the session ID and the last
11981    octet was ignored consequently. As a result SSLv2 client side session
11982    caching could not have worked due to the session ID mismatch between
11983    client and server.
11984    Behaviour observed by Crispin Flowerday <crispin@flowerday.cx> as
11985    PR #377.
11986
11987    *Lutz Jaenicke*
11988
11989  * Change the declaration of needed Kerberos libraries to use EX_LIBS
11990    instead of the special (and badly supported) LIBKRB5.  LIBKRB5 is
11991    removed entirely.
11992
11993    *Richard Levitte*
11994
11995  * The hw_ncipher.c engine requires dynamic locks.  Unfortunately, it
11996    seems that in spite of existing for more than a year, many application
11997    author have done nothing to provide the necessary callbacks, which
11998    means that this particular engine will not work properly anywhere.
11999    This is a very unfortunate situation which forces us, in the name
12000    of usability, to give the hw_ncipher.c a static lock, which is part
12001    of libcrypto.
12002    NOTE: This is for the 0.9.7 series ONLY.  This hack will never
12003    appear in 0.9.8 or later.  We EXPECT application authors to have
12004    dealt properly with this when 0.9.8 is released (unless we actually
12005    make such changes in the libcrypto locking code that changes will
12006    have to be made anyway).
12007
12008    *Richard Levitte*
12009
12010  * In asn1_d2i_read_bio() repeatedly call BIO_read() until all content
12011    octets have been read, EOF or an error occurs. Without this change
12012    some truncated ASN1 structures will not produce an error.
12013
12014    *Steve Henson*
12015
12016  * Disable Heimdal support, since it hasn't been fully implemented.
12017    Still give the possibility to force the use of Heimdal, but with
12018    warnings and a request that patches get sent to openssl-dev.
12019
12020    *Richard Levitte*
12021
12022  * Add the VC-CE target, introduce the WINCE sysname, and add
12023    INSTALL.WCE and appropriate conditionals to make it build.
12024
12025    *Steven Reddie <smr@essemer.com.au> via Richard Levitte*
12026
12027  * Change the DLL names for Cygwin to cygcrypto-x.y.z.dll and
12028    cygssl-x.y.z.dll, where x, y and z are the major, minor and
12029    edit numbers of the version.
12030
12031    *Corinna Vinschen <vinschen@redhat.com> and Richard Levitte*
12032
12033  * Introduce safe string copy and catenation functions
12034    (BUF_strlcpy() and BUF_strlcat()).
12035
12036    *Ben Laurie (CHATS) and Richard Levitte*
12037
12038  * Avoid using fixed-size buffers for one-line DNs.
12039
12040    *Ben Laurie (CHATS)*
12041
12042  * Add BUF_MEM_grow_clean() to avoid information leakage when
12043    resizing buffers containing secrets, and use where appropriate.
12044
12045    *Ben Laurie (CHATS)*
12046
12047  * Avoid using fixed size buffers for configuration file location.
12048
12049    *Ben Laurie (CHATS)*
12050
12051  * Avoid filename truncation for various CA files.
12052
12053    *Ben Laurie (CHATS)*
12054
12055  * Use sizeof in preference to magic numbers.
12056
12057    *Ben Laurie (CHATS)*
12058
12059  * Avoid filename truncation in cert requests.
12060
12061    *Ben Laurie (CHATS)*
12062
12063  * Add assertions to check for (supposedly impossible) buffer
12064    overflows.
12065
12066    *Ben Laurie (CHATS)*
12067
12068  * Don't cache truncated DNS entries in the local cache (this could
12069    potentially lead to a spoofing attack).
12070
12071    *Ben Laurie (CHATS)*
12072
12073  * Fix various buffers to be large enough for hex/decimal
12074    representations in a platform independent manner.
12075
12076    *Ben Laurie (CHATS)*
12077
12078  * Add CRYPTO_realloc_clean() to avoid information leakage when
12079    resizing buffers containing secrets, and use where appropriate.
12080
12081    *Ben Laurie (CHATS)*
12082
12083  * Add BIO_indent() to avoid much slightly worrying code to do
12084    indents.
12085
12086    *Ben Laurie (CHATS)*
12087
12088  * Convert sprintf()/BIO_puts() to BIO_printf().
12089
12090    *Ben Laurie (CHATS)*
12091
12092  * buffer_gets() could terminate with the buffer only half
12093    full. Fixed.
12094
12095    *Ben Laurie (CHATS)*
12096
12097  * Add assertions to prevent user-supplied crypto functions from
12098    overflowing internal buffers by having large block sizes, etc.
12099
12100    *Ben Laurie (CHATS)*
12101
12102  * New OPENSSL_assert() macro (similar to assert(), but enabled
12103    unconditionally).
12104
12105    *Ben Laurie (CHATS)*
12106
12107  * Eliminate unused copy of key in RC4.
12108
12109    *Ben Laurie (CHATS)*
12110
12111  * Eliminate unused and incorrectly sized buffers for IV in pem.h.
12112
12113    *Ben Laurie (CHATS)*
12114
12115  * Fix off-by-one error in EGD path.
12116
12117    *Ben Laurie (CHATS)*
12118
12119  * If RANDFILE path is too long, ignore instead of truncating.
12120
12121    *Ben Laurie (CHATS)*
12122
12123  * Eliminate unused and incorrectly sized X.509 structure
12124    CBCParameter.
12125
12126    *Ben Laurie (CHATS)*
12127
12128  * Eliminate unused and dangerous function knumber().
12129
12130    *Ben Laurie (CHATS)*
12131
12132  * Eliminate unused and dangerous structure, KSSL_ERR.
12133
12134    *Ben Laurie (CHATS)*
12135
12136  * Protect against overlong session ID context length in an encoded
12137    session object. Since these are local, this does not appear to be
12138    exploitable.
12139
12140    *Ben Laurie (CHATS)*
12141
12142  * Change from security patch (see 0.9.6e below) that did not affect
12143    the 0.9.6 release series:
12144
12145    Remote buffer overflow in SSL3 protocol - an attacker could
12146    supply an oversized master key in Kerberos-enabled versions.
12147    ([CVE-2002-0657])
12148
12149    *Ben Laurie (CHATS)*
12150
12151  * Change the SSL kerb5 codes to match RFC 2712.
12152
12153    *Richard Levitte*
12154
12155  * Make -nameopt work fully for req and add -reqopt switch.
12156
12157    *Michael Bell <michael.bell@rz.hu-berlin.de>, Steve Henson*
12158
12159  * The "block size" for block ciphers in CFB and OFB mode should be 1.
12160
12161    *Steve Henson, reported by Yngve Nysaeter Pettersen <yngve@opera.com>*
12162
12163  * Make sure tests can be performed even if the corresponding algorithms
12164    have been removed entirely.  This was also the last step to make
12165    OpenSSL compilable with DJGPP under all reasonable conditions.
12166
12167    *Richard Levitte, Doug Kaufman <dkaufman@rahul.net>*
12168
12169  * Add cipher selection rules COMPLEMENTOFALL and COMPLEMENTOFDEFAULT
12170    to allow version independent disabling of normally unselected ciphers,
12171    which may be activated as a side-effect of selecting a single cipher.
12172
12173    (E.g., cipher list string "RSA" enables ciphersuites that are left
12174    out of "ALL" because they do not provide symmetric encryption.
12175    "RSA:!COMPLEMEMENTOFALL" avoids these unsafe ciphersuites.)
12176
12177    *Lutz Jaenicke, Bodo Moeller*
12178
12179  * Add appropriate support for separate platform-dependent build
12180    directories.  The recommended way to make a platform-dependent
12181    build directory is the following (tested on Linux), maybe with
12182    some local tweaks:
12183
12184            # Place yourself outside of the OpenSSL source tree.  In
12185            # this example, the environment variable OPENSSL_SOURCE
12186            # is assumed to contain the absolute OpenSSL source directory.
12187            mkdir -p objtree/"`uname -s`-`uname -r`-`uname -m`"
12188            cd objtree/"`uname -s`-`uname -r`-`uname -m`"
12189            (cd $OPENSSL_SOURCE; find . -type f) | while read F; do
12190                    mkdir -p `dirname $F`
12191                    ln -s $OPENSSL_SOURCE/$F $F
12192            done
12193
12194    To be absolutely sure not to disturb the source tree, a "make clean"
12195    is a good thing.  If it isn't successful, don't worry about it,
12196    it probably means the source directory is very clean.
12197
12198    *Richard Levitte*
12199
12200  * Make sure any ENGINE control commands make local copies of string
12201    pointers passed to them whenever necessary. Otherwise it is possible
12202    the caller may have overwritten (or deallocated) the original string
12203    data when a later ENGINE operation tries to use the stored values.
12204
12205    *Götz Babin-Ebell <babinebell@trustcenter.de>*
12206
12207  * Improve diagnostics in file reading and command-line digests.
12208
12209    *Ben Laurie aided and abetted by Solar Designer <solar@openwall.com>*
12210
12211  * Add AES modes CFB and OFB to the object database.  Correct an
12212    error in AES-CFB decryption.
12213
12214    *Richard Levitte*
12215
12216  * Remove most calls to EVP_CIPHER_CTX_cleanup() in evp_enc.c, this
12217    allows existing EVP_CIPHER_CTX structures to be reused after
12218    calling `EVP_*Final()`. This behaviour is used by encryption
12219    BIOs and some applications. This has the side effect that
12220    applications must explicitly clean up cipher contexts with
12221    EVP_CIPHER_CTX_cleanup() or they will leak memory.
12222
12223    *Steve Henson*
12224
12225  * Check the values of dna and dnb in bn_mul_recursive before calling
12226    bn_mul_comba (a non zero value means the a or b arrays do not contain
12227    n2 elements) and fallback to bn_mul_normal if either is not zero.
12228
12229    *Steve Henson*
12230
12231  * Fix escaping of non-ASCII characters when using the -subj option
12232    of the "openssl req" command line tool. (Robert Joop <joop@fokus.gmd.de>)
12233
12234    *Lutz Jaenicke*
12235
12236  * Make object definitions compliant to LDAP (RFC2256): SN is the short
12237    form for "surname", serialNumber has no short form.
12238    Use "mail" as the short name for "rfc822Mailbox" according to RFC2798;
12239    therefore remove "mail" short name for "internet 7".
12240    The OID for unique identifiers in X509 certificates is
12241    x500UniqueIdentifier, not uniqueIdentifier.
12242    Some more OID additions. (Michael Bell <michael.bell@rz.hu-berlin.de>)
12243
12244    *Lutz Jaenicke*
12245
12246  * Add an "init" command to the ENGINE config module and auto initialize
12247    ENGINEs. Without any "init" command the ENGINE will be initialized
12248    after all ctrl commands have been executed on it. If init=1 the
12249    ENGINE is initialized at that point (ctrls before that point are run
12250    on the uninitialized ENGINE and after on the initialized one). If
12251    init=0 then the ENGINE will not be initialized at all.
12252
12253    *Steve Henson*
12254
12255  * Fix the 'app_verify_callback' interface so that the user-defined
12256    argument is actually passed to the callback: In the
12257    SSL_CTX_set_cert_verify_callback() prototype, the callback
12258    declaration has been changed from
12259            int (*cb)()
12260    into
12261            int (*cb)(X509_STORE_CTX *,void *);
12262    in ssl_verify_cert_chain (ssl/ssl_cert.c), the call
12263            i=s->ctx->app_verify_callback(&ctx)
12264    has been changed into
12265            i=s->ctx->app_verify_callback(&ctx, s->ctx->app_verify_arg).
12266
12267    To update applications using SSL_CTX_set_cert_verify_callback(),
12268    a dummy argument can be added to their callback functions.
12269
12270    *D. K. Smetters <smetters@parc.xerox.com>*
12271
12272  * Added the '4758cca' ENGINE to support IBM 4758 cards.
12273
12274    *Maurice Gittens <maurice@gittens.nl>, touchups by Geoff Thorpe*
12275
12276  * Add and OPENSSL_LOAD_CONF define which will cause
12277    OpenSSL_add_all_algorithms() to load the openssl.cnf config file.
12278    This allows older applications to transparently support certain
12279    OpenSSL features: such as crypto acceleration and dynamic ENGINE loading.
12280    Two new functions OPENSSL_add_all_algorithms_noconf() which will never
12281    load the config file and OPENSSL_add_all_algorithms_conf() which will
12282    always load it have also been added.
12283
12284    *Steve Henson*
12285
12286  * Add the OFB, CFB and CTR (all with 128 bit feedback) to AES.
12287    Adjust NIDs and EVP layer.
12288
12289    *Stephen Sprunk <stephen@sprunk.org> and Richard Levitte*
12290
12291  * Config modules support in openssl utility.
12292
12293    Most commands now load modules from the config file,
12294    though in a few (such as version) this isn't done
12295    because it couldn't be used for anything.
12296
12297    In the case of ca and req the config file used is
12298    the same as the utility itself: that is the -config
12299    command line option can be used to specify an
12300    alternative file.
12301
12302    *Steve Henson*
12303
12304  * Move default behaviour from OPENSSL_config(). If appname is NULL
12305    use "openssl_conf" if filename is NULL use default openssl config file.
12306
12307    *Steve Henson*
12308
12309  * Add an argument to OPENSSL_config() to allow the use of an alternative
12310    config section name. Add a new flag to tolerate a missing config file
12311    and move code to CONF_modules_load_file().
12312
12313    *Steve Henson*
12314
12315  * Support for crypto accelerator cards from Accelerated Encryption
12316    Processing, www.aep.ie.  (Use engine 'aep')
12317    The support was copied from 0.9.6c [engine] and adapted/corrected
12318    to work with the new engine framework.
12319
12320    *AEP Inc. and Richard Levitte*
12321
12322  * Support for SureWare crypto accelerator cards from Baltimore
12323    Technologies.  (Use engine 'sureware')
12324    The support was copied from 0.9.6c [engine] and adapted
12325    to work with the new engine framework.
12326
12327    *Richard Levitte*
12328
12329  * Have the CHIL engine fork-safe (as defined by nCipher) and actually
12330    make the newer ENGINE framework commands for the CHIL engine work.
12331
12332    *Toomas Kiisk <vix@cyber.ee> and Richard Levitte*
12333
12334  * Make it possible to produce shared libraries on ReliantUNIX.
12335
12336    *Robert Dahlem <Robert.Dahlem@ffm2.siemens.de> via Richard Levitte*
12337
12338  * Add the configuration target debug-linux-ppro.
12339    Make 'openssl rsa' use the general key loading routines
12340    implemented in `apps.c`, and make those routines able to
12341    handle the key format FORMAT_NETSCAPE and the variant
12342    FORMAT_IISSGC.
12343
12344    *Toomas Kiisk <vix@cyber.ee> via Richard Levitte*
12345
12346  * Fix a crashbug and a logic bug in hwcrhk_load_pubkey().
12347
12348    *Toomas Kiisk <vix@cyber.ee> via Richard Levitte*
12349
12350  * Add -keyform to rsautl, and document -engine.
12351
12352    *Richard Levitte, inspired by Toomas Kiisk <vix@cyber.ee>*
12353
12354  * Change BIO_new_file (crypto/bio/bss_file.c) to use new
12355    BIO_R_NO_SUCH_FILE error code rather than the generic
12356    ERR_R_SYS_LIB error code if fopen() fails with ENOENT.
12357
12358    *Ben Laurie*
12359
12360  * Add new functions
12361            ERR_peek_last_error
12362            ERR_peek_last_error_line
12363            ERR_peek_last_error_line_data.
12364    These are similar to
12365            ERR_peek_error
12366            ERR_peek_error_line
12367            ERR_peek_error_line_data,
12368    but report on the latest error recorded rather than the first one
12369    still in the error queue.
12370
12371    *Ben Laurie, Bodo Moeller*
12372
12373  * default_algorithms option in ENGINE config module. This allows things
12374    like:
12375    default_algorithms = ALL
12376    default_algorithms = RSA, DSA, RAND, CIPHERS, DIGESTS
12377
12378    *Steve Henson*
12379
12380  * Preliminary ENGINE config module.
12381
12382    *Steve Henson*
12383
12384  * New experimental application configuration code.
12385
12386    *Steve Henson*
12387
12388  * Change the AES code to follow the same name structure as all other
12389    symmetric ciphers, and behave the same way.  Move everything to
12390    the directory crypto/aes, thereby obsoleting crypto/rijndael.
12391
12392    *Stephen Sprunk <stephen@sprunk.org> and Richard Levitte*
12393
12394  * SECURITY: remove unsafe setjmp/signal interaction from ui_openssl.c.
12395
12396    *Ben Laurie and Theo de Raadt*
12397
12398  * Add option to output public keys in req command.
12399
12400    *Massimiliano Pala madwolf@openca.org*
12401
12402  * Use wNAFs in EC_POINTs_mul() for improved efficiency
12403    (up to about 10% better than before for P-192 and P-224).
12404
12405    *Bodo Moeller*
12406
12407  * New functions/macros
12408
12409            SSL_CTX_set_msg_callback(ctx, cb)
12410            SSL_CTX_set_msg_callback_arg(ctx, arg)
12411            SSL_set_msg_callback(ssl, cb)
12412            SSL_set_msg_callback_arg(ssl, arg)
12413
12414    to request calling a callback function
12415
12416            void cb(int write_p, int version, int content_type,
12417                    const void *buf, size_t len, SSL *ssl, void *arg)
12418
12419    whenever a protocol message has been completely received
12420    (write_p == 0) or sent (write_p == 1).  Here 'version' is the
12421    protocol version  according to which the SSL library interprets
12422    the current protocol message (SSL2_VERSION, SSL3_VERSION, or
12423    TLS1_VERSION).  'content_type' is 0 in the case of SSL 2.0, or
12424    the content type as defined in the SSL 3.0/TLS 1.0 protocol
12425    specification (change_cipher_spec(20), alert(21), handshake(22)).
12426    'buf' and 'len' point to the actual message, 'ssl' to the
12427    SSL object, and 'arg' is the application-defined value set by
12428    SSL[_CTX]_set_msg_callback_arg().
12429
12430    'openssl s_client' and 'openssl s_server' have new '-msg' options
12431    to enable a callback that displays all protocol messages.
12432
12433    *Bodo Moeller*
12434
12435  * Change the shared library support so shared libraries are built as
12436    soon as the corresponding static library is finished, and thereby get
12437    openssl and the test programs linked against the shared library.
12438    This still only happens when the keyword "shard" has been given to
12439    the configuration scripts.
12440
12441    NOTE: shared library support is still an experimental thing, and
12442    backward binary compatibility is still not guaranteed.
12443
12444    *"Maciej W. Rozycki" <macro@ds2.pg.gda.pl> and Richard Levitte*
12445
12446  * Add support for Subject Information Access extension.
12447
12448    *Peter Sylvester <Peter.Sylvester@EdelWeb.fr>*
12449
12450  * Make BUF_MEM_grow() behaviour more consistent: Initialise to zero
12451    additional bytes when new memory had to be allocated, not just
12452    when reusing an existing buffer.
12453
12454    *Bodo Moeller*
12455
12456  * New command line and configuration option 'utf8' for the req command.
12457    This allows field values to be specified as UTF8 strings.
12458
12459    *Steve Henson*
12460
12461  * Add -multi and -mr options to "openssl speed" - giving multiple parallel
12462    runs for the former and machine-readable output for the latter.
12463
12464    *Ben Laurie*
12465
12466  * Add '-noemailDN' option to 'openssl ca'.  This prevents inclusion
12467    of the e-mail address in the DN (i.e., it will go into a certificate
12468    extension only).  The new configuration file option 'email_in_dn = no'
12469    has the same effect.
12470
12471    *Massimiliano Pala madwolf@openca.org*
12472
12473  * Change all functions with names starting with `des_` to be starting
12474    with `DES_` instead.  Add wrappers that are compatible with libdes,
12475    but are named `_ossl_old_des_*`.  Finally, add macros that map the
12476    `des_*` symbols to the corresponding `_ossl_old_des_*` if libdes
12477    compatibility is desired.  If OpenSSL 0.9.6c compatibility is
12478    desired, the `des_*` symbols will be mapped to `DES_*`, with one
12479    exception.
12480
12481    Since we provide two compatibility mappings, the user needs to
12482    define the macro OPENSSL_DES_LIBDES_COMPATIBILITY if libdes
12483    compatibility is desired.  The default (i.e., when that macro
12484    isn't defined) is OpenSSL 0.9.6c compatibility.
12485
12486    There are also macros that enable and disable the support of old
12487    des functions altogether.  Those are OPENSSL_ENABLE_OLD_DES_SUPPORT
12488    and OPENSSL_DISABLE_OLD_DES_SUPPORT.  If none or both of those
12489    are defined, the default will apply: to support the old des routines.
12490
12491    In either case, one must include openssl/des.h to get the correct
12492    definitions.  Do not try to just include openssl/des_old.h, that
12493    won't work.
12494
12495    NOTE: This is a major break of an old API into a new one.  Software
12496    authors are encouraged to switch to the `DES_` style functions.  Some
12497    time in the future, des_old.h and the libdes compatibility functions
12498    will be disable (i.e. OPENSSL_DISABLE_OLD_DES_SUPPORT will be the
12499    default), and then completely removed.
12500
12501    *Richard Levitte*
12502
12503  * Test for certificates which contain unsupported critical extensions.
12504    If such a certificate is found during a verify operation it is
12505    rejected by default: this behaviour can be overridden by either
12506    handling the new error X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION or
12507    by setting the verify flag X509_V_FLAG_IGNORE_CRITICAL. A new function
12508    X509_supported_extension() has also been added which returns 1 if a
12509    particular extension is supported.
12510
12511    *Steve Henson*
12512
12513  * Modify the behaviour of EVP cipher functions in similar way to digests
12514    to retain compatibility with existing code.
12515
12516    *Steve Henson*
12517
12518  * Modify the behaviour of EVP_DigestInit() and EVP_DigestFinal() to retain
12519    compatibility with existing code. In particular the 'ctx' parameter does
12520    not have to be to be initialized before the call to EVP_DigestInit() and
12521    it is tidied up after a call to EVP_DigestFinal(). New function
12522    EVP_DigestFinal_ex() which does not tidy up the ctx. Similarly function
12523    EVP_MD_CTX_copy() changed to not require the destination to be
12524    initialized valid and new function EVP_MD_CTX_copy_ex() added which
12525    requires the destination to be valid.
12526
12527    Modify all the OpenSSL digest calls to use EVP_DigestInit_ex(),
12528    EVP_DigestFinal_ex() and EVP_MD_CTX_copy_ex().
12529
12530    *Steve Henson*
12531
12532  * Change ssl3_get_message (ssl/s3_both.c) and the functions using it
12533    so that complete 'Handshake' protocol structures are kept in memory
12534    instead of overwriting 'msg_type' and 'length' with 'body' data.
12535
12536    *Bodo Moeller*
12537
12538  * Add an implementation of SSL_add_dir_cert_subjects_to_stack for Win32.
12539
12540    *Massimo Santin via Richard Levitte*
12541
12542  * Major restructuring to the underlying ENGINE code. This includes
12543    reduction of linker bloat, separation of pure "ENGINE" manipulation
12544    (initialisation, etc) from functionality dealing with implementations
12545    of specific crypto interfaces. This change also introduces integrated
12546    support for symmetric ciphers and digest implementations - so ENGINEs
12547    can now accelerate these by providing EVP_CIPHER and EVP_MD
12548    implementations of their own. This is detailed in
12549    [crypto/engine/README.md](crypto/engine/README.md)
12550    as it couldn't be adequately described here. However, there are a few
12551    API changes worth noting - some RSA, DSA, DH, and RAND functions that
12552    were changed in the original introduction of ENGINE code have now
12553    reverted back - the hooking from this code to ENGINE is now a good
12554    deal more passive and at run-time, operations deal directly with
12555    RSA_METHODs, DSA_METHODs (etc) as they did before, rather than
12556    dereferencing through an ENGINE pointer any more. Also, the ENGINE
12557    functions dealing with `BN_MOD_EXP[_CRT]` handlers have been removed -
12558    they were not being used by the framework as there is no concept of a
12559    BIGNUM_METHOD and they could not be generalised to the new
12560    'ENGINE_TABLE' mechanism that underlies the new code. Similarly,
12561    ENGINE_cpy() has been removed as it cannot be consistently defined in
12562    the new code.
12563
12564    *Geoff Thorpe*
12565
12566  * Change ASN1_GENERALIZEDTIME_check() to allow fractional seconds.
12567
12568    *Steve Henson*
12569
12570  * Change mkdef.pl to sort symbols that get the same entry number,
12571    and make sure the automatically generated functions `ERR_load_*`
12572    become part of libeay.num as well.
12573
12574    *Richard Levitte*
12575
12576  * New function SSL_renegotiate_pending().  This returns true once
12577    renegotiation has been requested (either SSL_renegotiate() call
12578    or HelloRequest/ClientHello received from the peer) and becomes
12579    false once a handshake has been completed.
12580    (For servers, SSL_renegotiate() followed by SSL_do_handshake()
12581    sends a HelloRequest, but does not ensure that a handshake takes
12582    place.  SSL_renegotiate_pending() is useful for checking if the
12583    client has followed the request.)
12584
12585    *Bodo Moeller*
12586
12587  * New SSL option SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION.
12588    By default, clients may request session resumption even during
12589    renegotiation (if session ID contexts permit); with this option,
12590    session resumption is possible only in the first handshake.
12591
12592    SSL_OP_ALL is now 0x00000FFFL instead of 0x000FFFFFL.  This makes
12593    more bits available for options that should not be part of
12594    SSL_OP_ALL (such as SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION).
12595
12596    *Bodo Moeller*
12597
12598  * Add some demos for certificate and certificate request creation.
12599
12600    *Steve Henson*
12601
12602  * Make maximum certificate chain size accepted from the peer application
12603    settable (`SSL*_get/set_max_cert_list()`), as proposed by
12604    "Douglas E. Engert" <deengert@anl.gov>.
12605
12606    *Lutz Jaenicke*
12607
12608  * Add support for shared libraries for Unixware-7
12609    (Boyd Lynn Gerber <gerberb@zenez.com>).
12610
12611    *Lutz Jaenicke*
12612
12613  * Add a "destroy" handler to ENGINEs that allows structural cleanup to
12614    be done prior to destruction. Use this to unload error strings from
12615    ENGINEs that load their own error strings. NB: This adds two new API
12616    functions to "get" and "set" this destroy handler in an ENGINE.
12617
12618    *Geoff Thorpe*
12619
12620  * Alter all existing ENGINE implementations (except "openssl" and
12621    "openbsd") to dynamically instantiate their own error strings. This
12622    makes them more flexible to be built both as statically-linked ENGINEs
12623    and self-contained shared-libraries loadable via the "dynamic" ENGINE.
12624    Also, add stub code to each that makes building them as self-contained
12625    shared-libraries easier (see [README-Engine.md](README-Engine.md)).
12626
12627    *Geoff Thorpe*
12628
12629  * Add a "dynamic" ENGINE that provides a mechanism for binding ENGINE
12630    implementations into applications that are completely implemented in
12631    self-contained shared-libraries. The "dynamic" ENGINE exposes control
12632    commands that can be used to configure what shared-library to load and
12633    to control aspects of the way it is handled. Also, made an update to
12634    the [README-Engine.md](README-Engine.md) file
12635    that brings its information up-to-date and
12636    provides some information and instructions on the "dynamic" ENGINE
12637    (ie. how to use it, how to build "dynamic"-loadable ENGINEs, etc).
12638
12639    *Geoff Thorpe*
12640
12641  * Make it possible to unload ranges of ERR strings with a new
12642    "ERR_unload_strings" function.
12643
12644    *Geoff Thorpe*
12645
12646  * Add a copy() function to EVP_MD.
12647
12648    *Ben Laurie*
12649
12650  * Make EVP_MD routines take a context pointer instead of just the
12651    md_data void pointer.
12652
12653    *Ben Laurie*
12654
12655  * Add flags to EVP_MD and EVP_MD_CTX. EVP_MD_FLAG_ONESHOT indicates
12656    that the digest can only process a single chunk of data
12657    (typically because it is provided by a piece of
12658    hardware). EVP_MD_CTX_FLAG_ONESHOT indicates that the application
12659    is only going to provide a single chunk of data, and hence the
12660    framework needn't accumulate the data for oneshot drivers.
12661
12662    *Ben Laurie*
12663
12664  * As with "ERR", make it possible to replace the underlying "ex_data"
12665    functions. This change also alters the storage and management of global
12666    ex_data state - it's now all inside ex_data.c and all "class" code (eg.
12667    RSA, BIO, SSL_CTX, etc) no longer stores its own STACKS and per-class
12668    index counters. The API functions that use this state have been changed
12669    to take a "class_index" rather than pointers to the class's local STACK
12670    and counter, and there is now an API function to dynamically create new
12671    classes. This centralisation allows us to (a) plug a lot of the
12672    thread-safety problems that existed, and (b) makes it possible to clean
12673    up all allocated state using "CRYPTO_cleanup_all_ex_data()". W.r.t. (b)
12674    such data would previously have always leaked in application code and
12675    workarounds were in place to make the memory debugging turn a blind eye
12676    to it. Application code that doesn't use this new function will still
12677    leak as before, but their memory debugging output will announce it now
12678    rather than letting it slide.
12679
12680    Besides the addition of CRYPTO_cleanup_all_ex_data(), another API change
12681    induced by the "ex_data" overhaul is that X509_STORE_CTX_init() now
12682    has a return value to indicate success or failure.
12683
12684    *Geoff Thorpe*
12685
12686  * Make it possible to replace the underlying "ERR" functions such that the
12687    global state (2 LHASH tables and 2 locks) is only used by the "default"
12688    implementation. This change also adds two functions to "get" and "set"
12689    the implementation prior to it being automatically set the first time
12690    any other ERR function takes place. Ie. an application can call "get",
12691    pass the return value to a module it has just loaded, and that module
12692    can call its own "set" function using that value. This means the
12693    module's "ERR" operations will use (and modify) the error state in the
12694    application and not in its own statically linked copy of OpenSSL code.
12695
12696    *Geoff Thorpe*
12697
12698  * Give DH, DSA, and RSA types their own `*_up_ref()` function to increment
12699    reference counts. This performs normal REF_PRINT/REF_CHECK macros on
12700    the operation, and provides a more encapsulated way for external code
12701    (crypto/evp/ and ssl/) to do this. Also changed the evp and ssl code
12702    to use these functions rather than manually incrementing the counts.
12703
12704    Also rename "DSO_up()" function to more descriptive "DSO_up_ref()".
12705
12706    *Geoff Thorpe*
12707
12708  * Add EVP test program.
12709
12710    *Ben Laurie*
12711
12712  * Add symmetric cipher support to ENGINE. Expect the API to change!
12713
12714    *Ben Laurie*
12715
12716  * New CRL functions: X509_CRL_set_version(), X509_CRL_set_issuer_name()
12717    X509_CRL_set_lastUpdate(), X509_CRL_set_nextUpdate(), X509_CRL_sort(),
12718    X509_REVOKED_set_serialNumber(), and X509_REVOKED_set_revocationDate().
12719    These allow a CRL to be built without having to access X509_CRL fields
12720    directly. Modify 'ca' application to use new functions.
12721
12722    *Steve Henson*
12723
12724  * Move SSL_OP_TLS_ROLLBACK_BUG out of the SSL_OP_ALL list of recommended
12725    bug workarounds. Rollback attack detection is a security feature.
12726    The problem will only arise on OpenSSL servers when TLSv1 is not
12727    available (sslv3_server_method() or SSL_OP_NO_TLSv1).
12728    Software authors not wanting to support TLSv1 will have special reasons
12729    for their choice and can explicitly enable this option.
12730
12731    *Bodo Moeller, Lutz Jaenicke*
12732
12733  * Rationalise EVP so it can be extended: don't include a union of
12734    cipher/digest structures, add init/cleanup functions for EVP_MD_CTX
12735    (similar to those existing for EVP_CIPHER_CTX).
12736    Usage example:
12737
12738            EVP_MD_CTX md;
12739
12740            EVP_MD_CTX_init(&md);             /* new function call */
12741            EVP_DigestInit(&md, EVP_sha1());
12742            EVP_DigestUpdate(&md, in, len);
12743            EVP_DigestFinal(&md, out, NULL);
12744            EVP_MD_CTX_cleanup(&md);          /* new function call */
12745
12746    *Ben Laurie*
12747
12748  * Make DES key schedule conform to the usual scheme, as well as
12749    correcting its structure. This means that calls to DES functions
12750    now have to pass a pointer to a des_key_schedule instead of a
12751    plain des_key_schedule (which was actually always a pointer
12752    anyway): E.g.,
12753
12754            des_key_schedule ks;
12755
12756            des_set_key_checked(..., &ks);
12757            des_ncbc_encrypt(..., &ks, ...);
12758
12759    (Note that a later change renames 'des_...' into 'DES_...'.)
12760
12761    *Ben Laurie*
12762
12763  * Initial reduction of linker bloat: the use of some functions, such as
12764    PEM causes large amounts of unused functions to be linked in due to
12765    poor organisation. For example pem_all.c contains every PEM function
12766    which has a knock on effect of linking in large amounts of (unused)
12767    ASN1 code. Grouping together similar functions and splitting unrelated
12768    functions prevents this.
12769
12770    *Steve Henson*
12771
12772  * Cleanup of EVP macros.
12773
12774    *Ben Laurie*
12775
12776  * Change historical references to `{NID,SN,LN}_des_ede` and ede3 to add the
12777    correct `_ecb suffix`.
12778
12779    *Ben Laurie*
12780
12781  * Add initial OCSP responder support to ocsp application. The
12782    revocation information is handled using the text based index
12783    use by the ca application. The responder can either handle
12784    requests generated internally, supplied in files (for example
12785    via a CGI script) or using an internal minimal server.
12786
12787    *Steve Henson*
12788
12789  * Add configuration choices to get zlib compression for TLS.
12790
12791    *Richard Levitte*
12792
12793  * Changes to Kerberos SSL for RFC 2712 compliance:
12794    1. Implemented real KerberosWrapper, instead of just using
12795       KRB5 AP_REQ message.  [Thanks to Simon Wilkinson <sxw@sxw.org.uk>]
12796    2. Implemented optional authenticator field of KerberosWrapper.
12797
12798    Added openssl-style ASN.1 macros for Kerberos ticket, ap_req,
12799    and authenticator structs; see crypto/krb5/.
12800
12801    Generalized Kerberos calls to support multiple Kerberos libraries.
12802    *Vern Staats <staatsvr@asc.hpc.mil>, Jeffrey Altman <jaltman@columbia.edu>
12803    via Richard Levitte*
12804
12805  * Cause 'openssl speed' to use fully hard-coded DSA keys as it
12806    already does with RSA. testdsa.h now has 'priv_key/pub_key'
12807    values for each of the key sizes rather than having just
12808    parameters (and 'speed' generating keys each time).
12809
12810    *Geoff Thorpe*
12811
12812  * Speed up EVP routines.
12813    Before:
12814 crypt
12815 pe              8 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
12816 s-cbc           4408.85k     5560.51k     5778.46k     5862.20k     5825.16k
12817 s-cbc           4389.55k     5571.17k     5792.23k     5846.91k     5832.11k
12818 s-cbc           4394.32k     5575.92k     5807.44k     5848.37k     5841.30k
12819 crypt
12820 s-cbc           3482.66k     5069.49k     5496.39k     5614.16k     5639.28k
12821 s-cbc           3480.74k     5068.76k     5510.34k     5609.87k     5635.52k
12822 s-cbc           3483.72k     5067.62k     5504.60k     5708.01k     5724.80k
12823    After:
12824 crypt
12825 s-cbc           4660.16k     5650.19k     5807.19k     5827.13k     5783.32k
12826 crypt
12827 s-cbc           3624.96k     5258.21k     5530.91k     5624.30k     5628.26k
12828
12829    *Ben Laurie*
12830
12831  * Added the OS2-EMX target.
12832
12833    *"Brian Havard" <brianh@kheldar.apana.org.au> and Richard Levitte*
12834
12835  * Rewrite commands to use `NCONF` routines instead of the old `CONF`.
12836    New functions to support `NCONF` routines in extension code.
12837    New function `CONF_set_nconf()`
12838    to allow functions which take an `NCONF` to also handle the old `LHASH`
12839    structure: this means that the old `CONF` compatible routines can be
12840    retained (in particular w.rt. extensions) without having to duplicate the
12841    code. New function `X509V3_add_ext_nconf_sk()` to add extensions to a stack.
12842
12843    *Steve Henson*
12844
12845  * Enhance the general user interface with mechanisms for inner control
12846    and with possibilities to have yes/no kind of prompts.
12847
12848    *Richard Levitte*
12849
12850  * Change all calls to low-level digest routines in the library and
12851    applications to use EVP. Add missing calls to HMAC_cleanup() and
12852    don't assume HMAC_CTX can be copied using memcpy().
12853
12854    *Verdon Walker <VWalker@novell.com>, Steve Henson*
12855
12856  * Add the possibility to control engines through control names but with
12857    arbitrary arguments instead of just a string.
12858    Change the key loaders to take a UI_METHOD instead of a callback
12859    function pointer.  NOTE: this breaks binary compatibility with earlier
12860    versions of OpenSSL [engine].
12861    Adapt the nCipher code for these new conditions and add a card insertion
12862    callback.
12863
12864    *Richard Levitte*
12865
12866  * Enhance the general user interface with mechanisms to better support
12867    dialog box interfaces, application-defined prompts, the possibility
12868    to use defaults (for example default passwords from somewhere else)
12869    and interrupts/cancellations.
12870
12871    *Richard Levitte*
12872
12873  * Tidy up PKCS#12 attribute handling. Add support for the CSP name
12874    attribute in PKCS#12 files, add new -CSP option to pkcs12 utility.
12875
12876    *Steve Henson*
12877
12878  * Fix a memory leak in 'sk_dup()' in the case reallocation fails. (Also
12879    tidy up some unnecessarily weird code in 'sk_new()').
12880
12881    *Geoff, reported by Diego Tartara <dtartara@novamens.com>*
12882
12883  * Change the key loading routines for ENGINEs to use the same kind
12884    callback (pem_password_cb) as all other routines that need this
12885    kind of callback.
12886
12887    *Richard Levitte*
12888
12889  * Increase ENTROPY_NEEDED to 32 bytes, as Rijndael can operate with
12890    256 bit (=32 byte) keys. Of course seeding with more entropy bytes
12891    than this minimum value is recommended.
12892
12893    *Lutz Jaenicke*
12894
12895  * New random seeder for OpenVMS, using the system process statistics
12896    that are easily reachable.
12897
12898    *Richard Levitte*
12899
12900  * Windows apparently can't transparently handle global
12901    variables defined in DLLs. Initialisations such as:
12902
12903            const ASN1_ITEM *it = &ASN1_INTEGER_it;
12904
12905    won't compile. This is used by the any applications that need to
12906    declare their own ASN1 modules. This was fixed by adding the option
12907    EXPORT_VAR_AS_FN to all Win32 platforms, although this isn't strictly
12908    needed for static libraries under Win32.
12909
12910    *Steve Henson*
12911
12912  * New functions X509_PURPOSE_set() and X509_TRUST_set() to handle
12913    setting of purpose and trust fields. New X509_STORE trust and
12914    purpose functions and tidy up setting in other SSL functions.
12915
12916    *Steve Henson*
12917
12918  * Add copies of X509_STORE_CTX fields and callbacks to X509_STORE
12919    structure. These are inherited by X509_STORE_CTX when it is
12920    initialised. This allows various defaults to be set in the
12921    X509_STORE structure (such as flags for CRL checking and custom
12922    purpose or trust settings) for functions which only use X509_STORE_CTX
12923    internally such as S/MIME.
12924
12925    Modify X509_STORE_CTX_purpose_inherit() so it only sets purposes and
12926    trust settings if they are not set in X509_STORE. This allows X509_STORE
12927    purposes and trust (in S/MIME for example) to override any set by default.
12928
12929    Add command line options for CRL checking to smime, s_client and s_server
12930    applications.
12931
12932    *Steve Henson*
12933
12934  * Initial CRL based revocation checking. If the CRL checking flag(s)
12935    are set then the CRL is looked up in the X509_STORE structure and
12936    its validity and signature checked, then if the certificate is found
12937    in the CRL the verify fails with a revoked error.
12938
12939    Various new CRL related callbacks added to X509_STORE_CTX structure.
12940
12941    Command line options added to 'verify' application to support this.
12942
12943    This needs some additional work, such as being able to handle multiple
12944    CRLs with different times, extension based lookup (rather than just
12945    by subject name) and ultimately more complete V2 CRL extension
12946    handling.
12947
12948    *Steve Henson*
12949
12950  * Add a general user interface API (crypto/ui/).  This is designed
12951    to replace things like des_read_password and friends (backward
12952    compatibility functions using this new API are provided).
12953    The purpose is to remove prompting functions from the DES code
12954    section as well as provide for prompting through dialog boxes in
12955    a window system and the like.
12956
12957    *Richard Levitte*
12958
12959  * Add "ex_data" support to ENGINE so implementations can add state at a
12960    per-structure level rather than having to store it globally.
12961
12962    *Geoff*
12963
12964  * Make it possible for ENGINE structures to be copied when retrieved by
12965    ENGINE_by_id() if the ENGINE specifies a new flag: ENGINE_FLAGS_BY_ID_COPY.
12966    This causes the "original" ENGINE structure to act like a template,
12967    analogous to the RSA vs. RSA_METHOD type of separation. Because of this
12968    operational state can be localised to each ENGINE structure, despite the
12969    fact they all share the same "methods". New ENGINE structures returned in
12970    this case have no functional references and the return value is the single
12971    structural reference. This matches the single structural reference returned
12972    by ENGINE_by_id() normally, when it is incremented on the pre-existing
12973    ENGINE structure.
12974
12975    *Geoff*
12976
12977  * Fix ASN1 decoder when decoding type ANY and V_ASN1_OTHER: since this
12978    needs to match any other type at all we need to manually clear the
12979    tag cache.
12980
12981    *Steve Henson*
12982
12983  * Changes to the "openssl engine" utility to include;
12984    - verbosity levels ('-v', '-vv', and '-vvv') that provide information
12985      about an ENGINE's available control commands.
12986    - executing control commands from command line arguments using the
12987      '-pre' and '-post' switches. '-post' is only used if '-t' is
12988      specified and the ENGINE is successfully initialised. The syntax for
12989      the individual commands are colon-separated, for example;
12990            openssl engine chil -pre FORK_CHECK:0 -pre SO_PATH:/lib/test.so
12991
12992    *Geoff*
12993
12994  * New dynamic control command support for ENGINEs. ENGINEs can now
12995    declare their own commands (numbers), names (strings), descriptions,
12996    and input types for run-time discovery by calling applications. A
12997    subset of these commands are implicitly classed as "executable"
12998    depending on their input type, and only these can be invoked through
12999    the new string-based API function ENGINE_ctrl_cmd_string(). (Eg. this
13000    can be based on user input, config files, etc). The distinction is
13001    that "executable" commands cannot return anything other than a boolean
13002    result and can only support numeric or string input, whereas some
13003    discoverable commands may only be for direct use through
13004    ENGINE_ctrl(), eg. supporting the exchange of binary data, function
13005    pointers, or other custom uses. The "executable" commands are to
13006    support parameterisations of ENGINE behaviour that can be
13007    unambiguously defined by ENGINEs and used consistently across any
13008    OpenSSL-based application. Commands have been added to all the
13009    existing hardware-supporting ENGINEs, noticeably "SO_PATH" to allow
13010    control over shared-library paths without source code alterations.
13011
13012    *Geoff*
13013
13014  * Changed all ENGINE implementations to dynamically allocate their
13015    ENGINEs rather than declaring them statically. Apart from this being
13016    necessary with the removal of the ENGINE_FLAGS_MALLOCED distinction,
13017    this also allows the implementations to compile without using the
13018    internal engine_int.h header.
13019
13020    *Geoff*
13021
13022  * Minor adjustment to "rand" code. RAND_get_rand_method() now returns a
13023    'const' value. Any code that should be able to modify a RAND_METHOD
13024    should already have non-const pointers to it (ie. they should only
13025    modify their own ones).
13026
13027    *Geoff*
13028
13029  * Made a variety of little tweaks to the ENGINE code.
13030    - "atalla" and "ubsec" string definitions were moved from header files
13031      to C code. "nuron" string definitions were placed in variables
13032      rather than hard-coded - allowing parameterisation of these values
13033      later on via ctrl() commands.
13034    - Removed unused "#if 0"'d code.
13035    - Fixed engine list iteration code so it uses ENGINE_free() to release
13036      structural references.
13037    - Constified the RAND_METHOD element of ENGINE structures.
13038    - Constified various get/set functions as appropriate and added
13039      missing functions (including a catch-all ENGINE_cpy that duplicates
13040      all ENGINE values onto a new ENGINE except reference counts/state).
13041    - Removed NULL parameter checks in get/set functions. Setting a method
13042      or function to NULL is a way of cancelling out a previously set
13043      value.  Passing a NULL ENGINE parameter is just plain stupid anyway
13044      and doesn't justify the extra error symbols and code.
13045    - Deprecate the ENGINE_FLAGS_MALLOCED define and move the area for
13046      flags from engine_int.h to engine.h.
13047    - Changed prototypes for ENGINE handler functions (init(), finish(),
13048      ctrl(), key-load functions, etc) to take an (ENGINE*) parameter.
13049
13050    *Geoff*
13051
13052  * Implement binary inversion algorithm for BN_mod_inverse in addition
13053    to the algorithm using long division.  The binary algorithm can be
13054    used only if the modulus is odd.  On 32-bit systems, it is faster
13055    only for relatively small moduli (roughly 20-30% for 128-bit moduli,
13056    roughly 5-15% for 256-bit moduli), so we use it only for moduli
13057    up to 450 bits.  In 64-bit environments, the binary algorithm
13058    appears to be advantageous for much longer moduli; here we use it
13059    for moduli up to 2048 bits.
13060
13061    *Bodo Moeller*
13062
13063  * Rewrite CHOICE field setting in ASN1_item_ex_d2i(). The old code
13064    could not support the combine flag in choice fields.
13065
13066    *Steve Henson*
13067
13068  * Add a 'copy_extensions' option to the 'ca' utility. This copies
13069    extensions from a certificate request to the certificate.
13070
13071    *Steve Henson*
13072
13073  * Allow multiple 'certopt' and 'nameopt' options to be separated
13074    by commas. Add 'namopt' and 'certopt' options to the 'ca' config
13075    file: this allows the display of the certificate about to be
13076    signed to be customised, to allow certain fields to be included
13077    or excluded and extension details. The old system didn't display
13078    multicharacter strings properly, omitted fields not in the policy
13079    and couldn't display additional details such as extensions.
13080
13081    *Steve Henson*
13082
13083  * Function EC_POINTs_mul for multiple scalar multiplication
13084    of an arbitrary number of elliptic curve points
13085            \sum scalars[i]*points[i],
13086    optionally including the generator defined for the EC_GROUP:
13087            scalar*generator +  \sum scalars[i]*points[i].
13088
13089    EC_POINT_mul is a simple wrapper function for the typical case
13090    that the point list has just one item (besides the optional
13091    generator).
13092
13093    *Bodo Moeller*
13094
13095  * First EC_METHODs for curves over GF(p):
13096
13097    EC_GFp_simple_method() uses the basic BN_mod_mul and BN_mod_sqr
13098    operations and provides various method functions that can also
13099    operate with faster implementations of modular arithmetic.
13100
13101    EC_GFp_mont_method() reuses most functions that are part of
13102    EC_GFp_simple_method, but uses Montgomery arithmetic.
13103
13104    *Bodo Moeller; point addition and point doubling
13105    implementation directly derived from source code provided by
13106    Lenka Fibikova <fibikova@exp-math.uni-essen.de>*
13107
13108  * Framework for elliptic curves (crypto/ec/ec.h, crypto/ec/ec_lcl.h,
13109    crypto/ec/ec_lib.c):
13110
13111    Curves are EC_GROUP objects (with an optional group generator)
13112    based on EC_METHODs that are built into the library.
13113
13114    Points are EC_POINT objects based on EC_GROUP objects.
13115
13116    Most of the framework would be able to handle curves over arbitrary
13117    finite fields, but as there are no obvious types for fields other
13118    than GF(p), some functions are limited to that for now.
13119
13120    *Bodo Moeller*
13121
13122  * Add the -HTTP option to s_server.  It is similar to -WWW, but requires
13123    that the file contains a complete HTTP response.
13124
13125    *Richard Levitte*
13126
13127  * Add the ec directory to mkdef.pl and mkfiles.pl. In mkdef.pl
13128    change the def and num file printf format specifier from "%-40sXXX"
13129    to "%-39s XXX". The latter will always guarantee a space after the
13130    field while the former will cause them to run together if the field
13131    is 40 of more characters long.
13132
13133    *Steve Henson*
13134
13135  * Constify the cipher and digest 'method' functions and structures
13136    and modify related functions to take constant EVP_MD and EVP_CIPHER
13137    pointers.
13138
13139    *Steve Henson*
13140
13141  * Hide BN_CTX structure details in bn_lcl.h instead of publishing them
13142    in <openssl/bn.h>.  Also further increase BN_CTX_NUM to 32.
13143
13144    *Bodo Moeller*
13145
13146  * Modify `EVP_Digest*()` routines so they now return values. Although the
13147    internal software routines can never fail additional hardware versions
13148    might.
13149
13150    *Steve Henson*
13151
13152  * Clean up crypto/err/err.h and change some error codes to avoid conflicts:
13153
13154    Previously ERR_R_FATAL was too small and coincided with ERR_LIB_PKCS7
13155    (= ERR_R_PKCS7_LIB); it is now 64 instead of 32.
13156
13157    ASN1 error codes
13158            ERR_R_NESTED_ASN1_ERROR
13159            ...
13160            ERR_R_MISSING_ASN1_EOS
13161    were 4 .. 9, conflicting with
13162            ERR_LIB_RSA (= ERR_R_RSA_LIB)
13163            ...
13164            ERR_LIB_PEM (= ERR_R_PEM_LIB).
13165    They are now 58 .. 63 (i.e., just below ERR_R_FATAL).
13166
13167    Add new error code 'ERR_R_INTERNAL_ERROR'.
13168
13169    *Bodo Moeller*
13170
13171  * Don't overuse locks in crypto/err/err.c: For data retrieval, CRYPTO_r_lock
13172    suffices.
13173
13174    *Bodo Moeller*
13175
13176  * New option '-subj arg' for 'openssl req' and 'openssl ca'.  This
13177    sets the subject name for a new request or supersedes the
13178    subject name in a given request. Formats that can be parsed are
13179            'CN=Some Name, OU=myOU, C=IT'
13180    and
13181            'CN=Some Name/OU=myOU/C=IT'.
13182
13183    Add options '-batch' and '-verbose' to 'openssl req'.
13184
13185    *Massimiliano Pala <madwolf@hackmasters.net>*
13186
13187  * Introduce the possibility to access global variables through
13188    functions on platform were that's the best way to handle exporting
13189    global variables in shared libraries.  To enable this functionality,
13190    one must configure with "EXPORT_VAR_AS_FN" or defined the C macro
13191    "OPENSSL_EXPORT_VAR_AS_FUNCTION" in crypto/opensslconf.h (the latter
13192    is normally done by Configure or something similar).
13193
13194    To implement a global variable, use the macro OPENSSL_IMPLEMENT_GLOBAL
13195    in the source file (foo.c) like this:
13196
13197            OPENSSL_IMPLEMENT_GLOBAL(int,foo)=1;
13198            OPENSSL_IMPLEMENT_GLOBAL(double,bar);
13199
13200    To declare a global variable, use the macros OPENSSL_DECLARE_GLOBAL
13201    and OPENSSL_GLOBAL_REF in the header file (foo.h) like this:
13202
13203            OPENSSL_DECLARE_GLOBAL(int,foo);
13204            #define foo OPENSSL_GLOBAL_REF(foo)
13205            OPENSSL_DECLARE_GLOBAL(double,bar);
13206            #define bar OPENSSL_GLOBAL_REF(bar)
13207
13208    The #defines are very important, and therefore so is including the
13209    header file everywhere where the defined globals are used.
13210
13211    The macro OPENSSL_EXPORT_VAR_AS_FUNCTION also affects the definition
13212    of ASN.1 items, but that structure is a bit different.
13213
13214    The largest change is in util/mkdef.pl which has been enhanced with
13215    better and easier to understand logic to choose which symbols should
13216    go into the Windows .def files as well as a number of fixes and code
13217    cleanup (among others, algorithm keywords are now sorted
13218    lexicographically to avoid constant rewrites).
13219
13220    *Richard Levitte*
13221
13222  * In BN_div() keep a copy of the sign of 'num' before writing the
13223    result to 'rm' because if rm==num the value will be overwritten
13224    and produce the wrong result if 'num' is negative: this caused
13225    problems with BN_mod() and BN_nnmod().
13226
13227    *Steve Henson*
13228
13229  * Function OCSP_request_verify(). This checks the signature on an
13230    OCSP request and verifies the signer certificate. The signer
13231    certificate is just checked for a generic purpose and OCSP request
13232    trust settings.
13233
13234    *Steve Henson*
13235
13236  * Add OCSP_check_validity() function to check the validity of OCSP
13237    responses. OCSP responses are prepared in real time and may only
13238    be a few seconds old. Simply checking that the current time lies
13239    between thisUpdate and nextUpdate max reject otherwise valid responses
13240    caused by either OCSP responder or client clock inaccuracy. Instead
13241    we allow thisUpdate and nextUpdate to fall within a certain period of
13242    the current time. The age of the response can also optionally be
13243    checked. Two new options -validity_period and -status_age added to
13244    ocsp utility.
13245
13246    *Steve Henson*
13247
13248  * If signature or public key algorithm is unrecognized print out its
13249    OID rather that just UNKNOWN.
13250
13251    *Steve Henson*
13252
13253  * Change OCSP_cert_to_id() to tolerate a NULL subject certificate and
13254    OCSP_cert_id_new() a NULL serialNumber. This allows a partial certificate
13255    ID to be generated from the issuer certificate alone which can then be
13256    passed to OCSP_id_issuer_cmp().
13257
13258    *Steve Henson*
13259
13260  * New compilation option ASN1_ITEM_FUNCTIONS. This causes the new
13261    ASN1 modules to export functions returning ASN1_ITEM pointers
13262    instead of the ASN1_ITEM structures themselves. This adds several
13263    new macros which allow the underlying ASN1 function/structure to
13264    be accessed transparently. As a result code should not use ASN1_ITEM
13265    references directly (such as &X509_it) but instead use the relevant
13266    macros (such as ASN1_ITEM_rptr(X509)). This option is to allow
13267    use of the new ASN1 code on platforms where exporting structures
13268    is problematical (for example in shared libraries) but exporting
13269    functions returning pointers to structures is not.
13270
13271    *Steve Henson*
13272
13273  * Add support for overriding the generation of SSL/TLS session IDs.
13274    These callbacks can be registered either in an SSL_CTX or per SSL.
13275    The purpose of this is to allow applications to control, if they wish,
13276    the arbitrary values chosen for use as session IDs, particularly as it
13277    can be useful for session caching in multiple-server environments. A
13278    command-line switch for testing this (and any client code that wishes
13279    to use such a feature) has been added to "s_server".
13280
13281    *Geoff Thorpe, Lutz Jaenicke*
13282
13283  * Modify mkdef.pl to recognise and parse preprocessor conditionals
13284    of the form `#if defined(...) || defined(...) || ...` and
13285    `#if !defined(...) && !defined(...) && ...`.  This also avoids
13286    the growing number of special cases it was previously handling.
13287
13288    *Richard Levitte*
13289
13290  * Make all configuration macros available for application by making
13291    sure they are available in opensslconf.h, by giving them names starting
13292    with `OPENSSL_` to avoid conflicts with other packages and by making
13293    sure e_os2.h will cover all platform-specific cases together with
13294    opensslconf.h.
13295    Additionally, it is now possible to define configuration/platform-
13296    specific names (called "system identities").  In the C code, these
13297    are prefixed with `OPENSSL_SYSNAME_`.  e_os2.h will create another
13298    macro with the name beginning with `OPENSSL_SYS_`, which is determined
13299    from `OPENSSL_SYSNAME_*` or compiler-specific macros depending on
13300    what is available.
13301
13302    *Richard Levitte*
13303
13304  * New option -set_serial to 'req' and 'x509' this allows the serial
13305    number to use to be specified on the command line. Previously self
13306    signed certificates were hard coded with serial number 0 and the
13307    CA options of 'x509' had to use a serial number in a file which was
13308    auto incremented.
13309
13310    *Steve Henson*
13311
13312  * New options to 'ca' utility to support V2 CRL entry extensions.
13313    Currently CRL reason, invalidity date and hold instruction are
13314    supported. Add new CRL extensions to V3 code and some new objects.
13315
13316    *Steve Henson*
13317
13318  * New function EVP_CIPHER_CTX_set_padding() this is used to
13319    disable standard block padding (aka PKCS#5 padding) in the EVP
13320    API, which was previously mandatory. This means that the data is
13321    not padded in any way and so the total length much be a multiple
13322    of the block size, otherwise an error occurs.
13323
13324    *Steve Henson*
13325
13326  * Initial (incomplete) OCSP SSL support.
13327
13328    *Steve Henson*
13329
13330  * New function OCSP_parse_url(). This splits up a URL into its host,
13331    port and path components: primarily to parse OCSP URLs. New -url
13332    option to ocsp utility.
13333
13334    *Steve Henson*
13335
13336  * New nonce behavior. The return value of OCSP_check_nonce() now
13337    reflects the various checks performed. Applications can decide
13338    whether to tolerate certain situations such as an absent nonce
13339    in a response when one was present in a request: the ocsp application
13340    just prints out a warning. New function OCSP_add1_basic_nonce()
13341    this is to allow responders to include a nonce in a response even if
13342    the request is nonce-less.
13343
13344    *Steve Henson*
13345
13346  * Disable stdin buffering in `load_cert()` (`apps/apps.c`) so that no certs are
13347    skipped when using openssl x509 multiple times on a single input file,
13348    e.g. `(openssl x509 -out cert1; openssl x509 -out cert2) <certs`.
13349
13350    *Bodo Moeller*
13351
13352  * Make ASN1_UTCTIME_set_string() and ASN1_GENERALIZEDTIME_set_string()
13353    set string type: to handle setting ASN1_TIME structures. Fix ca
13354    utility to correctly initialize revocation date of CRLs.
13355
13356    *Steve Henson*
13357
13358  * New option SSL_OP_CIPHER_SERVER_PREFERENCE allows the server to override
13359    the clients preferred ciphersuites and rather use its own preferences.
13360    Should help to work around M$ SGC (Server Gated Cryptography) bug in
13361    Internet Explorer by ensuring unchanged hash method during stepup.
13362    (Also replaces the broken/deactivated SSL_OP_NON_EXPORT_FIRST option.)
13363
13364    *Lutz Jaenicke*
13365
13366  * Make mkdef.pl recognise all DECLARE_ASN1 macros, change rijndael
13367    to aes and add a new 'exist' option to print out symbols that don't
13368    appear to exist.
13369
13370    *Steve Henson*
13371
13372  * Additional options to ocsp utility to allow flags to be set and
13373    additional certificates supplied.
13374
13375    *Steve Henson*
13376
13377  * Add the option -VAfile to 'openssl ocsp', so the user can give the
13378    OCSP client a number of certificate to only verify the response
13379    signature against.
13380
13381    *Richard Levitte*
13382
13383  * Update Rijndael code to version 3.0 and change EVP AES ciphers to
13384    handle the new API. Currently only ECB, CBC modes supported. Add new
13385    AES OIDs.
13386
13387    Add TLS AES ciphersuites as described in RFC3268, "Advanced
13388    Encryption Standard (AES) Ciphersuites for Transport Layer
13389    Security (TLS)".  (In beta versions of OpenSSL 0.9.7, these were
13390    not enabled by default and were not part of the "ALL" ciphersuite
13391    alias because they were not yet official; they could be
13392    explicitly requested by specifying the "AESdraft" ciphersuite
13393    group alias.  In the final release of OpenSSL 0.9.7, the group
13394    alias is called "AES" and is part of "ALL".)
13395
13396    *Ben Laurie, Steve  Henson, Bodo Moeller*
13397
13398  * New function OCSP_copy_nonce() to copy nonce value (if present) from
13399    request to response.
13400
13401    *Steve Henson*
13402
13403  * Functions for OCSP responders. OCSP_request_onereq_count(),
13404    OCSP_request_onereq_get0(), OCSP_onereq_get0_id() and OCSP_id_get0_info()
13405    extract information from a certificate request. OCSP_response_create()
13406    creates a response and optionally adds a basic response structure.
13407    OCSP_basic_add1_status() adds a complete single response to a basic
13408    response and returns the OCSP_SINGLERESP structure just added (to allow
13409    extensions to be included for example). OCSP_basic_add1_cert() adds a
13410    certificate to a basic response and OCSP_basic_sign() signs a basic
13411    response with various flags. New helper functions ASN1_TIME_check()
13412    (checks validity of ASN1_TIME structure) and ASN1_TIME_to_generalizedtime()
13413    (converts ASN1_TIME to GeneralizedTime).
13414
13415    *Steve Henson*
13416
13417  * Various new functions. EVP_Digest() combines EVP_Digest{Init,Update,Final}()
13418    in a single operation. X509_get0_pubkey_bitstr() extracts the public_key
13419    structure from a certificate. X509_pubkey_digest() digests the public_key
13420    contents: this is used in various key identifiers.
13421
13422    *Steve Henson*
13423
13424  * Make sk_sort() tolerate a NULL argument.
13425
13426    *Steve Henson reported by Massimiliano Pala <madwolf@comune.modena.it>*
13427
13428  * New OCSP verify flag OCSP_TRUSTOTHER. When set the "other" certificates
13429    passed by the function are trusted implicitly. If any of them signed the
13430    response then it is assumed to be valid and is not verified.
13431
13432    *Steve Henson*
13433
13434  * In PKCS7_set_type() initialise content_type in PKCS7_ENC_CONTENT
13435    to data. This was previously part of the PKCS7 ASN1 code. This
13436    was causing problems with OpenSSL created PKCS#12 and PKCS#7 structures.
13437    *Steve Henson, reported by Kenneth R. Robinette
13438                               <support@securenetterm.com>*
13439
13440  * Add CRYPTO_push_info() and CRYPTO_pop_info() calls to new ASN1
13441    routines: without these tracing memory leaks is very painful.
13442    Fix leaks in PKCS12 and PKCS7 routines.
13443
13444    *Steve Henson*
13445
13446  * Make X509_time_adj() cope with the new behaviour of ASN1_TIME_new().
13447    Previously it initialised the 'type' argument to V_ASN1_UTCTIME which
13448    effectively meant GeneralizedTime would never be used. Now it
13449    is initialised to -1 but X509_time_adj() now has to check the value
13450    and use ASN1_TIME_set() if the value is not V_ASN1_UTCTIME or
13451    V_ASN1_GENERALIZEDTIME, without this it always uses GeneralizedTime.
13452    *Steve Henson, reported by Kenneth R. Robinette
13453                               <support@securenetterm.com>*
13454
13455  * Fixes to BN_to_ASN1_INTEGER when bn is zero. This would previously
13456    result in a zero length in the ASN1_INTEGER structure which was
13457    not consistent with the structure when d2i_ASN1_INTEGER() was used
13458    and would cause ASN1_INTEGER_cmp() to fail. Enhance s2i_ASN1_INTEGER()
13459    to cope with hex and negative integers. Fix bug in i2a_ASN1_INTEGER()
13460    where it did not print out a minus for negative ASN1_INTEGER.
13461
13462    *Steve Henson*
13463
13464  * Add summary printout to ocsp utility. The various functions which
13465    convert status values to strings have been renamed to:
13466    OCSP_response_status_str(), OCSP_cert_status_str() and
13467    OCSP_crl_reason_str() and are no longer static. New options
13468    to verify nonce values and to disable verification. OCSP response
13469    printout format cleaned up.
13470
13471    *Steve Henson*
13472
13473  * Add additional OCSP certificate checks. These are those specified
13474    in RFC2560. This consists of two separate checks: the CA of the
13475    certificate being checked must either be the OCSP signer certificate
13476    or the issuer of the OCSP signer certificate. In the latter case the
13477    OCSP signer certificate must contain the OCSP signing extended key
13478    usage. This check is performed by attempting to match the OCSP
13479    signer or the OCSP signer CA to the issuerNameHash and issuerKeyHash
13480    in the OCSP_CERTID structures of the response.
13481
13482    *Steve Henson*
13483
13484  * Initial OCSP certificate verification added to OCSP_basic_verify()
13485    and related routines. This uses the standard OpenSSL certificate
13486    verify routines to perform initial checks (just CA validity) and
13487    to obtain the certificate chain. Then additional checks will be
13488    performed on the chain. Currently the root CA is checked to see
13489    if it is explicitly trusted for OCSP signing. This is used to set
13490    a root CA as a global signing root: that is any certificate that
13491    chains to that CA is an acceptable OCSP signing certificate.
13492
13493    *Steve Henson*
13494
13495  * New '-extfile ...' option to 'openssl ca' for reading X.509v3
13496    extensions from a separate configuration file.
13497    As when reading extensions from the main configuration file,
13498    the '-extensions ...' option may be used for specifying the
13499    section to use.
13500
13501    *Massimiliano Pala <madwolf@comune.modena.it>*
13502
13503  * New OCSP utility. Allows OCSP requests to be generated or
13504    read. The request can be sent to a responder and the output
13505    parsed, outputted or printed in text form. Not complete yet:
13506    still needs to check the OCSP response validity.
13507
13508    *Steve Henson*
13509
13510  * New subcommands for 'openssl ca':
13511    `openssl ca -status <serial>` prints the status of the cert with
13512    the given serial number (according to the index file).
13513    `openssl ca -updatedb` updates the expiry status of certificates
13514    in the index file.
13515
13516    *Massimiliano Pala <madwolf@comune.modena.it>*
13517
13518  * New '-newreq-nodes' command option to CA.pl.  This is like
13519    '-newreq', but calls 'openssl req' with the '-nodes' option
13520    so that the resulting key is not encrypted.
13521
13522    *Damien Miller <djm@mindrot.org>*
13523
13524  * New configuration for the GNU Hurd.
13525
13526    *Jonathan Bartlett <johnnyb@wolfram.com> via Richard Levitte*
13527
13528  * Initial code to implement OCSP basic response verify. This
13529    is currently incomplete. Currently just finds the signer's
13530    certificate and verifies the signature on the response.
13531
13532    *Steve Henson*
13533
13534  * New SSLeay_version code SSLEAY_DIR to determine the compiled-in
13535    value of OPENSSLDIR.  This is available via the new '-d' option
13536    to 'openssl version', and is also included in 'openssl version -a'.
13537
13538    *Bodo Moeller*
13539
13540  * Allowing defining memory allocation callbacks that will be given
13541    file name and line number information in additional arguments
13542    (a `const char*` and an int).  The basic functionality remains, as
13543    well as the original possibility to just replace malloc(),
13544    realloc() and free() by functions that do not know about these
13545    additional arguments.  To register and find out the current
13546    settings for extended allocation functions, the following
13547    functions are provided:
13548
13549            CRYPTO_set_mem_ex_functions
13550            CRYPTO_set_locked_mem_ex_functions
13551            CRYPTO_get_mem_ex_functions
13552            CRYPTO_get_locked_mem_ex_functions
13553
13554    These work the same way as CRYPTO_set_mem_functions and friends.
13555    `CRYPTO_get_[locked_]mem_functions` now writes 0 where such an
13556    extended allocation function is enabled.
13557    Similarly, `CRYPTO_get_[locked_]mem_ex_functions` writes 0 where
13558    a conventional allocation function is enabled.
13559
13560    *Richard Levitte, Bodo Moeller*
13561
13562  * Finish off removing the remaining LHASH function pointer casts.
13563    There should no longer be any prototype-casting required when using
13564    the LHASH abstraction, and any casts that remain are "bugs". See
13565    the callback types and macros at the head of lhash.h for details
13566    (and "OBJ_cleanup" in crypto/objects/obj_dat.c as an example).
13567
13568    *Geoff Thorpe*
13569
13570  * Add automatic query of EGD sockets in RAND_poll() for the unix variant.
13571    If /dev/[u]random devices are not available or do not return enough
13572    entropy, EGD style sockets (served by EGD or PRNGD) will automatically
13573    be queried.
13574    The locations /var/run/egd-pool, /dev/egd-pool, /etc/egd-pool, and
13575    /etc/entropy will be queried once each in this sequence, querying stops
13576    when enough entropy was collected without querying more sockets.
13577
13578    *Lutz Jaenicke*
13579
13580  * Change the Unix RAND_poll() variant to be able to poll several
13581    random devices, as specified by DEVRANDOM, until a sufficient amount
13582    of data has been collected.   We spend at most 10 ms on each file
13583    (select timeout) and read in non-blocking mode.  DEVRANDOM now
13584    defaults to the list "/dev/urandom", "/dev/random", "/dev/srandom"
13585    (previously it was just the string "/dev/urandom"), so on typical
13586    platforms the 10 ms delay will never occur.
13587    Also separate out the Unix variant to its own file, rand_unix.c.
13588    For VMS, there's a currently-empty rand_vms.c.
13589
13590    *Richard Levitte*
13591
13592  * Move OCSP client related routines to ocsp_cl.c. These
13593    provide utility functions which an application needing
13594    to issue a request to an OCSP responder and analyse the
13595    response will typically need: as opposed to those which an
13596    OCSP responder itself would need which will be added later.
13597
13598    OCSP_request_sign() signs an OCSP request with an API similar
13599    to PKCS7_sign(). OCSP_response_status() returns status of OCSP
13600    response. OCSP_response_get1_basic() extracts basic response
13601    from response. OCSP_resp_find_status(): finds and extracts status
13602    information from an OCSP_CERTID structure (which will be created
13603    when the request structure is built). These are built from lower
13604    level functions which work on OCSP_SINGLERESP structures but
13605    won't normally be used unless the application wishes to examine
13606    extensions in the OCSP response for example.
13607
13608    Replace nonce routines with a pair of functions.
13609    OCSP_request_add1_nonce() adds a nonce value and optionally
13610    generates a random value. OCSP_check_nonce() checks the
13611    validity of the nonce in an OCSP response.
13612
13613    *Steve Henson*
13614
13615  * Change function OCSP_request_add() to OCSP_request_add0_id().
13616    This doesn't copy the supplied OCSP_CERTID and avoids the
13617    need to free up the newly created id. Change return type
13618    to OCSP_ONEREQ to return the internal OCSP_ONEREQ structure.
13619    This can then be used to add extensions to the request.
13620    Deleted OCSP_request_new(), since most of its functionality
13621    is now in OCSP_REQUEST_new() (and the case insensitive name
13622    clash) apart from the ability to set the request name which
13623    will be added elsewhere.
13624
13625    *Steve Henson*
13626
13627  * Update OCSP API. Remove obsolete extensions argument from
13628    various functions. Extensions are now handled using the new
13629    OCSP extension code. New simple OCSP HTTP function which
13630    can be used to send requests and parse the response.
13631
13632    *Steve Henson*
13633
13634  * Fix the PKCS#7 (S/MIME) code to work with new ASN1. Two new
13635    ASN1_ITEM structures help with sign and verify. PKCS7_ATTR_SIGN
13636    uses the special reorder version of SET OF to sort the attributes
13637    and reorder them to match the encoded order. This resolves a long
13638    standing problem: a verify on a PKCS7 structure just after signing
13639    it used to fail because the attribute order did not match the
13640    encoded order. PKCS7_ATTR_VERIFY does not reorder the attributes:
13641    it uses the received order. This is necessary to tolerate some broken
13642    software that does not order SET OF. This is handled by encoding
13643    as a SEQUENCE OF but using implicit tagging (with UNIVERSAL class)
13644    to produce the required SET OF.
13645
13646    *Steve Henson*
13647
13648  * Have mk1mf.pl generate the macros OPENSSL_BUILD_SHLIBCRYPTO and
13649    OPENSSL_BUILD_SHLIBSSL and use them appropriately in the header
13650    files to get correct declarations of the ASN.1 item variables.
13651
13652    *Richard Levitte*
13653
13654  * Rewrite of PKCS#12 code to use new ASN1 functionality. Replace many
13655    PKCS#12 macros with real functions. Fix two unrelated ASN1 bugs:
13656    asn1_check_tlen() would sometimes attempt to use 'ctx' when it was
13657    NULL and ASN1_TYPE was not dereferenced properly in asn1_ex_c2i().
13658    New ASN1 macro: DECLARE_ASN1_ITEM() which just declares the relevant
13659    ASN1_ITEM and no wrapper functions.
13660
13661    *Steve Henson*
13662
13663  * New functions or ASN1_item_d2i_fp() and ASN1_item_d2i_bio(). These
13664    replace the old function pointer based I/O routines. Change most of
13665    the `*_d2i_bio()` and `*_d2i_fp()` functions to use these.
13666
13667    *Steve Henson*
13668
13669  * Enhance mkdef.pl to be more accepting about spacing in C preprocessor
13670    lines, recognize more "algorithms" that can be deselected, and make
13671    it complain about algorithm deselection that isn't recognised.
13672
13673    *Richard Levitte*
13674
13675  * New ASN1 functions to handle dup, sign, verify, digest, pack and
13676    unpack operations in terms of ASN1_ITEM. Modify existing wrappers
13677    to use new functions. Add NO_ASN1_OLD which can be set to remove
13678    some old style ASN1 functions: this can be used to determine if old
13679    code will still work when these eventually go away.
13680
13681    *Steve Henson*
13682
13683  * New extension functions for OCSP structures, these follow the
13684    same conventions as certificates and CRLs.
13685
13686    *Steve Henson*
13687
13688  * New function X509V3_add1_i2d(). This automatically encodes and
13689    adds an extension. Its behaviour can be customised with various
13690    flags to append, replace or delete. Various wrappers added for
13691    certificates and CRLs.
13692
13693    *Steve Henson*
13694
13695  * Fix to avoid calling the underlying ASN1 print routine when
13696    an extension cannot be parsed. Correct a typo in the
13697    OCSP_SERVICELOC extension. Tidy up print OCSP format.
13698
13699    *Steve Henson*
13700
13701  * Make mkdef.pl parse some of the ASN1 macros and add appropriate
13702    entries for variables.
13703
13704    *Steve Henson*
13705
13706  * Add functionality to `apps/openssl.c` for detecting locking
13707    problems: As the program is single-threaded, all we have
13708    to do is register a locking callback using an array for
13709    storing which locks are currently held by the program.
13710
13711    *Bodo Moeller*
13712
13713  * Use a lock around the call to CRYPTO_get_ex_new_index() in
13714    SSL_get_ex_data_X509_STORE_idx(), which is used in
13715    ssl_verify_cert_chain() and thus can be called at any time
13716    during TLS/SSL handshakes so that thread-safety is essential.
13717    Unfortunately, the ex_data design is not at all suited
13718    for multi-threaded use, so it probably should be abolished.
13719
13720    *Bodo Moeller*
13721
13722  * Added Broadcom "ubsec" ENGINE to OpenSSL.
13723
13724    *Broadcom, tweaked and integrated by Geoff Thorpe*
13725
13726  * Move common extension printing code to new function
13727    X509V3_print_extensions(). Reorganise OCSP print routines and
13728    implement some needed OCSP ASN1 functions. Add OCSP extensions.
13729
13730    *Steve Henson*
13731
13732  * New function X509_signature_print() to remove duplication in some
13733    print routines.
13734
13735    *Steve Henson*
13736
13737  * Add a special meaning when SET OF and SEQUENCE OF flags are both
13738    set (this was treated exactly the same as SET OF previously). This
13739    is used to reorder the STACK representing the structure to match the
13740    encoding. This will be used to get round a problem where a PKCS7
13741    structure which was signed could not be verified because the STACK
13742    order did not reflect the encoded order.
13743
13744    *Steve Henson*
13745
13746  * Reimplement the OCSP ASN1 module using the new code.
13747
13748    *Steve Henson*
13749
13750  * Update the X509V3 code to permit the use of an ASN1_ITEM structure
13751    for its ASN1 operations. The old style function pointers still exist
13752    for now but they will eventually go away.
13753
13754    *Steve Henson*
13755
13756  * Merge in replacement ASN1 code from the ASN1 branch. This almost
13757    completely replaces the old ASN1 functionality with a table driven
13758    encoder and decoder which interprets an ASN1_ITEM structure describing
13759    the ASN1 module. Compatibility with the existing ASN1 API (i2d,d2i) is
13760    largely maintained. Almost all of the old asn1_mac.h macro based ASN1
13761    has also been converted to the new form.
13762
13763    *Steve Henson*
13764
13765  * Change BN_mod_exp_recp so that negative moduli are tolerated
13766    (the sign is ignored).  Similarly, ignore the sign in BN_MONT_CTX_set
13767    so that BN_mod_exp_mont and BN_mod_exp_mont_word work
13768    for negative moduli.
13769
13770    *Bodo Moeller*
13771
13772  * Fix BN_uadd and BN_usub: Always return non-negative results instead
13773    of not touching the result's sign bit.
13774
13775    *Bodo Moeller*
13776
13777  * BN_div bugfix: If the result is 0, the sign (res->neg) must not be
13778    set.
13779
13780    *Bodo Moeller*
13781
13782  * Changed the LHASH code to use prototypes for callbacks, and created
13783    macros to declare and implement thin (optionally static) functions
13784    that provide type-safety and avoid function pointer casting for the
13785    type-specific callbacks.
13786
13787    *Geoff Thorpe*
13788
13789  * Added Kerberos Cipher Suites to be used with TLS, as written in
13790    RFC 2712.
13791    *Veers Staats <staatsvr@asc.hpc.mil>,
13792    Jeffrey Altman <jaltman@columbia.edu>, via Richard Levitte*
13793
13794  * Reformat the FAQ so the different questions and answers can be divided
13795    in sections depending on the subject.
13796
13797    *Richard Levitte*
13798
13799  * Have the zlib compression code load ZLIB.DLL dynamically under
13800    Windows.
13801
13802    *Richard Levitte*
13803
13804  * New function BN_mod_sqrt for computing square roots modulo a prime
13805    (using the probabilistic Tonelli-Shanks algorithm unless
13806    p == 3 (mod 4)  or  p == 5 (mod 8),  which are cases that can
13807    be handled deterministically).
13808
13809    *Lenka Fibikova <fibikova@exp-math.uni-essen.de>, Bodo Moeller*
13810
13811  * Make BN_mod_inverse faster by explicitly handling small quotients
13812    in the Euclid loop. (Speed gain about 20% for small moduli [256 or
13813    512 bits], about 30% for larger ones [1024 or 2048 bits].)
13814
13815    *Bodo Moeller*
13816
13817  * New function BN_kronecker.
13818
13819    *Bodo Moeller*
13820
13821  * Fix BN_gcd so that it works on negative inputs; the result is
13822    positive unless both parameters are zero.
13823    Previously something reasonably close to an infinite loop was
13824    possible because numbers could be growing instead of shrinking
13825    in the implementation of Euclid's algorithm.
13826
13827    *Bodo Moeller*
13828
13829  * Fix BN_is_word() and BN_is_one() macros to take into account the
13830    sign of the number in question.
13831
13832    Fix BN_is_word(a,w) to work correctly for w == 0.
13833
13834    The old BN_is_word(a,w) macro is now called BN_abs_is_word(a,w)
13835    because its test if the absolute value of 'a' equals 'w'.
13836    Note that BN_abs_is_word does *not* handle w == 0 reliably;
13837    it exists mostly for use in the implementations of BN_is_zero(),
13838    BN_is_one(), and BN_is_word().
13839
13840    *Bodo Moeller*
13841
13842  * New function BN_swap.
13843
13844    *Bodo Moeller*
13845
13846  * Use BN_nnmod instead of BN_mod in crypto/bn/bn_exp.c so that
13847    the exponentiation functions are more likely to produce reasonable
13848    results on negative inputs.
13849
13850    *Bodo Moeller*
13851
13852  * Change BN_mod_mul so that the result is always non-negative.
13853    Previously, it could be negative if one of the factors was negative;
13854    I don't think anyone really wanted that behaviour.
13855
13856    *Bodo Moeller*
13857
13858  * Move `BN_mod_...` functions into new file `crypto/bn/bn_mod.c`
13859    (except for exponentiation, which stays in `crypto/bn/bn_exp.c`,
13860    and `BN_mod_mul_reciprocal`, which stays in `crypto/bn/bn_recp.c`)
13861    and add new functions:
13862
13863            BN_nnmod
13864            BN_mod_sqr
13865            BN_mod_add
13866            BN_mod_add_quick
13867            BN_mod_sub
13868            BN_mod_sub_quick
13869            BN_mod_lshift1
13870            BN_mod_lshift1_quick
13871            BN_mod_lshift
13872            BN_mod_lshift_quick
13873
13874    These functions always generate non-negative results.
13875
13876    `BN_nnmod` otherwise is `like BN_mod` (if `BN_mod` computes a remainder `r`
13877    such that `|m| < r < 0`, `BN_nnmod` will output `rem + |m|` instead).
13878
13879    `BN_mod_XXX_quick(r, a, [b,] m)` generates the same result as
13880    `BN_mod_XXX(r, a, [b,] m, ctx)`, but requires that `a` [and  `b`]
13881    be reduced modulo `m`.
13882
13883    *Lenka Fibikova <fibikova@exp-math.uni-essen.de>, Bodo Moeller*
13884
13885 <!--
13886    The following entry accidentally appeared in the CHANGES file
13887    distributed with OpenSSL 0.9.7.  The modifications described in
13888    it do *not* apply to OpenSSL 0.9.7.
13889
13890  * Remove a few calls to bn_wexpand() in BN_sqr() (the one in there
13891    was actually never needed) and in BN_mul().  The removal in BN_mul()
13892    required a small change in bn_mul_part_recursive() and the addition
13893    of the functions bn_cmp_part_words(), bn_sub_part_words() and
13894    bn_add_part_words(), which do the same thing as bn_cmp_words(),
13895    bn_sub_words() and bn_add_words() except they take arrays with
13896    differing sizes.
13897
13898    *Richard Levitte*
13899 -->
13900
13901  * In 'openssl passwd', verify passwords read from the terminal
13902    unless the '-salt' option is used (which usually means that
13903    verification would just waste user's time since the resulting
13904    hash is going to be compared with some given password hash)
13905    or the new '-noverify' option is used.
13906
13907    This is an incompatible change, but it does not affect
13908    non-interactive use of 'openssl passwd' (passwords on the command
13909    line, '-stdin' option, '-in ...' option) and thus should not
13910    cause any problems.
13911
13912    *Bodo Moeller*
13913
13914  * Remove all references to RSAref, since there's no more need for it.
13915
13916    *Richard Levitte*
13917
13918  * Make DSO load along a path given through an environment variable
13919    (SHLIB_PATH) with shl_load().
13920
13921    *Richard Levitte*
13922
13923  * Constify the ENGINE code as a result of BIGNUM constification.
13924    Also constify the RSA code and most things related to it.  In a
13925    few places, most notable in the depth of the ASN.1 code, ugly
13926    casts back to non-const were required (to be solved at a later
13927    time)
13928
13929    *Richard Levitte*
13930
13931  * Make it so the openssl application has all engines loaded by default.
13932
13933    *Richard Levitte*
13934
13935  * Constify the BIGNUM routines a little more.
13936
13937    *Richard Levitte*
13938
13939  * Add the following functions:
13940
13941            ENGINE_load_cswift()
13942            ENGINE_load_chil()
13943            ENGINE_load_atalla()
13944            ENGINE_load_nuron()
13945            ENGINE_load_builtin_engines()
13946
13947    That way, an application can itself choose if external engines that
13948    are built-in in OpenSSL shall ever be used or not.  The benefit is
13949    that applications won't have to be linked with libdl or other dso
13950    libraries unless it's really needed.
13951
13952    Changed 'openssl engine' to load all engines on demand.
13953    Changed the engine header files to avoid the duplication of some
13954    declarations (they differed!).
13955
13956    *Richard Levitte*
13957
13958  * 'openssl engine' can now list capabilities.
13959
13960    *Richard Levitte*
13961
13962  * Better error reporting in 'openssl engine'.
13963
13964    *Richard Levitte*
13965
13966  * Never call load_dh_param(NULL) in s_server.
13967
13968    *Bodo Moeller*
13969
13970  * Add engine application.  It can currently list engines by name and
13971    identity, and test if they are actually available.
13972
13973    *Richard Levitte*
13974
13975  * Improve RPM specification file by forcing symbolic linking and making
13976    sure the installed documentation is also owned by root.root.
13977
13978    *Damien Miller <djm@mindrot.org>*
13979
13980  * Give the OpenSSL applications more possibilities to make use of
13981    keys (public as well as private) handled by engines.
13982
13983    *Richard Levitte*
13984
13985  * Add OCSP code that comes from CertCo.
13986
13987    *Richard Levitte*
13988
13989  * Add VMS support for the Rijndael code.
13990
13991    *Richard Levitte*
13992
13993  * Added untested support for Nuron crypto accelerator.
13994
13995    *Ben Laurie*
13996
13997  * Add support for external cryptographic devices.  This code was
13998    previously distributed separately as the "engine" branch.
13999
14000    *Geoff Thorpe, Richard Levitte*
14001
14002  * Rework the filename-translation in the DSO code. It is now possible to
14003    have far greater control over how a "name" is turned into a filename
14004    depending on the operating environment and any oddities about the
14005    different shared library filenames on each system.
14006
14007    *Geoff Thorpe*
14008
14009  * Support threads on FreeBSD-elf in Configure.
14010
14011    *Richard Levitte*
14012
14013  * Fix for SHA1 assembly problem with MASM: it produces
14014    warnings about corrupt line number information when assembling
14015    with debugging information. This is caused by the overlapping
14016    of two sections.
14017
14018    *Bernd Matthes <mainbug@celocom.de>, Steve Henson*
14019
14020  * NCONF changes.
14021    NCONF_get_number() has no error checking at all.  As a replacement,
14022    NCONF_get_number_e() is defined (`_e` for "error checking") and is
14023    promoted strongly.  The old NCONF_get_number is kept around for
14024    binary backward compatibility.
14025    Make it possible for methods to load from something other than a BIO,
14026    by providing a function pointer that is given a name instead of a BIO.
14027    For example, this could be used to load configuration data from an
14028    LDAP server.
14029
14030    *Richard Levitte*
14031
14032  * Fix for non blocking accept BIOs. Added new I/O special reason
14033    BIO_RR_ACCEPT to cover this case. Previously use of accept BIOs
14034    with non blocking I/O was not possible because no retry code was
14035    implemented. Also added new SSL code SSL_WANT_ACCEPT to cover
14036    this case.
14037
14038    *Steve Henson*
14039
14040  * Added the beginnings of Rijndael support.
14041
14042    *Ben Laurie*
14043
14044  * Fix for bug in DirectoryString mask setting. Add support for
14045    X509_NAME_print_ex() in 'req' and X509_print_ex() function
14046    to allow certificate printing to more controllable, additional
14047    'certopt' option to 'x509' to allow new printing options to be
14048    set.
14049
14050    *Steve Henson*
14051
14052  * Clean old EAY MD5 hack from e_os.h.
14053
14054    *Richard Levitte*
14055
14056 ### Changes between 0.9.6l and 0.9.6m  [17 Mar 2004]
14057
14058  * Fix null-pointer assignment in do_change_cipher_spec() revealed
14059    by using the Codenomicon TLS Test Tool ([CVE-2004-0079])
14060
14061    *Joe Orton, Steve Henson*
14062
14063 ### Changes between 0.9.6k and 0.9.6l  [04 Nov 2003]
14064
14065  * Fix additional bug revealed by the NISCC test suite:
14066
14067    Stop bug triggering large recursion when presented with
14068    certain ASN.1 tags ([CVE-2003-0851])
14069
14070    *Steve Henson*
14071
14072 ### Changes between 0.9.6j and 0.9.6k  [30 Sep 2003]
14073
14074  * Fix various bugs revealed by running the NISCC test suite:
14075
14076    Stop out of bounds reads in the ASN1 code when presented with
14077    invalid tags (CVE-2003-0543 and CVE-2003-0544).
14078
14079    If verify callback ignores invalid public key errors don't try to check
14080    certificate signature with the NULL public key.
14081
14082    *Steve Henson*
14083
14084  * In ssl3_accept() (ssl/s3_srvr.c) only accept a client certificate
14085    if the server requested one: as stated in TLS 1.0 and SSL 3.0
14086    specifications.
14087
14088    *Steve Henson*
14089
14090  * In ssl3_get_client_hello() (ssl/s3_srvr.c), tolerate additional
14091    extra data after the compression methods not only for TLS 1.0
14092    but also for SSL 3.0 (as required by the specification).
14093
14094    *Bodo Moeller; problem pointed out by Matthias Loepfe*
14095
14096  * Change X509_certificate_type() to mark the key as exported/exportable
14097    when it's 512 *bits* long, not 512 bytes.
14098
14099    *Richard Levitte*
14100
14101 ### Changes between 0.9.6i and 0.9.6j  [10 Apr 2003]
14102
14103  * Countermeasure against the Klima-Pokorny-Rosa extension of
14104    Bleichbacher's attack on PKCS #1 v1.5 padding: treat
14105    a protocol version number mismatch like a decryption error
14106    in ssl3_get_client_key_exchange (ssl/s3_srvr.c).
14107
14108    *Bodo Moeller*
14109
14110  * Turn on RSA blinding by default in the default implementation
14111    to avoid a timing attack. Applications that don't want it can call
14112    RSA_blinding_off() or use the new flag RSA_FLAG_NO_BLINDING.
14113    They would be ill-advised to do so in most cases.
14114
14115    *Ben Laurie, Steve Henson, Geoff Thorpe, Bodo Moeller*
14116
14117  * Change RSA blinding code so that it works when the PRNG is not
14118    seeded (in this case, the secret RSA exponent is abused as
14119    an unpredictable seed -- if it is not unpredictable, there
14120    is no point in blinding anyway).  Make RSA blinding thread-safe
14121    by remembering the creator's thread ID in rsa->blinding and
14122    having all other threads use local one-time blinding factors
14123    (this requires more computation than sharing rsa->blinding, but
14124    avoids excessive locking; and if an RSA object is not shared
14125    between threads, blinding will still be very fast).
14126
14127    *Bodo Moeller*
14128
14129 ### Changes between 0.9.6h and 0.9.6i  [19 Feb 2003]
14130
14131  * In ssl3_get_record (ssl/s3_pkt.c), minimize information leaked
14132    via timing by performing a MAC computation even if incorrect
14133    block cipher padding has been found.  This is a countermeasure
14134    against active attacks where the attacker has to distinguish
14135    between bad padding and a MAC verification error. ([CVE-2003-0078])
14136
14137    *Bodo Moeller; problem pointed out by Brice Canvel (EPFL),
14138    Alain Hiltgen (UBS), Serge Vaudenay (EPFL), and
14139    Martin Vuagnoux (EPFL, Ilion)*
14140
14141 ### Changes between 0.9.6g and 0.9.6h  [5 Dec 2002]
14142
14143  * New function OPENSSL_cleanse(), which is used to cleanse a section of
14144    memory from its contents.  This is done with a counter that will
14145    place alternating values in each byte.  This can be used to solve
14146    two issues: 1) the removal of calls to memset() by highly optimizing
14147    compilers, and 2) cleansing with other values than 0, since those can
14148    be read through on certain media, for example a swap space on disk.
14149
14150    *Geoff Thorpe*
14151
14152  * Bugfix: client side session caching did not work with external caching,
14153    because the session->cipher setting was not restored when reloading
14154    from the external cache. This problem was masked, when
14155    SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG (part of SSL_OP_ALL) was set.
14156    (Found by Steve Haslam <steve@araqnid.ddts.net>.)
14157
14158    *Lutz Jaenicke*
14159
14160  * Fix client_certificate (ssl/s2_clnt.c): The permissible total
14161    length of the REQUEST-CERTIFICATE message is 18 .. 34, not 17 .. 33.
14162
14163    *Zeev Lieber <zeev-l@yahoo.com>*
14164
14165  * Undo an undocumented change introduced in 0.9.6e which caused
14166    repeated calls to OpenSSL_add_all_ciphers() and
14167    OpenSSL_add_all_digests() to be ignored, even after calling
14168    EVP_cleanup().
14169
14170    *Richard Levitte*
14171
14172  * Change the default configuration reader to deal with last line not
14173    being properly terminated.
14174
14175    *Richard Levitte*
14176
14177  * Change X509_NAME_cmp() so it applies the special rules on handling
14178    DN values that are of type PrintableString, as well as RDNs of type
14179    emailAddress where the value has the type ia5String.
14180
14181    *stefank@valicert.com via Richard Levitte*
14182
14183  * Add a SSL_SESS_CACHE_NO_INTERNAL_STORE flag to take over half
14184    the job SSL_SESS_CACHE_NO_INTERNAL_LOOKUP was inconsistently
14185    doing, define a new flag (SSL_SESS_CACHE_NO_INTERNAL) to be
14186    the bitwise-OR of the two for use by the majority of applications
14187    wanting this behaviour, and update the docs. The documented
14188    behaviour and actual behaviour were inconsistent and had been
14189    changing anyway, so this is more a bug-fix than a behavioural
14190    change.
14191
14192    *Geoff Thorpe, diagnosed by Nadav Har'El*
14193
14194  * Don't impose a 16-byte length minimum on session IDs in ssl/s3_clnt.c
14195    (the SSL 3.0 and TLS 1.0 specifications allow any length up to 32 bytes).
14196
14197    *Bodo Moeller*
14198
14199  * Fix initialization code race conditions in
14200            SSLv23_method(),  SSLv23_client_method(),   SSLv23_server_method(),
14201            SSLv2_method(),   SSLv2_client_method(),    SSLv2_server_method(),
14202            SSLv3_method(),   SSLv3_client_method(),    SSLv3_server_method(),
14203            TLSv1_method(),   TLSv1_client_method(),    TLSv1_server_method(),
14204            ssl2_get_cipher_by_char(),
14205            ssl3_get_cipher_by_char().
14206
14207    *Patrick McCormick <patrick@tellme.com>, Bodo Moeller*
14208
14209  * Reorder cleanup sequence in SSL_CTX_free(): only remove the ex_data after
14210    the cached sessions are flushed, as the remove_cb() might use ex_data
14211    contents. Bug found by Sam Varshavchik <mrsam@courier-mta.com>
14212    (see [openssl.org #212]).
14213
14214    *Geoff Thorpe, Lutz Jaenicke*
14215
14216  * Fix typo in OBJ_txt2obj which incorrectly passed the content
14217    length, instead of the encoding length to d2i_ASN1_OBJECT.
14218
14219    *Steve Henson*
14220
14221 ### Changes between 0.9.6f and 0.9.6g  [9 Aug 2002]
14222
14223  * [In 0.9.6g-engine release:]
14224    Fix crypto/engine/vendor_defns/cswift.h for WIN32 (use `_stdcall`).
14225
14226    *Lynn Gazis <lgazis@rainbow.com>*
14227
14228 ### Changes between 0.9.6e and 0.9.6f  [8 Aug 2002]
14229
14230  * Fix ASN1 checks. Check for overflow by comparing with LONG_MAX
14231    and get fix the header length calculation.
14232    *Florian Weimer <Weimer@CERT.Uni-Stuttgart.DE>,
14233    Alon Kantor <alonk@checkpoint.com> (and others), Steve Henson*
14234
14235  * Use proper error handling instead of 'assertions' in buffer
14236    overflow checks added in 0.9.6e.  This prevents DoS (the
14237    assertions could call abort()).
14238
14239    *Arne Ansper <arne@ats.cyber.ee>, Bodo Moeller*
14240
14241 ### Changes between 0.9.6d and 0.9.6e  [30 Jul 2002]
14242
14243  * Add various sanity checks to asn1_get_length() to reject
14244    the ASN1 length bytes if they exceed sizeof(long), will appear
14245    negative or the content length exceeds the length of the
14246    supplied buffer.
14247
14248    *Steve Henson, Adi Stav <stav@mercury.co.il>, James Yonan <jim@ntlp.com>*
14249
14250  * Fix cipher selection routines: ciphers without encryption had no flags
14251    for the cipher strength set and where therefore not handled correctly
14252    by the selection routines (PR #130).
14253
14254    *Lutz Jaenicke*
14255
14256  * Fix EVP_dsa_sha macro.
14257
14258    *Nils Larsch*
14259
14260  * New option
14261         SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS
14262    for disabling the SSL 3.0/TLS 1.0 CBC vulnerability countermeasure
14263    that was added in OpenSSL 0.9.6d.
14264
14265    As the countermeasure turned out to be incompatible with some
14266    broken SSL implementations, the new option is part of SSL_OP_ALL.
14267    SSL_OP_ALL is usually employed when compatibility with weird SSL
14268    implementations is desired (e.g. '-bugs' option to 's_client' and
14269    's_server'), so the new option is automatically set in many
14270    applications.
14271
14272    *Bodo Moeller*
14273
14274  * Changes in security patch:
14275
14276    Changes marked "(CHATS)" were sponsored by the Defense Advanced
14277    Research Projects Agency (DARPA) and Air Force Research Laboratory,
14278    Air Force Materiel Command, USAF, under agreement number
14279    F30602-01-2-0537.
14280
14281  * Add various sanity checks to asn1_get_length() to reject
14282    the ASN1 length bytes if they exceed sizeof(long), will appear
14283    negative or the content length exceeds the length of the
14284    supplied buffer. ([CVE-2002-0659])
14285
14286    *Steve Henson, Adi Stav <stav@mercury.co.il>, James Yonan <jim@ntlp.com>*
14287
14288  * Assertions for various potential buffer overflows, not known to
14289    happen in practice.
14290
14291    *Ben Laurie (CHATS)*
14292
14293  * Various temporary buffers to hold ASCII versions of integers were
14294    too small for 64 bit platforms. ([CVE-2002-0655])
14295    *Matthew Byng-Maddick <mbm@aldigital.co.uk> and Ben Laurie (CHATS)>*
14296
14297  * Remote buffer overflow in SSL3 protocol - an attacker could
14298    supply an oversized session ID to a client. ([CVE-2002-0656])
14299
14300    *Ben Laurie (CHATS)*
14301
14302  * Remote buffer overflow in SSL2 protocol - an attacker could
14303    supply an oversized client master key. ([CVE-2002-0656])
14304
14305    *Ben Laurie (CHATS)*
14306
14307 ### Changes between 0.9.6c and 0.9.6d  [9 May 2002]
14308
14309  * Fix crypto/asn1/a_sign.c so that 'parameters' is omitted (not
14310    encoded as NULL) with id-dsa-with-sha1.
14311
14312    *Nils Larsch <nla@trustcenter.de>; problem pointed out by Bodo Moeller*
14313
14314  * Check various `X509_...()` return values in `apps/req.c`.
14315
14316    *Nils Larsch <nla@trustcenter.de>*
14317
14318  * Fix BASE64 decode (EVP_DecodeUpdate) for data with CR/LF ended lines:
14319    an end-of-file condition would erroneously be flagged, when the CRLF
14320    was just at the end of a processed block. The bug was discovered when
14321    processing data through a buffering memory BIO handing the data to a
14322    BASE64-decoding BIO. Bug fund and patch submitted by Pavel Tsekov
14323    <ptsekov@syntrex.com> and Nedelcho Stanev.
14324
14325    *Lutz Jaenicke*
14326
14327  * Implement a countermeasure against a vulnerability recently found
14328    in CBC ciphersuites in SSL 3.0/TLS 1.0: Send an empty fragment
14329    before application data chunks to avoid the use of known IVs
14330    with data potentially chosen by the attacker.
14331
14332    *Bodo Moeller*
14333
14334  * Fix length checks in ssl3_get_client_hello().
14335
14336    *Bodo Moeller*
14337
14338  * TLS/SSL library bugfix: use s->s3->in_read_app_data differently
14339    to prevent ssl3_read_internal() from incorrectly assuming that
14340    ssl3_read_bytes() found application data while handshake
14341    processing was enabled when in fact s->s3->in_read_app_data was
14342    merely automatically cleared during the initial handshake.
14343
14344    *Bodo Moeller; problem pointed out by Arne Ansper <arne@ats.cyber.ee>*
14345
14346  * Fix object definitions for Private and Enterprise: they were not
14347    recognized in their shortname (=lowercase) representation. Extend
14348    obj_dat.pl to issue an error when using undefined keywords instead
14349    of silently ignoring the problem (Svenning Sorensen
14350    <sss@sss.dnsalias.net>).
14351
14352    *Lutz Jaenicke*
14353
14354  * Fix DH_generate_parameters() so that it works for 'non-standard'
14355    generators, i.e. generators other than 2 and 5.  (Previously, the
14356    code did not properly initialise the 'add' and 'rem' values to
14357    BN_generate_prime().)
14358
14359    In the new general case, we do not insist that 'generator' is
14360    actually a primitive root: This requirement is rather pointless;
14361    a generator of the order-q subgroup is just as good, if not
14362    better.
14363
14364    *Bodo Moeller*
14365
14366  * Map new X509 verification errors to alerts. Discovered and submitted by
14367    Tom Wu <tom@arcot.com>.
14368
14369    *Lutz Jaenicke*
14370
14371  * Fix ssl3_pending() (ssl/s3_lib.c) to prevent SSL_pending() from
14372    returning non-zero before the data has been completely received
14373    when using non-blocking I/O.
14374
14375    *Bodo Moeller; problem pointed out by John Hughes*
14376
14377  * Some of the ciphers missed the strength entry (SSL_LOW etc).
14378
14379    *Ben Laurie, Lutz Jaenicke*
14380
14381  * Fix bug in SSL_clear(): bad sessions were not removed (found by
14382    Yoram Zahavi <YoramZ@gilian.com>).
14383
14384    *Lutz Jaenicke*
14385
14386  * Add information about CygWin 1.3 and on, and preserve proper
14387    configuration for the versions before that.
14388
14389    *Corinna Vinschen <vinschen@redhat.com> and Richard Levitte*
14390
14391  * Make removal from session cache (SSL_CTX_remove_session()) more robust:
14392    check whether we deal with a copy of a session and do not delete from
14393    the cache in this case. Problem reported by "Izhar Shoshani Levi"
14394    <izhar@checkpoint.com>.
14395
14396    *Lutz Jaenicke*
14397
14398  * Do not store session data into the internal session cache, if it
14399    is never intended to be looked up (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP
14400    flag is set). Proposed by Aslam <aslam@funk.com>.
14401
14402    *Lutz Jaenicke*
14403
14404  * Have ASN1_BIT_STRING_set_bit() really clear a bit when the requested
14405    value is 0.
14406
14407    *Richard Levitte*
14408
14409  * [In 0.9.6d-engine release:]
14410    Fix a crashbug and a logic bug in hwcrhk_load_pubkey().
14411
14412    *Toomas Kiisk <vix@cyber.ee> via Richard Levitte*
14413
14414  * Add the configuration target linux-s390x.
14415
14416    *Neale Ferguson <Neale.Ferguson@SoftwareAG-USA.com> via Richard Levitte*
14417
14418  * The earlier bugfix for the SSL3_ST_SW_HELLO_REQ_C case of
14419    ssl3_accept (ssl/s3_srvr.c) incorrectly used a local flag
14420    variable as an indication that a ClientHello message has been
14421    received.  As the flag value will be lost between multiple
14422    invocations of ssl3_accept when using non-blocking I/O, the
14423    function may not be aware that a handshake has actually taken
14424    place, thus preventing a new session from being added to the
14425    session cache.
14426
14427    To avoid this problem, we now set s->new_session to 2 instead of
14428    using a local variable.
14429
14430    *Lutz Jaenicke, Bodo Moeller*
14431
14432  * Bugfix: Return -1 from ssl3_get_server_done (ssl3/s3_clnt.c)
14433    if the SSL_R_LENGTH_MISMATCH error is detected.
14434
14435    *Geoff Thorpe, Bodo Moeller*
14436
14437  * New 'shared_ldflag' column in Configure platform table.
14438
14439    *Richard Levitte*
14440
14441  * Fix EVP_CIPHER_mode macro.
14442
14443    *"Dan S. Camper" <dan@bti.net>*
14444
14445  * Fix ssl3_read_bytes (ssl/s3_pkt.c): To ignore messages of unknown
14446    type, we must throw them away by setting rr->length to 0.
14447
14448    *D P Chang <dpc@qualys.com>*
14449
14450 ### Changes between 0.9.6b and 0.9.6c  [21 dec 2001]
14451
14452  * Fix BN_rand_range bug pointed out by Dominikus Scherkl
14453    <Dominikus.Scherkl@biodata.com>.  (The previous implementation
14454    worked incorrectly for those cases where range = `10..._2`  and
14455    `3*range`  is two bits longer than  range.)
14456
14457    *Bodo Moeller*
14458
14459  * Only add signing time to PKCS7 structures if it is not already
14460    present.
14461
14462    *Steve Henson*
14463
14464  * Fix crypto/objects/objects.h: "ld-ce" should be "id-ce",
14465    OBJ_ld_ce should be OBJ_id_ce.
14466    Also some ip-pda OIDs in crypto/objects/objects.txt were
14467    incorrect (cf. RFC 3039).
14468
14469    *Matt Cooper, Frederic Giudicelli, Bodo Moeller*
14470
14471  * Release CRYPTO_LOCK_DYNLOCK when CRYPTO_destroy_dynlockid()
14472    returns early because it has nothing to do.
14473
14474    *Andy Schneider <andy.schneider@bjss.co.uk>*
14475
14476  * [In 0.9.6c-engine release:]
14477    Fix mutex callback return values in crypto/engine/hw_ncipher.c.
14478
14479    *Andy Schneider <andy.schneider@bjss.co.uk>*
14480
14481  * [In 0.9.6c-engine release:]
14482    Add support for Cryptographic Appliance's keyserver technology.
14483    (Use engine 'keyclient')
14484
14485    *Cryptographic Appliances and Geoff Thorpe*
14486
14487  * Add a configuration entry for OS/390 Unix.  The C compiler 'c89'
14488    is called via tools/c89.sh because arguments have to be
14489    rearranged (all '-L' options must appear before the first object
14490    modules).
14491
14492    *Richard Shapiro <rshapiro@abinitio.com>*
14493
14494  * [In 0.9.6c-engine release:]
14495    Add support for Broadcom crypto accelerator cards, backported
14496    from 0.9.7.
14497
14498    *Broadcom, Nalin Dahyabhai <nalin@redhat.com>, Mark Cox*
14499
14500  * [In 0.9.6c-engine release:]
14501    Add support for SureWare crypto accelerator cards from
14502    Baltimore Technologies.  (Use engine 'sureware')
14503
14504    *Baltimore Technologies and Mark Cox*
14505
14506  * [In 0.9.6c-engine release:]
14507    Add support for crypto accelerator cards from Accelerated
14508    Encryption Processing, www.aep.ie.  (Use engine 'aep')
14509
14510    *AEP Inc. and Mark Cox*
14511
14512  * Add a configuration entry for gcc on UnixWare.
14513
14514    *Gary Benson <gbenson@redhat.com>*
14515
14516  * Change ssl/s2_clnt.c and ssl/s2_srvr.c so that received handshake
14517    messages are stored in a single piece (fixed-length part and
14518    variable-length part combined) and fix various bugs found on the way.
14519
14520    *Bodo Moeller*
14521
14522  * Disable caching in BIO_gethostbyname(), directly use gethostbyname()
14523    instead.  BIO_gethostbyname() does not know what timeouts are
14524    appropriate, so entries would stay in cache even when they have
14525    become invalid.
14526    *Bodo Moeller; problem pointed out by Rich Salz <rsalz@zolera.com>*
14527
14528  * Change ssl23_get_client_hello (ssl/s23_srvr.c) behaviour when
14529    faced with a pathologically small ClientHello fragment that does
14530    not contain client_version: Instead of aborting with an error,
14531    simply choose the highest available protocol version (i.e.,
14532    TLS 1.0 unless it is disabled).  In practice, ClientHello
14533    messages are never sent like this, but this change gives us
14534    strictly correct behaviour at least for TLS.
14535
14536    *Bodo Moeller*
14537
14538  * Fix SSL handshake functions and SSL_clear() such that SSL_clear()
14539    never resets s->method to s->ctx->method when called from within
14540    one of the SSL handshake functions.
14541
14542    *Bodo Moeller; problem pointed out by Niko Baric*
14543
14544  * In ssl3_get_client_hello (ssl/s3_srvr.c), generate a fatal alert
14545    (sent using the client's version number) if client_version is
14546    smaller than the protocol version in use.  Also change
14547    ssl23_get_client_hello (ssl/s23_srvr.c) to select TLS 1.0 if
14548    the client demanded SSL 3.0 but only TLS 1.0 is enabled; then
14549    the client will at least see that alert.
14550
14551    *Bodo Moeller*
14552
14553  * Fix ssl3_get_message (ssl/s3_both.c) to handle message fragmentation
14554    correctly.
14555
14556    *Bodo Moeller*
14557
14558  * Avoid infinite loop in ssl3_get_message (ssl/s3_both.c) if a
14559    client receives HelloRequest while in a handshake.
14560
14561    *Bodo Moeller; bug noticed by Andy Schneider <andy.schneider@bjss.co.uk>*
14562
14563  * Bugfix in ssl3_accept (ssl/s3_srvr.c): Case SSL3_ST_SW_HELLO_REQ_C
14564    should end in 'break', not 'goto end' which circumvents various
14565    cleanups done in state SSL_ST_OK.   But session related stuff
14566    must be disabled for SSL_ST_OK in the case that we just sent a
14567    HelloRequest.
14568
14569    Also avoid some overhead by not calling ssl_init_wbio_buffer()
14570    before just sending a HelloRequest.
14571
14572    *Bodo Moeller, Eric Rescorla <ekr@rtfm.com>*
14573
14574  * Fix ssl/s3_enc.c, ssl/t1_enc.c and ssl/s3_pkt.c so that we don't
14575    reveal whether illegal block cipher padding was found or a MAC
14576    verification error occurred.  (Neither SSLerr() codes nor alerts
14577    are directly visible to potential attackers, but the information
14578    may leak via logfiles.)
14579
14580    Similar changes are not required for the SSL 2.0 implementation
14581    because the number of padding bytes is sent in clear for SSL 2.0,
14582    and the extra bytes are just ignored.  However ssl/s2_pkt.c
14583    failed to verify that the purported number of padding bytes is in
14584    the legal range.
14585
14586    *Bodo Moeller*
14587
14588  * Add OpenUNIX-8 support including shared libraries
14589    (Boyd Lynn Gerber <gerberb@zenez.com>).
14590
14591    *Lutz Jaenicke*
14592
14593  * Improve RSA_padding_check_PKCS1_OAEP() check again to avoid
14594    'wristwatch attack' using huge encoding parameters (cf.
14595    James H. Manger's CRYPTO 2001 paper).  Note that the
14596    RSA_PKCS1_OAEP_PADDING case of RSA_private_decrypt() does not use
14597    encoding parameters and hence was not vulnerable.
14598
14599    *Bodo Moeller*
14600
14601  * BN_sqr() bug fix.
14602
14603    *Ulf Möller, reported by Jim Ellis <jim.ellis@cavium.com>*
14604
14605  * Rabin-Miller test analyses assume uniformly distributed witnesses,
14606    so use BN_pseudo_rand_range() instead of using BN_pseudo_rand()
14607    followed by modular reduction.
14608
14609    *Bodo Moeller; pointed out by Adam Young <AYoung1@NCSUS.JNJ.COM>*
14610
14611  * Add BN_pseudo_rand_range() with obvious functionality: BN_rand_range()
14612    equivalent based on BN_pseudo_rand() instead of BN_rand().
14613
14614    *Bodo Moeller*
14615
14616  * s3_srvr.c: allow sending of large client certificate lists (> 16 kB).
14617    This function was broken, as the check for a new client hello message
14618    to handle SGC did not allow these large messages.
14619    (Tracked down by "Douglas E. Engert" <deengert@anl.gov>.)
14620
14621    *Lutz Jaenicke*
14622
14623  * Add alert descriptions for TLSv1 to `SSL_alert_desc_string[_long]()`.
14624
14625    *Lutz Jaenicke*
14626
14627  * Fix buggy behaviour of BIO_get_num_renegotiates() and BIO_ctrl()
14628    for BIO_C_GET_WRITE_BUF_SIZE ("Stephen Hinton" <shinton@netopia.com>).
14629
14630    *Lutz Jaenicke*
14631
14632  * Rework the configuration and shared library support for Tru64 Unix.
14633    The configuration part makes use of modern compiler features and
14634    still retains old compiler behavior for those that run older versions
14635    of the OS.  The shared library support part includes a variant that
14636    uses the RPATH feature, and is available through the special
14637    configuration target "alpha-cc-rpath", which will never be selected
14638    automatically.
14639
14640    *Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu> via Richard Levitte*
14641
14642  * In ssl3_get_key_exchange (ssl/s3_clnt.c), call ssl3_get_message()
14643    with the same message size as in ssl3_get_certificate_request().
14644    Otherwise, if no ServerKeyExchange message occurs, CertificateRequest
14645    messages might inadvertently be reject as too long.
14646
14647    *Petr Lampa <lampa@fee.vutbr.cz>*
14648
14649  * Enhanced support for IA-64 Unix platforms (well, Linux and HP-UX).
14650
14651    *Andy Polyakov*
14652
14653  * Modified SSL library such that the verify_callback that has been set
14654    specifically for an SSL object with SSL_set_verify() is actually being
14655    used. Before the change, a verify_callback set with this function was
14656    ignored and the verify_callback() set in the SSL_CTX at the time of
14657    the call was used. New function X509_STORE_CTX_set_verify_cb() introduced
14658    to allow the necessary settings.
14659
14660    *Lutz Jaenicke*
14661
14662  * Initialize static variable in crypto/dsa/dsa_lib.c and crypto/dh/dh_lib.c
14663    explicitly to NULL, as at least on Solaris 8 this seems not always to be
14664    done automatically (in contradiction to the requirements of the C
14665    standard). This made problems when used from OpenSSH.
14666
14667    *Lutz Jaenicke*
14668
14669  * In OpenSSL 0.9.6a and 0.9.6b, crypto/dh/dh_key.c ignored
14670    dh->length and always used
14671
14672            BN_rand_range(priv_key, dh->p).
14673
14674    BN_rand_range() is not necessary for Diffie-Hellman, and this
14675    specific range makes Diffie-Hellman unnecessarily inefficient if
14676    dh->length (recommended exponent length) is much smaller than the
14677    length of dh->p.  We could use BN_rand_range() if the order of
14678    the subgroup was stored in the DH structure, but we only have
14679    dh->length.
14680
14681    So switch back to
14682
14683            BN_rand(priv_key, l, ...)
14684
14685    where 'l' is dh->length if this is defined, or BN_num_bits(dh->p)-1
14686    otherwise.
14687
14688    *Bodo Moeller*
14689
14690  * In
14691
14692            RSA_eay_public_encrypt
14693            RSA_eay_private_decrypt
14694            RSA_eay_private_encrypt (signing)
14695            RSA_eay_public_decrypt (signature verification)
14696
14697    (default implementations for RSA_public_encrypt,
14698    RSA_private_decrypt, RSA_private_encrypt, RSA_public_decrypt),
14699    always reject numbers >= n.
14700
14701    *Bodo Moeller*
14702
14703  * In crypto/rand/md_rand.c, use a new short-time lock CRYPTO_LOCK_RAND2
14704    to synchronize access to 'locking_thread'.  This is necessary on
14705    systems where access to 'locking_thread' (an 'unsigned long'
14706    variable) is not atomic.
14707
14708    *Bodo Moeller*
14709
14710  * In crypto/rand/md_rand.c, set 'locking_thread' to current thread's ID
14711    *before* setting the 'crypto_lock_rand' flag.  The previous code had
14712    a race condition if 0 is a valid thread ID.
14713
14714    *Travis Vitek <vitek@roguewave.com>*
14715
14716  * Add support for shared libraries under Irix.
14717
14718    *Albert Chin-A-Young <china@thewrittenword.com>*
14719
14720  * Add configuration option to build on Linux on both big-endian and
14721    little-endian MIPS.
14722
14723    *Ralf Baechle <ralf@uni-koblenz.de>*
14724
14725  * Add the possibility to create shared libraries on HP-UX.
14726
14727    *Richard Levitte*
14728
14729 ### Changes between 0.9.6a and 0.9.6b  [9 Jul 2001]
14730
14731  * Change ssleay_rand_bytes (crypto/rand/md_rand.c)
14732    to avoid a SSLeay/OpenSSL PRNG weakness pointed out by
14733    Markku-Juhani O. Saarinen <markku-juhani.saarinen@nokia.com>:
14734    PRNG state recovery was possible based on the output of
14735    one PRNG request appropriately sized to gain knowledge on
14736    'md' followed by enough consecutive 1-byte PRNG requests
14737    to traverse all of 'state'.
14738
14739    1. When updating 'md_local' (the current thread's copy of 'md')
14740       during PRNG output generation, hash all of the previous
14741       'md_local' value, not just the half used for PRNG output.
14742
14743    2. Make the number of bytes from 'state' included into the hash
14744       independent from the number of PRNG bytes requested.
14745
14746    The first measure alone would be sufficient to avoid
14747    Markku-Juhani's attack.  (Actually it had never occurred
14748    to me that the half of 'md_local' used for chaining was the
14749    half from which PRNG output bytes were taken -- I had always
14750    assumed that the secret half would be used.)  The second
14751    measure makes sure that additional data from 'state' is never
14752    mixed into 'md_local' in small portions; this heuristically
14753    further strengthens the PRNG.
14754
14755    *Bodo Moeller*
14756
14757  * Fix crypto/bn/asm/mips3.s.
14758
14759    *Andy Polyakov*
14760
14761  * When only the key is given to "enc", the IV is undefined. Print out
14762    an error message in this case.
14763
14764    *Lutz Jaenicke*
14765
14766  * Handle special case when X509_NAME is empty in X509 printing routines.
14767
14768    *Steve Henson*
14769
14770  * In dsa_do_verify (crypto/dsa/dsa_ossl.c), verify that r and s are
14771    positive and less than q.
14772
14773    *Bodo Moeller*
14774
14775  * Don't change `*pointer` in CRYPTO_add_lock() is add_lock_callback is
14776    used: it isn't thread safe and the add_lock_callback should handle
14777    that itself.
14778
14779    *Paul Rose <Paul.Rose@bridge.com>*
14780
14781  * Verify that incoming data obeys the block size in
14782    ssl3_enc (ssl/s3_enc.c) and tls1_enc (ssl/t1_enc.c).
14783
14784    *Bodo Moeller*
14785
14786  * Fix OAEP check.
14787
14788    *Ulf Möller, Bodo Möller*
14789
14790  * The countermeasure against Bleichbacher's attack on PKCS #1 v1.5
14791    RSA encryption was accidentally removed in s3_srvr.c in OpenSSL 0.9.5
14792    when fixing the server behaviour for backwards-compatible 'client
14793    hello' messages.  (Note that the attack is impractical against
14794    SSL 3.0 and TLS 1.0 anyway because length and version checking
14795    means that the probability of guessing a valid ciphertext is
14796    around 2^-40; see section 5 in Bleichenbacher's CRYPTO '98
14797    paper.)
14798
14799    Before 0.9.5, the countermeasure (hide the error by generating a
14800    random 'decryption result') did not work properly because
14801    ERR_clear_error() was missing, meaning that SSL_get_error() would
14802    detect the supposedly ignored error.
14803
14804    Both problems are now fixed.
14805
14806    *Bodo Moeller*
14807
14808  * In crypto/bio/bf_buff.c, increase DEFAULT_BUFFER_SIZE to 4096
14809    (previously it was 1024).
14810
14811    *Bodo Moeller*
14812
14813  * Fix for compatibility mode trust settings: ignore trust settings
14814    unless some valid trust or reject settings are present.
14815
14816    *Steve Henson*
14817
14818  * Fix for blowfish EVP: its a variable length cipher.
14819
14820    *Steve Henson*
14821
14822  * Fix various bugs related to DSA S/MIME verification. Handle missing
14823    parameters in DSA public key structures and return an error in the
14824    DSA routines if parameters are absent.
14825
14826    *Steve Henson*
14827
14828  * In versions up to 0.9.6, RAND_file_name() resorted to file ".rnd"
14829    in the current directory if neither $RANDFILE nor $HOME was set.
14830    RAND_file_name() in 0.9.6a returned NULL in this case.  This has
14831    caused some confusion to Windows users who haven't defined $HOME.
14832    Thus RAND_file_name() is changed again: e_os.h can define a
14833    DEFAULT_HOME, which will be used if $HOME is not set.
14834    For Windows, we use "C:"; on other platforms, we still require
14835    environment variables.
14836
14837  * Move 'if (!initialized) RAND_poll()' into regions protected by
14838    CRYPTO_LOCK_RAND.  This is not strictly necessary, but avoids
14839    having multiple threads call RAND_poll() concurrently.
14840
14841    *Bodo Moeller*
14842
14843  * In crypto/rand/md_rand.c, replace 'add_do_not_lock' flag by a
14844    combination of a flag and a thread ID variable.
14845    Otherwise while one thread is in ssleay_rand_bytes (which sets the
14846    flag), *other* threads can enter ssleay_add_bytes without obeying
14847    the CRYPTO_LOCK_RAND lock (and may even illegally release the lock
14848    that they do not hold after the first thread unsets add_do_not_lock).
14849
14850    *Bodo Moeller*
14851
14852  * Change bctest again: '-x' expressions are not available in all
14853    versions of 'test'.
14854
14855    *Bodo Moeller*
14856
14857 ### Changes between 0.9.6 and 0.9.6a  [5 Apr 2001]
14858
14859  * Fix a couple of memory leaks in PKCS7_dataDecode()
14860
14861    *Steve Henson, reported by Heyun Zheng <hzheng@atdsprint.com>*
14862
14863  * Change Configure and Makefiles to provide EXE_EXT, which will contain
14864    the default extension for executables, if any.  Also, make the perl
14865    scripts that use symlink() to test if it really exists and use "cp"
14866    if it doesn't.  All this made OpenSSL compilable and installable in
14867    CygWin.
14868
14869    *Richard Levitte*
14870
14871  * Fix for asn1_GetSequence() for indefinite length constructed data.
14872    If SEQUENCE is length is indefinite just set c->slen to the total
14873    amount of data available.
14874
14875    *Steve Henson, reported by shige@FreeBSD.org*
14876
14877    *This change does not apply to 0.9.7.*
14878
14879  * Change bctest to avoid here-documents inside command substitution
14880    (workaround for FreeBSD /bin/sh bug).
14881    For compatibility with Ultrix, avoid shell functions (introduced
14882    in the bctest version that searches along $PATH).
14883
14884    *Bodo Moeller*
14885
14886  * Rename 'des_encrypt' to 'des_encrypt1'.  This avoids the clashes
14887    with des_encrypt() defined on some operating systems, like Solaris
14888    and UnixWare.
14889
14890    *Richard Levitte*
14891
14892  * Check the result of RSA-CRT (see D. Boneh, R. DeMillo, R. Lipton:
14893    On the Importance of Eliminating Errors in Cryptographic
14894    Computations, J. Cryptology 14 (2001) 2, 101-119,
14895    <http://theory.stanford.edu/~dabo/papers/faults.ps.gz>).
14896
14897    *Ulf Moeller*
14898
14899  * MIPS assembler BIGNUM division bug fix.
14900
14901    *Andy Polyakov*
14902
14903  * Disabled incorrect Alpha assembler code.
14904
14905    *Richard Levitte*
14906
14907  * Fix PKCS#7 decode routines so they correctly update the length
14908    after reading an EOC for the EXPLICIT tag.
14909
14910    *Steve Henson*
14911
14912    *This change does not apply to 0.9.7.*
14913
14914  * Fix bug in PKCS#12 key generation routines. This was triggered
14915    if a 3DES key was generated with a 0 initial byte. Include
14916    PKCS12_BROKEN_KEYGEN compilation option to retain the old
14917    (but broken) behaviour.
14918
14919    *Steve Henson*
14920
14921  * Enhance bctest to search for a working bc along $PATH and print
14922    it when found.
14923
14924    *Tim Rice <tim@multitalents.net> via Richard Levitte*
14925
14926  * Fix memory leaks in err.c: free err_data string if necessary;
14927    don't write to the wrong index in ERR_set_error_data.
14928
14929    *Bodo Moeller*
14930
14931  * Implement ssl23_peek (analogous to ssl23_read), which previously
14932    did not exist.
14933
14934    *Bodo Moeller*
14935
14936  * Replace rdtsc with `_emit` statements for VC++ version 5.
14937
14938    *Jeremy Cooper <jeremy@baymoo.org>*
14939
14940  * Make it possible to reuse SSLv2 sessions.
14941
14942    *Richard Levitte*
14943
14944  * In copy_email() check for >= 0 as a return value for
14945    X509_NAME_get_index_by_NID() since 0 is a valid index.
14946
14947    *Steve Henson reported by Massimiliano Pala <madwolf@opensca.org>*
14948
14949  * Avoid coredump with unsupported or invalid public keys by checking if
14950    X509_get_pubkey() fails in PKCS7_verify(). Fix memory leak when
14951    PKCS7_verify() fails with non detached data.
14952
14953    *Steve Henson*
14954
14955  * Don't use getenv in library functions when run as setuid/setgid.
14956    New function OPENSSL_issetugid().
14957
14958    *Ulf Moeller*
14959
14960  * Avoid false positives in memory leak detection code (crypto/mem_dbg.c)
14961    due to incorrect handling of multi-threading:
14962
14963    1. Fix timing glitch in the MemCheck_off() portion of CRYPTO_mem_ctrl().
14964
14965    2. Fix logical glitch in is_MemCheck_on() aka CRYPTO_is_mem_check_on().
14966
14967    3. Count how many times MemCheck_off() has been called so that
14968       nested use can be treated correctly.  This also avoids
14969       inband-signalling in the previous code (which relied on the
14970       assumption that thread ID 0 is impossible).
14971
14972    *Bodo Moeller*
14973
14974  * Add "-rand" option also to s_client and s_server.
14975
14976    *Lutz Jaenicke*
14977
14978  * Fix CPU detection on Irix 6.x.
14979    *Kurt Hockenbury <khockenb@stevens-tech.edu> and
14980    "Bruce W. Forsberg" <bruce.forsberg@baesystems.com>*
14981
14982  * Fix X509_NAME bug which produced incorrect encoding if X509_NAME
14983    was empty.
14984
14985    *Steve Henson*
14986
14987    *This change does not apply to 0.9.7.*
14988
14989  * Use the cached encoding of an X509_NAME structure rather than
14990    copying it. This is apparently the reason for the libsafe "errors"
14991    but the code is actually correct.
14992
14993    *Steve Henson*
14994
14995  * Add new function BN_rand_range(), and fix DSA_sign_setup() to prevent
14996    Bleichenbacher's DSA attack.
14997    Extend BN_[pseudo_]rand: As before, top=1 forces the highest two bits
14998    to be set and top=0 forces the highest bit to be set; top=-1 is new
14999    and leaves the highest bit random.
15000
15001    *Ulf Moeller, Bodo Moeller*
15002
15003  * In the `NCONF_...`-based implementations for `CONF_...` queries
15004    (crypto/conf/conf_lib.c), if the input LHASH is NULL, avoid using
15005    a temporary CONF structure with the data component set to NULL
15006    (which gives segmentation faults in lh_retrieve).
15007    Instead, use NULL for the CONF pointer in CONF_get_string and
15008    CONF_get_number (which may use environment variables) and directly
15009    return NULL from CONF_get_section.
15010
15011    *Bodo Moeller*
15012
15013  * Fix potential buffer overrun for EBCDIC.
15014
15015    *Ulf Moeller*
15016
15017  * Tolerate nonRepudiation as being valid for S/MIME signing and certSign
15018    keyUsage if basicConstraints absent for a CA.
15019
15020    *Steve Henson*
15021
15022  * Make SMIME_write_PKCS7() write mail header values with a format that
15023    is more generally accepted (no spaces before the semicolon), since
15024    some programs can't parse those values properly otherwise.  Also make
15025    sure BIO's that break lines after each write do not create invalid
15026    headers.
15027
15028    *Richard Levitte*
15029
15030  * Make the CRL encoding routines work with empty SEQUENCE OF. The
15031    macros previously used would not encode an empty SEQUENCE OF
15032    and break the signature.
15033
15034    *Steve Henson*
15035
15036    *This change does not apply to 0.9.7.*
15037
15038  * Zero the premaster secret after deriving the master secret in
15039    DH ciphersuites.
15040
15041    *Steve Henson*
15042
15043  * Add some EVP_add_digest_alias registrations (as found in
15044    OpenSSL_add_all_digests()) to SSL_library_init()
15045    aka OpenSSL_add_ssl_algorithms().  This provides improved
15046    compatibility with peers using X.509 certificates
15047    with unconventional AlgorithmIdentifier OIDs.
15048
15049    *Bodo Moeller*
15050
15051  * Fix for Irix with NO_ASM.
15052
15053    *"Bruce W. Forsberg" <bruce.forsberg@baesystems.com>*
15054
15055  * ./config script fixes.
15056
15057    *Ulf Moeller, Richard Levitte*
15058
15059  * Fix 'openssl passwd -1'.
15060
15061    *Bodo Moeller*
15062
15063  * Change PKCS12_key_gen_asc() so it can cope with non null
15064    terminated strings whose length is passed in the passlen
15065    parameter, for example from PEM callbacks. This was done
15066    by adding an extra length parameter to asc2uni().
15067
15068    *Steve Henson, reported by <oddissey@samsung.co.kr>*
15069
15070  * Fix C code generated by 'openssl dsaparam -C': If a BN_bin2bn
15071    call failed, free the DSA structure.
15072
15073    *Bodo Moeller*
15074
15075  * Fix to uni2asc() to cope with zero length Unicode strings.
15076    These are present in some PKCS#12 files.
15077
15078    *Steve Henson*
15079
15080  * Increase s2->wbuf allocation by one byte in ssl2_new (ssl/s2_lib.c).
15081    Otherwise do_ssl_write (ssl/s2_pkt.c) will write beyond buffer limits
15082    when writing a 32767 byte record.
15083
15084    *Bodo Moeller; problem reported by Eric Day <eday@concentric.net>*
15085
15086  * In `RSA_eay_public_{en,ed}crypt` and RSA_eay_mod_exp (rsa_eay.c),
15087    obtain lock CRYPTO_LOCK_RSA before setting `rsa->_method_mod_{n,p,q}`.
15088
15089    (RSA objects have a reference count access to which is protected
15090    by CRYPTO_LOCK_RSA [see rsa_lib.c, s3_srvr.c, ssl_cert.c, ssl_rsa.c],
15091    so they are meant to be shared between threads.)
15092    *Bodo Moeller, Geoff Thorpe; original patch submitted by
15093    "Reddie, Steven" <Steven.Reddie@ca.com>*
15094
15095  * Fix a deadlock in CRYPTO_mem_leaks().
15096
15097    *Bodo Moeller*
15098
15099  * Use better test patterns in bntest.
15100
15101    *Ulf Möller*
15102
15103  * rand_win.c fix for Borland C.
15104
15105    *Ulf Möller*
15106
15107  * BN_rshift bugfix for n == 0.
15108
15109    *Bodo Moeller*
15110
15111  * Add a 'bctest' script that checks for some known 'bc' bugs
15112    so that 'make test' does not abort just because 'bc' is broken.
15113
15114    *Bodo Moeller*
15115
15116  * Store verify_result within SSL_SESSION also for client side to
15117    avoid potential security hole. (Re-used sessions on the client side
15118    always resulted in verify_result==X509_V_OK, not using the original
15119    result of the server certificate verification.)
15120
15121    *Lutz Jaenicke*
15122
15123  * Fix ssl3_pending: If the record in s->s3->rrec is not of type
15124    SSL3_RT_APPLICATION_DATA, return 0.
15125    Similarly, change ssl2_pending to return 0 if SSL_in_init(s) is true.
15126
15127    *Bodo Moeller*
15128
15129  * Fix SSL_peek:
15130    Both ssl2_peek and ssl3_peek, which were totally broken in earlier
15131    releases, have been re-implemented by renaming the previous
15132    implementations of ssl2_read and ssl3_read to ssl2_read_internal
15133    and ssl3_read_internal, respectively, and adding 'peek' parameters
15134    to them.  The new ssl[23]_{read,peek} functions are calls to
15135    ssl[23]_read_internal with the 'peek' flag set appropriately.
15136    A 'peek' parameter has also been added to ssl3_read_bytes, which
15137    does the actual work for ssl3_read_internal.
15138
15139    *Bodo Moeller*
15140
15141  * Initialise "ex_data" member of RSA/DSA/DH structures prior to calling
15142    the method-specific "init()" handler. Also clean up ex_data after
15143    calling the method-specific "finish()" handler. Previously, this was
15144    happening the other way round.
15145
15146    *Geoff Thorpe*
15147
15148  * Increase BN_CTX_NUM (the number of BIGNUMs in a BN_CTX) to 16.
15149    The previous value, 12, was not always sufficient for BN_mod_exp().
15150
15151    *Bodo Moeller*
15152
15153  * Make sure that shared libraries get the internal name engine with
15154    the full version number and not just 0.  This should mark the
15155    shared libraries as not backward compatible.  Of course, this should
15156    be changed again when we can guarantee backward binary compatibility.
15157
15158    *Richard Levitte*
15159
15160  * Fix typo in get_cert_by_subject() in by_dir.c
15161
15162    *Jean-Marc Desperrier <jean-marc.desperrier@certplus.com>*
15163
15164  * Rework the system to generate shared libraries:
15165
15166    - Make note of the expected extension for the shared libraries and
15167      if there is a need for symbolic links from for example libcrypto.so.0
15168      to libcrypto.so.0.9.7.  There is extended info in Configure for
15169      that.
15170
15171    - Make as few rebuilds of the shared libraries as possible.
15172
15173    - Still avoid linking the OpenSSL programs with the shared libraries.
15174
15175    - When installing, install the shared libraries separately from the
15176      static ones.
15177
15178    *Richard Levitte*
15179
15180  * Fix SSL_CTX_set_read_ahead macro to actually use its argument.
15181
15182    Copy SSL_CTX's read_ahead flag to SSL object directly in SSL_new
15183    and not in SSL_clear because the latter is also used by the
15184    accept/connect functions; previously, the settings made by
15185    SSL_set_read_ahead would be lost during the handshake.
15186
15187    *Bodo Moeller; problems reported by Anders Gertz <gertz@epact.se>*
15188
15189  * Correct util/mkdef.pl to be selective about disabled algorithms.
15190    Previously, it would create entries for disabled algorithms no
15191    matter what.
15192
15193    *Richard Levitte*
15194
15195  * Added several new manual pages for SSL_* function.
15196
15197    *Lutz Jaenicke*
15198
15199 ### Changes between 0.9.5a and 0.9.6  [24 Sep 2000]
15200
15201  * In ssl23_get_client_hello, generate an error message when faced
15202    with an initial SSL 3.0/TLS record that is too small to contain the
15203    first two bytes of the ClientHello message, i.e. client_version.
15204    (Note that this is a pathologic case that probably has never happened
15205    in real life.)  The previous approach was to use the version number
15206    from the record header as a substitute; but our protocol choice
15207    should not depend on that one because it is not authenticated
15208    by the Finished messages.
15209
15210    *Bodo Moeller*
15211
15212  * More robust randomness gathering functions for Windows.
15213
15214    *Jeffrey Altman <jaltman@columbia.edu>*
15215
15216  * For compatibility reasons if the flag X509_V_FLAG_ISSUER_CHECK is
15217    not set then we don't setup the error code for issuer check errors
15218    to avoid possibly overwriting other errors which the callback does
15219    handle. If an application does set the flag then we assume it knows
15220    what it is doing and can handle the new informational codes
15221    appropriately.
15222
15223    *Steve Henson*
15224
15225  * Fix for a nasty bug in ASN1_TYPE handling. ASN1_TYPE is used for
15226    a general "ANY" type, as such it should be able to decode anything
15227    including tagged types. However it didn't check the class so it would
15228    wrongly interpret tagged types in the same way as their universal
15229    counterpart and unknown types were just rejected. Changed so that the
15230    tagged and unknown types are handled in the same way as a SEQUENCE:
15231    that is the encoding is stored intact. There is also a new type
15232    "V_ASN1_OTHER" which is used when the class is not universal, in this
15233    case we have no idea what the actual type is so we just lump them all
15234    together.
15235
15236    *Steve Henson*
15237
15238  * On VMS, stdout may very well lead to a file that is written to
15239    in a record-oriented fashion.  That means that every write() will
15240    write a separate record, which will be read separately by the
15241    programs trying to read from it.  This can be very confusing.
15242
15243    The solution is to put a BIO filter in the way that will buffer
15244    text until a linefeed is reached, and then write everything a
15245    line at a time, so every record written will be an actual line,
15246    not chunks of lines and not (usually doesn't happen, but I've
15247    seen it once) several lines in one record.  BIO_f_linebuffer() is
15248    the answer.
15249
15250    Currently, it's a VMS-only method, because that's where it has
15251    been tested well enough.
15252
15253    *Richard Levitte*
15254
15255  * Remove 'optimized' squaring variant in BN_mod_mul_montgomery,
15256    it can return incorrect results.
15257    (Note: The buggy variant was not enabled in OpenSSL 0.9.5a,
15258    but it was in 0.9.6-beta[12].)
15259
15260    *Bodo Moeller*
15261
15262  * Disable the check for content being present when verifying detached
15263    signatures in pk7_smime.c. Some versions of Netscape (wrongly)
15264    include zero length content when signing messages.
15265
15266    *Steve Henson*
15267
15268  * New BIO_shutdown_wr macro, which invokes the BIO_C_SHUTDOWN_WR
15269    BIO_ctrl (for BIO pairs).
15270
15271    *Bodo Möller*
15272
15273  * Add DSO method for VMS.
15274
15275    *Richard Levitte*
15276
15277  * Bug fix: Montgomery multiplication could produce results with the
15278    wrong sign.
15279
15280    *Ulf Möller*
15281
15282  * Add RPM specification openssl.spec and modify it to build three
15283    packages.  The default package contains applications, application
15284    documentation and run-time libraries.  The devel package contains
15285    include files, static libraries and function documentation.  The
15286    doc package contains the contents of the doc directory.  The original
15287    openssl.spec was provided by Damien Miller <djm@mindrot.org>.
15288
15289    *Richard Levitte*
15290
15291  * Add a large number of documentation files for many SSL routines.
15292
15293    *Lutz Jaenicke <Lutz.Jaenicke@aet.TU-Cottbus.DE>*
15294
15295  * Add a configuration entry for Sony News 4.
15296
15297    *NAKAJI Hiroyuki <nakaji@tutrp.tut.ac.jp>*
15298
15299  * Don't set the two most significant bits to one when generating a
15300    random number < q in the DSA library.
15301
15302    *Ulf Möller*
15303
15304  * New SSL API mode 'SSL_MODE_AUTO_RETRY'.  This disables the default
15305    behaviour that SSL_read may result in SSL_ERROR_WANT_READ (even if
15306    the underlying transport is blocking) if a handshake took place.
15307    (The default behaviour is needed by applications such as s_client
15308    and s_server that use select() to determine when to use SSL_read;
15309    but for applications that know in advance when to expect data, it
15310    just makes things more complicated.)
15311
15312    *Bodo Moeller*
15313
15314  * Add RAND_egd_bytes(), which gives control over the number of bytes read
15315    from EGD.
15316
15317    *Ben Laurie*
15318
15319  * Add a few more EBCDIC conditionals that make `req` and `x509`
15320    work better on such systems.
15321
15322    *Martin Kraemer <Martin.Kraemer@MchP.Siemens.De>*
15323
15324  * Add two demo programs for PKCS12_parse() and PKCS12_create().
15325    Update PKCS12_parse() so it copies the friendlyName and the
15326    keyid to the certificates aux info.
15327
15328    *Steve Henson*
15329
15330  * Fix bug in PKCS7_verify() which caused an infinite loop
15331    if there was more than one signature.
15332
15333    *Sven Uszpelkat <su@celocom.de>*
15334
15335  * Major change in util/mkdef.pl to include extra information
15336    about each symbol, as well as presenting variables as well
15337    as functions.  This change means that there's n more need
15338    to rebuild the .num files when some algorithms are excluded.
15339
15340    *Richard Levitte*
15341
15342  * Allow the verify time to be set by an application,
15343    rather than always using the current time.
15344
15345    *Steve Henson*
15346
15347  * Phase 2 verify code reorganisation. The certificate
15348    verify code now looks up an issuer certificate by a
15349    number of criteria: subject name, authority key id
15350    and key usage. It also verifies self signed certificates
15351    by the same criteria. The main comparison function is
15352    X509_check_issued() which performs these checks.
15353
15354    Lot of changes were necessary in order to support this
15355    without completely rewriting the lookup code.
15356
15357    Authority and subject key identifier are now cached.
15358
15359    The LHASH 'certs' is X509_STORE has now been replaced
15360    by a STACK_OF(X509_OBJECT). This is mainly because an
15361    LHASH can't store or retrieve multiple objects with
15362    the same hash value.
15363
15364    As a result various functions (which were all internal
15365    use only) have changed to handle the new X509_STORE
15366    structure. This will break anything that messed round
15367    with X509_STORE internally.
15368
15369    The functions X509_STORE_add_cert() now checks for an
15370    exact match, rather than just subject name.
15371
15372    The X509_STORE API doesn't directly support the retrieval
15373    of multiple certificates matching a given criteria, however
15374    this can be worked round by performing a lookup first
15375    (which will fill the cache with candidate certificates)
15376    and then examining the cache for matches. This is probably
15377    the best we can do without throwing out X509_LOOKUP
15378    entirely (maybe later...).
15379
15380    The X509_VERIFY_CTX structure has been enhanced considerably.
15381
15382    All certificate lookup operations now go via a get_issuer()
15383    callback. Although this currently uses an X509_STORE it
15384    can be replaced by custom lookups. This is a simple way
15385    to bypass the X509_STORE hackery necessary to make this
15386    work and makes it possible to use more efficient techniques
15387    in future. A very simple version which uses a simple
15388    STACK for its trusted certificate store is also provided
15389    using X509_STORE_CTX_trusted_stack().
15390
15391    The verify_cb() and verify() callbacks now have equivalents
15392    in the X509_STORE_CTX structure.
15393
15394    X509_STORE_CTX also has a 'flags' field which can be used
15395    to customise the verify behaviour.
15396
15397    *Steve Henson*
15398
15399  * Add new PKCS#7 signing option PKCS7_NOSMIMECAP which
15400    excludes S/MIME capabilities.
15401
15402    *Steve Henson*
15403
15404  * When a certificate request is read in keep a copy of the
15405    original encoding of the signed data and use it when outputting
15406    again. Signatures then use the original encoding rather than
15407    a decoded, encoded version which may cause problems if the
15408    request is improperly encoded.
15409
15410    *Steve Henson*
15411
15412  * For consistency with other BIO_puts implementations, call
15413    buffer_write(b, ...) directly in buffer_puts instead of calling
15414    BIO_write(b, ...).
15415
15416    In BIO_puts, increment b->num_write as in BIO_write.
15417
15418    *Peter.Sylvester@EdelWeb.fr*
15419
15420  * Fix BN_mul_word for the case where the word is 0. (We have to use
15421    BN_zero, we may not return a BIGNUM with an array consisting of
15422    words set to zero.)
15423
15424    *Bodo Moeller*
15425
15426  * Avoid calling abort() from within the library when problems are
15427    detected, except if preprocessor symbols have been defined
15428    (such as REF_CHECK, BN_DEBUG etc.).
15429
15430    *Bodo Moeller*
15431
15432  * New openssl application 'rsautl'. This utility can be
15433    used for low-level RSA operations. DER public key
15434    BIO/fp routines also added.
15435
15436    *Steve Henson*
15437
15438  * New Configure entry and patches for compiling on QNX 4.
15439
15440    *Andreas Schneider <andreas@ds3.etech.fh-hamburg.de>*
15441
15442  * A demo state-machine implementation was sponsored by
15443    Nuron (<http://www.nuron.com/>) and is now available in
15444    demos/state_machine.
15445
15446    *Ben Laurie*
15447
15448  * New options added to the 'dgst' utility for signature
15449    generation and verification.
15450
15451    *Steve Henson*
15452
15453  * Unrecognized PKCS#7 content types are now handled via a
15454    catch all ASN1_TYPE structure. This allows unsupported
15455    types to be stored as a "blob" and an application can
15456    encode and decode it manually.
15457
15458    *Steve Henson*
15459
15460  * Fix various signed/unsigned issues to make a_strex.c
15461    compile under VC++.
15462
15463    *Oscar Jacobsson <oscar.jacobsson@celocom.com>*
15464
15465  * ASN1 fixes. i2d_ASN1_OBJECT was not returning the correct
15466    length if passed a buffer. ASN1_INTEGER_to_BN failed
15467    if passed a NULL BN and its argument was negative.
15468
15469    *Steve Henson, pointed out by Sven Heiberg <sven@tartu.cyber.ee>*
15470
15471  * Modification to PKCS#7 encoding routines to output definite
15472    length encoding. Since currently the whole structures are in
15473    memory there's not real point in using indefinite length
15474    constructed encoding. However if OpenSSL is compiled with
15475    the flag PKCS7_INDEFINITE_ENCODING the old form is used.
15476
15477    *Steve Henson*
15478
15479  * Added BIO_vprintf() and BIO_vsnprintf().
15480
15481    *Richard Levitte*
15482
15483  * Added more prefixes to parse for in the strings written
15484    through a logging bio, to cover all the levels that are available
15485    through syslog.  The prefixes are now:
15486
15487            PANIC, EMERG, EMR       =>      LOG_EMERG
15488            ALERT, ALR              =>      LOG_ALERT
15489            CRIT, CRI               =>      LOG_CRIT
15490            ERROR, ERR              =>      LOG_ERR
15491            WARNING, WARN, WAR      =>      LOG_WARNING
15492            NOTICE, NOTE, NOT       =>      LOG_NOTICE
15493            INFO, INF               =>      LOG_INFO
15494            DEBUG, DBG              =>      LOG_DEBUG
15495
15496    and as before, if none of those prefixes are present at the
15497    beginning of the string, LOG_ERR is chosen.
15498
15499    On Win32, the `LOG_*` levels are mapped according to this:
15500
15501            LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR => EVENTLOG_ERROR_TYPE
15502            LOG_WARNING                             => EVENTLOG_WARNING_TYPE
15503            LOG_NOTICE, LOG_INFO, LOG_DEBUG         => EVENTLOG_INFORMATION_TYPE
15504
15505    *Richard Levitte*
15506
15507  * Made it possible to reconfigure with just the configuration
15508    argument "reconf" or "reconfigure".  The command line arguments
15509    are stored in Makefile.ssl in the variable CONFIGURE_ARGS,
15510    and are retrieved from there when reconfiguring.
15511
15512    *Richard Levitte*
15513
15514  * MD4 implemented.
15515
15516    *Assar Westerlund <assar@sics.se>, Richard Levitte*
15517
15518  * Add the arguments -CAfile and -CApath to the pkcs12 utility.
15519
15520    *Richard Levitte*
15521
15522  * The obj_dat.pl script was messing up the sorting of object
15523    names. The reason was that it compared the quoted version
15524    of strings as a result "OCSP" > "OCSP Signing" because
15525    " > SPACE. Changed script to store unquoted versions of
15526    names and add quotes on output. It was also omitting some
15527    names from the lookup table if they were given a default
15528    value (that is if SN is missing it is given the same
15529    value as LN and vice versa), these are now added on the
15530    grounds that if an object has a name we should be able to
15531    look it up. Finally added warning output when duplicate
15532    short or long names are found.
15533
15534    *Steve Henson*
15535
15536  * Changes needed for Tandem NSK.
15537
15538    *Scott Uroff <scott@xypro.com>*
15539
15540  * Fix SSL 2.0 rollback checking: Due to an off-by-one error in
15541    RSA_padding_check_SSLv23(), special padding was never detected
15542    and thus the SSL 3.0/TLS 1.0 countermeasure against protocol
15543    version rollback attacks was not effective.
15544
15545    In s23_clnt.c, don't use special rollback-attack detection padding
15546    (RSA_SSLV23_PADDING) if SSL 2.0 is the only protocol enabled in the
15547    client; similarly, in s23_srvr.c, don't do the rollback check if
15548    SSL 2.0 is the only protocol enabled in the server.
15549
15550    *Bodo Moeller*
15551
15552  * Make it possible to get hexdumps of unprintable data with 'openssl
15553    asn1parse'.  By implication, the functions ASN1_parse_dump() and
15554    BIO_dump_indent() are added.
15555
15556    *Richard Levitte*
15557
15558  * New functions ASN1_STRING_print_ex() and X509_NAME_print_ex()
15559    these print out strings and name structures based on various
15560    flags including RFC2253 support and proper handling of
15561    multibyte characters. Added options to the 'x509' utility
15562    to allow the various flags to be set.
15563
15564    *Steve Henson*
15565
15566  * Various fixes to use ASN1_TIME instead of ASN1_UTCTIME.
15567    Also change the functions X509_cmp_current_time() and
15568    X509_gmtime_adj() work with an ASN1_TIME structure,
15569    this will enable certificates using GeneralizedTime in validity
15570    dates to be checked.
15571
15572    *Steve Henson*
15573
15574  * Make the NEG_PUBKEY_BUG code (which tolerates invalid
15575    negative public key encodings) on by default,
15576    NO_NEG_PUBKEY_BUG can be set to disable it.
15577
15578    *Steve Henson*
15579
15580  * New function c2i_ASN1_OBJECT() which acts on ASN1_OBJECT
15581    content octets. An i2c_ASN1_OBJECT is unnecessary because
15582    the encoding can be trivially obtained from the structure.
15583
15584    *Steve Henson*
15585
15586  * crypto/err.c locking bugfix: Use write locks (`CRYPTO_w_[un]lock`),
15587    not read locks (`CRYPTO_r_[un]lock`).
15588
15589    *Bodo Moeller*
15590
15591  * A first attempt at creating official support for shared
15592    libraries through configuration.  I've kept it so the
15593    default is static libraries only, and the OpenSSL programs
15594    are always statically linked for now, but there are
15595    preparations for dynamic linking in place.
15596    This has been tested on Linux and Tru64.
15597
15598    *Richard Levitte*
15599
15600  * Randomness polling function for Win9x, as described in:
15601    Peter Gutmann, Software Generation of Practically Strong
15602    Random Numbers.
15603
15604    *Ulf Möller*
15605
15606  * Fix so PRNG is seeded in req if using an already existing
15607    DSA key.
15608
15609    *Steve Henson*
15610
15611  * New options to smime application. -inform and -outform
15612    allow alternative formats for the S/MIME message including
15613    PEM and DER. The -content option allows the content to be
15614    specified separately. This should allow things like Netscape
15615    form signing output easier to verify.
15616
15617    *Steve Henson*
15618
15619  * Fix the ASN1 encoding of tags using the 'long form'.
15620
15621    *Steve Henson*
15622
15623  * New ASN1 functions, `i2c_*` and `c2i_*` for INTEGER and BIT
15624    STRING types. These convert content octets to and from the
15625    underlying type. The actual tag and length octets are
15626    already assumed to have been read in and checked. These
15627    are needed because all other string types have virtually
15628    identical handling apart from the tag. By having versions
15629    of the ASN1 functions that just operate on content octets
15630    IMPLICIT tagging can be handled properly. It also allows
15631    the ASN1_ENUMERATED code to be cut down because ASN1_ENUMERATED
15632    and ASN1_INTEGER are identical apart from the tag.
15633
15634    *Steve Henson*
15635
15636  * Change the handling of OID objects as follows:
15637
15638    - New object identifiers are inserted in objects.txt, following
15639      the syntax given in [crypto/objects/README.md](crypto/objects/README.md).
15640    - objects.pl is used to process obj_mac.num and create a new
15641      obj_mac.h.
15642    - obj_dat.pl is used to create a new obj_dat.h, using the data in
15643      obj_mac.h.
15644
15645    This is currently kind of a hack, and the perl code in objects.pl
15646    isn't very elegant, but it works as I intended.  The simplest way
15647    to check that it worked correctly is to look in obj_dat.h and
15648    check the array nid_objs and make sure the objects haven't moved
15649    around (this is important!).  Additions are OK, as well as
15650    consistent name changes.
15651
15652    *Richard Levitte*
15653
15654  * Add BSD-style MD5-based passwords to 'openssl passwd' (option '-1').
15655
15656    *Bodo Moeller*
15657
15658  * Addition of the command line parameter '-rand file' to 'openssl req'.
15659    The given file adds to whatever has already been seeded into the
15660    random pool through the RANDFILE configuration file option or
15661    environment variable, or the default random state file.
15662
15663    *Richard Levitte*
15664
15665  * mkstack.pl now sorts each macro group into lexical order.
15666    Previously the output order depended on the order the files
15667    appeared in the directory, resulting in needless rewriting
15668    of safestack.h .
15669
15670    *Steve Henson*
15671
15672  * Patches to make OpenSSL compile under Win32 again. Mostly
15673    work arounds for the VC++ problem that it treats func() as
15674    func(void). Also stripped out the parts of mkdef.pl that
15675    added extra typesafe functions: these no longer exist.
15676
15677    *Steve Henson*
15678
15679  * Reorganisation of the stack code. The macros are now all
15680    collected in safestack.h . Each macro is defined in terms of
15681    a "stack macro" of the form `SKM_<name>(type, a, b)`. The
15682    DEBUG_SAFESTACK is now handled in terms of function casts,
15683    this has the advantage of retaining type safety without the
15684    use of additional functions. If DEBUG_SAFESTACK is not defined
15685    then the non typesafe macros are used instead. Also modified the
15686    mkstack.pl script to handle the new form. Needs testing to see
15687    if which (if any) compilers it chokes and maybe make DEBUG_SAFESTACK
15688    the default if no major problems. Similar behaviour for ASN1_SET_OF
15689    and PKCS12_STACK_OF.
15690
15691    *Steve Henson*
15692
15693  * When some versions of IIS use the 'NET' form of private key the
15694    key derivation algorithm is different. Normally MD5(password) is
15695    used as a 128 bit RC4 key. In the modified case
15696    MD5(MD5(password) + "SGCKEYSALT")  is used instead. Added some
15697    new functions i2d_RSA_NET(), d2i_RSA_NET() etc which are the same
15698    as the old Netscape_RSA functions except they have an additional
15699    'sgckey' parameter which uses the modified algorithm. Also added
15700    an -sgckey command line option to the rsa utility. Thanks to
15701    Adrian Peck <bertie@ncipher.com> for posting details of the modified
15702    algorithm to openssl-dev.
15703
15704    *Steve Henson*
15705
15706  * The evp_local.h macros were using 'c.##kname' which resulted in
15707    invalid expansion on some systems (SCO 5.0.5 for example).
15708    Corrected to 'c.kname'.
15709
15710    *Phillip Porch <root@theporch.com>*
15711
15712  * New X509_get1_email() and X509_REQ_get1_email() functions that return
15713    a STACK of email addresses from a certificate or request, these look
15714    in the subject name and the subject alternative name extensions and
15715    omit any duplicate addresses.
15716
15717    *Steve Henson*
15718
15719  * Re-implement BN_mod_exp2_mont using independent (and larger) windows.
15720    This makes DSA verification about 2 % faster.
15721
15722    *Bodo Moeller*
15723
15724  * Increase maximum window size in `BN_mod_exp_...` to 6 bits instead of 5
15725    (meaning that now 2^5 values will be precomputed, which is only 4 KB
15726    plus overhead for 1024 bit moduli).
15727    This makes exponentiations about 0.5 % faster for 1024 bit
15728    exponents (as measured by "openssl speed rsa2048").
15729
15730    *Bodo Moeller*
15731
15732  * Rename memory handling macros to avoid conflicts with other
15733    software:
15734            Malloc         =>  OPENSSL_malloc
15735            Malloc_locked  =>  OPENSSL_malloc_locked
15736            Realloc        =>  OPENSSL_realloc
15737            Free           =>  OPENSSL_free
15738
15739    *Richard Levitte*
15740
15741  * New function BN_mod_exp_mont_word for small bases (roughly 15%
15742    faster than BN_mod_exp_mont, i.e. 7% for a full DH exchange).
15743
15744    *Bodo Moeller*
15745
15746  * CygWin32 support.
15747
15748    *John Jarvie <jjarvie@newsguy.com>*
15749
15750  * The type-safe stack code has been rejigged. It is now only compiled
15751    in when OpenSSL is configured with the DEBUG_SAFESTACK option and
15752    by default all type-specific stack functions are "#define"d back to
15753    standard stack functions. This results in more streamlined output
15754    but retains the type-safety checking possibilities of the original
15755    approach.
15756
15757    *Geoff Thorpe*
15758
15759  * The STACK code has been cleaned up, and certain type declarations
15760    that didn't make a lot of sense have been brought in line. This has
15761    also involved a cleanup of sorts in safestack.h to more correctly
15762    map type-safe stack functions onto their plain stack counterparts.
15763    This work has also resulted in a variety of "const"ifications of
15764    lots of the code, especially `_cmp` operations which should normally
15765    be prototyped with "const" parameters anyway.
15766
15767    *Geoff Thorpe*
15768
15769  * When generating bytes for the first time in md_rand.c, 'stir the pool'
15770    by seeding with STATE_SIZE dummy bytes (with zero entropy count).
15771    (The PRNG state consists of two parts, the large pool 'state' and 'md',
15772    where all of 'md' is used each time the PRNG is used, but 'state'
15773    is used only indexed by a cyclic counter. As entropy may not be
15774    well distributed from the beginning, 'md' is important as a
15775    chaining variable. However, the output function chains only half
15776    of 'md', i.e. 80 bits.  ssleay_rand_add, on the other hand, chains
15777    all of 'md', and seeding with STATE_SIZE dummy bytes will result
15778    in all of 'state' being rewritten, with the new values depending
15779    on virtually all of 'md'.  This overcomes the 80 bit limitation.)
15780
15781    *Bodo Moeller*
15782
15783  * In ssl/s2_clnt.c and ssl/s3_clnt.c, call ERR_clear_error() when
15784    the handshake is continued after ssl_verify_cert_chain();
15785    otherwise, if SSL_VERIFY_NONE is set, remaining error codes
15786    can lead to 'unexplainable' connection aborts later.
15787
15788    *Bodo Moeller; problem tracked down by Lutz Jaenicke*
15789
15790  * Major EVP API cipher revision.
15791    Add hooks for extra EVP features. This allows various cipher
15792    parameters to be set in the EVP interface. Support added for variable
15793    key length ciphers via the EVP_CIPHER_CTX_set_key_length() function and
15794    setting of RC2 and RC5 parameters.
15795
15796    Modify EVP_OpenInit() and EVP_SealInit() to cope with variable key length
15797    ciphers.
15798
15799    Remove lots of duplicated code from the EVP library. For example *every*
15800    cipher init() function handles the 'iv' in the same way according to the
15801    cipher mode. They also all do nothing if the 'key' parameter is NULL and
15802    for CFB and OFB modes they zero ctx->num.
15803
15804    New functionality allows removal of S/MIME code RC2 hack.
15805
15806    Most of the routines have the same form and so can be declared in terms
15807    of macros.
15808
15809    By shifting this to the top level EVP_CipherInit() it can be removed from
15810    all individual ciphers. If the cipher wants to handle IVs or keys
15811    differently it can set the EVP_CIPH_CUSTOM_IV or EVP_CIPH_ALWAYS_CALL_INIT
15812    flags.
15813
15814    Change lots of functions like EVP_EncryptUpdate() to now return a
15815    value: although software versions of the algorithms cannot fail
15816    any installed hardware versions can.
15817
15818    *Steve Henson*
15819
15820  * Implement SSL_OP_TLS_ROLLBACK_BUG: In ssl3_get_client_key_exchange, if
15821    this option is set, tolerate broken clients that send the negotiated
15822    protocol version number instead of the requested protocol version
15823    number.
15824
15825    *Bodo Moeller*
15826
15827  * Call dh_tmp_cb (set by `..._TMP_DH_CB`) with correct 'is_export' flag;
15828    i.e. non-zero for export ciphersuites, zero otherwise.
15829    Previous versions had this flag inverted, inconsistent with
15830    rsa_tmp_cb (..._TMP_RSA_CB).
15831
15832    *Bodo Moeller; problem reported by Amit Chopra*
15833
15834  * Add missing DSA library text string. Work around for some IIS
15835    key files with invalid SEQUENCE encoding.
15836
15837    *Steve Henson*
15838
15839  * Add a document (doc/standards.txt) that list all kinds of standards
15840    and so on that are implemented in OpenSSL.
15841
15842    *Richard Levitte*
15843
15844  * Enhance c_rehash script. Old version would mishandle certificates
15845    with the same subject name hash and wouldn't handle CRLs at all.
15846    Added -fingerprint option to crl utility, to support new c_rehash
15847    features.
15848
15849    *Steve Henson*
15850
15851  * Eliminate non-ANSI declarations in crypto.h and stack.h.
15852
15853    *Ulf Möller*
15854
15855  * Fix for SSL server purpose checking. Server checking was
15856    rejecting certificates which had extended key usage present
15857    but no ssl client purpose.
15858
15859    *Steve Henson, reported by Rene Grosser <grosser@hisolutions.com>*
15860
15861  * Make PKCS#12 code work with no password. The PKCS#12 spec
15862    is a little unclear about how a blank password is handled.
15863    Since the password in encoded as a BMPString with terminating
15864    double NULL a zero length password would end up as just the
15865    double NULL. However no password at all is different and is
15866    handled differently in the PKCS#12 key generation code. NS
15867    treats a blank password as zero length. MSIE treats it as no
15868    password on export: but it will try both on import. We now do
15869    the same: PKCS12_parse() tries zero length and no password if
15870    the password is set to "" or NULL (NULL is now a valid password:
15871    it wasn't before) as does the pkcs12 application.
15872
15873    *Steve Henson*
15874
15875  * Bugfixes in `apps/x509.c`: Avoid a memory leak; and don't use
15876    perror when PEM_read_bio_X509_REQ fails, the error message must
15877    be obtained from the error queue.
15878
15879    *Bodo Moeller*
15880
15881  * Avoid 'thread_hash' memory leak in crypto/err/err.c by freeing
15882    it in ERR_remove_state if appropriate, and change ERR_get_state
15883    accordingly to avoid race conditions (this is necessary because
15884    thread_hash is no longer constant once set).
15885
15886    *Bodo Moeller*
15887
15888  * Bugfix for linux-elf makefile.one.
15889
15890    *Ulf Möller*
15891
15892  * RSA_get_default_method() will now cause a default
15893    RSA_METHOD to be chosen if one doesn't exist already.
15894    Previously this was only set during a call to RSA_new()
15895    or RSA_new_method(NULL) meaning it was possible for
15896    RSA_get_default_method() to return NULL.
15897
15898    *Geoff Thorpe*
15899
15900  * Added native name translation to the existing DSO code
15901    that will convert (if the flag to do so is set) filenames
15902    that are sufficiently small and have no path information
15903    into a canonical native form. Eg. "blah" converted to
15904    "libblah.so" or "blah.dll" etc.
15905
15906    *Geoff Thorpe*
15907
15908  * New function ERR_error_string_n(e, buf, len) which is like
15909    ERR_error_string(e, buf), but writes at most 'len' bytes
15910    including the 0 terminator.  For ERR_error_string_n, 'buf'
15911    may not be NULL.
15912
15913    *Damien Miller <djm@mindrot.org>, Bodo Moeller*
15914
15915  * CONF library reworked to become more general.  A new CONF
15916    configuration file reader "class" is implemented as well as a
15917    new functions (`NCONF_*`, for "New CONF") to handle it.  The now
15918    old `CONF_*` functions are still there, but are reimplemented to
15919    work in terms of the new functions.  Also, a set of functions
15920    to handle the internal storage of the configuration data is
15921    provided to make it easier to write new configuration file
15922    reader "classes" (I can definitely see something reading a
15923    configuration file in XML format, for example), called `_CONF_*`,
15924    or "the configuration storage API"...
15925
15926    The new configuration file reading functions are:
15927
15928            NCONF_new, NCONF_free, NCONF_load, NCONF_load_fp, NCONF_load_bio,
15929            NCONF_get_section, NCONF_get_string, NCONF_get_numbre
15930
15931            NCONF_default, NCONF_WIN32
15932
15933            NCONF_dump_fp, NCONF_dump_bio
15934
15935    NCONF_default and NCONF_WIN32 are method (or "class") choosers,
15936    NCONF_new creates a new CONF object.  This works in the same way
15937    as other interfaces in OpenSSL, like the BIO interface.
15938    `NCONF_dump_*` dump the internal storage of the configuration file,
15939    which is useful for debugging.  All other functions take the same
15940    arguments as the old `CONF_*` functions with the exception of the
15941    first that must be a `CONF *` instead of a `LHASH *`.
15942
15943    To make it easier to use the new classes with the old `CONF_*` functions,
15944    the function CONF_set_default_method is provided.
15945
15946    *Richard Levitte*
15947
15948  * Add '-tls1' option to 'openssl ciphers', which was already
15949    mentioned in the documentation but had not been implemented.
15950    (This option is not yet really useful because even the additional
15951    experimental TLS 1.0 ciphers are currently treated as SSL 3.0 ciphers.)
15952
15953    *Bodo Moeller*
15954
15955  * Initial DSO code added into libcrypto for letting OpenSSL (and
15956    OpenSSL-based applications) load shared libraries and bind to
15957    them in a portable way.
15958
15959    *Geoff Thorpe, with contributions from Richard Levitte*
15960
15961 ### Changes between 0.9.5 and 0.9.5a  [1 Apr 2000]
15962
15963  * Make sure _lrotl and _lrotr are only used with MSVC.
15964
15965  * Use lock CRYPTO_LOCK_RAND correctly in ssleay_rand_status
15966    (the default implementation of RAND_status).
15967
15968  * Rename openssl x509 option '-crlext', which was added in 0.9.5,
15969    to '-clrext' (= clear extensions), as intended and documented.
15970    *Bodo Moeller; inconsistency pointed out by Michael Attili
15971    <attili@amaxo.com>*
15972
15973  * Fix for HMAC. It wasn't zeroing the rest of the block if the key length
15974    was larger than the MD block size.
15975
15976    *Steve Henson, pointed out by Yost William <YostW@tce.com>*
15977
15978  * Modernise PKCS12_parse() so it uses STACK_OF(X509) for its ca argument
15979    fix a leak when the ca argument was passed as NULL. Stop X509_PUBKEY_set()
15980    using the passed key: if the passed key was a private key the result
15981    of X509_print(), for example, would be to print out all the private key
15982    components.
15983
15984    *Steve Henson*
15985
15986  * des_quad_cksum() byte order bug fix.
15987    *Ulf Möller, using the problem description in krb4-0.9.7, where
15988    the solution is attributed to Derrick J Brashear <shadow@DEMENTIA.ORG>*
15989
15990  * Fix so V_ASN1_APP_CHOOSE works again: however its use is strongly
15991    discouraged.
15992
15993    *Steve Henson, pointed out by Brian Korver <briank@cs.stanford.edu>*
15994
15995  * For easily testing in shell scripts whether some command
15996    'openssl XXX' exists, the new pseudo-command 'openssl no-XXX'
15997    returns with exit code 0 iff no command of the given name is available.
15998    'no-XXX' is printed in this case, 'XXX' otherwise.  In both cases,
15999    the output goes to stdout and nothing is printed to stderr.
16000    Additional arguments are always ignored.
16001
16002    Since for each cipher there is a command of the same name,
16003    the 'no-cipher' compilation switches can be tested this way.
16004
16005    ('openssl no-XXX' is not able to detect pseudo-commands such
16006    as 'quit', 'list-XXX-commands', or 'no-XXX' itself.)
16007
16008    *Bodo Moeller*
16009
16010  * Update test suite so that 'make test' succeeds in 'no-rsa' configuration.
16011
16012    *Bodo Moeller*
16013
16014  * For SSL_[CTX_]set_tmp_dh, don't create a DH key if SSL_OP_SINGLE_DH_USE
16015    is set; it will be thrown away anyway because each handshake creates
16016    its own key.
16017    ssl_cert_dup, which is used by SSL_new, now copies DH keys in addition
16018    to parameters -- in previous versions (since OpenSSL 0.9.3) the
16019    'default key' from SSL_CTX_set_tmp_dh would always be lost, meaning
16020    you effectively got SSL_OP_SINGLE_DH_USE when using this macro.
16021
16022    *Bodo Moeller*
16023
16024  * New s_client option -ign_eof: EOF at stdin is ignored, and
16025    'Q' and 'R' lose their special meanings (quit/renegotiate).
16026    This is part of what -quiet does; unlike -quiet, -ign_eof
16027    does not suppress any output.
16028
16029    *Richard Levitte*
16030
16031  * Add compatibility options to the purpose and trust code. The
16032    purpose X509_PURPOSE_ANY is "any purpose" which automatically
16033    accepts a certificate or CA, this was the previous behaviour,
16034    with all the associated security issues.
16035
16036    X509_TRUST_COMPAT is the old trust behaviour: only and
16037    automatically trust self signed roots in certificate store. A
16038    new trust setting X509_TRUST_DEFAULT is used to specify that
16039    a purpose has no associated trust setting and it should instead
16040    use the value in the default purpose.
16041
16042    *Steve Henson*
16043
16044  * Fix the PKCS#8 DSA private key code so it decodes keys again
16045    and fix a memory leak.
16046
16047    *Steve Henson*
16048
16049  * In util/mkerr.pl (which implements 'make errors'), preserve
16050    reason strings from the previous version of the .c file, as
16051    the default to have only downcase letters (and digits) in
16052    automatically generated reasons codes is not always appropriate.
16053
16054    *Bodo Moeller*
16055
16056  * In ERR_load_ERR_strings(), build an ERR_LIB_SYS error reason table
16057    using strerror.  Previously, ERR_reason_error_string() returned
16058    library names as reason strings for SYSerr; but SYSerr is a special
16059    case where small numbers are errno values, not library numbers.
16060
16061    *Bodo Moeller*
16062
16063  * Add '-dsaparam' option to 'openssl dhparam' application.  This
16064    converts DSA parameters into DH parameters. (When creating parameters,
16065    DSA_generate_parameters is used.)
16066
16067    *Bodo Moeller*
16068
16069  * Include 'length' (recommended exponent length) in C code generated
16070    by 'openssl dhparam -C'.
16071
16072    *Bodo Moeller*
16073
16074  * The second argument to set_label in perlasm was already being used
16075    so couldn't be used as a "file scope" flag. Moved to third argument
16076    which was free.
16077
16078    *Steve Henson*
16079
16080  * In PEM_ASN1_write_bio and some other functions, use RAND_pseudo_bytes
16081    instead of RAND_bytes for encryption IVs and salts.
16082
16083    *Bodo Moeller*
16084
16085  * Include RAND_status() into RAND_METHOD instead of implementing
16086    it only for md_rand.c  Otherwise replacing the PRNG by calling
16087    RAND_set_rand_method would be impossible.
16088
16089    *Bodo Moeller*
16090
16091  * Don't let DSA_generate_key() enter an infinite loop if the random
16092    number generation fails.
16093
16094    *Bodo Moeller*
16095
16096  * New 'rand' application for creating pseudo-random output.
16097
16098    *Bodo Moeller*
16099
16100  * Added configuration support for Linux/IA64
16101
16102    *Rolf Haberrecker <rolf@suse.de>*
16103
16104  * Assembler module support for Mingw32.
16105
16106    *Ulf Möller*
16107
16108  * Shared library support for HPUX (in shlib/).
16109
16110    *Lutz Jaenicke <Lutz.Jaenicke@aet.TU-Cottbus.DE> and Anonymous*
16111
16112  * Shared library support for Solaris gcc.
16113
16114    *Lutz Behnke <behnke@trustcenter.de>*
16115
16116 ### Changes between 0.9.4 and 0.9.5  [28 Feb 2000]
16117
16118  * PKCS7_encrypt() was adding text MIME headers twice because they
16119    were added manually and by SMIME_crlf_copy().
16120
16121    *Steve Henson*
16122
16123  * In bntest.c don't call BN_rand with zero bits argument.
16124
16125    *Steve Henson, pointed out by Andrew W. Gray <agray@iconsinc.com>*
16126
16127  * BN_mul bugfix: In bn_mul_part_recursion() only the a>a[n] && b>b[n]
16128    case was implemented. This caused BN_div_recp() to fail occasionally.
16129
16130    *Ulf Möller*
16131
16132  * Add an optional second argument to the set_label() in the perl
16133    assembly language builder. If this argument exists and is set
16134    to 1 it signals that the assembler should use a symbol whose
16135    scope is the entire file, not just the current function. This
16136    is needed with MASM which uses the format label:: for this scope.
16137
16138    *Steve Henson, pointed out by Peter Runestig <peter@runestig.com>*
16139
16140  * Change the ASN1 types so they are typedefs by default. Before
16141    almost all types were #define'd to ASN1_STRING which was causing
16142    STACK_OF() problems: you couldn't declare STACK_OF(ASN1_UTF8STRING)
16143    for example.
16144
16145    *Steve Henson*
16146
16147  * Change names of new functions to the new get1/get0 naming
16148    convention: After 'get1', the caller owns a reference count
16149    and has to call `..._free`; 'get0' returns a pointer to some
16150    data structure without incrementing reference counters.
16151    (Some of the existing 'get' functions increment a reference
16152    counter, some don't.)
16153    Similarly, 'set1' and 'add1' functions increase reference
16154    counters or duplicate objects.
16155
16156    *Steve Henson*
16157
16158  * Allow for the possibility of temp RSA key generation failure:
16159    the code used to assume it always worked and crashed on failure.
16160
16161    *Steve Henson*
16162
16163  * Fix potential buffer overrun problem in BIO_printf().
16164    *Ulf Möller, using public domain code by Patrick Powell; problem
16165    pointed out by David Sacerdote <das33@cornell.edu>*
16166
16167  * Support EGD <http://www.lothar.com/tech/crypto/>.  New functions
16168    RAND_egd() and RAND_status().  In the command line application,
16169    the EGD socket can be specified like a seed file using RANDFILE
16170    or -rand.
16171
16172    *Ulf Möller*
16173
16174  * Allow the string CERTIFICATE to be tolerated in PKCS#7 structures.
16175    Some CAs (e.g. Verisign) distribute certificates in this form.
16176
16177    *Steve Henson*
16178
16179  * Remove the SSL_ALLOW_ADH compile option and set the default cipher
16180    list to exclude them. This means that no special compilation option
16181    is needed to use anonymous DH: it just needs to be included in the
16182    cipher list.
16183
16184    *Steve Henson*
16185
16186  * Change the EVP_MD_CTX_type macro so its meaning consistent with
16187    EVP_MD_type. The old functionality is available in a new macro called
16188    EVP_MD_md(). Change code that uses it and update docs.
16189
16190    *Steve Henson*
16191
16192  * `..._ctrl` functions now have corresponding `..._callback_ctrl` functions
16193    where the `void *` argument is replaced by a function pointer argument.
16194    Previously `void *` was abused to point to functions, which works on
16195    many platforms, but is not correct.  As these functions are usually
16196    called by macros defined in OpenSSL header files, most source code
16197    should work without changes.
16198
16199    *Richard Levitte*
16200
16201  * `<openssl/opensslconf.h>` (which is created by Configure) now contains
16202    sections with information on -D... compiler switches used for
16203    compiling the library so that applications can see them.  To enable
16204    one of these sections, a pre-processor symbol `OPENSSL_..._DEFINES`
16205    must be defined.  E.g.,
16206            #define OPENSSL_ALGORITHM_DEFINES
16207            #include <openssl/opensslconf.h>
16208    defines all pertinent `NO_<algo>` symbols, such as NO_IDEA, NO_RSA, etc.
16209
16210    *Richard Levitte, Ulf and Bodo Möller*
16211
16212  * Bugfix: Tolerate fragmentation and interleaving in the SSL 3/TLS
16213    record layer.
16214
16215    *Bodo Moeller*
16216
16217  * Change the 'other' type in certificate aux info to a STACK_OF
16218    X509_ALGOR. Although not an AlgorithmIdentifier as such it has
16219    the required ASN1 format: arbitrary types determined by an OID.
16220
16221    *Steve Henson*
16222
16223  * Add some PEM_write_X509_REQ_NEW() functions and a command line
16224    argument to 'req'. This is not because the function is newer or
16225    better than others it just uses the work 'NEW' in the certificate
16226    request header lines. Some software needs this.
16227
16228    *Steve Henson*
16229
16230  * Reorganise password command line arguments: now passwords can be
16231    obtained from various sources. Delete the PEM_cb function and make
16232    it the default behaviour: i.e. if the callback is NULL and the
16233    usrdata argument is not NULL interpret it as a null terminated pass
16234    phrase. If usrdata and the callback are NULL then the pass phrase
16235    is prompted for as usual.
16236
16237    *Steve Henson*
16238
16239  * Add support for the Compaq Atalla crypto accelerator. If it is installed,
16240    the support is automatically enabled. The resulting binaries will
16241    autodetect the card and use it if present.
16242
16243    *Ben Laurie and Compaq Inc.*
16244
16245  * Work around for Netscape hang bug. This sends certificate request
16246    and server done in one record. Since this is perfectly legal in the
16247    SSL/TLS protocol it isn't a "bug" option and is on by default. See
16248    the bugs/SSLv3 entry for more info.
16249
16250    *Steve Henson*
16251
16252  * HP-UX tune-up: new unified configs, HP C compiler bug workaround.
16253
16254    *Andy Polyakov*
16255
16256  * Add -rand argument to smime and pkcs12 applications and read/write
16257    of seed file.
16258
16259    *Steve Henson*
16260
16261  * New 'passwd' tool for crypt(3) and apr1 password hashes.
16262
16263    *Bodo Moeller*
16264
16265  * Add command line password options to the remaining applications.
16266
16267    *Steve Henson*
16268
16269  * Bug fix for BN_div_recp() for numerators with an even number of
16270    bits.
16271
16272    *Ulf Möller*
16273
16274  * More tests in bntest.c, and changed test_bn output.
16275
16276    *Ulf Möller*
16277
16278  * ./config recognizes MacOS X now.
16279
16280    *Andy Polyakov*
16281
16282  * Bug fix for BN_div() when the first words of num and divisor are
16283    equal (it gave wrong results if `(rem=(n1-q*d0)&BN_MASK2) < d0)`.
16284
16285    *Ulf Möller*
16286
16287  * Add support for various broken PKCS#8 formats, and command line
16288    options to produce them.
16289
16290    *Steve Henson*
16291
16292  * New functions BN_CTX_start(), BN_CTX_get() and BT_CTX_end() to
16293    get temporary BIGNUMs from a BN_CTX.
16294
16295    *Ulf Möller*
16296
16297  * Correct return values in BN_mod_exp_mont() and BN_mod_exp2_mont()
16298    for p == 0.
16299
16300    *Ulf Möller*
16301
16302  * Change the `SSLeay_add_all_*()` functions to `OpenSSL_add_all_*()` and
16303    include a #define from the old name to the new. The original intent
16304    was that statically linked binaries could for example just call
16305    SSLeay_add_all_ciphers() to just add ciphers to the table and not
16306    link with digests. This never worked because SSLeay_add_all_digests()
16307    and SSLeay_add_all_ciphers() were in the same source file so calling
16308    one would link with the other. They are now in separate source files.
16309
16310    *Steve Henson*
16311
16312  * Add a new -notext option to 'ca' and a -pubkey option to 'spkac'.
16313
16314    *Steve Henson*
16315
16316  * Use a less unusual form of the Miller-Rabin primality test (it used
16317    a binary algorithm for exponentiation integrated into the Miller-Rabin
16318    loop, our standard modexp algorithms are faster).
16319
16320    *Bodo Moeller*
16321
16322  * Support for the EBCDIC character set completed.
16323
16324    *Martin Kraemer <Martin.Kraemer@Mch.SNI.De>*
16325
16326  * Source code cleanups: use const where appropriate, eliminate casts,
16327    use `void *` instead of `char *` in lhash.
16328
16329    *Ulf Möller*
16330
16331  * Bugfix: ssl3_send_server_key_exchange was not restartable
16332    (the state was not changed to SSL3_ST_SW_KEY_EXCH_B, and because of
16333    this the server could overwrite ephemeral keys that the client
16334    has already seen).
16335
16336    *Bodo Moeller*
16337
16338  * Turn DSA_is_prime into a macro that calls BN_is_prime,
16339    using 50 iterations of the Rabin-Miller test.
16340
16341    DSA_generate_parameters now uses BN_is_prime_fasttest (with 50
16342    iterations of the Rabin-Miller test as required by the appendix
16343    to FIPS PUB 186[-1]) instead of DSA_is_prime.
16344    As BN_is_prime_fasttest includes trial division, DSA parameter
16345    generation becomes much faster.
16346
16347    This implies a change for the callback functions in DSA_is_prime
16348    and DSA_generate_parameters: The callback function is called once
16349    for each positive witness in the Rabin-Miller test, not just
16350    occasionally in the inner loop; and the parameters to the
16351    callback function now provide an iteration count for the outer
16352    loop rather than for the current invocation of the inner loop.
16353    DSA_generate_parameters additionally can call the callback
16354    function with an 'iteration count' of -1, meaning that a
16355    candidate has passed the trial division test (when q is generated
16356    from an application-provided seed, trial division is skipped).
16357
16358    *Bodo Moeller*
16359
16360  * New function BN_is_prime_fasttest that optionally does trial
16361    division before starting the Rabin-Miller test and has
16362    an additional BN_CTX * argument (whereas BN_is_prime always
16363    has to allocate at least one BN_CTX).
16364    'callback(1, -1, cb_arg)' is called when a number has passed the
16365    trial division stage.
16366
16367    *Bodo Moeller*
16368
16369  * Fix for bug in CRL encoding. The validity dates weren't being handled
16370    as ASN1_TIME.
16371
16372    *Steve Henson*
16373
16374  * New -pkcs12 option to CA.pl script to write out a PKCS#12 file.
16375
16376    *Steve Henson*
16377
16378  * New function BN_pseudo_rand().
16379
16380    *Ulf Möller*
16381
16382  * Clean up BN_mod_mul_montgomery(): replace the broken (and unreadable)
16383    bignum version of BN_from_montgomery() with the working code from
16384    SSLeay 0.9.0 (the word based version is faster anyway), and clean up
16385    the comments.
16386
16387    *Ulf Möller*
16388
16389  * Avoid a race condition in s2_clnt.c (function get_server_hello) that
16390    made it impossible to use the same SSL_SESSION data structure in
16391    SSL2 clients in multiple threads.
16392
16393    *Bodo Moeller*
16394
16395  * The return value of RAND_load_file() no longer counts bytes obtained
16396    by stat().  RAND_load_file(..., -1) is new and uses the complete file
16397    to seed the PRNG (previously an explicit byte count was required).
16398
16399    *Ulf Möller, Bodo Möller*
16400
16401  * Clean up CRYPTO_EX_DATA functions, some of these didn't have prototypes
16402    used `char *` instead of `void *` and had casts all over the place.
16403
16404    *Steve Henson*
16405
16406  * Make BN_generate_prime() return NULL on error if ret!=NULL.
16407
16408    *Ulf Möller*
16409
16410  * Retain source code compatibility for BN_prime_checks macro:
16411    BN_is_prime(..., BN_prime_checks, ...) now uses
16412    BN_prime_checks_for_size to determine the appropriate number of
16413    Rabin-Miller iterations.
16414
16415    *Ulf Möller*
16416
16417  * Diffie-Hellman uses "safe" primes: DH_check() return code renamed to
16418    DH_CHECK_P_NOT_SAFE_PRIME.
16419    (Check if this is true? OpenPGP calls them "strong".)
16420
16421    *Ulf Möller*
16422
16423  * Merge the functionality of "dh" and "gendh" programs into a new program
16424    "dhparam". The old programs are retained for now but will handle DH keys
16425    (instead of parameters) in future.
16426
16427    *Steve Henson*
16428
16429  * Make the ciphers, s_server and s_client programs check the return values
16430    when a new cipher list is set.
16431
16432    *Steve Henson*
16433
16434  * Enhance the SSL/TLS cipher mechanism to correctly handle the TLS 56bit
16435    ciphers. Before when the 56bit ciphers were enabled the sorting was
16436    wrong.
16437
16438    The syntax for the cipher sorting has been extended to support sorting by
16439    cipher-strength (using the strength_bits hard coded in the tables).
16440    The new command is `@STRENGTH` (see also `doc/apps/ciphers.pod`).
16441
16442    Fix a bug in the cipher-command parser: when supplying a cipher command
16443    string with an "undefined" symbol (neither command nor alphanumeric
16444    *A-Za-z0-9*, ssl_set_cipher_list used to hang in an endless loop. Now
16445    an error is flagged.
16446
16447    Due to the strength-sorting extension, the code of the
16448    ssl_create_cipher_list() function was completely rearranged. I hope that
16449    the readability was also increased :-)
16450
16451    *Lutz Jaenicke <Lutz.Jaenicke@aet.TU-Cottbus.DE>*
16452
16453  * Minor change to 'x509' utility. The -CAcreateserial option now uses 1
16454    for the first serial number and places 2 in the serial number file. This
16455    avoids problems when the root CA is created with serial number zero and
16456    the first user certificate has the same issuer name and serial number
16457    as the root CA.
16458
16459    *Steve Henson*
16460
16461  * Fixes to X509_ATTRIBUTE utilities, change the 'req' program so it uses
16462    the new code. Add documentation for this stuff.
16463
16464    *Steve Henson*
16465
16466  * Changes to X509_ATTRIBUTE utilities. These have been renamed from
16467    `X509_*()` to `X509at_*()` on the grounds that they don't handle X509
16468    structures and behave in an analogous way to the X509v3 functions:
16469    they shouldn't be called directly but wrapper functions should be used
16470    instead.
16471
16472    So we also now have some wrapper functions that call the X509at functions
16473    when passed certificate requests. (TO DO: similar things can be done with
16474    PKCS#7 signed and unsigned attributes, PKCS#12 attributes and a few other
16475    things. Some of these need some d2i or i2d and print functionality
16476    because they handle more complex structures.)
16477
16478    *Steve Henson*
16479
16480  * Add missing #ifndefs that caused missing symbols when building libssl
16481    as a shared library without RSA.  Use #ifndef NO_SSL2 instead of
16482    NO_RSA in `ssl/s2*.c`.
16483
16484    *Kris Kennaway <kris@hub.freebsd.org>, modified by Ulf Möller*
16485
16486  * Precautions against using the PRNG uninitialized: RAND_bytes() now
16487    has a return value which indicates the quality of the random data
16488    (1 = ok, 0 = not seeded).  Also an error is recorded on the thread's
16489    error queue. New function RAND_pseudo_bytes() generates output that is
16490    guaranteed to be unique but not unpredictable. RAND_add is like
16491    RAND_seed, but takes an extra argument for an entropy estimate
16492    (RAND_seed always assumes full entropy).
16493
16494    *Ulf Möller*
16495
16496  * Do more iterations of Rabin-Miller probable prime test (specifically,
16497    3 for 1024-bit primes, 6 for 512-bit primes, 12 for 256-bit primes
16498    instead of only 2 for all lengths; see BN_prime_checks_for_size definition
16499    in crypto/bn/bn_prime.c for the complete table).  This guarantees a
16500    false-positive rate of at most 2^-80 for random input.
16501
16502    *Bodo Moeller*
16503
16504  * Rewrite ssl3_read_n (ssl/s3_pkt.c) avoiding a couple of bugs.
16505
16506    *Bodo Moeller*
16507
16508  * New function X509_CTX_rget_chain() (renamed to X509_CTX_get1_chain
16509    in the 0.9.5 release), this returns the chain
16510    from an X509_CTX structure with a dup of the stack and all
16511    the X509 reference counts upped: so the stack will exist
16512    after X509_CTX_cleanup() has been called. Modify pkcs12.c
16513    to use this.
16514
16515    Also make SSL_SESSION_print() print out the verify return
16516    code.
16517
16518    *Steve Henson*
16519
16520  * Add manpage for the pkcs12 command. Also change the default
16521    behaviour so MAC iteration counts are used unless the new
16522    -nomaciter option is used. This improves file security and
16523    only older versions of MSIE (4.0 for example) need it.
16524
16525    *Steve Henson*
16526
16527  * Honor the no-xxx Configure options when creating .DEF files.
16528
16529    *Ulf Möller*
16530
16531  * Add PKCS#10 attributes to field table: challengePassword,
16532    unstructuredName and unstructuredAddress. These are taken from
16533    draft PKCS#9 v2.0 but are compatible with v1.2 provided no
16534    international characters are used.
16535
16536    More changes to X509_ATTRIBUTE code: allow the setting of types
16537    based on strings. Remove the 'loc' parameter when adding
16538    attributes because these will be a SET OF encoding which is sorted
16539    in ASN1 order.
16540
16541    *Steve Henson*
16542
16543  * Initial changes to the 'req' utility to allow request generation
16544    automation. This will allow an application to just generate a template
16545    file containing all the field values and have req construct the
16546    request.
16547
16548    Initial support for X509_ATTRIBUTE handling. Stacks of these are
16549    used all over the place including certificate requests and PKCS#7
16550    structures. They are currently handled manually where necessary with
16551    some primitive wrappers for PKCS#7. The new functions behave in a
16552    manner analogous to the X509 extension functions: they allow
16553    attributes to be looked up by NID and added.
16554
16555    Later something similar to the X509V3 code would be desirable to
16556    automatically handle the encoding, decoding and printing of the
16557    more complex types. The string types like challengePassword can
16558    be handled by the string table functions.
16559
16560    Also modified the multi byte string table handling. Now there is
16561    a 'global mask' which masks out certain types. The table itself
16562    can use the flag STABLE_NO_MASK to ignore the mask setting: this
16563    is useful when for example there is only one permissible type
16564    (as in countryName) and using the mask might result in no valid
16565    types at all.
16566
16567    *Steve Henson*
16568
16569  * Clean up 'Finished' handling, and add functions SSL_get_finished and
16570    SSL_get_peer_finished to allow applications to obtain the latest
16571    Finished messages sent to the peer or expected from the peer,
16572    respectively.  (SSL_get_peer_finished is usually the Finished message
16573    actually received from the peer, otherwise the protocol will be aborted.)
16574
16575    As the Finished message are message digests of the complete handshake
16576    (with a total of 192 bits for TLS 1.0 and more for SSL 3.0), they can
16577    be used for external authentication procedures when the authentication
16578    provided by SSL/TLS is not desired or is not enough.
16579
16580    *Bodo Moeller*
16581
16582  * Enhanced support for Alpha Linux is added. Now ./config checks if
16583    the host supports BWX extension and if Compaq C is present on the
16584    $PATH. Just exploiting of the BWX extension results in 20-30%
16585    performance kick for some algorithms, e.g. DES and RC4 to mention
16586    a couple. Compaq C in turn generates ~20% faster code for MD5 and
16587    SHA1.
16588
16589    *Andy Polyakov*
16590
16591  * Add support for MS "fast SGC". This is arguably a violation of the
16592    SSL3/TLS protocol. Netscape SGC does two handshakes: the first with
16593    weak crypto and after checking the certificate is SGC a second one
16594    with strong crypto. MS SGC stops the first handshake after receiving
16595    the server certificate message and sends a second client hello. Since
16596    a server will typically do all the time consuming operations before
16597    expecting any further messages from the client (server key exchange
16598    is the most expensive) there is little difference between the two.
16599
16600    To get OpenSSL to support MS SGC we have to permit a second client
16601    hello message after we have sent server done. In addition we have to
16602    reset the MAC if we do get this second client hello.
16603
16604    *Steve Henson*
16605
16606  * Add a function 'd2i_AutoPrivateKey()' this will automatically decide
16607    if a DER encoded private key is RSA or DSA traditional format. Changed
16608    d2i_PrivateKey_bio() to use it. This is only needed for the "traditional"
16609    format DER encoded private key. Newer code should use PKCS#8 format which
16610    has the key type encoded in the ASN1 structure. Added DER private key
16611    support to pkcs8 application.
16612
16613    *Steve Henson*
16614
16615  * SSL 3/TLS 1 servers now don't request certificates when an anonymous
16616    ciphersuites has been selected (as required by the SSL 3/TLS 1
16617    specifications).  Exception: When SSL_VERIFY_FAIL_IF_NO_PEER_CERT
16618    is set, we interpret this as a request to violate the specification
16619    (the worst that can happen is a handshake failure, and 'correct'
16620    behaviour would result in a handshake failure anyway).
16621
16622    *Bodo Moeller*
16623
16624  * In SSL_CTX_add_session, take into account that there might be multiple
16625    SSL_SESSION structures with the same session ID (e.g. when two threads
16626    concurrently obtain them from an external cache).
16627    The internal cache can handle only one SSL_SESSION with a given ID,
16628    so if there's a conflict, we now throw out the old one to achieve
16629    consistency.
16630
16631    *Bodo Moeller*
16632
16633  * Add OIDs for idea and blowfish in CBC mode. This will allow both
16634    to be used in PKCS#5 v2.0 and S/MIME.  Also add checking to
16635    some routines that use cipher OIDs: some ciphers do not have OIDs
16636    defined and so they cannot be used for S/MIME and PKCS#5 v2.0 for
16637    example.
16638
16639    *Steve Henson*
16640
16641  * Simplify the trust setting structure and code. Now we just have
16642    two sequences of OIDs for trusted and rejected settings. These will
16643    typically have values the same as the extended key usage extension
16644    and any application specific purposes.
16645
16646    The trust checking code now has a default behaviour: it will just
16647    check for an object with the same NID as the passed id. Functions can
16648    be provided to override either the default behaviour or the behaviour
16649    for a given id. SSL client, server and email already have functions
16650    in place for compatibility: they check the NID and also return "trusted"
16651    if the certificate is self signed.
16652
16653    *Steve Henson*
16654
16655  * Add d2i,i2d bio/fp functions for PrivateKey: these convert the
16656    traditional format into an EVP_PKEY structure.
16657
16658    *Steve Henson*
16659
16660  * Add a password callback function PEM_cb() which either prompts for
16661    a password if usr_data is NULL or otherwise assumes it is a null
16662    terminated password. Allow passwords to be passed on command line
16663    environment or config files in a few more utilities.
16664
16665    *Steve Henson*
16666
16667  * Add a bunch of DER and PEM functions to handle PKCS#8 format private
16668    keys. Add some short names for PKCS#8 PBE algorithms and allow them
16669    to be specified on the command line for the pkcs8 and pkcs12 utilities.
16670    Update documentation.
16671
16672    *Steve Henson*
16673
16674  * Support for ASN1 "NULL" type. This could be handled before by using
16675    ASN1_TYPE but there wasn't any function that would try to read a NULL
16676    and produce an error if it couldn't. For compatibility we also have
16677    ASN1_NULL_new() and ASN1_NULL_free() functions but these are faked and
16678    don't allocate anything because they don't need to.
16679
16680    *Steve Henson*
16681
16682  * Initial support for MacOS is now provided. Examine INSTALL.MacOS
16683    for details.
16684
16685    *Andy Polyakov, Roy Woods <roy@centicsystems.ca>*
16686
16687  * Rebuild of the memory allocation routines used by OpenSSL code and
16688    possibly others as well.  The purpose is to make an interface that
16689    provide hooks so anyone can build a separate set of allocation and
16690    deallocation routines to be used by OpenSSL, for example memory
16691    pool implementations, or something else, which was previously hard
16692    since Malloc(), Realloc() and Free() were defined as macros having
16693    the values malloc, realloc and free, respectively (except for Win32
16694    compilations).  The same is provided for memory debugging code.
16695    OpenSSL already comes with functionality to find memory leaks, but
16696    this gives people a chance to debug other memory problems.
16697
16698    With these changes, a new set of functions and macros have appeared:
16699
16700      CRYPTO_set_mem_debug_functions()         [F]
16701      CRYPTO_get_mem_debug_functions()         [F]
16702      CRYPTO_dbg_set_options()                 [F]
16703      CRYPTO_dbg_get_options()                 [F]
16704      CRYPTO_malloc_debug_init()               [M]
16705
16706    The memory debug functions are NULL by default, unless the library
16707    is compiled with CRYPTO_MDEBUG or friends is defined.  If someone
16708    wants to debug memory anyway, CRYPTO_malloc_debug_init() (which
16709    gives the standard debugging functions that come with OpenSSL) or
16710    CRYPTO_set_mem_debug_functions() (tells OpenSSL to use functions
16711    provided by the library user) must be used.  When the standard
16712    debugging functions are used, CRYPTO_dbg_set_options can be used to
16713    request additional information:
16714    CRYPTO_dbg_set_options(V_CYRPTO_MDEBUG_xxx) corresponds to setting
16715    the CRYPTO_MDEBUG_xxx macro when compiling the library.
16716
16717    Also, things like CRYPTO_set_mem_functions will always give the
16718    expected result (the new set of functions is used for allocation
16719    and deallocation) at all times, regardless of platform and compiler
16720    options.
16721
16722    To finish it up, some functions that were never use in any other
16723    way than through macros have a new API and new semantic:
16724
16725      CRYPTO_dbg_malloc()
16726      CRYPTO_dbg_realloc()
16727      CRYPTO_dbg_free()
16728
16729    All macros of value have retained their old syntax.
16730
16731    *Richard Levitte and Bodo Moeller*
16732
16733  * Some S/MIME fixes. The OID for SMIMECapabilities was wrong, the
16734    ordering of SMIMECapabilities wasn't in "strength order" and there
16735    was a missing NULL in the AlgorithmIdentifier for the SHA1 signature
16736    algorithm.
16737
16738    *Steve Henson*
16739
16740  * Some ASN1 types with illegal zero length encoding (INTEGER,
16741    ENUMERATED and OBJECT IDENTIFIER) choked the ASN1 routines.
16742
16743    *Frans Heymans <fheymans@isaserver.be>, modified by Steve Henson*
16744
16745  * Merge in my S/MIME library for OpenSSL. This provides a simple
16746    S/MIME API on top of the PKCS#7 code, a MIME parser (with enough
16747    functionality to handle multipart/signed properly) and a utility
16748    called 'smime' to call all this stuff. This is based on code I
16749    originally wrote for Celo who have kindly allowed it to be
16750    included in OpenSSL.
16751
16752    *Steve Henson*
16753
16754  * Add variants des_set_key_checked and des_set_key_unchecked of
16755    des_set_key (aka des_key_sched).  Global variable des_check_key
16756    decides which of these is called by des_set_key; this way
16757    des_check_key behaves as it always did, but applications and
16758    the library itself, which was buggy for des_check_key == 1,
16759    have a cleaner way to pick the version they need.
16760
16761    *Bodo Moeller*
16762
16763  * New function PKCS12_newpass() which changes the password of a
16764    PKCS12 structure.
16765
16766    *Steve Henson*
16767
16768  * Modify X509_TRUST and X509_PURPOSE so it also uses a static and
16769    dynamic mix. In both cases the ids can be used as an index into the
16770    table. Also modified the X509_TRUST_add() and X509_PURPOSE_add()
16771    functions so they accept a list of the field values and the
16772    application doesn't need to directly manipulate the X509_TRUST
16773    structure.
16774
16775    *Steve Henson*
16776
16777  * Modify the ASN1_STRING_TABLE stuff so it also uses bsearch and doesn't
16778    need initialising.
16779
16780    *Steve Henson*
16781
16782  * Modify the way the V3 extension code looks up extensions. This now
16783    works in a similar way to the object code: we have some "standard"
16784    extensions in a static table which is searched with OBJ_bsearch()
16785    and the application can add dynamic ones if needed. The file
16786    crypto/x509v3/ext_dat.h now has the info: this file needs to be
16787    updated whenever a new extension is added to the core code and kept
16788    in ext_nid order. There is a simple program 'tabtest.c' which checks
16789    this. New extensions are not added too often so this file can readily
16790    be maintained manually.
16791
16792    There are two big advantages in doing things this way. The extensions
16793    can be looked up immediately and no longer need to be "added" using
16794    X509V3_add_standard_extensions(): this function now does nothing.
16795    Side note: I get *lots* of email saying the extension code doesn't
16796    work because people forget to call this function.
16797    Also no dynamic allocation is done unless new extensions are added:
16798    so if we don't add custom extensions there is no need to call
16799    X509V3_EXT_cleanup().
16800
16801    *Steve Henson*
16802
16803  * Modify enc utility's salting as follows: make salting the default. Add a
16804    magic header, so unsalted files fail gracefully instead of just decrypting
16805    to garbage. This is because not salting is a big security hole, so people
16806    should be discouraged from doing it.
16807
16808    *Ben Laurie*
16809
16810  * Fixes and enhancements to the 'x509' utility. It allowed a message
16811    digest to be passed on the command line but it only used this
16812    parameter when signing a certificate. Modified so all relevant
16813    operations are affected by the digest parameter including the
16814    -fingerprint and -x509toreq options. Also -x509toreq choked if a
16815    DSA key was used because it didn't fix the digest.
16816
16817    *Steve Henson*
16818
16819  * Initial certificate chain verify code. Currently tests the untrusted
16820    certificates for consistency with the verify purpose (which is set
16821    when the X509_STORE_CTX structure is set up) and checks the pathlength.
16822
16823    There is a NO_CHAIN_VERIFY compilation option to keep the old behaviour:
16824    this is because it will reject chains with invalid extensions whereas
16825    every previous version of OpenSSL and SSLeay made no checks at all.
16826
16827    Trust code: checks the root CA for the relevant trust settings. Trust
16828    settings have an initial value consistent with the verify purpose: e.g.
16829    if the verify purpose is for SSL client use it expects the CA to be
16830    trusted for SSL client use. However the default value can be changed to
16831    permit custom trust settings: one example of this would be to only trust
16832    certificates from a specific "secure" set of CAs.
16833
16834    Also added X509_STORE_CTX_new() and X509_STORE_CTX_free() functions
16835    which should be used for version portability: especially since the
16836    verify structure is likely to change more often now.
16837
16838    SSL integration. Add purpose and trust to SSL_CTX and SSL and functions
16839    to set them. If not set then assume SSL clients will verify SSL servers
16840    and vice versa.
16841
16842    Two new options to the verify program: -untrusted allows a set of
16843    untrusted certificates to be passed in and -purpose which sets the
16844    intended purpose of the certificate. If a purpose is set then the
16845    new chain verify code is used to check extension consistency.
16846
16847    *Steve Henson*
16848
16849  * Support for the authority information access extension.
16850
16851    *Steve Henson*
16852
16853  * Modify RSA and DSA PEM read routines to transparently handle
16854    PKCS#8 format private keys. New *_PUBKEY_* functions that handle
16855    public keys in a format compatible with certificate
16856    SubjectPublicKeyInfo structures. Unfortunately there were already
16857    functions called *_PublicKey_* which used various odd formats so
16858    these are retained for compatibility: however the DSA variants were
16859    never in a public release so they have been deleted. Changed dsa/rsa
16860    utilities to handle the new format: note no releases ever handled public
16861    keys so we should be OK.
16862
16863    The primary motivation for this change is to avoid the same fiasco
16864    that dogs private keys: there are several incompatible private key
16865    formats some of which are standard and some OpenSSL specific and
16866    require various evil hacks to allow partial transparent handling and
16867    even then it doesn't work with DER formats. Given the option anything
16868    other than PKCS#8 should be dumped: but the other formats have to
16869    stay in the name of compatibility.
16870
16871    With public keys and the benefit of hindsight one standard format
16872    is used which works with EVP_PKEY, RSA or DSA structures: though
16873    it clearly returns an error if you try to read the wrong kind of key.
16874
16875    Added a -pubkey option to the 'x509' utility to output the public key.
16876    Also rename the `EVP_PKEY_get_*()` to `EVP_PKEY_rget_*()`
16877    (renamed to `EVP_PKEY_get1_*()` in the OpenSSL 0.9.5 release) and add
16878    `EVP_PKEY_rset_*()` functions (renamed to `EVP_PKEY_set1_*()`)
16879    that do the same as the `EVP_PKEY_assign_*()` except they up the
16880    reference count of the added key (they don't "swallow" the
16881    supplied key).
16882
16883    *Steve Henson*
16884
16885  * Fixes to crypto/x509/by_file.c the code to read in certificates and
16886    CRLs would fail if the file contained no certificates or no CRLs:
16887    added a new function to read in both types and return the number
16888    read: this means that if none are read it will be an error. The
16889    DER versions of the certificate and CRL reader would always fail
16890    because it isn't possible to mix certificates and CRLs in DER format
16891    without choking one or the other routine. Changed this to just read
16892    a certificate: this is the best we can do. Also modified the code
16893    in `apps/verify.c` to take notice of return codes: it was previously
16894    attempting to read in certificates from NULL pointers and ignoring
16895    any errors: this is one reason why the cert and CRL reader seemed
16896    to work. It doesn't check return codes from the default certificate
16897    routines: these may well fail if the certificates aren't installed.
16898
16899    *Steve Henson*
16900
16901  * Code to support otherName option in GeneralName.
16902
16903    *Steve Henson*
16904
16905  * First update to verify code. Change the verify utility
16906    so it warns if it is passed a self signed certificate:
16907    for consistency with the normal behaviour. X509_verify
16908    has been modified to it will now verify a self signed
16909    certificate if *exactly* the same certificate appears
16910    in the store: it was previously impossible to trust a
16911    single self signed certificate. This means that:
16912    openssl verify ss.pem
16913    now gives a warning about a self signed certificate but
16914    openssl verify -CAfile ss.pem ss.pem
16915    is OK.
16916
16917    *Steve Henson*
16918
16919  * For servers, store verify_result in SSL_SESSION data structure
16920    (and add it to external session representation).
16921    This is needed when client certificate verifications fails,
16922    but an application-provided verification callback (set by
16923    SSL_CTX_set_cert_verify_callback) allows accepting the session
16924    anyway (i.e. leaves x509_store_ctx->error != X509_V_OK
16925    but returns 1): When the session is reused, we have to set
16926    ssl->verify_result to the appropriate error code to avoid
16927    security holes.
16928
16929    *Bodo Moeller, problem pointed out by Lutz Jaenicke*
16930
16931  * Fix a bug in the new PKCS#7 code: it didn't consider the
16932    case in PKCS7_dataInit() where the signed PKCS7 structure
16933    didn't contain any existing data because it was being created.
16934
16935    *Po-Cheng Chen <pocheng@nst.com.tw>, slightly modified by Steve Henson*
16936
16937  * Add a salt to the key derivation routines in enc.c. This
16938    forms the first 8 bytes of the encrypted file. Also add a
16939    -S option to allow a salt to be input on the command line.
16940
16941    *Steve Henson*
16942
16943  * New function X509_cmp(). Oddly enough there wasn't a function
16944    to compare two certificates. We do this by working out the SHA1
16945    hash and comparing that. X509_cmp() will be needed by the trust
16946    code.
16947
16948    *Steve Henson*
16949
16950  * SSL_get1_session() is like SSL_get_session(), but increments
16951    the reference count in the SSL_SESSION returned.
16952
16953    *Geoff Thorpe <geoff@eu.c2.net>*
16954
16955  * Fix for 'req': it was adding a null to request attributes.
16956    Also change the X509_LOOKUP and X509_INFO code to handle
16957    certificate auxiliary information.
16958
16959    *Steve Henson*
16960
16961  * Add support for 40 and 64 bit RC2 and RC4 algorithms: document
16962    the 'enc' command.
16963
16964    *Steve Henson*
16965
16966  * Add the possibility to add extra information to the memory leak
16967    detecting output, to form tracebacks, showing from where each
16968    allocation was originated: CRYPTO_push_info("constant string") adds
16969    the string plus current file name and line number to a per-thread
16970    stack, CRYPTO_pop_info() does the obvious, CRYPTO_remove_all_info()
16971    is like calling CYRPTO_pop_info() until the stack is empty.
16972    Also updated memory leak detection code to be multi-thread-safe.
16973
16974    *Richard Levitte*
16975
16976  * Add options -text and -noout to pkcs7 utility and delete the
16977    encryption options which never did anything. Update docs.
16978
16979    *Steve Henson*
16980
16981  * Add options to some of the utilities to allow the pass phrase
16982    to be included on either the command line (not recommended on
16983    OSes like Unix) or read from the environment. Update the
16984    manpages and fix a few bugs.
16985
16986    *Steve Henson*
16987
16988  * Add a few manpages for some of the openssl commands.
16989
16990    *Steve Henson*
16991
16992  * Fix the -revoke option in ca. It was freeing up memory twice,
16993    leaking and not finding already revoked certificates.
16994
16995    *Steve Henson*
16996
16997  * Extensive changes to support certificate auxiliary information.
16998    This involves the use of X509_CERT_AUX structure and X509_AUX
16999    functions. An X509_AUX function such as PEM_read_X509_AUX()
17000    can still read in a certificate file in the usual way but it
17001    will also read in any additional "auxiliary information". By
17002    doing things this way a fair degree of compatibility can be
17003    retained: existing certificates can have this information added
17004    using the new 'x509' options.
17005
17006    Current auxiliary information includes an "alias" and some trust
17007    settings. The trust settings will ultimately be used in enhanced
17008    certificate chain verification routines: currently a certificate
17009    can only be trusted if it is self signed and then it is trusted
17010    for all purposes.
17011
17012    *Steve Henson*
17013
17014  * Fix assembler for Alpha (tested only on DEC OSF not Linux or `*BSD`).
17015    The problem was that one of the replacement routines had not been working
17016    since SSLeay releases.  For now the offending routine has been replaced
17017    with non-optimised assembler.  Even so, this now gives around 95%
17018    performance improvement for 1024 bit RSA signs.
17019
17020    *Mark Cox*
17021
17022  * Hack to fix PKCS#7 decryption when used with some unorthodox RC2
17023    handling. Most clients have the effective key size in bits equal to
17024    the key length in bits: so a 40 bit RC2 key uses a 40 bit (5 byte) key.
17025    A few however don't do this and instead use the size of the decrypted key
17026    to determine the RC2 key length and the AlgorithmIdentifier to determine
17027    the effective key length. In this case the effective key length can still
17028    be 40 bits but the key length can be 168 bits for example. This is fixed
17029    by manually forcing an RC2 key into the EVP_PKEY structure because the
17030    EVP code can't currently handle unusual RC2 key sizes: it always assumes
17031    the key length and effective key length are equal.
17032
17033    *Steve Henson*
17034
17035  * Add a bunch of functions that should simplify the creation of
17036    X509_NAME structures. Now you should be able to do:
17037    X509_NAME_add_entry_by_txt(nm, "CN", MBSTRING_ASC, "Steve", -1, -1, 0);
17038    and have it automatically work out the correct field type and fill in
17039    the structures. The more adventurous can try:
17040    X509_NAME_add_entry_by_txt(nm, field, MBSTRING_UTF8, str, -1, -1, 0);
17041    and it will (hopefully) work out the correct multibyte encoding.
17042
17043    *Steve Henson*
17044
17045  * Change the 'req' utility to use the new field handling and multibyte
17046    copy routines. Before the DN field creation was handled in an ad hoc
17047    way in req, ca, and x509 which was rather broken and didn't support
17048    BMPStrings or UTF8Strings. Since some software doesn't implement
17049    BMPStrings or UTF8Strings yet, they can be enabled using the config file
17050    using the dirstring_type option. See the new comment in the default
17051    openssl.cnf for more info.
17052
17053    *Steve Henson*
17054
17055  * Make crypto/rand/md_rand.c more robust:
17056    - Assure unique random numbers after fork().
17057    - Make sure that concurrent threads access the global counter and
17058      md serializably so that we never lose entropy in them
17059      or use exactly the same state in multiple threads.
17060      Access to the large state is not always serializable because
17061      the additional locking could be a performance killer, and
17062      md should be large enough anyway.
17063
17064    *Bodo Moeller*
17065
17066  * New file `apps/app_rand.c` with commonly needed functionality
17067    for handling the random seed file.
17068
17069    Use the random seed file in some applications that previously did not:
17070            ca,
17071            dsaparam -genkey (which also ignored its '-rand' option),
17072            s_client,
17073            s_server,
17074            x509 (when signing).
17075    Except on systems with /dev/urandom, it is crucial to have a random
17076    seed file at least for key creation, DSA signing, and for DH exchanges;
17077    for RSA signatures we could do without one.
17078
17079    gendh and gendsa (unlike genrsa) used to read only the first byte
17080    of each file listed in the '-rand' option.  The function as previously
17081    found in genrsa is now in app_rand.c and is used by all programs
17082    that support '-rand'.
17083
17084    *Bodo Moeller*
17085
17086  * In RAND_write_file, use mode 0600 for creating files;
17087    don't just chmod when it may be too late.
17088
17089    *Bodo Moeller*
17090
17091  * Report an error from X509_STORE_load_locations
17092    when X509_LOOKUP_load_file or X509_LOOKUP_add_dir failed.
17093
17094    *Bill Perry*
17095
17096  * New function ASN1_mbstring_copy() this copies a string in either
17097    ASCII, Unicode, Universal (4 bytes per character) or UTF8 format
17098    into an ASN1_STRING type. A mask of permissible types is passed
17099    and it chooses the "minimal" type to use or an error if not type
17100    is suitable.
17101
17102    *Steve Henson*
17103
17104  * Add function equivalents to the various macros in asn1.h. The old
17105    macros are retained with an `M_` prefix. Code inside the library can
17106    use the `M_` macros. External code (including the openssl utility)
17107    should *NOT* in order to be "shared library friendly".
17108
17109    *Steve Henson*
17110
17111  * Add various functions that can check a certificate's extensions
17112    to see if it usable for various purposes such as SSL client,
17113    server or S/MIME and CAs of these types. This is currently
17114    VERY EXPERIMENTAL but will ultimately be used for certificate chain
17115    verification. Also added a -purpose flag to x509 utility to
17116    print out all the purposes.
17117
17118    *Steve Henson*
17119
17120  * Add a CRYPTO_EX_DATA to X509 certificate structure and associated
17121    functions.
17122
17123    *Steve Henson*
17124
17125  * New `X509V3_{X509,CRL,REVOKED}_get_d2i()` functions. These will search
17126    for, obtain and decode and extension and obtain its critical flag.
17127    This allows all the necessary extension code to be handled in a
17128    single function call.
17129
17130    *Steve Henson*
17131
17132  * RC4 tune-up featuring 30-40% performance improvement on most RISC
17133    platforms. See crypto/rc4/rc4_enc.c for further details.
17134
17135    *Andy Polyakov*
17136
17137  * New -noout option to asn1parse. This causes no output to be produced
17138    its main use is when combined with -strparse and -out to extract data
17139    from a file (which may not be in ASN.1 format).
17140
17141    *Steve Henson*
17142
17143  * Fix for pkcs12 program. It was hashing an invalid certificate pointer
17144    when producing the local key id.
17145
17146    *Richard Levitte <levitte@stacken.kth.se>*
17147
17148  * New option -dhparam in s_server. This allows a DH parameter file to be
17149    stated explicitly. If it is not stated then it tries the first server
17150    certificate file. The previous behaviour hard coded the filename
17151    "server.pem".
17152
17153    *Steve Henson*
17154
17155  * Add -pubin and -pubout options to the rsa and dsa commands. These allow
17156    a public key to be input or output. For example:
17157    openssl rsa -in key.pem -pubout -out pubkey.pem
17158    Also added necessary DSA public key functions to handle this.
17159
17160    *Steve Henson*
17161
17162  * Fix so PKCS7_dataVerify() doesn't crash if no certificates are contained
17163    in the message. This was handled by allowing
17164    X509_find_by_issuer_and_serial() to tolerate a NULL passed to it.
17165
17166    *Steve Henson, reported by Sampo Kellomaki <sampo@mail.neuronio.pt>*
17167
17168  * Fix for bug in d2i_ASN1_bytes(): other ASN1 functions add an extra null
17169    to the end of the strings whereas this didn't. This would cause problems
17170    if strings read with d2i_ASN1_bytes() were later modified.
17171
17172    *Steve Henson, reported by Arne Ansper <arne@ats.cyber.ee>*
17173
17174  * Fix for base64 decode bug. When a base64 bio reads only one line of
17175    data and it contains EOF it will end up returning an error. This is
17176    caused by input 46 bytes long. The cause is due to the way base64
17177    BIOs find the start of base64 encoded data. They do this by trying a
17178    trial decode on each line until they find one that works. When they
17179    do a flag is set and it starts again knowing it can pass all the
17180    data directly through the decoder. Unfortunately it doesn't reset
17181    the context it uses. This means that if EOF is reached an attempt
17182    is made to pass two EOFs through the context and this causes the
17183    resulting error. This can also cause other problems as well. As is
17184    usual with these problems it takes *ages* to find and the fix is
17185    trivial: move one line.
17186
17187    *Steve Henson, reported by ian@uns.ns.ac.yu (Ivan Nejgebauer)*
17188
17189  * Ugly workaround to get s_client and s_server working under Windows. The
17190    old code wouldn't work because it needed to select() on sockets and the
17191    tty (for keypresses and to see if data could be written). Win32 only
17192    supports select() on sockets so we select() with a 1s timeout on the
17193    sockets and then see if any characters are waiting to be read, if none
17194    are present then we retry, we also assume we can always write data to
17195    the tty. This isn't nice because the code then blocks until we've
17196    received a complete line of data and it is effectively polling the
17197    keyboard at 1s intervals: however it's quite a bit better than not
17198    working at all :-) A dedicated Windows application might handle this
17199    with an event loop for example.
17200
17201    *Steve Henson*
17202
17203  * Enhance RSA_METHOD structure. Now there are two extra methods, rsa_sign
17204    and rsa_verify. When the RSA_FLAGS_SIGN_VER option is set these functions
17205    will be called when RSA_sign() and RSA_verify() are used. This is useful
17206    if rsa_pub_dec() and rsa_priv_enc() equivalents are not available.
17207    For this to work properly RSA_public_decrypt() and RSA_private_encrypt()
17208    should *not* be used: RSA_sign() and RSA_verify() must be used instead.
17209    This necessitated the support of an extra signature type NID_md5_sha1
17210    for SSL signatures and modifications to the SSL library to use it instead
17211    of calling RSA_public_decrypt() and RSA_private_encrypt().
17212
17213    *Steve Henson*
17214
17215  * Add new -verify -CAfile and -CApath options to the crl program, these
17216    will lookup a CRL issuers certificate and verify the signature in a
17217    similar way to the verify program. Tidy up the crl program so it
17218    no longer accesses structures directly. Make the ASN1 CRL parsing a bit
17219    less strict. It will now permit CRL extensions even if it is not
17220    a V2 CRL: this will allow it to tolerate some broken CRLs.
17221
17222    *Steve Henson*
17223
17224  * Initialize all non-automatic variables each time one of the openssl
17225    sub-programs is started (this is necessary as they may be started
17226    multiple times from the "OpenSSL>" prompt).
17227
17228    *Lennart Bang, Bodo Moeller*
17229
17230  * Preliminary compilation option RSA_NULL which disables RSA crypto without
17231    removing all other RSA functionality (this is what NO_RSA does). This
17232    is so (for example) those in the US can disable those operations covered
17233    by the RSA patent while allowing storage and parsing of RSA keys and RSA
17234    key generation.
17235
17236    *Steve Henson*
17237
17238  * Non-copying interface to BIO pairs.
17239    (still largely untested)
17240
17241    *Bodo Moeller*
17242
17243  * New function ASN1_tag2str() to convert an ASN1 tag to a descriptive
17244    ASCII string. This was handled independently in various places before.
17245
17246    *Steve Henson*
17247
17248  * New functions UTF8_getc() and UTF8_putc() that parse and generate
17249    UTF8 strings a character at a time.
17250
17251    *Steve Henson*
17252
17253  * Use client_version from client hello to select the protocol
17254    (s23_srvr.c) and for RSA client key exchange verification
17255    (s3_srvr.c), as required by the SSL 3.0/TLS 1.0 specifications.
17256
17257    *Bodo Moeller*
17258
17259  * Add various utility functions to handle SPKACs, these were previously
17260    handled by poking round in the structure internals. Added new function
17261    NETSCAPE_SPKI_print() to print out SPKAC and a new utility 'spkac' to
17262    print, verify and generate SPKACs. Based on an original idea from
17263    Massimiliano Pala <madwolf@comune.modena.it> but extensively modified.
17264
17265    *Steve Henson*
17266
17267  * RIPEMD160 is operational on all platforms and is back in 'make test'.
17268
17269    *Andy Polyakov*
17270
17271  * Allow the config file extension section to be overwritten on the
17272    command line. Based on an original idea from Massimiliano Pala
17273    <madwolf@comune.modena.it>. The new option is called -extensions
17274    and can be applied to ca, req and x509. Also -reqexts to override
17275    the request extensions in req and -crlexts to override the crl extensions
17276    in ca.
17277
17278    *Steve Henson*
17279
17280  * Add new feature to the SPKAC handling in ca.  Now you can include
17281    the same field multiple times by preceding it by "XXXX." for example:
17282    1.OU="Unit name 1"
17283    2.OU="Unit name 2"
17284    this is the same syntax as used in the req config file.
17285
17286    *Steve Henson*
17287
17288  * Allow certificate extensions to be added to certificate requests. These
17289    are specified in a 'req_extensions' option of the req section of the
17290    config file. They can be printed out with the -text option to req but
17291    are otherwise ignored at present.
17292
17293    *Steve Henson*
17294
17295  * Fix a horrible bug in enc_read() in crypto/evp/bio_enc.c: if the first
17296    data read consists of only the final block it would not decrypted because
17297    EVP_CipherUpdate() would correctly report zero bytes had been decrypted.
17298    A misplaced 'break' also meant the decrypted final block might not be
17299    copied until the next read.
17300
17301    *Steve Henson*
17302
17303  * Initial support for DH_METHOD. Again based on RSA_METHOD. Also added
17304    a few extra parameters to the DH structure: these will be useful if
17305    for example we want the value of 'q' or implement X9.42 DH.
17306
17307    *Steve Henson*
17308
17309  * Initial support for DSA_METHOD. This is based on the RSA_METHOD and
17310    provides hooks that allow the default DSA functions or functions on a
17311    "per key" basis to be replaced. This allows hardware acceleration and
17312    hardware key storage to be handled without major modification to the
17313    library. Also added low-level modexp hooks and CRYPTO_EX structure and
17314    associated functions.
17315
17316    *Steve Henson*
17317
17318  * Add a new flag to memory BIOs, BIO_FLAG_MEM_RDONLY. This marks the BIO
17319    as "read only": it can't be written to and the buffer it points to will
17320    not be freed. Reading from a read only BIO is much more efficient than
17321    a normal memory BIO. This was added because there are several times when
17322    an area of memory needs to be read from a BIO. The previous method was
17323    to create a memory BIO and write the data to it, this results in two
17324    copies of the data and an O(n^2) reading algorithm. There is a new
17325    function BIO_new_mem_buf() which creates a read only memory BIO from
17326    an area of memory. Also modified the PKCS#7 routines to use read only
17327    memory BIOs.
17328
17329    *Steve Henson*
17330
17331  * Bugfix: ssl23_get_client_hello did not work properly when called in
17332    state SSL23_ST_SR_CLNT_HELLO_B, i.e. when the first 7 bytes of
17333    a SSLv2-compatible client hello for SSLv3 or TLSv1 could be read,
17334    but a retry condition occurred while trying to read the rest.
17335
17336    *Bodo Moeller*
17337
17338  * The PKCS7_ENC_CONTENT_new() function was setting the content type as
17339    NID_pkcs7_encrypted by default: this was wrong since this should almost
17340    always be NID_pkcs7_data. Also modified the PKCS7_set_type() to handle
17341    the encrypted data type: this is a more sensible place to put it and it
17342    allows the PKCS#12 code to be tidied up that duplicated this
17343    functionality.
17344
17345    *Steve Henson*
17346
17347  * Changed obj_dat.pl script so it takes its input and output files on
17348    the command line. This should avoid shell escape redirection problems
17349    under Win32.
17350
17351    *Steve Henson*
17352
17353  * Initial support for certificate extension requests, these are included
17354    in things like Xenroll certificate requests. Included functions to allow
17355    extensions to be obtained and added.
17356
17357    *Steve Henson*
17358
17359  * -crlf option to s_client and s_server for sending newlines as
17360    CRLF (as required by many protocols).
17361
17362    *Bodo Moeller*
17363
17364 ### Changes between 0.9.3a and 0.9.4  [09 Aug 1999]
17365
17366  * Install libRSAglue.a when OpenSSL is built with RSAref.
17367
17368    *Ralf S. Engelschall*
17369
17370  * A few more `#ifndef NO_FP_API / #endif` pairs for consistency.
17371
17372    *Andrija Antonijevic <TheAntony2@bigfoot.com>*
17373
17374  * Fix -startdate and -enddate (which was missing) arguments to 'ca'
17375    program.
17376
17377    *Steve Henson*
17378
17379  * New function DSA_dup_DH, which duplicates DSA parameters/keys as
17380    DH parameters/keys (q is lost during that conversion, but the resulting
17381    DH parameters contain its length).
17382
17383    For 1024-bit p, DSA_generate_parameters followed by DSA_dup_DH is
17384    much faster than DH_generate_parameters (which creates parameters
17385    where `p = 2*q + 1`), and also the smaller q makes DH computations
17386    much more efficient (160-bit exponentiation instead of 1024-bit
17387    exponentiation); so this provides a convenient way to support DHE
17388    ciphersuites in SSL/TLS servers (see ssl/ssltest.c).  It is of
17389    utter importance to use
17390            SSL_CTX_set_options(s_ctx, SSL_OP_SINGLE_DH_USE);
17391    or
17392            SSL_set_options(s_ctx, SSL_OP_SINGLE_DH_USE);
17393    when such DH parameters are used, because otherwise small subgroup
17394    attacks may become possible!
17395
17396    *Bodo Moeller*
17397
17398  * Avoid memory leak in i2d_DHparams.
17399
17400    *Bodo Moeller*
17401
17402  * Allow the -k option to be used more than once in the enc program:
17403    this allows the same encrypted message to be read by multiple recipients.
17404
17405    *Steve Henson*
17406
17407  * New function OBJ_obj2txt(buf, buf_len, a, no_name), this converts
17408    an ASN1_OBJECT to a text string. If the "no_name" parameter is set then
17409    it will always use the numerical form of the OID, even if it has a short
17410    or long name.
17411
17412    *Steve Henson*
17413
17414  * Added an extra RSA flag: RSA_FLAG_EXT_PKEY. Previously the rsa_mod_exp
17415    method only got called if p,q,dmp1,dmq1,iqmp components were present,
17416    otherwise bn_mod_exp was called. In the case of hardware keys for example
17417    no private key components need be present and it might store extra data
17418    in the RSA structure, which cannot be accessed from bn_mod_exp.
17419    By setting RSA_FLAG_EXT_PKEY rsa_mod_exp will always be called for
17420    private key operations.
17421
17422    *Steve Henson*
17423
17424  * Added support for SPARC Linux.
17425
17426    *Andy Polyakov*
17427
17428  * pem_password_cb function type incompatibly changed from
17429            typedef int pem_password_cb(char *buf, int size, int rwflag);
17430    to
17431            ....(char *buf, int size, int rwflag, void *userdata);
17432    so that applications can pass data to their callbacks:
17433    The `PEM[_ASN1]_{read,write}...` functions and macros now take an
17434    additional void * argument, which is just handed through whenever
17435    the password callback is called.
17436
17437    *Damien Miller <dmiller@ilogic.com.au>; tiny changes by Bodo Moeller*
17438
17439    New function SSL_CTX_set_default_passwd_cb_userdata.
17440
17441    Compatibility note: As many C implementations push function arguments
17442    onto the stack in reverse order, the new library version is likely to
17443    interoperate with programs that have been compiled with the old
17444    pem_password_cb definition (PEM_whatever takes some data that
17445    happens to be on the stack as its last argument, and the callback
17446    just ignores this garbage); but there is no guarantee whatsoever that
17447    this will work.
17448
17449  * The -DPLATFORM="\"$(PLATFORM)\"" definition and the similar -DCFLAGS=...
17450    (both in crypto/Makefile.ssl for use by crypto/cversion.c) caused
17451    problems not only on Windows, but also on some Unix platforms.
17452    To avoid problematic command lines, these definitions are now in an
17453    auto-generated file crypto/buildinf.h (created by crypto/Makefile.ssl
17454    for standard "make" builds, by util/mk1mf.pl for "mk1mf" builds).
17455
17456    *Bodo Moeller*
17457
17458  * MIPS III/IV assembler module is reimplemented.
17459
17460    *Andy Polyakov*
17461
17462  * More DES library cleanups: remove references to srand/rand and
17463    delete an unused file.
17464
17465    *Ulf Möller*
17466
17467  * Add support for the free Netwide assembler (NASM) under Win32,
17468    since not many people have MASM (ml) and it can be hard to obtain.
17469    This is currently experimental but it seems to work OK and pass all
17470    the tests. Check out INSTALL.W32 for info.
17471
17472    *Steve Henson*
17473
17474  * Fix memory leaks in s3_clnt.c: All non-anonymous SSL3/TLS1 connections
17475    without temporary keys kept an extra copy of the server key,
17476    and connections with temporary keys did not free everything in case
17477    of an error.
17478
17479    *Bodo Moeller*
17480
17481  * New function RSA_check_key and new openssl rsa option -check
17482    for verifying the consistency of RSA keys.
17483
17484    *Ulf Moeller, Bodo Moeller*
17485
17486  * Various changes to make Win32 compile work:
17487    1. Casts to avoid "loss of data" warnings in p5_crpt2.c
17488    2. Change unsigned int to int in b_dump.c to avoid "signed/unsigned
17489       comparison" warnings.
17490    3. Add `sk_<TYPE>_sort` to DEF file generator and do make update.
17491
17492    *Steve Henson*
17493
17494  * Add a debugging option to PKCS#5 v2 key generation function: when
17495    you #define DEBUG_PKCS5V2 passwords, salts, iteration counts and
17496    derived keys are printed to stderr.
17497
17498    *Steve Henson*
17499
17500  * Copy the flags in ASN1_STRING_dup().
17501
17502    *Roman E. Pavlov <pre@mo.msk.ru>*
17503
17504  * The x509 application mishandled signing requests containing DSA
17505    keys when the signing key was also DSA and the parameters didn't match.
17506
17507    It was supposed to omit the parameters when they matched the signing key:
17508    the verifying software was then supposed to automatically use the CA's
17509    parameters if they were absent from the end user certificate.
17510
17511    Omitting parameters is no longer recommended. The test was also
17512    the wrong way round! This was probably due to unusual behaviour in
17513    EVP_cmp_parameters() which returns 1 if the parameters match.
17514    This meant that parameters were omitted when they *didn't* match and
17515    the certificate was useless. Certificates signed with 'ca' didn't have
17516    this bug.
17517
17518    *Steve Henson, reported by Doug Erickson <Doug.Erickson@Part.NET>*
17519
17520  * Memory leak checking (-DCRYPTO_MDEBUG) had some problems.
17521    The interface is as follows:
17522    Applications can use
17523            CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON) aka MemCheck_start(),
17524            CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_OFF) aka MemCheck_stop();
17525    "off" is now the default.
17526    The library internally uses
17527            CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_DISABLE) aka MemCheck_off(),
17528            CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ENABLE) aka MemCheck_on()
17529    to disable memory-checking temporarily.
17530
17531    Some inconsistent states that previously were possible (and were
17532    even the default) are now avoided.
17533
17534    -DCRYPTO_MDEBUG_TIME is new and additionally stores the current time
17535    with each memory chunk allocated; this is occasionally more helpful
17536    than just having a counter.
17537
17538    -DCRYPTO_MDEBUG_THREAD is also new and adds the thread ID.
17539
17540    -DCRYPTO_MDEBUG_ALL enables all of the above, plus any future
17541    extensions.
17542
17543    *Bodo Moeller*
17544
17545  * Introduce "mode" for SSL structures (with defaults in SSL_CTX),
17546    which largely parallels "options", but is for changing API behaviour,
17547    whereas "options" are about protocol behaviour.
17548    Initial "mode" flags are:
17549
17550    SSL_MODE_ENABLE_PARTIAL_WRITE   Allow SSL_write to report success when
17551                                    a single record has been written.
17552    SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER  Don't insist that SSL_write
17553                                    retries use the same buffer location.
17554                                    (But all of the contents must be
17555                                    copied!)
17556
17557    *Bodo Moeller*
17558
17559  * Bugfix: SSL_set_options ignored its parameter, only SSL_CTX_set_options
17560    worked.
17561
17562  * Fix problems with no-hmac etc.
17563
17564    *Ulf Möller, pointed out by Brian Wellington <bwelling@tislabs.com>*
17565
17566  * New functions RSA_get_default_method(), RSA_set_method() and
17567    RSA_get_method(). These allows replacement of RSA_METHODs without having
17568    to mess around with the internals of an RSA structure.
17569
17570    *Steve Henson*
17571
17572  * Fix memory leaks in DSA_do_sign and DSA_is_prime.
17573    Also really enable memory leak checks in openssl.c and in some
17574    test programs.
17575
17576    *Chad C. Mulligan, Bodo Moeller*
17577
17578  * Fix a bug in d2i_ASN1_INTEGER() and i2d_ASN1_INTEGER() which can mess
17579    up the length of negative integers. This has now been simplified to just
17580    store the length when it is first determined and use it later, rather
17581    than trying to keep track of where data is copied and updating it to
17582    point to the end.
17583    *Steve Henson, reported by Brien Wheeler <bwheeler@authentica-security.com>*
17584
17585  * Add a new function PKCS7_signatureVerify. This allows the verification
17586    of a PKCS#7 signature but with the signing certificate passed to the
17587    function itself. This contrasts with PKCS7_dataVerify which assumes the
17588    certificate is present in the PKCS#7 structure. This isn't always the
17589    case: certificates can be omitted from a PKCS#7 structure and be
17590    distributed by "out of band" means (such as a certificate database).
17591
17592    *Steve Henson*
17593
17594  * Complete the `PEM_*` macros with DECLARE_PEM versions to replace the
17595    function prototypes in pem.h, also change util/mkdef.pl to add the
17596    necessary function names.
17597
17598    *Steve Henson*
17599
17600  * mk1mf.pl (used by Windows builds) did not properly read the
17601    options set by Configure in the top level Makefile, and Configure
17602    was not even able to write more than one option correctly.
17603    Fixed, now "no-idea no-rc5 -DCRYPTO_MDEBUG" etc. works as intended.
17604
17605    *Bodo Moeller*
17606
17607  * New functions CONF_load_bio() and CONF_load_fp() to allow a config
17608    file to be loaded from a BIO or FILE pointer. The BIO version will
17609    for example allow memory BIOs to contain config info.
17610
17611    *Steve Henson*
17612
17613  * New function "CRYPTO_num_locks" that returns CRYPTO_NUM_LOCKS.
17614    Whoever hopes to achieve shared-library compatibility across versions
17615    must use this, not the compile-time macro.
17616    (Exercise 0.9.4: Which is the minimum library version required by
17617    such programs?)
17618    Note: All this applies only to multi-threaded programs, others don't
17619    need locks.
17620
17621    *Bodo Moeller*
17622
17623  * Add missing case to s3_clnt.c state machine -- one of the new SSL tests
17624    through a BIO pair triggered the default case, i.e.
17625    SSLerr(...,SSL_R_UNKNOWN_STATE).
17626
17627    *Bodo Moeller*
17628
17629  * New "BIO pair" concept (crypto/bio/bss_bio.c) so that applications
17630    can use the SSL library even if none of the specific BIOs is
17631    appropriate.
17632
17633    *Bodo Moeller*
17634
17635  * Fix a bug in i2d_DSAPublicKey() which meant it returned the wrong value
17636    for the encoded length.
17637
17638    *Jeon KyoungHo <khjeon@sds.samsung.co.kr>*
17639
17640  * Add initial documentation of the X509V3 functions.
17641
17642    *Steve Henson*
17643
17644  * Add a new pair of functions PEM_write_PKCS8PrivateKey() and
17645    PEM_write_bio_PKCS8PrivateKey() that are equivalent to
17646    PEM_write_PrivateKey() and PEM_write_bio_PrivateKey() but use the more
17647    secure PKCS#8 private key format with a high iteration count.
17648
17649    *Steve Henson*
17650
17651  * Fix determination of Perl interpreter: A perl or perl5
17652    *directory* in $PATH was also accepted as the interpreter.
17653
17654    *Ralf S. Engelschall*
17655
17656  * Fix demos/sign/sign.c: well there wasn't anything strictly speaking
17657    wrong with it but it was very old and did things like calling
17658    PEM_ASN1_read() directly and used MD5 for the hash not to mention some
17659    unusual formatting.
17660
17661    *Steve Henson*
17662
17663  * Fix demos/selfsign.c: it used obsolete and deleted functions, changed
17664    to use the new extension code.
17665
17666    *Steve Henson*
17667
17668  * Implement the PEM_read/PEM_write functions in crypto/pem/pem_all.c
17669    with macros. This should make it easier to change their form, add extra
17670    arguments etc. Fix a few PEM prototypes which didn't have cipher as a
17671    constant.
17672
17673    *Steve Henson*
17674
17675  * Add to configuration table a new entry that can specify an alternative
17676    name for unistd.h (for pre-POSIX systems); we need this for NeXTstep,
17677    according to Mark Crispin <MRC@Panda.COM>.
17678
17679    *Bodo Moeller*
17680
17681  * DES CBC did not update the IV. Weird.
17682
17683    *Ben Laurie*
17684 lse
17685    des_cbc_encrypt does not update the IV, but des_ncbc_encrypt does.
17686    Changing the behaviour of the former might break existing programs --
17687    where IV updating is needed, des_ncbc_encrypt can be used.
17688 ndif
17689
17690  * When bntest is run from "make test" it drives bc to check its
17691    calculations, as well as internally checking them. If an internal check
17692    fails, it needs to cause bc to give a non-zero result or make test carries
17693    on without noticing the failure. Fixed.
17694
17695    *Ben Laurie*
17696
17697  * DES library cleanups.
17698
17699    *Ulf Möller*
17700
17701  * Add support for PKCS#5 v2.0 PBE algorithms. This will permit PKCS#8 to be
17702    used with any cipher unlike PKCS#5 v1.5 which can at most handle 64 bit
17703    ciphers. NOTE: although the key derivation function has been verified
17704    against some published test vectors it has not been extensively tested
17705    yet. Added a -v2 "cipher" option to pkcs8 application to allow the use
17706    of v2.0.
17707
17708    *Steve Henson*
17709
17710  * Instead of "mkdir -p", which is not fully portable, use new
17711    Perl script "util/mkdir-p.pl".
17712
17713    *Bodo Moeller*
17714
17715  * Rewrite the way password based encryption (PBE) is handled. It used to
17716    assume that the ASN1 AlgorithmIdentifier parameter was a PBEParameter
17717    structure. This was true for the PKCS#5 v1.5 and PKCS#12 PBE algorithms
17718    but doesn't apply to PKCS#5 v2.0 where it can be something else. Now
17719    the 'parameter' field of the AlgorithmIdentifier is passed to the
17720    underlying key generation function so it must do its own ASN1 parsing.
17721    This has also changed the EVP_PBE_CipherInit() function which now has a
17722    'parameter' argument instead of literal salt and iteration count values
17723    and the function EVP_PBE_ALGOR_CipherInit() has been deleted.
17724
17725    *Steve Henson*
17726
17727  * Support for PKCS#5 v1.5 compatible password based encryption algorithms
17728    and PKCS#8 functionality. New 'pkcs8' application linked to openssl.
17729    Needed to change the PEM_STRING_EVP_PKEY value which was just "PRIVATE
17730    KEY" because this clashed with PKCS#8 unencrypted string. Since this
17731    value was just used as a "magic string" and not used directly its
17732    value doesn't matter.
17733
17734    *Steve Henson*
17735
17736  * Introduce some semblance of const correctness to BN. Shame C doesn't
17737    support mutable.
17738
17739    *Ben Laurie*
17740
17741  * "linux-sparc64" configuration (ultrapenguin).
17742
17743    *Ray Miller <ray.miller@oucs.ox.ac.uk>*
17744    "linux-sparc" configuration.
17745
17746    *Christian Forster <fo@hawo.stw.uni-erlangen.de>*
17747
17748  * config now generates no-xxx options for missing ciphers.
17749
17750    *Ulf Möller*
17751
17752  * Support the EBCDIC character set (work in progress).
17753    File ebcdic.c not yet included because it has a different license.
17754
17755    *Martin Kraemer <Martin.Kraemer@MchP.Siemens.De>*
17756
17757  * Support BS2000/OSD-POSIX.
17758
17759    *Martin Kraemer <Martin.Kraemer@MchP.Siemens.De>*
17760
17761  * Make callbacks for key generation use `void *` instead of `char *`.
17762
17763    *Ben Laurie*
17764
17765  * Make S/MIME samples compile (not yet tested).
17766
17767    *Ben Laurie*
17768
17769  * Additional typesafe stacks.
17770
17771    *Ben Laurie*
17772
17773  * New configuration variants "bsdi-elf-gcc" (BSD/OS 4.x).
17774
17775    *Bodo Moeller*
17776
17777 ### Changes between 0.9.3 and 0.9.3a  [29 May 1999]
17778
17779  * New configuration variant "sco5-gcc".
17780
17781  * Updated some demos.
17782
17783    *Sean O Riordain, Wade Scholine*
17784
17785  * Add missing BIO_free at exit of pkcs12 application.
17786
17787    *Wu Zhigang*
17788
17789  * Fix memory leak in conf.c.
17790
17791    *Steve Henson*
17792
17793  * Updates for Win32 to assembler version of MD5.
17794
17795    *Steve Henson*
17796
17797  * Set #! path to perl in `apps/der_chop` to where we found it
17798    instead of using a fixed path.
17799
17800    *Bodo Moeller*
17801
17802  * SHA library changes for irix64-mips4-cc.
17803
17804    *Andy Polyakov*
17805
17806  * Improvements for VMS support.
17807
17808    *Richard Levitte*
17809
17810 ### Changes between 0.9.2b and 0.9.3  [24 May 1999]
17811
17812  * Bignum library bug fix. IRIX 6 passes "make test" now!
17813    This also avoids the problems with SC4.2 and unpatched SC5.
17814
17815    *Andy Polyakov <appro@fy.chalmers.se>*
17816
17817  * New functions sk_num, sk_value and sk_set to replace the previous macros.
17818    These are required because of the typesafe stack would otherwise break
17819    existing code. If old code used a structure member which used to be STACK
17820    and is now STACK_OF (for example cert in a PKCS7_SIGNED structure) with
17821    sk_num or sk_value it would produce an error because the num, data members
17822    are not present in STACK_OF. Now it just produces a warning. sk_set
17823    replaces the old method of assigning a value to sk_value
17824    (e.g. sk_value(x, i) = y) which the library used in a few cases. Any code
17825    that does this will no longer work (and should use sk_set instead) but
17826    this could be regarded as a "questionable" behaviour anyway.
17827
17828    *Steve Henson*
17829
17830  * Fix most of the other PKCS#7 bugs. The "experimental" code can now
17831    correctly handle encrypted S/MIME data.
17832
17833    *Steve Henson*
17834
17835  * Change type of various DES function arguments from des_cblock
17836    (which means, in function argument declarations, pointer to char)
17837    to des_cblock * (meaning pointer to array with 8 char elements),
17838    which allows the compiler to do more typechecking; it was like
17839    that back in SSLeay, but with lots of ugly casts.
17840
17841    Introduce new type const_des_cblock.
17842
17843    *Bodo Moeller*
17844
17845  * Reorganise the PKCS#7 library and get rid of some of the more obvious
17846    problems: find RecipientInfo structure that matches recipient certificate
17847    and initialise the ASN1 structures properly based on passed cipher.
17848
17849    *Steve Henson*
17850
17851  * Belatedly make the BN tests actually check the results.
17852
17853    *Ben Laurie*
17854
17855  * Fix the encoding and decoding of negative ASN1 INTEGERS and conversion
17856    to and from BNs: it was completely broken. New compilation option
17857    NEG_PUBKEY_BUG to allow for some broken certificates that encode public
17858    key elements as negative integers.
17859
17860    *Steve Henson*
17861
17862  * Reorganize and speed up MD5.
17863
17864    *Andy Polyakov <appro@fy.chalmers.se>*
17865
17866  * VMS support.
17867
17868    *Richard Levitte <richard@levitte.org>*
17869
17870  * New option -out to asn1parse to allow the parsed structure to be
17871    output to a file. This is most useful when combined with the -strparse
17872    option to examine the output of things like OCTET STRINGS.
17873
17874    *Steve Henson*
17875
17876  * Make SSL library a little more fool-proof by not requiring any longer
17877    that `SSL_set_{accept,connect}_state` be called before
17878    `SSL_{accept,connect}` may be used (`SSL_set_..._state` is omitted
17879    in many applications because usually everything *appeared* to work as
17880    intended anyway -- now it really works as intended).
17881
17882    *Bodo Moeller*
17883
17884  * Move openssl.cnf out of lib/.
17885
17886    *Ulf Möller*
17887
17888  * Fix various things to let OpenSSL even pass "egcc -pipe -O2 -Wall
17889    -Wshadow -Wpointer-arith -Wcast-align -Wmissing-prototypes
17890    -Wmissing-declarations -Wnested-externs -Winline" with EGCS 1.1.2+
17891
17892    *Ralf S. Engelschall*
17893
17894  * Various fixes to the EVP and PKCS#7 code. It may now be able to
17895    handle PKCS#7 enveloped data properly.
17896
17897    *Sebastian Akerman <sak@parallelconsulting.com>, modified by Steve*
17898
17899  * Create a duplicate of the SSL_CTX's CERT in SSL_new instead of
17900    copying pointers.  The cert_st handling is changed by this in
17901    various ways (and thus what used to be known as ctx->default_cert
17902    is now called ctx->cert, since we don't resort to `s->ctx->[default_]cert`
17903    any longer when s->cert does not give us what we need).
17904    ssl_cert_instantiate becomes obsolete by this change.
17905    As soon as we've got the new code right (possibly it already is?),
17906    we have solved a couple of bugs of the earlier code where s->cert
17907    was used as if it could not have been shared with other SSL structures.
17908
17909    Note that using the SSL API in certain dirty ways now will result
17910    in different behaviour than observed with earlier library versions:
17911    Changing settings for an `SSL_CTX *ctx` after having done s = SSL_new(ctx)
17912    does not influence s as it used to.
17913
17914    In order to clean up things more thoroughly, inside SSL_SESSION
17915    we don't use CERT any longer, but a new structure SESS_CERT
17916    that holds per-session data (if available); currently, this is
17917    the peer's certificate chain and, for clients, the server's certificate
17918    and temporary key.  CERT holds only those values that can have
17919    meaningful defaults in an SSL_CTX.
17920
17921    *Bodo Moeller*
17922
17923  * New function X509V3_EXT_i2d() to create an X509_EXTENSION structure
17924    from the internal representation. Various PKCS#7 fixes: remove some
17925    evil casts and set the enc_dig_alg field properly based on the signing
17926    key type.
17927
17928    *Steve Henson*
17929
17930  * Allow PKCS#12 password to be set from the command line or the
17931    environment. Let 'ca' get its config file name from the environment
17932    variables "OPENSSL_CONF" or "SSLEAY_CONF" (for consistency with 'req'
17933    and 'x509').
17934
17935    *Steve Henson*
17936
17937  * Allow certificate policies extension to use an IA5STRING for the
17938    organization field. This is contrary to the PKIX definition but
17939    VeriSign uses it and IE5 only recognises this form. Document 'x509'
17940    extension option.
17941
17942    *Steve Henson*
17943
17944  * Add PEDANTIC compiler flag to allow compilation with gcc -pedantic,
17945    without disallowing inline assembler and the like for non-pedantic builds.
17946
17947    *Ben Laurie*
17948
17949  * Support Borland C++ builder.
17950
17951    *Janez Jere <jj@void.si>, modified by Ulf Möller*
17952
17953  * Support Mingw32.
17954
17955    *Ulf Möller*
17956
17957  * SHA-1 cleanups and performance enhancements.
17958
17959    *Andy Polyakov <appro@fy.chalmers.se>*
17960
17961  * Sparc v8plus assembler for the bignum library.
17962
17963    *Andy Polyakov <appro@fy.chalmers.se>*
17964
17965  * Accept any -xxx and +xxx compiler options in Configure.
17966
17967    *Ulf Möller*
17968
17969  * Update HPUX configuration.
17970
17971    *Anonymous*
17972
17973  * Add missing `sk_<type>_unshift()` function to safestack.h
17974
17975    *Ralf S. Engelschall*
17976
17977  * New function SSL_CTX_use_certificate_chain_file that sets the
17978    "extra_cert"s in addition to the certificate.  (This makes sense
17979    only for "PEM" format files, as chains as a whole are not
17980    DER-encoded.)
17981
17982    *Bodo Moeller*
17983
17984  * Support verify_depth from the SSL API.
17985    x509_vfy.c had what can be considered an off-by-one-error:
17986    Its depth (which was not part of the external interface)
17987    was actually counting the number of certificates in a chain;
17988    now it really counts the depth.
17989
17990    *Bodo Moeller*
17991
17992  * Bugfix in crypto/x509/x509_cmp.c: The SSLerr macro was used
17993    instead of X509err, which often resulted in confusing error
17994    messages since the error codes are not globally unique
17995    (e.g. an alleged error in ssl3_accept when a certificate
17996    didn't match the private key).
17997
17998  * New function SSL_CTX_set_session_id_context that allows to set a default
17999    value (so that you don't need SSL_set_session_id_context for each
18000    connection using the SSL_CTX).
18001
18002    *Bodo Moeller*
18003
18004  * OAEP decoding bug fix.
18005
18006    *Ulf Möller*
18007
18008  * Support INSTALL_PREFIX for package builders, as proposed by
18009    David Harris.
18010
18011    *Bodo Moeller*
18012
18013  * New Configure options "threads" and "no-threads".  For systems
18014    where the proper compiler options are known (currently Solaris
18015    and Linux), "threads" is the default.
18016
18017    *Bodo Moeller*
18018
18019  * New script util/mklink.pl as a faster substitute for util/mklink.sh.
18020
18021    *Bodo Moeller*
18022
18023  * Install various scripts to $(OPENSSLDIR)/misc, not to
18024    $(INSTALLTOP)/bin -- they shouldn't clutter directories
18025    such as /usr/local/bin.
18026
18027    *Bodo Moeller*
18028
18029  * "make linux-shared" to build shared libraries.
18030
18031    *Niels Poppe <niels@netbox.org>*
18032
18033  * New Configure option `no-<cipher>` (rsa, idea, rc5, ...).
18034
18035    *Ulf Möller*
18036
18037  * Add the PKCS#12 API documentation to openssl.txt. Preliminary support for
18038    extension adding in x509 utility.
18039
18040    *Steve Henson*
18041
18042  * Remove NOPROTO sections and error code comments.
18043
18044    *Ulf Möller*
18045
18046  * Partial rewrite of the DEF file generator to now parse the ANSI
18047    prototypes.
18048
18049    *Steve Henson*
18050
18051  * New Configure options --prefix=DIR and --openssldir=DIR.
18052
18053    *Ulf Möller*
18054
18055  * Complete rewrite of the error code script(s). It is all now handled
18056    by one script at the top level which handles error code gathering,
18057    header rewriting and C source file generation. It should be much better
18058    than the old method: it now uses a modified version of Ulf's parser to
18059    read the ANSI prototypes in all header files (thus the old K&R definitions
18060    aren't needed for error creation any more) and do a better job of
18061    translating function codes into names. The old 'ASN1 error code embedded
18062    in a comment' is no longer necessary and it doesn't use .err files which
18063    have now been deleted. Also the error code call doesn't have to appear all
18064    on one line (which resulted in some large lines...).
18065
18066    *Steve Henson*
18067
18068  * Change #include filenames from `<foo.h>` to `<openssl/foo.h>`.
18069
18070    *Bodo Moeller*
18071
18072  * Change behaviour of ssl2_read when facing length-0 packets: Don't return
18073    0 (which usually indicates a closed connection), but continue reading.
18074
18075    *Bodo Moeller*
18076
18077  * Fix some race conditions.
18078
18079    *Bodo Moeller*
18080
18081  * Add support for CRL distribution points extension. Add Certificate
18082    Policies and CRL distribution points documentation.
18083
18084    *Steve Henson*
18085
18086  * Move the autogenerated header file parts to crypto/opensslconf.h.
18087
18088    *Ulf Möller*
18089
18090  * Fix new 56-bit DES export ciphersuites: they were using 7 bytes instead of
18091    8 of keying material. Merlin has also confirmed interop with this fix
18092    between OpenSSL and Baltimore C/SSL 2.0 and J/SSL 2.0.
18093
18094    *Merlin Hughes <merlin@baltimore.ie>*
18095
18096  * Fix lots of warnings.
18097
18098    *Richard Levitte <levitte@stacken.kth.se>*
18099
18100  * In add_cert_dir() in crypto/x509/by_dir.c, break out of the loop if
18101    the directory spec didn't end with a LIST_SEPARATOR_CHAR.
18102
18103    *Richard Levitte <levitte@stacken.kth.se>*
18104
18105  * Fix problems with sizeof(long) == 8.
18106
18107    *Andy Polyakov <appro@fy.chalmers.se>*
18108
18109  * Change functions to ANSI C.
18110
18111    *Ulf Möller*
18112
18113  * Fix typos in error codes.
18114
18115    *Martin Kraemer <Martin.Kraemer@MchP.Siemens.De>, Ulf Möller*
18116
18117  * Remove defunct assembler files from Configure.
18118
18119    *Ulf Möller*
18120
18121  * SPARC v8 assembler BIGNUM implementation.
18122
18123    *Andy Polyakov <appro@fy.chalmers.se>*
18124
18125  * Support for Certificate Policies extension: both print and set.
18126    Various additions to support the r2i method this uses.
18127
18128    *Steve Henson*
18129
18130  * A lot of constification, and fix a bug in X509_NAME_oneline() that could
18131    return a const string when you are expecting an allocated buffer.
18132
18133    *Ben Laurie*
18134
18135  * Add support for ASN1 types UTF8String and VISIBLESTRING, also the CHOICE
18136    types DirectoryString and DisplayText.
18137
18138    *Steve Henson*
18139
18140  * Add code to allow r2i extensions to access the configuration database,
18141    add an LHASH database driver and add several ctx helper functions.
18142
18143    *Steve Henson*
18144
18145  * Fix an evil bug in bn_expand2() which caused various BN functions to
18146    fail when they extended the size of a BIGNUM.
18147
18148    *Steve Henson*
18149
18150  * Various utility functions to handle SXNet extension. Modify mkdef.pl to
18151    support typesafe stack.
18152
18153    *Steve Henson*
18154
18155  * Fix typo in SSL_[gs]et_options().
18156
18157    *Nils Frostberg <nils@medcom.se>*
18158
18159  * Delete various functions and files that belonged to the (now obsolete)
18160    old X509V3 handling code.
18161
18162    *Steve Henson*
18163
18164  * New Configure option "rsaref".
18165
18166    *Ulf Möller*
18167
18168  * Don't auto-generate pem.h.
18169
18170    *Bodo Moeller*
18171
18172  * Introduce type-safe ASN.1 SETs.
18173
18174    *Ben Laurie*
18175
18176  * Convert various additional casted stacks to type-safe STACK_OF() variants.
18177
18178    *Ben Laurie, Ralf S. Engelschall, Steve Henson*
18179
18180  * Introduce type-safe STACKs. This will almost certainly break lots of code
18181    that links with OpenSSL (well at least cause lots of warnings), but fear
18182    not: the conversion is trivial, and it eliminates loads of evil casts. A
18183    few STACKed things have been converted already. Feel free to convert more.
18184    In the fullness of time, I'll do away with the STACK type altogether.
18185
18186    *Ben Laurie*
18187
18188  * Add `openssl ca -revoke <certfile>` facility which revokes a certificate
18189    specified in `<certfile>` by updating the entry in the index.txt file.
18190    This way one no longer has to edit the index.txt file manually for
18191    revoking a certificate. The -revoke option does the gory details now.
18192
18193    *Massimiliano Pala <madwolf@openca.org>, Ralf S. Engelschall*
18194
18195  * Fix `openssl crl -noout -text` combination where `-noout` killed the
18196    `-text` option at all and this way the `-noout -text` combination was
18197    inconsistent in `openssl crl` with the friends in `openssl x509|rsa|dsa`.
18198
18199    *Ralf S. Engelschall*
18200
18201  * Make sure a corresponding plain text error message exists for the
18202    X509_V_ERR_CERT_REVOKED/23 error number which can occur when a
18203    verify callback function determined that a certificate was revoked.
18204
18205    *Ralf S. Engelschall*
18206
18207  * Bugfix: In test/testenc, don't test `openssl <cipher>` for
18208    ciphers that were excluded, e.g. by -DNO_IDEA.  Also, test
18209    all available ciphers including rc5, which was forgotten until now.
18210    In order to let the testing shell script know which algorithms
18211    are available, a new (up to now undocumented) command
18212    `openssl list-cipher-commands` is used.
18213
18214    *Bodo Moeller*
18215
18216  * Bugfix: s_client occasionally would sleep in select() when
18217    it should have checked SSL_pending() first.
18218
18219    *Bodo Moeller*
18220
18221  * New functions DSA_do_sign and DSA_do_verify to provide access to
18222    the raw DSA values prior to ASN.1 encoding.
18223
18224    *Ulf Möller*
18225
18226  * Tweaks to Configure
18227
18228    *Niels Poppe <niels@netbox.org>*
18229
18230  * Add support for PKCS#5 v2.0 ASN1 PBES2 structures. No other support,
18231    yet...
18232
18233    *Steve Henson*
18234
18235  * New variables $(RANLIB) and $(PERL) in the Makefiles.
18236
18237    *Ulf Möller*
18238
18239  * New config option to avoid instructions that are illegal on the 80386.
18240    The default code is faster, but requires at least a 486.
18241
18242    *Ulf Möller*
18243
18244  * Got rid of old SSL2_CLIENT_VERSION (inconsistently used) and
18245    SSL2_SERVER_VERSION (not used at all) macros, which are now the
18246    same as SSL2_VERSION anyway.
18247
18248    *Bodo Moeller*
18249
18250  * New "-showcerts" option for s_client.
18251
18252    *Bodo Moeller*
18253
18254  * Still more PKCS#12 integration. Add pkcs12 application to openssl
18255    application. Various cleanups and fixes.
18256
18257    *Steve Henson*
18258
18259  * More PKCS#12 integration. Add new pkcs12 directory with Makefile.ssl and
18260    modify error routines to work internally. Add error codes and PBE init
18261    to library startup routines.
18262
18263    *Steve Henson*
18264
18265  * Further PKCS#12 integration. Added password based encryption, PKCS#8 and
18266    packing functions to asn1 and evp. Changed function names and error
18267    codes along the way.
18268
18269    *Steve Henson*
18270
18271  * PKCS12 integration: and so it begins... First of several patches to
18272    slowly integrate PKCS#12 functionality into OpenSSL. Add PKCS#12
18273    objects to objects.h
18274
18275    *Steve Henson*
18276
18277  * Add a new 'indent' option to some X509V3 extension code. Initial ASN1
18278    and display support for Thawte strong extranet extension.
18279
18280    *Steve Henson*
18281
18282  * Add LinuxPPC support.
18283
18284    *Jeff Dubrule <igor@pobox.org>*
18285
18286  * Get rid of redundant BN file bn_mulw.c, and rename bn_div64 to
18287    bn_div_words in alpha.s.
18288
18289    *Hannes Reinecke <H.Reinecke@hw.ac.uk> and Ben Laurie*
18290
18291  * Make sure the RSA OAEP test is skipped under -DRSAref because
18292    OAEP isn't supported when OpenSSL is built with RSAref.
18293
18294    *Ulf Moeller <ulf@fitug.de>*
18295
18296  * Move definitions of IS_SET/IS_SEQUENCE inside crypto/asn1/asn1.h
18297    so they no longer are missing under -DNOPROTO.
18298
18299    *Soren S. Jorvang <soren@t.dk>*
18300
18301 ### Changes between 0.9.1c and 0.9.2b  [22 Mar 1999]
18302
18303  * Make SSL_get_peer_cert_chain() work in servers. Unfortunately, it still
18304    doesn't work when the session is reused. Coming soon!
18305
18306    *Ben Laurie*
18307
18308  * Fix a security hole, that allows sessions to be reused in the wrong
18309    context thus bypassing client cert protection! All software that uses
18310    client certs and session caches in multiple contexts NEEDS PATCHING to
18311    allow session reuse! A fuller solution is in the works.
18312
18313    *Ben Laurie, problem pointed out by Holger Reif, Bodo Moeller (and ???)*
18314
18315  * Some more source tree cleanups (removed obsolete files
18316    crypto/bf/asm/bf586.pl, test/test.txt and crypto/sha/asm/f.s; changed
18317    permission on "config" script to be executable) and a fix for the INSTALL
18318    document.
18319
18320    *Ulf Moeller <ulf@fitug.de>*
18321
18322  * Remove some legacy and erroneous uses of malloc, free instead of
18323    Malloc, Free.
18324
18325    *Lennart Bang <lob@netstream.se>, with minor changes by Steve*
18326
18327  * Make rsa_oaep_test return non-zero on error.
18328
18329    *Ulf Moeller <ulf@fitug.de>*
18330
18331  * Add support for native Solaris shared libraries. Configure
18332    solaris-sparc-sc4-pic, make, then run shlib/solaris-sc4.sh. It'd be nice
18333    if someone would make that last step automatic.
18334
18335    *Matthias Loepfe <Matthias.Loepfe@AdNovum.CH>*
18336
18337  * ctx_size was not built with the right compiler during "make links". Fixed.
18338
18339    *Ben Laurie*
18340
18341  * Change the meaning of 'ALL' in the cipher list. It now means "everything
18342    except NULL ciphers". This means the default cipher list will no longer
18343    enable NULL ciphers. They need to be specifically enabled e.g. with
18344    the string "DEFAULT:eNULL".
18345
18346    *Steve Henson*
18347
18348  * Fix to RSA private encryption routines: if p < q then it would
18349    occasionally produce an invalid result. This will only happen with
18350    externally generated keys because OpenSSL (and SSLeay) ensure p > q.
18351
18352    *Steve Henson*
18353
18354  * Be less restrictive and allow also `perl util/perlpath.pl
18355    /path/to/bin/perl` in addition to `perl util/perlpath.pl /path/to/bin`,
18356    because this way one can also use an interpreter named `perl5` (which is
18357    usually the name of Perl 5.xxx on platforms where an Perl 4.x is still
18358    installed as `perl`).
18359
18360    *Matthias Loepfe <Matthias.Loepfe@adnovum.ch>*
18361
18362  * Let util/clean-depend.pl work also with older Perl 5.00x versions.
18363
18364    *Matthias Loepfe <Matthias.Loepfe@adnovum.ch>*
18365
18366  * Fix Makefile.org so CC,CFLAG etc are passed to 'make links' add
18367    advapi32.lib to Win32 build and change the pem test comparison
18368    to fc.exe (thanks to Ulrich Kroener <kroneru@yahoo.com> for the
18369    suggestion). Fix misplaced ASNI prototypes and declarations in evp.h
18370    and crypto/des/ede_cbcm_enc.c.
18371
18372    *Steve Henson*
18373
18374  * DES quad checksum was broken on big-endian architectures. Fixed.
18375
18376    *Ben Laurie*
18377
18378  * Comment out two functions in bio.h that aren't implemented. Fix up the
18379    Win32 test batch file so it (might) work again. The Win32 test batch file
18380    is horrible: I feel ill....
18381
18382    *Steve Henson*
18383
18384  * Move various #ifdefs around so NO_SYSLOG, NO_DIRENT etc are now selected
18385    in e_os.h. Audit of header files to check ANSI and non ANSI
18386    sections: 10 functions were absent from non ANSI section and not exported
18387    from Windows DLLs. Fixed up libeay.num for new functions.
18388
18389    *Steve Henson*
18390
18391  * Make `openssl version` output lines consistent.
18392
18393    *Ralf S. Engelschall*
18394
18395  * Fix Win32 symbol export lists for BIO functions: Added
18396    BIO_get_ex_new_index, BIO_get_ex_num, BIO_get_ex_data and BIO_set_ex_data
18397    to ms/libeay{16,32}.def.
18398
18399    *Ralf S. Engelschall*
18400
18401  * Second round of fixing the OpenSSL perl/ stuff. It now at least compiled
18402    fine under Unix and passes some trivial tests I've now added. But the
18403    whole stuff is horribly incomplete, so a README.1ST with a disclaimer was
18404    added to make sure no one expects that this stuff really works in the
18405    OpenSSL 0.9.2 release.  Additionally I've started to clean the XS sources
18406    up and fixed a few little bugs and inconsistencies in OpenSSL.{pm,xs} and
18407    openssl_bio.xs.
18408
18409    *Ralf S. Engelschall*
18410
18411  * Fix the generation of two part addresses in perl.
18412
18413    *Kenji Miyake <kenji@miyake.org>, integrated by Ben Laurie*
18414
18415  * Add config entry for Linux on MIPS.
18416
18417    *John Tobey <jtobey@channel1.com>*
18418
18419  * Make links whenever Configure is run, unless we are on Windoze.
18420
18421    *Ben Laurie*
18422
18423  * Permit extensions to be added to CRLs using crl_section in openssl.cnf.
18424    Currently only issuerAltName and AuthorityKeyIdentifier make any sense
18425    in CRLs.
18426
18427    *Steve Henson*
18428
18429  * Add a useful kludge to allow package maintainers to specify compiler and
18430    other platforms details on the command line without having to patch the
18431    Configure script every time: One now can use
18432    `perl Configure <id>:<details>`,
18433    i.e. platform ids are allowed to have details appended
18434    to them (separated by colons). This is treated as there would be a static
18435    pre-configured entry in Configure's %table under key `<id>` with value
18436    `<details>` and `perl Configure <id>` is called.  So, when you want to
18437    perform a quick test-compile under FreeBSD 3.1 with pgcc and without
18438    assembler stuff you can use `perl Configure "FreeBSD-elf:pgcc:-O6:::"`
18439    now, which overrides the FreeBSD-elf entry on-the-fly.
18440
18441    *Ralf S. Engelschall*
18442
18443  * Disable new TLS1 ciphersuites by default: they aren't official yet.
18444
18445    *Ben Laurie*
18446
18447  * Allow DSO flags like -fpic, -fPIC, -KPIC etc. to be specified
18448    on the `perl Configure ...` command line. This way one can compile
18449    OpenSSL libraries with Position Independent Code (PIC) which is needed
18450    for linking it into DSOs.
18451
18452    *Ralf S. Engelschall*
18453
18454  * Remarkably, export ciphers were totally broken and no-one had noticed!
18455    Fixed.
18456
18457    *Ben Laurie*
18458
18459  * Cleaned up the LICENSE document: The official contact for any license
18460    questions now is the OpenSSL core team under openssl-core@openssl.org.
18461    And add a paragraph about the dual-license situation to make sure people
18462    recognize that _BOTH_ the OpenSSL license _AND_ the SSLeay license apply
18463    to the OpenSSL toolkit.
18464
18465    *Ralf S. Engelschall*
18466
18467  * General source tree makefile cleanups: Made `making xxx in yyy...`
18468    display consistent in the source tree and replaced `/bin/rm` by `rm`.
18469    Additionally cleaned up the `make links` target: Remove unnecessary
18470    semicolons, subsequent redundant removes, inline point.sh into mklink.sh
18471    to speed processing and no longer clutter the display with confusing
18472    stuff. Instead only the actually done links are displayed.
18473
18474    *Ralf S. Engelschall*
18475
18476  * Permit null encryption ciphersuites, used for authentication only. It used
18477    to be necessary to set the preprocessor define SSL_ALLOW_ENULL to do this.
18478    It is now necessary to set SSL_FORBID_ENULL to prevent the use of null
18479    encryption.
18480
18481    *Ben Laurie*
18482
18483  * Add a bunch of fixes to the PKCS#7 stuff. It used to sometimes reorder
18484    signed attributes when verifying signatures (this would break them),
18485    the detached data encoding was wrong and public keys obtained using
18486    X509_get_pubkey() weren't freed.
18487
18488    *Steve Henson*
18489
18490  * Add text documentation for the BUFFER functions. Also added a work around
18491    to a Win95 console bug. This was triggered by the password read stuff: the
18492    last character typed gets carried over to the next fread(). If you were
18493    generating a new cert request using 'req' for example then the last
18494    character of the passphrase would be CR which would then enter the first
18495    field as blank.
18496
18497    *Steve Henson*
18498
18499  * Added the new 'Includes OpenSSL Cryptography Software' button as
18500    doc/openssl_button.{gif,html} which is similar in style to the old SSLeay
18501    button and can be used by applications based on OpenSSL to show the
18502    relationship to the OpenSSL project.
18503
18504    *Ralf S. Engelschall*
18505
18506  * Remove confusing variables in function signatures in files
18507    ssl/ssl_lib.c and ssl/ssl.h.
18508
18509    *Lennart Bong <lob@kulthea.stacken.kth.se>*
18510
18511  * Don't install bss_file.c under PREFIX/include/
18512
18513    *Lennart Bong <lob@kulthea.stacken.kth.se>*
18514
18515  * Get the Win32 compile working again. Modify mkdef.pl so it can handle
18516    functions that return function pointers and has support for NT specific
18517    stuff. Fix mk1mf.pl and VC-32.pl to support NT differences also. Various
18518    #ifdef WIN32 and WINNTs sprinkled about the place and some changes from
18519    unsigned to signed types: this was killing the Win32 compile.
18520
18521    *Steve Henson*
18522
18523  * Add new certificate file to stack functions,
18524    SSL_add_dir_cert_subjects_to_stack() and
18525    SSL_add_file_cert_subjects_to_stack().  These largely supplant
18526    SSL_load_client_CA_file(), and can be used to add multiple certs easily
18527    to a stack (usually this is then handed to SSL_CTX_set_client_CA_list()).
18528    This means that Apache-SSL and similar packages don't have to mess around
18529    to add as many CAs as they want to the preferred list.
18530
18531    *Ben Laurie*
18532
18533  * Experiment with doxygen documentation. Currently only partially applied to
18534    ssl/ssl_lib.c.
18535    See <http://www.stack.nl/~dimitri/doxygen/index.html>, and run doxygen with
18536    openssl.doxy as the configuration file.
18537
18538    *Ben Laurie*
18539
18540  * Get rid of remaining C++-style comments which strict C compilers hate.
18541
18542    *Ralf S. Engelschall, pointed out by Carlos Amengual*
18543
18544  * Changed BN_RECURSION in bn_mont.c to BN_RECURSION_MONT so it is not
18545    compiled in by default: it has problems with large keys.
18546
18547    *Steve Henson*
18548
18549  * Add a bunch of SSL_xxx() functions for configuring the temporary RSA and
18550    DH private keys and/or callback functions which directly correspond to
18551    their SSL_CTX_xxx() counterparts but work on a per-connection basis. This
18552    is needed for applications which have to configure certificates on a
18553    per-connection basis (e.g. Apache+mod_ssl) instead of a per-context basis
18554    (e.g. s_server).
18555       For the RSA certificate situation is makes no difference, but
18556    for the DSA certificate situation this fixes the "no shared cipher"
18557    problem where the OpenSSL cipher selection procedure failed because the
18558    temporary keys were not overtaken from the context and the API provided
18559    no way to reconfigure them.
18560       The new functions now let applications reconfigure the stuff and they
18561    are in detail: SSL_need_tmp_RSA, SSL_set_tmp_rsa, SSL_set_tmp_dh,
18562    SSL_set_tmp_rsa_callback and SSL_set_tmp_dh_callback.  Additionally a new
18563    non-public-API function ssl_cert_instantiate() is used as a helper
18564    function and also to reduce code redundancy inside ssl_rsa.c.
18565
18566    *Ralf S. Engelschall*
18567
18568  * Move s_server -dcert and -dkey options out of the undocumented feature
18569    area because they are useful for the DSA situation and should be
18570    recognized by the users.
18571
18572    *Ralf S. Engelschall*
18573
18574  * Fix the cipher decision scheme for export ciphers: the export bits are
18575    *not* within SSL_MKEY_MASK or SSL_AUTH_MASK, they are within
18576    SSL_EXP_MASK.  So, the original variable has to be used instead of the
18577    already masked variable.
18578
18579    *Richard Levitte <levitte@stacken.kth.se>*
18580
18581  * Fix `port` variable from `int` to `unsigned int` in crypto/bio/b_sock.c
18582
18583    *Richard Levitte <levitte@stacken.kth.se>*
18584
18585  * Change type of another md_len variable in pk7_doit.c:PKCS7_dataFinal()
18586    from `int` to `unsigned int` because it is a length and initialized by
18587    EVP_DigestFinal() which expects an `unsigned int *`.
18588
18589    *Richard Levitte <levitte@stacken.kth.se>*
18590
18591  * Don't hard-code path to Perl interpreter on shebang line of Configure
18592    script. Instead use the usual Shell->Perl transition trick.
18593
18594    *Ralf S. Engelschall*
18595
18596  * Make `openssl x509 -noout -modulus`' functional also for DSA certificates
18597    (in addition to RSA certificates) to match the behaviour of `openssl dsa
18598    -noout -modulus` as it's already the case for `openssl rsa -noout
18599    -modulus`.  For RSA the -modulus is the real "modulus" while for DSA
18600    currently the public key is printed (a decision which was already done by
18601    `openssl dsa -modulus` in the past) which serves a similar purpose.
18602    Additionally the NO_RSA no longer completely removes the whole -modulus
18603    option; it now only avoids using the RSA stuff. Same applies to NO_DSA
18604    now, too.
18605
18606    *Ralf S.  Engelschall*
18607
18608  * Add Arne Ansper's reliable BIO - this is an encrypted, block-digested
18609    BIO. See the source (crypto/evp/bio_ok.c) for more info.
18610
18611    *Arne Ansper <arne@ats.cyber.ee>*
18612
18613  * Dump the old yucky req code that tried (and failed) to allow raw OIDs
18614    to be added. Now both 'req' and 'ca' can use new objects defined in the
18615    config file.
18616
18617    *Steve Henson*
18618
18619  * Add cool BIO that does syslog (or event log on NT).
18620
18621    *Arne Ansper <arne@ats.cyber.ee>, integrated by Ben Laurie*
18622
18623  * Add support for new TLS ciphersuites, TLS_RSA_EXPORT56_WITH_RC4_56_MD5,
18624    TLS_RSA_EXPORT56_WITH_RC2_CBC_56_MD5 and
18625    TLS_RSA_EXPORT56_WITH_DES_CBC_SHA, as specified in "56-bit Export Cipher
18626    Suites For TLS", draft-ietf-tls-56-bit-ciphersuites-00.txt.
18627
18628    *Ben Laurie*
18629
18630  * Add preliminary config info for new extension code.
18631
18632    *Steve Henson*
18633
18634  * Make RSA_NO_PADDING really use no padding.
18635
18636    *Ulf Moeller <ulf@fitug.de>*
18637
18638  * Generate errors when private/public key check is done.
18639
18640    *Ben Laurie*
18641
18642  * Overhaul for 'crl' utility. New function X509_CRL_print. Partial support
18643    for some CRL extensions and new objects added.
18644
18645    *Steve Henson*
18646
18647  * Really fix the ASN1 IMPLICIT bug this time... Partial support for private
18648    key usage extension and fuller support for authority key id.
18649
18650    *Steve Henson*
18651
18652  * Add OAEP encryption for the OpenSSL crypto library. OAEP is the improved
18653    padding method for RSA, which is recommended for new applications in PKCS
18654    #1 v2.0 (RFC 2437, October 1998).
18655    OAEP (Optimal Asymmetric Encryption Padding) has better theoretical
18656    foundations than the ad-hoc padding used in PKCS #1 v1.5. It is secure
18657    against Bleichbacher's attack on RSA.
18658    *Ulf Moeller <ulf@fitug.de>, reformatted, corrected and integrated by
18659    Ben Laurie*
18660
18661  * Updates to the new SSL compression code
18662
18663    *Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)*
18664
18665  * Fix so that the version number in the master secret, when passed
18666    via RSA, checks that if TLS was proposed, but we roll back to SSLv3
18667    (because the server will not accept higher), that the version number
18668    is 0x03,0x01, not 0x03,0x00
18669
18670    *Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)*
18671
18672  * Run extensive memory leak checks on SSL commands. Fixed *lots* of memory
18673    leaks in `ssl/` relating to new `X509_get_pubkey()` behaviour. Also fixes
18674    in `apps/` and an unrelated leak in `crypto/dsa/dsa_vrf.c`.
18675
18676    *Steve Henson*
18677
18678  * Support for RAW extensions where an arbitrary extension can be
18679    created by including its DER encoding. See `apps/openssl.cnf` for
18680    an example.
18681
18682    *Steve Henson*
18683
18684  * Make sure latest Perl versions don't interpret some generated C array
18685    code as Perl array code in the crypto/err/err_genc.pl script.
18686
18687    *Lars Weber <3weber@informatik.uni-hamburg.de>*
18688
18689  * Modify ms/do_ms.bat to not generate assembly language makefiles since
18690    not many people have the assembler. Various Win32 compilation fixes and
18691    update to the INSTALL.W32 file with (hopefully) more accurate Win32
18692    build instructions.
18693
18694    *Steve Henson*
18695
18696  * Modify configure script 'Configure' to automatically create crypto/date.h
18697    file under Win32 and also build pem.h from pem.org. New script
18698    util/mkfiles.pl to create the MINFO file on environments that can't do a
18699    'make files': perl util/mkfiles.pl >MINFO should work.
18700
18701    *Steve Henson*
18702
18703  * Major rework of DES function declarations, in the pursuit of correctness
18704    and purity. As a result, many evil casts evaporated, and some weirdness,
18705    too. You may find this causes warnings in your code. Zapping your evil
18706    casts will probably fix them. Mostly.
18707
18708    *Ben Laurie*
18709
18710  * Fix for a typo in asn1.h. Bug fix to object creation script
18711    obj_dat.pl. It considered a zero in an object definition to mean
18712    "end of object": none of the objects in objects.h have any zeros
18713    so it wasn't spotted.
18714
18715    *Steve Henson, reported by Erwann ABALEA <eabalea@certplus.com>*
18716
18717  * Add support for Triple DES Cipher Block Chaining with Output Feedback
18718    Masking (CBCM). In the absence of test vectors, the best I have been able
18719    to do is check that the decrypt undoes the encrypt, so far. Send me test
18720    vectors if you have them.
18721
18722    *Ben Laurie*
18723
18724  * Correct calculation of key length for export ciphers (too much space was
18725    allocated for null ciphers). This has not been tested!
18726
18727    *Ben Laurie*
18728
18729  * Modifications to the mkdef.pl for Win32 DEF file creation. The usage
18730    message is now correct (it understands "crypto" and "ssl" on its
18731    command line). There is also now an "update" option. This will update
18732    the util/ssleay.num and util/libeay.num files with any new functions.
18733    If you do a:
18734    perl util/mkdef.pl crypto ssl update
18735    it will update them.
18736
18737    *Steve Henson*
18738
18739  * Overhauled the Perl interface:
18740    - ported BN stuff to OpenSSL's different BN library
18741    - made the perl/ source tree CVS-aware
18742    - renamed the package from SSLeay to OpenSSL (the files still contain
18743      their history because I've copied them in the repository)
18744    - removed obsolete files (the test scripts will be replaced
18745      by better Test::Harness variants in the future)
18746
18747    *Ralf S. Engelschall*
18748
18749  * First cut for a very conservative source tree cleanup:
18750    1. merge various obsolete readme texts into doc/ssleay.txt
18751    where we collect the old documents and readme texts.
18752    2. remove the first part of files where I'm already sure that we no
18753    longer need them because of three reasons: either they are just temporary
18754    files which were left by Eric or they are preserved original files where
18755    I've verified that the diff is also available in the CVS via "cvs diff
18756    -rSSLeay_0_8_1b" or they were renamed (as it was definitely the case for
18757    the crypto/md/ stuff).
18758
18759    *Ralf S. Engelschall*
18760
18761  * More extension code. Incomplete support for subject and issuer alt
18762    name, issuer and authority key id. Change the i2v function parameters
18763    and add an extra 'crl' parameter in the X509V3_CTX structure: guess
18764    what that's for :-) Fix to ASN1 macro which messed up
18765    IMPLICIT tag and add f_enum.c which adds a2i, i2a for ENUMERATED.
18766
18767    *Steve Henson*
18768
18769  * Preliminary support for ENUMERATED type. This is largely copied from the
18770    INTEGER code.
18771
18772    *Steve Henson*
18773
18774  * Add new function, EVP_MD_CTX_copy() to replace frequent use of memcpy.
18775
18776    *Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)*
18777
18778  * Make sure `make rehash` target really finds the `openssl` program.
18779
18780    *Ralf S. Engelschall, Matthias Loepfe <Matthias.Loepfe@adnovum.ch>*
18781
18782  * Squeeze another 7% of speed out of MD5 assembler, at least on a P2. I'd
18783    like to hear about it if this slows down other processors.
18784
18785    *Ben Laurie*
18786
18787  * Add CygWin32 platform information to Configure script.
18788
18789    *Alan Batie <batie@aahz.jf.intel.com>*
18790
18791  * Fixed ms/32all.bat script: `no_asm` -> `no-asm`
18792
18793    *Rainer W. Gerling <gerling@mpg-gv.mpg.de>*
18794
18795  * New program nseq to manipulate netscape certificate sequences
18796
18797    *Steve Henson*
18798
18799  * Modify crl2pkcs7 so it supports multiple -certfile arguments. Fix a
18800    few typos.
18801
18802    *Steve Henson*
18803
18804  * Fixes to BN code.  Previously the default was to define BN_RECURSION
18805    but the BN code had some problems that would cause failures when
18806    doing certificate verification and some other functions.
18807
18808    *Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)*
18809
18810  * Add ASN1 and PEM code to support netscape certificate sequences.
18811
18812    *Steve Henson*
18813
18814  * Add ASN1 and PEM code to support netscape certificate sequences.
18815
18816    *Steve Henson*
18817
18818  * Add several PKIX and private extended key usage OIDs.
18819
18820    *Steve Henson*
18821
18822  * Modify the 'ca' program to handle the new extension code. Modify
18823    openssl.cnf for new extension format, add comments.
18824
18825    *Steve Henson*
18826
18827  * More X509 V3 changes. Fix typo in v3_bitstr.c. Add support to 'req'
18828    and add a sample to openssl.cnf so req -x509 now adds appropriate
18829    CA extensions.
18830
18831    *Steve Henson*
18832
18833  * Continued X509 V3 changes. Add to other makefiles, integrate with the
18834    error code, add initial support to X509_print() and x509 application.
18835
18836    *Steve Henson*
18837
18838  * Takes a deep breath and start adding X509 V3 extension support code. Add
18839    files in crypto/x509v3. Move original stuff to crypto/x509v3/old. All this
18840    stuff is currently isolated and isn't even compiled yet.
18841
18842    *Steve Henson*
18843
18844  * Continuing patches for GeneralizedTime. Fix up certificate and CRL
18845    ASN1 to use ASN1_TIME and modify print routines to use ASN1_TIME_print.
18846    Removed the versions check from X509 routines when loading extensions:
18847    this allows certain broken certificates that don't set the version
18848    properly to be processed.
18849
18850    *Steve Henson*
18851
18852  * Deal with irritating shit to do with dependencies, in YAAHW (Yet Another
18853    Ad Hoc Way) - Makefile.ssls now all contain local dependencies, which
18854    can still be regenerated with "make depend".
18855
18856    *Ben Laurie*
18857
18858  * Spelling mistake in C version of CAST-128.
18859
18860    *Ben Laurie, reported by Jeremy Hylton <jeremy@cnri.reston.va.us>*
18861
18862  * Changes to the error generation code. The perl script err-code.pl
18863    now reads in the old error codes and retains the old numbers, only
18864    adding new ones if necessary. It also only changes the .err files if new
18865    codes are added. The makefiles have been modified to only insert errors
18866    when needed (to avoid needlessly modifying header files). This is done
18867    by only inserting errors if the .err file is newer than the auto generated
18868    C file. To rebuild all the error codes from scratch (the old behaviour)
18869    either modify crypto/Makefile.ssl to pass the -regen flag to err_code.pl
18870    or delete all the .err files.
18871
18872    *Steve Henson*
18873
18874  * CAST-128 was incorrectly implemented for short keys. The C version has
18875    been fixed, but is untested. The assembler versions are also fixed, but
18876    new assembler HAS NOT BEEN GENERATED FOR WIN32 - the Makefile needs fixing
18877    to regenerate it if needed.
18878    *Ben Laurie, reported (with fix for C version) by Jun-ichiro itojun
18879     Hagino <itojun@kame.net>*
18880
18881  * File was opened incorrectly in randfile.c.
18882
18883    *Ulf Möller <ulf@fitug.de>*
18884
18885  * Beginning of support for GeneralizedTime. d2i, i2d, check and print
18886    functions. Also ASN1_TIME suite which is a CHOICE of UTCTime or
18887    GeneralizedTime. ASN1_TIME is the proper type used in certificates et
18888    al: it's just almost always a UTCTime. Note this patch adds new error
18889    codes so do a "make errors" if there are problems.
18890
18891    *Steve Henson*
18892
18893  * Correct Linux 1 recognition in config.
18894
18895    *Ulf Möller <ulf@fitug.de>*
18896
18897  * Remove pointless MD5 hash when using DSA keys in ca.
18898
18899    *Anonymous <nobody@replay.com>*
18900
18901  * Generate an error if given an empty string as a cert directory. Also
18902    generate an error if handed NULL (previously returned 0 to indicate an
18903    error, but didn't set one).
18904
18905    *Ben Laurie, reported by Anonymous <nobody@replay.com>*
18906
18907  * Add prototypes to SSL methods. Make SSL_write's buffer const, at last.
18908
18909    *Ben Laurie*
18910
18911  * Fix the dummy function BN_ref_mod_exp() in rsaref.c to have the correct
18912    parameters. This was causing a warning which killed off the Win32 compile.
18913
18914    *Steve Henson*
18915
18916  * Remove C++ style comments from crypto/bn/bn_local.h.
18917
18918    *Neil Costigan <neil.costigan@celocom.com>*
18919
18920  * The function OBJ_txt2nid was broken. It was supposed to return a nid
18921    based on a text string, looking up short and long names and finally
18922    "dot" format. The "dot" format stuff didn't work. Added new function
18923    OBJ_txt2obj to do the same but return an ASN1_OBJECT and rewrote
18924    OBJ_txt2nid to use it. OBJ_txt2obj can also return objects even if the
18925    OID is not part of the table.
18926
18927    *Steve Henson*
18928
18929  * Add prototypes to X509 lookup/verify methods, fixing a bug in
18930    X509_LOOKUP_by_alias().
18931
18932    *Ben Laurie*
18933
18934  * Sort openssl functions by name.
18935
18936    *Ben Laurie*
18937
18938  * Get the `gendsa` command working and add it to the `list` command. Remove
18939    encryption from sample DSA keys (in case anyone is interested the password
18940    was "1234").
18941
18942    *Steve Henson*
18943
18944  * Make *all* `*_free` functions accept a NULL pointer.
18945
18946    *Frans Heymans <fheymans@isaserver.be>*
18947
18948  * If a DH key is generated in s3_srvr.c, don't blow it by trying to use
18949    NULL pointers.
18950
18951    *Anonymous <nobody@replay.com>*
18952
18953  * s_server should send the CAfile as acceptable CAs, not its own cert.
18954
18955    *Bodo Moeller <3moeller@informatik.uni-hamburg.de>*
18956
18957  * Don't blow it for numeric `-newkey` arguments to `apps/req`.
18958
18959    *Bodo Moeller <3moeller@informatik.uni-hamburg.de>*
18960
18961  * Temp key "for export" tests were wrong in s3_srvr.c.
18962
18963    *Anonymous <nobody@replay.com>*
18964
18965  * Add prototype for temp key callback functions
18966    SSL_CTX_set_tmp_{rsa,dh}_callback().
18967
18968    *Ben Laurie*
18969
18970  * Make DH_free() tolerate being passed a NULL pointer (like RSA_free() and
18971    DSA_free()). Make X509_PUBKEY_set() check for errors in d2i_PublicKey().
18972
18973    *Steve Henson*
18974
18975  * X509_name_add_entry() freed the wrong thing after an error.
18976
18977    *Arne Ansper <arne@ats.cyber.ee>*
18978
18979  * rsa_eay.c would attempt to free a NULL context.
18980
18981    *Arne Ansper <arne@ats.cyber.ee>*
18982
18983  * BIO_s_socket() had a broken should_retry() on Windoze.
18984
18985    *Arne Ansper <arne@ats.cyber.ee>*
18986
18987  * BIO_f_buffer() didn't pass on BIO_CTRL_FLUSH.
18988
18989    *Arne Ansper <arne@ats.cyber.ee>*
18990
18991  * Make sure the already existing X509_STORE->depth variable is initialized
18992    in X509_STORE_new(), but document the fact that this variable is still
18993    unused in the certificate verification process.
18994
18995    *Ralf S. Engelschall*
18996
18997  * Fix the various library and `apps/` files to free up pkeys obtained from
18998    X509_PUBKEY_get() et al. Also allow x509.c to handle netscape extensions.
18999
19000    *Steve Henson*
19001
19002  * Fix reference counting in X509_PUBKEY_get(). This makes
19003    demos/maurice/example2.c work, amongst others, probably.
19004
19005    *Steve Henson and Ben Laurie*
19006
19007  * First cut of a cleanup for `apps/`. First the `ssleay` program is now named
19008    `openssl` and second, the shortcut symlinks for the `openssl <command>`
19009    are no longer created. This way we have a single and consistent command
19010    line interface `openssl <command>`, similar to `cvs <command>`.
19011
19012    *Ralf S. Engelschall, Paul Sutton and Ben Laurie*
19013
19014  * ca.c: move test for DSA keys inside #ifndef NO_DSA. Make pubkey
19015    BIT STRING wrapper always have zero unused bits.
19016
19017    *Steve Henson*
19018
19019  * Add CA.pl, perl version of CA.sh, add extended key usage OID.
19020
19021    *Steve Henson*
19022
19023  * Make the top-level INSTALL documentation easier to understand.
19024
19025    *Paul Sutton*
19026
19027  * Makefiles updated to exit if an error occurs in a sub-directory
19028    make (including if user presses ^C) [Paul Sutton]
19029
19030  * Make Montgomery context stuff explicit in RSA data structure.
19031
19032    *Ben Laurie*
19033
19034  * Fix build order of pem and err to allow for generated pem.h.
19035
19036    *Ben Laurie*
19037
19038  * Fix renumbering bug in X509_NAME_delete_entry().
19039
19040    *Ben Laurie*
19041
19042  * Enhanced the err-ins.pl script so it makes the error library number
19043    global and can add a library name. This is needed for external ASN1 and
19044    other error libraries.
19045
19046    *Steve Henson*
19047
19048  * Fixed sk_insert which never worked properly.
19049
19050    *Steve Henson*
19051
19052  * Fix ASN1 macros so they can handle indefinite length constructed
19053    EXPLICIT tags. Some non standard certificates use these: they can now
19054    be read in.
19055
19056    *Steve Henson*
19057
19058  * Merged the various old/obsolete SSLeay documentation files (doc/xxx.doc)
19059    into a single doc/ssleay.txt bundle. This way the information is still
19060    preserved but no longer messes up this directory. Now it's new room for
19061    the new set of documentation files.
19062
19063    *Ralf S. Engelschall*
19064
19065  * SETs were incorrectly DER encoded. This was a major pain, because they
19066    shared code with SEQUENCEs, which aren't coded the same. This means that
19067    almost everything to do with SETs or SEQUENCEs has either changed name or
19068    number of arguments.
19069
19070    *Ben Laurie, based on a partial fix by GP Jayan <gp@nsj.co.jp>*
19071
19072  * Fix test data to work with the above.
19073
19074    *Ben Laurie*
19075
19076  * Fix the RSA header declarations that hid a bug I fixed in 0.9.0b but
19077    was already fixed by Eric for 0.9.1 it seems.
19078
19079    *Ben Laurie - pointed out by Ulf Möller <ulf@fitug.de>*
19080
19081  * Autodetect FreeBSD3.
19082
19083    *Ben Laurie*
19084
19085  * Fix various bugs in Configure. This affects the following platforms:
19086    nextstep
19087    ncr-scde
19088    unixware-2.0
19089    unixware-2.0-pentium
19090    sco5-cc.
19091
19092    *Ben Laurie*
19093
19094  * Eliminate generated files from CVS. Reorder tests to regenerate files
19095    before they are needed.
19096
19097    *Ben Laurie*
19098
19099  * Generate Makefile.ssl from Makefile.org (to keep CVS happy).
19100
19101    *Ben Laurie*
19102
19103 ### Changes between 0.9.1b and 0.9.1c  [23-Dec-1998]
19104
19105  * Added OPENSSL_VERSION_NUMBER to crypto/crypto.h and
19106    changed SSLeay to OpenSSL in version strings.
19107
19108    *Ralf S. Engelschall*
19109
19110  * Some fixups to the top-level documents.
19111
19112    *Paul Sutton*
19113
19114  * Fixed the nasty bug where rsaref.h was not found under compile-time
19115    because the symlink to include/ was missing.
19116
19117    *Ralf S. Engelschall*
19118
19119  * Incorporated the popular no-RSA/DSA-only patches
19120    which allow to compile a RSA-free SSLeay.
19121
19122    *Andrew Cooke / Interrader Ldt., Ralf S. Engelschall*
19123
19124  * Fixed nasty rehash problem under `make -f Makefile.ssl links`
19125    when "ssleay" is still not found.
19126
19127    *Ralf S. Engelschall*
19128
19129  * Added more platforms to Configure: Cray T3E, HPUX 11,
19130
19131    *Ralf S. Engelschall, Beckmann <beckman@acl.lanl.gov>*
19132
19133  * Updated the README file.
19134
19135    *Ralf S. Engelschall*
19136
19137  * Added various .cvsignore files in the CVS repository subdirs
19138    to make a "cvs update" really silent.
19139
19140    *Ralf S. Engelschall*
19141
19142  * Recompiled the error-definition header files and added
19143    missing symbols to the Win32 linker tables.
19144
19145    *Ralf S. Engelschall*
19146
19147  * Cleaned up the top-level documents;
19148    o new files: CHANGES and LICENSE
19149    o merged VERSION, HISTORY* and README* files a CHANGES.SSLeay
19150    o merged COPYRIGHT into LICENSE
19151    o removed obsolete TODO file
19152    o renamed MICROSOFT to INSTALL.W32
19153
19154    *Ralf S. Engelschall*
19155
19156  * Removed dummy files from the 0.9.1b source tree:
19157    crypto/asn1/x crypto/bio/cd crypto/bio/fg crypto/bio/grep crypto/bio/vi
19158    crypto/bn/asm/......add.c crypto/bn/asm/a.out crypto/dsa/f crypto/md5/f
19159    crypto/pem/gmon.out crypto/perlasm/f crypto/pkcs7/build crypto/rsa/f
19160    crypto/sha/asm/f crypto/threads/f ms/zzz ssl/f ssl/f.mak test/f
19161    util/f.mak util/pl/f util/pl/f.mak crypto/bf/bf_locl.old apps/f
19162
19163    *Ralf S. Engelschall*
19164
19165  * Added various platform portability fixes.
19166
19167    *Mark J. Cox*
19168
19169  * The Genesis of the OpenSSL rpject:
19170    We start with the latest (unreleased) SSLeay version 0.9.1b which Eric A.
19171    Young and Tim J. Hudson created while they were working for C2Net until
19172    summer 1998.
19173
19174    *The OpenSSL Project*
19175
19176 ### Changes between 0.9.0b and 0.9.1b  [not released]
19177
19178  * Updated a few CA certificates under certs/
19179
19180    *Eric A. Young*
19181
19182  * Changed some BIGNUM api stuff.
19183
19184    *Eric A. Young*
19185
19186  * Various platform ports: OpenBSD, Ultrix, IRIX 64bit, NetBSD,
19187    DGUX x86, Linux Alpha, etc.
19188
19189    *Eric A. Young*
19190
19191  * New COMP library [crypto/comp/] for SSL Record Layer Compression:
19192    RLE (dummy implemented) and ZLIB (really implemented when ZLIB is
19193    available).
19194
19195    *Eric A. Young*
19196
19197  * Add -strparse option to asn1pars program which parses nested
19198    binary structures
19199
19200    *Dr Stephen Henson <shenson@bigfoot.com>*
19201
19202  * Added "oid_file" to ssleay.cnf for "ca" and "req" programs.
19203
19204    *Eric A. Young*
19205
19206  * DSA fix for "ca" program.
19207
19208    *Eric A. Young*
19209
19210  * Added "-genkey" option to "dsaparam" program.
19211
19212    *Eric A. Young*
19213
19214  * Added RIPE MD160 (rmd160) message digest.
19215
19216    *Eric A. Young*
19217
19218  * Added -a (all) option to "ssleay version" command.
19219
19220    *Eric A. Young*
19221
19222  * Added PLATFORM define which is the id given to Configure.
19223
19224    *Eric A. Young*
19225
19226  * Added MemCheck_XXXX functions to crypto/mem.c for memory checking.
19227
19228    *Eric A. Young*
19229
19230  * Extended the ASN.1 parser routines.
19231
19232    *Eric A. Young*
19233
19234  * Extended BIO routines to support REUSEADDR, seek, tell, etc.
19235
19236    *Eric A. Young*
19237
19238  * Added a BN_CTX to the BN library.
19239
19240    *Eric A. Young*
19241
19242  * Fixed the weak key values in DES library
19243
19244    *Eric A. Young*
19245
19246  * Changed API in EVP library for cipher aliases.
19247
19248    *Eric A. Young*
19249
19250  * Added support for RC2/64bit cipher.
19251
19252    *Eric A. Young*
19253
19254  * Converted the lhash library to the crypto/mem.c functions.
19255
19256    *Eric A. Young*
19257
19258  * Added more recognized ASN.1 object ids.
19259
19260    *Eric A. Young*
19261
19262  * Added more RSA padding checks for SSL/TLS.
19263
19264    *Eric A. Young*
19265
19266  * Added BIO proxy/filter functionality.
19267
19268    *Eric A. Young*
19269
19270  * Added extra_certs to SSL_CTX which can be used
19271    send extra CA certificates to the client in the CA cert chain sending
19272    process. It can be configured with SSL_CTX_add_extra_chain_cert().
19273
19274    *Eric A. Young*
19275
19276  * Now Fortezza is denied in the authentication phase because
19277    this is key exchange mechanism is not supported by SSLeay at all.
19278
19279    *Eric A. Young*
19280
19281  * Additional PKCS1 checks.
19282
19283    *Eric A. Young*
19284
19285  * Support the string "TLSv1" for all TLS v1 ciphers.
19286
19287    *Eric A. Young*
19288
19289  * Added function SSL_get_ex_data_X509_STORE_CTX_idx() which gives the
19290    ex_data index of the SSL context in the X509_STORE_CTX ex_data.
19291
19292    *Eric A. Young*
19293
19294  * Fixed a few memory leaks.
19295
19296    *Eric A. Young*
19297
19298  * Fixed various code and comment typos.
19299
19300    *Eric A. Young*
19301
19302  * A minor bug in ssl/s3_clnt.c where there would always be 4 0
19303    bytes sent in the client random.
19304
19305    *Edward Bishop <ebishop@spyglass.com>*
19306
19307 <!-- Links -->
19308
19309 [CVE-2020-1971]: https://www.openssl.org/news/vulnerabilities.html#CVE-2020-1971
19310 [CVE-2020-1967]: https://www.openssl.org/news/vulnerabilities.html#CVE-2020-1967
19311 [CVE-2019-1563]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1563
19312 [CVE-2019-1559]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1559
19313 [CVE-2019-1552]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1552
19314 [CVE-2019-1551]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1551
19315 [CVE-2019-1549]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1549
19316 [CVE-2019-1547]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1547
19317 [CVE-2019-1543]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1543
19318 [CVE-2018-5407]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-5407
19319 [CVE-2018-0739]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0739
19320 [CVE-2018-0737]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0737
19321 [CVE-2018-0735]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0735
19322 [CVE-2018-0734]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0734
19323 [CVE-2018-0733]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0733
19324 [CVE-2018-0732]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0732
19325 [CVE-2017-3738]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3738
19326 [CVE-2017-3737]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3737
19327 [CVE-2017-3736]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3736
19328 [CVE-2017-3735]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3735
19329 [CVE-2017-3733]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3733
19330 [CVE-2017-3732]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3732
19331 [CVE-2017-3731]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3731
19332 [CVE-2017-3730]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3730
19333 [CVE-2016-7055]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-7055
19334 [CVE-2016-7054]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-7054
19335 [CVE-2016-7053]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-7053
19336 [CVE-2016-7052]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-7052
19337 [CVE-2016-6309]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6309
19338 [CVE-2016-6308]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6308
19339 [CVE-2016-6307]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6307
19340 [CVE-2016-6306]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6306
19341 [CVE-2016-6305]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6305
19342 [CVE-2016-6304]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6304
19343 [CVE-2016-6303]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6303
19344 [CVE-2016-6302]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6302
19345 [CVE-2016-2183]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2183
19346 [CVE-2016-2182]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2182
19347 [CVE-2016-2181]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2181
19348 [CVE-2016-2180]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2180
19349 [CVE-2016-2179]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2179
19350 [CVE-2016-2178]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2178
19351 [CVE-2016-2177]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2177
19352 [CVE-2016-2176]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2176
19353 [CVE-2016-2109]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2109
19354 [CVE-2016-2107]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2107
19355 [CVE-2016-2106]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2106
19356 [CVE-2016-2105]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2105
19357 [CVE-2016-0800]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0800
19358 [CVE-2016-0799]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0799
19359 [CVE-2016-0798]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0798
19360 [CVE-2016-0797]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0797
19361 [CVE-2016-0705]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0705
19362 [CVE-2016-0702]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0702
19363 [CVE-2016-0701]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0701
19364 [CVE-2015-3197]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-3197
19365 [CVE-2015-3196]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-3196
19366 [CVE-2015-3195]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-3195
19367 [CVE-2015-3194]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-3194
19368 [CVE-2015-3193]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-3193
19369 [CVE-2015-1793]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1793
19370 [CVE-2015-1792]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1792
19371 [CVE-2015-1791]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1791
19372 [CVE-2015-1790]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1790
19373 [CVE-2015-1789]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1789
19374 [CVE-2015-1788]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1788
19375 [CVE-2015-1787]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1787
19376 [CVE-2015-0293]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0293
19377 [CVE-2015-0291]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0291
19378 [CVE-2015-0290]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0290
19379 [CVE-2015-0289]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0289
19380 [CVE-2015-0288]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0288
19381 [CVE-2015-0287]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0287
19382 [CVE-2015-0286]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0286
19383 [CVE-2015-0285]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0285
19384 [CVE-2015-0209]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0209
19385 [CVE-2015-0208]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0208
19386 [CVE-2015-0207]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0207
19387 [CVE-2015-0206]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0206
19388 [CVE-2015-0205]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0205
19389 [CVE-2015-0204]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0204
19390 [CVE-2014-8275]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-8275
19391 [CVE-2014-5139]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-5139
19392 [CVE-2014-3572]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3572
19393 [CVE-2014-3571]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3571
19394 [CVE-2014-3570]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3570
19395 [CVE-2014-3569]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3569
19396 [CVE-2014-3568]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3568
19397 [CVE-2014-3567]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3567
19398 [CVE-2014-3566]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3566
19399 [CVE-2014-3513]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3513
19400 [CVE-2014-3512]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3512
19401 [CVE-2014-3511]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3511
19402 [CVE-2014-3510]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3510
19403 [CVE-2014-3509]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3509
19404 [CVE-2014-3508]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3508
19405 [CVE-2014-3507]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3507
19406 [CVE-2014-3506]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3506
19407 [CVE-2014-3505]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3505
19408 [CVE-2014-3470]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3470
19409 [CVE-2014-0224]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0224
19410 [CVE-2014-0221]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0221
19411 [CVE-2014-0195]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0195
19412 [CVE-2014-0160]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0160
19413 [CVE-2014-0076]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0076
19414 [CVE-2013-6450]: https://www.openssl.org/news/vulnerabilities.html#CVE-2013-6450
19415 [CVE-2013-4353]: https://www.openssl.org/news/vulnerabilities.html#CVE-2013-4353
19416 [CVE-2013-0169]: https://www.openssl.org/news/vulnerabilities.html#CVE-2013-0169
19417 [CVE-2013-0166]: https://www.openssl.org/news/vulnerabilities.html#CVE-2013-0166
19418 [CVE-2012-2686]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-2686
19419 [CVE-2012-2333]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-2333
19420 [CVE-2012-2110]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-2110
19421 [CVE-2012-0884]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-0884
19422 [CVE-2012-0050]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-0050
19423 [CVE-2012-0027]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-0027
19424 [CVE-2011-4619]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-4619
19425 [CVE-2011-4577]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-4577
19426 [CVE-2011-4576]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-4576
19427 [CVE-2011-4109]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-4109
19428 [CVE-2011-4108]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-4108
19429 [CVE-2011-3210]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-3210
19430 [CVE-2011-3207]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-3207
19431 [CVE-2011-0014]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-0014
19432 [CVE-2010-4252]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-4252
19433 [CVE-2010-4180]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-4180
19434 [CVE-2010-3864]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-3864
19435 [CVE-2010-1633]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-1633
19436 [CVE-2010-0740]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-0740
19437 [CVE-2010-0433]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-0433
19438 [CVE-2009-4355]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-4355
19439 [CVE-2009-3555]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-3555
19440 [CVE-2009-3245]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-3245
19441 [CVE-2009-1386]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-1386
19442 [CVE-2009-1379]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-1379
19443 [CVE-2009-1378]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-1378
19444 [CVE-2009-1377]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-1377
19445 [CVE-2009-0789]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-0789
19446 [CVE-2009-0591]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-0591
19447 [CVE-2009-0590]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-0590
19448 [CVE-2008-5077]: https://www.openssl.org/news/vulnerabilities.html#CVE-2008-5077
19449 [CVE-2008-1678]: https://www.openssl.org/news/vulnerabilities.html#CVE-2008-1678
19450 [CVE-2008-1672]: https://www.openssl.org/news/vulnerabilities.html#CVE-2008-1672
19451 [CVE-2008-0891]: https://www.openssl.org/news/vulnerabilities.html#CVE-2008-0891
19452 [CVE-2007-5135]: https://www.openssl.org/news/vulnerabilities.html#CVE-2007-5135
19453 [CVE-2007-4995]: https://www.openssl.org/news/vulnerabilities.html#CVE-2007-4995
19454 [CVE-2006-4343]: https://www.openssl.org/news/vulnerabilities.html#CVE-2006-4343
19455 [CVE-2006-4339]: https://www.openssl.org/news/vulnerabilities.html#CVE-2006-4339
19456 [CVE-2006-3738]: https://www.openssl.org/news/vulnerabilities.html#CVE-2006-3738
19457 [CVE-2006-2940]: https://www.openssl.org/news/vulnerabilities.html#CVE-2006-2940
19458 [CVE-2006-2937]: https://www.openssl.org/news/vulnerabilities.html#CVE-2006-2937
19459 [CVE-2005-2969]: https://www.openssl.org/news/vulnerabilities.html#CVE-2005-2969
19460 [CVE-2004-0112]: https://www.openssl.org/news/vulnerabilities.html#CVE-2004-0112
19461 [CVE-2004-0079]: https://www.openssl.org/news/vulnerabilities.html#CVE-2004-0079
19462 [CVE-2003-0851]: https://www.openssl.org/news/vulnerabilities.html#CVE-2003-0851
19463 [CVE-2003-0545]: https://www.openssl.org/news/vulnerabilities.html#CVE-2003-0545
19464 [CVE-2003-0544]: https://www.openssl.org/news/vulnerabilities.html#CVE-2003-0544
19465 [CVE-2003-0543]: https://www.openssl.org/news/vulnerabilities.html#CVE-2003-0543
19466 [CVE-2003-0078]: https://www.openssl.org/news/vulnerabilities.html#CVE-2003-0078
19467 [CVE-2002-0659]: https://www.openssl.org/news/vulnerabilities.html#CVE-2002-0659
19468 [CVE-2002-0657]: https://www.openssl.org/news/vulnerabilities.html#CVE-2002-0657
19469 [CVE-2002-0656]: https://www.openssl.org/news/vulnerabilities.html#CVE-2002-0656
19470 [CVE-2002-0655]: https://www.openssl.org/news/vulnerabilities.html#CVE-2002-0655