Use RSA CRT parameters in FIPS self tests.
[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.0 [xx XXX xxxx]
26
27  * none
28
29 OpenSSL 3.0
30 -----------
31
32 For OpenSSL 3.0 a [Migration guide][] has been added, so the CHANGES entries
33 listed here are only a brief description.
34 The migration guide contains more detailed information related to new features,
35 breaking changes, and mappings for the large list of deprecated functions.
36
37 [Migration guide]: https://github.com/openssl/openssl/tree/master/doc/man7/migration_guide.pod
38
39 ### Changes between 3.0.6 and 3.0.7 [xx XXX xxxx]
40
41  * Removed all references to invalid OSSL_PKEY_PARAM_RSA names for CRT parameters
42    in OpenSSL code.
43    Applications should not use the names OSSL_PKEY_PARAM_RSA_FACTOR,
44    OSSL_PKEY_PARAM_RSA_EXPONENT and OSSL_PKEY_PARAM_RSA_COEFFICIENT.
45    Use the numbered names such as OSSL_PKEY_PARAM_RSA_FACTOR1 instead.
46    Using these invalid names may cause algorithms to use slower methods
47    that ignore the CRT parameters.
48
49    *Shane Lontis*
50
51  * Added RIPEMD160 to the default provider.
52
53    *Paul Dale*
54
55 ### Changes between 3.0.5 and 3.0.6 [11 Oct 2022]
56
57  * OpenSSL supports creating a custom cipher via the legacy
58    EVP_CIPHER_meth_new() function and associated function calls. This function
59    was deprecated in OpenSSL 3.0 and application authors are instead encouraged
60    to use the new provider mechanism in order to implement custom ciphers.
61
62    OpenSSL versions 3.0.0 to 3.0.5 incorrectly handle legacy custom ciphers
63    passed to the EVP_EncryptInit_ex2(), EVP_DecryptInit_ex2() and
64    EVP_CipherInit_ex2() functions (as well as other similarly named encryption
65    and decryption initialisation functions). Instead of using the custom cipher
66    directly it incorrectly tries to fetch an equivalent cipher from the
67    available providers. An equivalent cipher is found based on the NID passed to
68    EVP_CIPHER_meth_new(). This NID is supposed to represent the unique NID for a
69    given cipher. However it is possible for an application to incorrectly pass
70    NID_undef as this value in the call to EVP_CIPHER_meth_new(). When NID_undef
71    is used in this way the OpenSSL encryption/decryption initialisation function
72    will match the NULL cipher as being equivalent and will fetch this from the
73    available providers. This will succeed if the default provider has been
74    loaded (or if a third party provider has been loaded that offers this
75    cipher). Using the NULL cipher means that the plaintext is emitted as the
76    ciphertext.
77
78    Applications are only affected by this issue if they call
79    EVP_CIPHER_meth_new() using NID_undef and subsequently use it in a call to an
80    encryption/decryption initialisation function. Applications that only use
81    SSL/TLS are not impacted by this issue.
82    ([CVE-2022-3358])
83
84    *Matt Caswell*
85
86  * Fix LLVM vs Apple LLVM version numbering confusion that caused build failures
87    on MacOS 10.11
88
89    *Richard Levitte*
90
91  * Fixed the linux-mips64 Configure target which was missing the
92    SIXTY_FOUR_BIT bn_ops flag. This was causing heap corruption on that
93    platform.
94
95    *Adam Joseph*
96
97  * Fix handling of a ticket key callback that returns 0 in TLSv1.3 to not send a
98    ticket
99
100    *Matt Caswell*
101
102  * Correctly handle a retransmitted ClientHello in DTLS
103
104    *Matt Caswell*
105
106  * Fixed detection of ktls support in cross-compile environment on Linux
107
108    *Tomas Mraz*
109
110  * Fixed some regressions and test failures when running the 3.0.0 FIPS provider
111    against 3.0.x
112
113    *Paul Dale*
114
115  * Fixed SSL_pending() and SSL_has_pending() with DTLS which were failing to
116    report correct results in some cases
117
118    *Matt Caswell*
119
120  * Fix UWP builds by defining VirtualLock
121
122    *Charles Milette*
123
124  * For known safe primes use the minimum key length according to RFC 7919.
125    Longer private key sizes unnecessarily raise the cycles needed to compute the
126    shared secret without any increase of the real security. This fixes a
127    regression from 1.1.1 where these shorter keys were generated for the known
128    safe primes.
129
130    *Tomas Mraz*
131
132  * Added the loongarch64 target
133
134    *Shi Pujin*
135
136  * Fixed EC ASM flag passing. Flags for ASM implementations of EC curves were
137    only passed to the FIPS provider and not to the default or legacy provider.
138
139    *Juergen Christ*
140
141  * Fixed reported performance degradation on aarch64. Restored the
142    implementation prior to commit 2621751 ("aes/asm/aesv8-armx.pl: avoid
143    32-bit lane assignment in CTR mode") for 64bit targets only, since it is
144    reportedly 2-17% slower and the silicon errata only affects 32bit targets.
145    The new algorithm is still used for 32 bit targets.
146
147    *Bernd Edlinger*
148
149  * Added a missing header for memcmp that caused compilation failure on some
150    platforms
151
152    *Gregor Jasny*
153
154 ### Changes between 3.0.4 and 3.0.5 [5 Jul 2022]
155
156  * The OpenSSL 3.0.4 release introduced a serious bug in the RSA
157    implementation for X86_64 CPUs supporting the AVX512IFMA instructions.
158    This issue makes the RSA implementation with 2048 bit private keys
159    incorrect on such machines and memory corruption will happen during
160    the computation. As a consequence of the memory corruption an attacker
161    may be able to trigger a remote code execution on the machine performing
162    the computation.
163
164    SSL/TLS servers or other servers using 2048 bit RSA private keys running
165    on machines supporting AVX512IFMA instructions of the X86_64 architecture
166    are affected by this issue.
167    ([CVE-2022-2274])
168
169    *Xi Ruoyao*
170
171  * AES OCB mode for 32-bit x86 platforms using the AES-NI assembly optimised
172    implementation would not encrypt the entirety of the data under some
173    circumstances.  This could reveal sixteen bytes of data that was
174    preexisting in the memory that wasn't written.  In the special case of
175    "in place" encryption, sixteen bytes of the plaintext would be revealed.
176
177    Since OpenSSL does not support OCB based cipher suites for TLS and DTLS,
178    they are both unaffected.
179    ([CVE-2022-2097])
180
181    *Alex Chernyakhovsky, David Benjamin, Alejandro Sedeño*
182
183 ### Changes between 3.0.3 and 3.0.4 [21 Jun 2022]
184
185  * In addition to the c_rehash shell command injection identified in
186    CVE-2022-1292, further bugs where the c_rehash script does not
187    properly sanitise shell metacharacters to prevent command injection have been
188    fixed.
189
190    When the CVE-2022-1292 was fixed it was not discovered that there
191    are other places in the script where the file names of certificates
192    being hashed were possibly passed to a command executed through the shell.
193
194    This script is distributed by some operating systems in a manner where
195    it is automatically executed.  On such operating systems, an attacker
196    could execute arbitrary commands with the privileges of the script.
197
198    Use of the c_rehash script is considered obsolete and should be replaced
199    by the OpenSSL rehash command line tool.
200    (CVE-2022-2068)
201
202    *Daniel Fiala, Tomáš Mráz*
203
204  * Case insensitive string comparison no longer uses locales.  It has instead
205    been directly implemented.
206
207    *Paul Dale*
208
209 ### Changes between 3.0.2 and 3.0.3 [3 May 2022]
210
211  * Case insensitive string comparison is reimplemented via new locale-agnostic
212    comparison functions OPENSSL_str[n]casecmp always using the POSIX locale for
213    comparison. The previous implementation had problems when the Turkish locale
214    was used.
215
216    *Dmitry Belyavskiy*
217
218  * Fixed a bug in the c_rehash script which was not properly sanitising shell
219    metacharacters to prevent command injection.  This script is distributed by
220    some operating systems in a manner where it is automatically executed.  On
221    such operating systems, an attacker could execute arbitrary commands with the
222    privileges of the script.
223
224    Use of the c_rehash script is considered obsolete and should be replaced
225    by the OpenSSL rehash command line tool.
226    (CVE-2022-1292)
227
228    *Tomáš Mráz*
229
230  * Fixed a bug in the function `OCSP_basic_verify` that verifies the signer
231    certificate on an OCSP response. The bug caused the function in the case
232    where the (non-default) flag OCSP_NOCHECKS is used to return a postivie
233    response (meaning a successful verification) even in the case where the
234    response signing certificate fails to verify.
235
236    It is anticipated that most users of `OCSP_basic_verify` will not use the
237    OCSP_NOCHECKS flag. In this case the `OCSP_basic_verify` function will return
238    a negative value (indicating a fatal error) in the case of a certificate
239    verification failure. The normal expected return value in this case would be
240    0.
241
242    This issue also impacts the command line OpenSSL "ocsp" application. When
243    verifying an ocsp response with the "-no_cert_checks" option the command line
244    application will report that the verification is successful even though it
245    has in fact failed. In this case the incorrect successful response will also
246    be accompanied by error messages showing the failure and contradicting the
247    apparently successful result.
248    ([CVE-2022-1343])
249
250    *Matt Caswell*
251
252  * Fixed a bug where the RC4-MD5 ciphersuite incorrectly used the
253    AAD data as the MAC key. This made the MAC key trivially predictable.
254
255    An attacker could exploit this issue by performing a man-in-the-middle attack
256    to modify data being sent from one endpoint to an OpenSSL 3.0 recipient such
257    that the modified data would still pass the MAC integrity check.
258
259    Note that data sent from an OpenSSL 3.0 endpoint to a non-OpenSSL 3.0
260    endpoint will always be rejected by the recipient and the connection will
261    fail at that point. Many application protocols require data to be sent from
262    the client to the server first. Therefore, in such a case, only an OpenSSL
263    3.0 server would be impacted when talking to a non-OpenSSL 3.0 client.
264
265    If both endpoints are OpenSSL 3.0 then the attacker could modify data being
266    sent in both directions. In this case both clients and servers could be
267    affected, regardless of the application protocol.
268
269    Note that in the absence of an attacker this bug means that an OpenSSL 3.0
270    endpoint communicating with a non-OpenSSL 3.0 endpoint will fail to complete
271    the handshake when using this ciphersuite.
272
273    The confidentiality of data is not impacted by this issue, i.e. an attacker
274    cannot decrypt data that has been encrypted using this ciphersuite - they can
275    only modify it.
276
277    In order for this attack to work both endpoints must legitimately negotiate
278    the RC4-MD5 ciphersuite. This ciphersuite is not compiled by default in
279    OpenSSL 3.0, and is not available within the default provider or the default
280    ciphersuite list. This ciphersuite will never be used if TLSv1.3 has been
281    negotiated. In order for an OpenSSL 3.0 endpoint to use this ciphersuite the
282    following must have occurred:
283
284    1) OpenSSL must have been compiled with the (non-default) compile time option
285       enable-weak-ssl-ciphers
286
287    2) OpenSSL must have had the legacy provider explicitly loaded (either
288       through application code or via configuration)
289
290    3) The ciphersuite must have been explicitly added to the ciphersuite list
291
292    4) The libssl security level must have been set to 0 (default is 1)
293
294    5) A version of SSL/TLS below TLSv1.3 must have been negotiated
295
296    6) Both endpoints must negotiate the RC4-MD5 ciphersuite in preference to any
297       others that both endpoints have in common
298    (CVE-2022-1434)
299
300    *Matt Caswell*
301
302  * Fix a bug in the OPENSSL_LH_flush() function that breaks reuse of the memory
303    occuppied by the removed hash table entries.
304
305    This function is used when decoding certificates or keys. If a long lived
306    process periodically decodes certificates or keys its memory usage will
307    expand without bounds and the process might be terminated by the operating
308    system causing a denial of service. Also traversing the empty hash table
309    entries will take increasingly more time.
310
311    Typically such long lived processes might be TLS clients or TLS servers
312    configured to accept client certificate authentication.
313    (CVE-2022-1473)
314
315    *Hugo Landau, Aliaksei Levin*
316
317  * The functions `OPENSSL_LH_stats` and `OPENSSL_LH_stats_bio` now only report
318    the `num_items`, `num_nodes` and `num_alloc_nodes` statistics. All other
319    statistics are no longer supported. For compatibility, these statistics are
320    still listed in the output but are now always reported as zero.
321
322    *Hugo Landau*
323
324 ### Changes between 3.0.1 and 3.0.2 [15 Mar 2022]
325
326  * Fixed a bug in the BN_mod_sqrt() function that can cause it to loop forever
327    for non-prime moduli.
328
329    Internally this function is used when parsing certificates that contain
330    elliptic curve public keys in compressed form or explicit elliptic curve
331    parameters with a base point encoded in compressed form.
332
333    It is possible to trigger the infinite loop by crafting a certificate that
334    has invalid explicit curve parameters.
335
336    Since certificate parsing happens prior to verification of the certificate
337    signature, any process that parses an externally supplied certificate may thus
338    be subject to a denial of service attack. The infinite loop can also be
339    reached when parsing crafted private keys as they can contain explicit
340    elliptic curve parameters.
341
342    Thus vulnerable situations include:
343
344     - TLS clients consuming server certificates
345     - TLS servers consuming client certificates
346     - Hosting providers taking certificates or private keys from customers
347     - Certificate authorities parsing certification requests from subscribers
348     - Anything else which parses ASN.1 elliptic curve parameters
349
350    Also any other applications that use the BN_mod_sqrt() where the attacker
351    can control the parameter values are vulnerable to this DoS issue.
352    ([CVE-2022-0778])
353
354    *Tomáš Mráz*
355
356  * Add ciphersuites based on DHE_PSK (RFC 4279) and ECDHE_PSK (RFC 5489)
357    to the list of ciphersuites providing Perfect Forward Secrecy as
358    required by SECLEVEL >= 3.
359
360    *Dmitry Belyavskiy, Nicola Tuveri*
361
362  * Made the AES constant time code for no-asm configurations
363    optional due to the resulting 95% performance degradation.
364    The AES constant time code can be enabled, for no assembly
365    builds, with: ./config no-asm -DOPENSSL_AES_CONST_TIME
366
367    *Paul Dale*
368
369  * Fixed PEM_write_bio_PKCS8PrivateKey() to make it possible to use empty
370    passphrase strings.
371
372    *Darshan Sen*
373
374  * The negative return value handling of the certificate verification callback
375    was reverted. The replacement is to set the verification retry state with
376    the SSL_set_retry_verify() function.
377
378    *Tomáš Mráz*
379
380 ### Changes between 3.0.0 and 3.0.1 [14 Dec 2021]
381
382  * Fixed invalid handling of X509_verify_cert() internal errors in libssl
383    Internally libssl in OpenSSL calls X509_verify_cert() on the client side to
384    verify a certificate supplied by a server. That function may return a
385    negative return value to indicate an internal error (for example out of
386    memory). Such a negative return value is mishandled by OpenSSL and will cause
387    an IO function (such as SSL_connect() or SSL_do_handshake()) to not indicate
388    success and a subsequent call to SSL_get_error() to return the value
389    SSL_ERROR_WANT_RETRY_VERIFY. This return value is only supposed to be
390    returned by OpenSSL if the application has previously called
391    SSL_CTX_set_cert_verify_callback(). Since most applications do not do this
392    the SSL_ERROR_WANT_RETRY_VERIFY return value from SSL_get_error() will be
393    totally unexpected and applications may not behave correctly as a result. The
394    exact behaviour will depend on the application but it could result in
395    crashes, infinite loops or other similar incorrect responses.
396
397    This issue is made more serious in combination with a separate bug in OpenSSL
398    3.0 that will cause X509_verify_cert() to indicate an internal error when
399    processing a certificate chain. This will occur where a certificate does not
400    include the Subject Alternative Name extension but where a Certificate
401    Authority has enforced name constraints. This issue can occur even with valid
402    chains.
403    ([CVE-2021-4044])
404
405    *Matt Caswell*
406
407  * Corrected a few file name and file reference bugs in the build,
408    installation and setup scripts, which lead to installation verification
409    failures.  Slightly enhanced the installation verification script.
410
411    *Richard Levitte*
412
413  * Fixed EVP_PKEY_eq() to make it possible to use it with strictly private
414    keys.
415
416    *Richard Levitte*
417
418  * Fixed PVK encoder to properly query for the passphrase.
419
420    *Tomáš Mráz*
421
422  * Multiple fixes in the OSSL_HTTP API functions.
423
424    *David von Oheimb*
425
426  * Allow sign extension in OSSL_PARAM_allocate_from_text() for the
427    OSSL_PARAM_INTEGER data type and return error on negative numbers
428    used with the OSSL_PARAM_UNSIGNED_INTEGER data type. Make
429    OSSL_PARAM_BLD_push_BN{,_pad}() return an error on negative numbers.
430
431    *Richard Levitte*
432
433  * Allow copying uninitialized digest contexts with EVP_MD_CTX_copy_ex.
434
435    *Tomáš Mráz*
436
437  * Fixed detection of ARMv7 and ARM64 CPU features on FreeBSD.
438
439    *Allan Jude*
440
441  * Multiple threading fixes.
442
443    *Matt Caswell*
444
445  * Added NULL digest implementation to keep compatibility with 1.1.1 version.
446
447    *Tomáš Mráz*
448
449  * Allow fetching an operation from the provider that owns an unexportable key
450    as a fallback if that is still allowed by the property query.
451
452    *Richard Levitte*
453
454 ### Changes between 1.1.1 and 3.0.0 [7 sep 2021]
455
456  * TLS_MAX_VERSION, DTLS_MAX_VERSION and DTLS_MIN_VERSION constants are now
457    deprecated.
458
459    *Matt Caswell*
460
461  * The `OPENSSL_s390xcap` environment variable can be used to set bits in the
462    S390X capability vector to zero. This simplifies testing of different code
463    paths on S390X architecture.
464
465    *Patrick Steuer*
466
467  * Encrypting more than 2^64 TLS records with AES-GCM is disallowed
468    as per FIPS 140-2 IG A.5 "Key/IV Pair Uniqueness Requirements from
469    SP 800-38D". The communication will fail at this point.
470
471    *Paul Dale*
472
473  * The EC_GROUP_clear_free() function is deprecated as there is nothing
474    confidential in EC_GROUP data.
475
476    *Nicola Tuveri*
477
478  * The byte order mark (BOM) character is ignored if encountered at the
479    beginning of a PEM-formatted file.
480
481    *Dmitry Belyavskiy*
482
483  * Added CMS support for the Russian GOST algorithms.
484
485    *Dmitry Belyavskiy*
486
487  * Due to move of the implementation of cryptographic operations
488    to the providers, validation of various operation parameters can
489    be postponed until the actual operation is executed where previously
490    it happened immediately when an operation parameter was set.
491
492    For example when setting an unsupported curve with
493    EVP_PKEY_CTX_set_ec_paramgen_curve_nid() this function call will not
494    fail but later keygen operations with the EVP_PKEY_CTX will fail.
495
496    *OpenSSL team members and many third party contributors*
497
498  * The EVP_get_cipherbyname() function will return NULL for algorithms such as
499    "AES-128-SIV", "AES-128-CBC-CTS" and "CAMELLIA-128-CBC-CTS" which were
500    previously only accessible via low level interfaces. Use EVP_CIPHER_fetch()
501    instead to retrieve these algorithms from a provider.
502
503    *Shane Lontis*
504
505  * On build targets where the multilib postfix is set in the build
506    configuration the libdir directory was changing based on whether
507    the lib directory with the multilib postfix exists on the system
508    or not. This unpredictable behavior was removed and eventual
509    multilib postfix is now always added to the default libdir. Use
510    `--libdir=lib` to override the libdir if adding the postfix is
511    undesirable.
512
513    *Jan Lána*
514
515  * The triple DES key wrap functionality now conforms to RFC 3217 but is
516    no longer interoperable with OpenSSL 1.1.1.
517
518    *Paul Dale*
519
520  * The ERR_GET_FUNC() function was removed.  With the loss of meaningful
521    function codes, this function can only cause problems for calling
522    applications.
523
524    *Paul Dale*
525
526  * Add a configurable flag to output date formats as ISO 8601. Does not
527    change the default date format.
528
529    *William Edmisten*
530
531  * Version of MSVC earlier than 1300 could get link warnings, which could
532    be suppressed if the undocumented -DI_CAN_LIVE_WITH_LNK4049 was set.
533    Support for this flag has been removed.
534
535    *Rich Salz*
536
537  * Rework and make DEBUG macros consistent. Remove unused -DCONF_DEBUG,
538    -DBN_CTX_DEBUG, and REF_PRINT. Add a new tracing category and use it for
539    printing reference counts. Rename -DDEBUG_UNUSED to -DUNUSED_RESULT_DEBUG
540    Fix BN_DEBUG_RAND so it compiles and, when set, force DEBUG_RAND to be set
541    also. Rename engine_debug_ref to be ENGINE_REF_PRINT also for consistency.
542
543    *Rich Salz*
544
545  * The signatures of the functions to get and set options on SSL and
546    SSL_CTX objects changed from "unsigned long" to "uint64_t" type.
547    Some source code changes may be required.
548
549    *Rich Salz*
550
551  * The public definitions of conf_method_st and conf_st have been
552    deprecated. They will be made opaque in a future release.
553
554    *Rich Salz and Tomáš Mráz*
555
556  * Client-initiated renegotiation is disabled by default. To allow it, use
557    the -client_renegotiation option, the SSL_OP_ALLOW_CLIENT_RENEGOTIATION
558    flag, or the "ClientRenegotiation" config parameter as appropriate.
559
560    *Rich Salz*
561
562  * Add "abspath" and "includedir" pragma's to config files, to prevent,
563    or modify relative pathname inclusion.
564
565    *Rich Salz*
566
567  * OpenSSL includes a cryptographic module that is intended to be FIPS 140-2
568    validated. Please consult the README-FIPS and
569    README-PROVIDERS files, as well as the migration guide.
570
571    *OpenSSL team members and many third party contributors*
572
573  * For the key types DH and DHX the allowed settable parameters are now different.
574
575    *Shane Lontis*
576
577  * The openssl commands that read keys, certificates, and CRLs now
578    automatically detect the PEM or DER format of the input files.
579
580    *David von Oheimb, Richard Levitte, and Tomáš Mráz*
581
582  * Added enhanced PKCS#12 APIs which accept a library context.
583
584    *Jon Spillett*
585
586  * The default manual page suffix ($MANSUFFIX) has been changed to "ossl"
587
588    *Matt Caswell*
589
590  * Added support for Kernel TLS (KTLS).
591
592    *Boris Pismenny, John Baldwin and Andrew Gallatin*
593
594  * Support for RFC 5746 secure renegotiation is now required by default for
595    SSL or TLS connections to succeed.
596
597    *Benjamin Kaduk*
598
599  * The signature of the `copy` functional parameter of the
600    EVP_PKEY_meth_set_copy() function has changed so its `src` argument is
601    now `const EVP_PKEY_CTX *` instead of `EVP_PKEY_CTX *`. Similarly
602    the signature of the `pub_decode` functional parameter of the
603    EVP_PKEY_asn1_set_public() function has changed so its `pub` argument is
604    now `const X509_PUBKEY *` instead of `X509_PUBKEY *`.
605
606    *David von Oheimb*
607
608  * The error return values from some control calls (ctrl) have changed.
609
610    *Paul Dale*
611
612  * A public key check is now performed during EVP_PKEY_derive_set_peer().
613
614    *Shane Lontis*
615
616  * Many functions in the EVP_ namespace that are getters of values from
617    implementations or contexts were renamed to include get or get0 in their
618    names. Old names are provided as macro aliases for compatibility and
619    are not deprecated.
620
621    *Tomáš Mráz*
622
623  * The EVP_PKEY_CTRL_PKCS7_ENCRYPT, EVP_PKEY_CTRL_PKCS7_DECRYPT,
624    EVP_PKEY_CTRL_PKCS7_SIGN, EVP_PKEY_CTRL_CMS_ENCRYPT,
625    EVP_PKEY_CTRL_CMS_DECRYPT, and EVP_PKEY_CTRL_CMS_SIGN control operations
626    are deprecated.
627
628    *Tomáš Mráz*
629
630  * The EVP_PKEY_public_check() and EVP_PKEY_param_check() functions now work for
631    more key types.
632
633  * The output from the command line applications may have minor
634    changes.
635
636    *Paul Dale*
637
638  * The output from numerous "printing" may have minor changes.
639
640    *David von Oheimb*
641
642  * Windows thread synchronization uses read/write primitives (SRWLock) when
643    supported by the OS, otherwise CriticalSection continues to be used.
644
645    *Vincent Drake*
646
647  * Add filter BIO BIO_f_readbuffer() that allows BIO_tell() and BIO_seek() to
648    work on read only BIO source/sinks that do not support these functions.
649    This allows piping or redirection of a file BIO using stdin to be buffered
650    into memory. This is used internally in OSSL_DECODER_from_bio().
651
652    *Shane Lontis*
653
654  * OSSL_STORE_INFO_get_type() may now return an additional value. In 1.1.1
655    this function would return one of the values OSSL_STORE_INFO_NAME,
656    OSSL_STORE_INFO_PKEY, OSSL_STORE_INFO_PARAMS, OSSL_STORE_INFO_CERT or
657    OSSL_STORE_INFO_CRL. Decoded public keys would previously have been reported
658    as type OSSL_STORE_INFO_PKEY in 1.1.1. In 3.0 decoded public keys are now
659    reported as having the new type OSSL_STORE_INFO_PUBKEY. Applications
660    using this function should be amended to handle the changed return value.
661
662    *Richard Levitte*
663
664  * Improved adherence to Enhanced Security Services (ESS, RFC 2634 and RFC 5035)
665    for the TSP and CMS Advanced Electronic Signatures (CAdES) implementations.
666    As required by RFC 5035 check both ESSCertID and ESSCertIDv2 if both present.
667    Correct the semantics of checking the validation chain in case ESSCertID{,v2}
668    contains more than one certificate identifier: This means that all
669    certificates referenced there MUST be part of the validation chain.
670
671    *David von Oheimb*
672
673  * The implementation of older EVP ciphers related to CAST, IDEA, SEED, RC2, RC4,
674    RC5, DESX and DES have been moved to the legacy provider.
675
676    *Matt Caswell*
677
678  * The implementation of the EVP digests MD2, MD4, MDC2, WHIRLPOOL and
679    RIPEMD-160 have been moved to the legacy provider.
680
681    *Matt Caswell*
682
683  * The deprecated function EVP_PKEY_get0() now returns NULL being called for a
684    provided key.
685
686    *Dmitry Belyavskiy*
687
688  * The deprecated functions EVP_PKEY_get0_RSA(),
689    EVP_PKEY_get0_DSA(), EVP_PKEY_get0_EC_KEY(), EVP_PKEY_get0_DH(),
690    EVP_PKEY_get0_hmac(), EVP_PKEY_get0_poly1305() and EVP_PKEY_get0_siphash() as
691    well as the similarly named "get1" functions behave differently in
692    OpenSSL 3.0.
693
694    *Matt Caswell*
695
696  * A number of functions handling low-level keys or engines were deprecated
697    including EVP_PKEY_set1_engine(), EVP_PKEY_get0_engine(), EVP_PKEY_assign(),
698    EVP_PKEY_get0(), EVP_PKEY_get0_hmac(), EVP_PKEY_get0_poly1305() and
699    EVP_PKEY_get0_siphash().
700
701    *Matt Caswell*
702
703  * PKCS#5 PBKDF1 key derivation has been moved from PKCS5_PBE_keyivgen() into
704    the legacy crypto provider as an EVP_KDF. Applications requiring this KDF
705    will need to load the legacy crypto provider. This includes these PBE
706    algorithms which use this KDF:
707    - NID_pbeWithMD2AndDES_CBC
708    - NID_pbeWithMD5AndDES_CBC
709    - NID_pbeWithSHA1AndRC2_CBC
710    - NID_pbeWithMD2AndRC2_CBC
711    - NID_pbeWithMD5AndRC2_CBC
712    - NID_pbeWithSHA1AndDES_CBC
713
714    *Jon Spillett*
715
716  * Deprecated obsolete BIO_set_callback(), BIO_get_callback(), and
717    BIO_debug_callback() functions.
718
719    *Tomáš Mráz*
720
721  * Deprecated obsolete EVP_PKEY_CTX_get0_dh_kdf_ukm() and
722    EVP_PKEY_CTX_get0_ecdh_kdf_ukm() functions.
723
724    *Tomáš Mráz*
725
726  * The RAND_METHOD APIs have been deprecated.
727
728    *Paul Dale*
729
730  * The SRP APIs have been deprecated.
731
732    *Matt Caswell*
733
734  * Add a compile time option to prevent the caching of provider fetched
735    algorithms.  This is enabled by including the no-cached-fetch option
736    at configuration time.
737
738    *Paul Dale*
739
740  * pkcs12 now uses defaults of PBKDF2, AES and SHA-256, with a MAC iteration
741    count of PKCS12_DEFAULT_ITER.
742
743    *Tomáš Mráz and Sahana Prasad*
744
745  * The openssl speed command does not use low-level API calls anymore.
746
747    *Tomáš Mráz*
748
749  * Parallel dual-prime 1024-bit modular exponentiation for AVX512_IFMA
750    capable processors.
751
752    *Ilya Albrekht, Sergey Kirillov, Andrey Matyukov (Intel Corp)*
753
754  * Combining the Configure options no-ec and no-dh no longer disables TLSv1.3.
755
756    *Matt Caswell*
757
758  * Implemented support for fully "pluggable" TLSv1.3 groups. This means that
759    providers may supply their own group implementations (using either the "key
760    exchange" or the "key encapsulation" methods) which will automatically be
761    detected and used by libssl.
762
763    *Matt Caswell, Nicola Tuveri*
764
765  * The undocumented function X509_certificate_type() has been deprecated;
766
767    *Rich Salz*
768
769  * Deprecated the obsolete BN_pseudo_rand() and BN_pseudo_rand_range().
770
771    *Tomáš Mráz*
772
773  * Removed RSA padding mode for SSLv23 (which was only used for
774    SSLv2). This includes the functions RSA_padding_check_SSLv23() and
775    RSA_padding_add_SSLv23() and the `-ssl` option in the deprecated
776    `rsautl` command.
777
778    *Rich Salz*
779
780  * Deprecated the obsolete X9.31 RSA key generation related functions.
781
782  * While a callback function set via `SSL_CTX_set_cert_verify_callback()`
783    is not allowed to return a value > 1, this is no more taken as failure.
784
785    *Viktor Dukhovni and David von Oheimb*
786
787  * Deprecated the obsolete X9.31 RSA key generation related functions
788    BN_X931_generate_Xpq(), BN_X931_derive_prime_ex(), and
789    BN_X931_generate_prime_ex().
790
791    *Tomáš Mráz*
792
793  * The default key generation method for the regular 2-prime RSA keys was
794    changed to the FIPS 186-4 B.3.6 method.
795
796    *Shane Lontis*
797
798  * Deprecated the BN_is_prime_ex() and BN_is_prime_fasttest_ex() functions.
799
800    *Kurt Roeckx*
801
802  * Deprecated EVP_MD_CTX_set_update_fn() and EVP_MD_CTX_update_fn().
803
804    *Rich Salz*
805
806  * Deprecated the type OCSP_REQ_CTX and the functions OCSP_REQ_CTX_*() and
807    replaced with OSSL_HTTP_REQ_CTX and the functions OSSL_HTTP_REQ_CTX_*().
808
809    *Rich Salz, Richard Levitte, and David von Oheimb*
810
811  * Deprecated `X509_http_nbio()` and `X509_CRL_http_nbio()`.
812
813    *David von Oheimb*
814
815  * Deprecated `OCSP_parse_url()`.
816
817    *David von Oheimb*
818
819  * Validation of SM2 keys has been separated from the validation of regular EC
820    keys.
821
822    *Nicola Tuveri*
823
824  * Behavior of the `pkey` app is changed, when using the `-check` or `-pubcheck`
825    switches: a validation failure triggers an early exit, returning a failure
826    exit status to the parent process.
827
828    *Nicola Tuveri*
829
830  * Changed behavior of SSL_CTX_set_ciphersuites() and SSL_set_ciphersuites()
831    to ignore unknown ciphers.
832
833    *Otto Hollmann*
834
835  * The `-cipher-commands` and `-digest-commands` options
836    of the command line utility `list` have been deprecated.
837    Instead use the `-cipher-algorithms` and `-digest-algorithms` options.
838
839    *Dmitry Belyavskiy*
840
841  * Added convenience functions for generating asymmetric key pairs:
842    The 'quick' one-shot (yet somewhat limited) function L<EVP_PKEY_Q_keygen(3)>
843    and macros for the most common cases: <EVP_RSA_gen(3)> and L<EVP_EC_gen(3)>.
844
845    *David von Oheimb*
846
847  * All of the low level EC_KEY functions have been deprecated.
848
849    *Shane Lontis, Paul Dale, Richard Levitte, and Tomáš Mráz*
850
851  * Deprecated all the libcrypto and libssl error string loading
852    functions.
853
854    *Richard Levitte*
855
856  * The functions SSL_CTX_set_tmp_dh_callback and SSL_set_tmp_dh_callback, as
857    well as the macros SSL_CTX_set_tmp_dh() and SSL_set_tmp_dh() have been
858    deprecated.
859
860    *Matt Caswell*
861
862  * The `-crypt` option to the `passwd` command line tool has been removed.
863
864    *Paul Dale*
865
866  * The -C option to the `x509`, `dhparam`, `dsaparam`, and `ecparam` commands
867    were removed.
868
869    *Rich Salz*
870
871  * Add support for AES Key Wrap inverse ciphers to the EVP layer.
872
873    *Shane Lontis*
874
875  * Deprecated EVP_PKEY_set1_tls_encodedpoint() and
876    EVP_PKEY_get1_tls_encodedpoint().
877
878    *Matt Caswell*
879
880  * The security callback, which can be customised by application code, supports
881    the security operation SSL_SECOP_TMP_DH. One location of the "other" parameter
882    was incorrectly passing a DH object. It now passed an EVP_PKEY in all cases.
883
884    *Matt Caswell*
885
886  * Add PKCS7_get_octet_string() and PKCS7_type_is_other() to the public
887    interface. Their functionality remains unchanged.
888
889    *Jordan Montgomery*
890
891  * Added new option for 'openssl list', '-providers', which will display the
892    list of loaded providers, their names, version and status.  It optionally
893    displays their gettable parameters.
894
895    *Paul Dale*
896
897  * Removed EVP_PKEY_set_alias_type().
898
899    *Richard Levitte*
900
901  * Deprecated `EVP_PKEY_CTX_set_rsa_keygen_pubexp()` and introduced
902    `EVP_PKEY_CTX_set1_rsa_keygen_pubexp()`, which is now preferred.
903
904    *Jeremy Walch*
905
906  * Changed all "STACK" functions to be macros instead of inline functions. Macro
907    parameters are still checked for type safety at compile time via helper
908    inline functions.
909
910    *Matt Caswell*
911
912  * Remove the RAND_DRBG API
913
914    *Paul Dale and Matthias St. Pierre*
915
916  * Allow `SSL_set1_host()` and `SSL_add1_host()` to take IP literal addresses
917    as well as actual hostnames.
918
919    *David Woodhouse*
920
921  * The 'MinProtocol' and 'MaxProtocol' configuration commands now silently
922    ignore TLS protocol version bounds when configuring DTLS-based contexts, and
923    conversely, silently ignore DTLS protocol version bounds when configuring
924    TLS-based contexts.  The commands can be repeated to set bounds of both
925    types.  The same applies with the corresponding "min_protocol" and
926    "max_protocol" command-line switches, in case some application uses both TLS
927    and DTLS.
928
929    SSL_CTX instances that are created for a fixed protocol version (e.g.
930    `TLSv1_server_method()`) also silently ignore version bounds.  Previously
931    attempts to apply bounds to these protocol versions would result in an
932    error.  Now only the "version-flexible" SSL_CTX instances are subject to
933    limits in configuration files in command-line options.
934
935    *Viktor Dukhovni*
936
937  * Deprecated the `ENGINE` API.  Engines should be replaced with providers
938    going forward.
939
940    *Paul Dale*
941
942  * Reworked the recorded ERR codes to make better space for system errors.
943    To distinguish them, the macro `ERR_SYSTEM_ERROR()` indicates if the
944    given code is a system error (true) or an OpenSSL error (false).
945
946    *Richard Levitte*
947
948  * Reworked the test perl framework to better allow parallel testing.
949
950    *Nicola Tuveri and David von Oheimb*
951
952  * Added ciphertext stealing algorithms AES-128-CBC-CTS, AES-192-CBC-CTS and
953    AES-256-CBC-CTS to the providers. CS1, CS2 and CS3 variants are supported.
954
955    *Shane Lontis*
956
957  * 'Configure' has been changed to figure out the configuration target if
958    none is given on the command line.  Consequently, the 'config' script is
959    now only a mere wrapper.  All documentation is changed to only mention
960    'Configure'.
961
962    *Rich Salz and Richard Levitte*
963
964  * Added a library context `OSSL_LIB_CTX` that applications as well as
965    other libraries can use to form a separate context within which
966    libcrypto operations are performed.
967
968    *Richard Levitte*
969
970  * Added various `_ex` functions to the OpenSSL API that support using
971    a non-default `OSSL_LIB_CTX`.
972
973    *OpenSSL team*
974
975  * Handshake now fails if Extended Master Secret extension is dropped
976    on renegotiation.
977
978    *Tomáš Mráz*
979
980  * Dropped interactive mode from the `openssl` program.
981
982    *Richard Levitte*
983
984  * Deprecated `EVP_PKEY_cmp()` and `EVP_PKEY_cmp_parameters()`.
985
986    *David von Oheimb and Shane Lontis*
987
988  * Deprecated `EC_METHOD_get_field_type()`.
989
990    *Billy Bob Brumley*
991
992  * Deprecated EC_GFp_simple_method(), EC_GFp_mont_method(),
993    EC_GF2m_simple_method(), EC_GFp_nist_method(), EC_GFp_nistp224_method()
994    EC_GFp_nistp256_method(), and EC_GFp_nistp521_method().
995
996    *Billy Bob Brumley*
997
998  * Deprecated EC_GROUP_new(), EC_GROUP_method_of(), and EC_POINT_method_of().
999
1000    *Billy Bob Brumley*
1001
1002  * Add CAdES-BES signature verification support, mostly derived
1003    from ESSCertIDv2 TS (RFC 5816) contribution by Marek Klein.
1004
1005    *Filipe Raimundo da Silva*
1006
1007  * Add CAdES-BES signature scheme and attributes support (RFC 5126) to CMS API.
1008
1009    *Antonio Iacono*
1010
1011  * Added the AuthEnvelopedData content type structure (RFC 5083) with AES-GCM
1012    parameter (RFC 5084) for the Cryptographic Message Syntax (CMS).
1013
1014    *Jakub Zelenka*
1015
1016  * Deprecated EC_POINT_make_affine() and EC_POINTs_make_affine().
1017
1018    *Billy Bob Brumley*
1019
1020  * Deprecated EC_GROUP_precompute_mult(), EC_GROUP_have_precompute_mult(), and
1021    EC_KEY_precompute_mult().
1022
1023    *Billy Bob Brumley*
1024
1025  * Deprecated EC_POINTs_mul().
1026
1027    *Billy Bob Brumley*
1028
1029  * Removed FIPS_mode() and FIPS_mode_set().
1030
1031    *Shane Lontis*
1032
1033  * The SSL option SSL_OP_IGNORE_UNEXPECTED_EOF is introduced.
1034
1035    *Dmitry Belyavskiy*
1036
1037  * Deprecated EC_POINT_set_Jprojective_coordinates_GFp() and
1038    EC_POINT_get_Jprojective_coordinates_GFp().
1039
1040    *Billy Bob Brumley*
1041
1042  * Added OSSL_PARAM_BLD to the public interface.  This allows OSSL_PARAM
1043    arrays to be more easily constructed via a series of utility functions.
1044    Create a parameter builder using OSSL_PARAM_BLD_new(), add parameters using
1045    the various push functions and finally convert to a passable OSSL_PARAM
1046    array using OSSL_PARAM_BLD_to_param().
1047
1048    *Paul Dale*
1049
1050  * The security strength of SHA1 and MD5 based signatures in TLS has been
1051    reduced.
1052
1053    *Kurt Roeckx*
1054
1055  * Added EVP_PKEY_set_type_by_keymgmt(), to initialise an EVP_PKEY to
1056    contain a provider side internal key.
1057
1058    *Richard Levitte*
1059
1060  * ASN1_verify(), ASN1_digest() and ASN1_sign() have been deprecated.
1061
1062    *Richard Levitte*
1063
1064  * Project text documents not yet having a proper file name extension
1065    (`HACKING`, `LICENSE`, `NOTES*`, `README*`, `VERSION`) have been renamed to
1066    `*.md` as far as reasonable, else `*.txt`, for better use with file managers.
1067
1068    *David von Oheimb*
1069
1070  * The main project documents (README, NEWS, CHANGES, INSTALL, SUPPORT)
1071    have been converted to Markdown with the goal to produce documents
1072    which not only look pretty when viewed online in the browser, but
1073    remain well readable inside a plain text editor.
1074
1075    To achieve this goal, a 'minimalistic' Markdown style has been applied
1076    which avoids formatting elements that interfere too much with the
1077    reading flow in the text file. For example, it
1078
1079    * avoids [ATX headings][] and uses [setext headings][] instead
1080      (which works for `<h1>` and `<h2>` headings only).
1081    * avoids [inline links][] and uses [reference links][] instead.
1082    * avoids [fenced code blocks][] and uses [indented code blocks][] instead.
1083
1084      [ATX headings]:         https://github.github.com/gfm/#atx-headings
1085      [setext headings]:      https://github.github.com/gfm/#setext-headings
1086      [inline links]:         https://github.github.com/gfm/#inline-link
1087      [reference links]:      https://github.github.com/gfm/#reference-link
1088      [fenced code blocks]:   https://github.github.com/gfm/#fenced-code-blocks
1089      [indented code blocks]: https://github.github.com/gfm/#indented-code-blocks
1090
1091    *Matthias St. Pierre*
1092
1093  * The test suite is changed to preserve results of each test recipe.
1094    A new directory test-runs/ with subdirectories named like the
1095    test recipes are created in the build tree for this purpose.
1096
1097    *Richard Levitte*
1098
1099  * Added an implementation of CMP and CRMF (RFC 4210, RFC 4211 RFC 6712).
1100    This adds `crypto/cmp/`, `crpyto/crmf/`, `apps/cmp.c`, and `test/cmp_*`.
1101    See L<openssl-cmp(1)> and L<OSSL_CMP_exec_IR_ses(3)> as starting points.
1102
1103    *David von Oheimb, Martin Peylo*
1104
1105  * Generalized the HTTP client code from `crypto/ocsp/` into `crpyto/http/`.
1106    It supports arbitrary request and response content types, GET redirection,
1107    TLS, connections via HTTP(S) proxies, connections and exchange via
1108    user-defined BIOs (allowing implicit connections), persistent connections,
1109    and timeout checks.  See L<OSSL_HTTP_transfer(3)> etc. for details.
1110    The legacy OCSP-focused (and only partly documented) API
1111    is retained for backward compatibility, while most of it is deprecated.
1112
1113    *David von Oheimb*
1114
1115  * Added `util/check-format.pl`, a tool for checking adherence to the
1116    OpenSSL coding style <https://www.openssl.org/policies/codingstyle.html>.
1117    The checks performed are incomplete and yield some false positives.
1118    Still the tool should be useful for detecting most typical glitches.
1119
1120    *David von Oheimb*
1121
1122  * `BIO_do_connect()` and `BIO_do_handshake()` have been extended:
1123    If domain name resolution yields multiple IP addresses all of them are tried
1124    after `connect()` failures.
1125
1126    *David von Oheimb*
1127
1128  * All of the low level RSA functions have been deprecated.
1129
1130    *Paul Dale*
1131
1132  * X509 certificates signed using SHA1 are no longer allowed at security
1133    level 1 and above.
1134
1135    *Kurt Roeckx*
1136
1137  * The command line utilities dhparam, dsa, gendsa and dsaparam have been
1138    modified to use PKEY APIs.  These commands are now in maintenance mode
1139    and no new features will be added to them.
1140
1141    *Paul Dale*
1142
1143  * The command line utility rsautl has been deprecated.
1144
1145    *Paul Dale*
1146
1147  * The command line utilities genrsa and rsa have been modified to use PKEY
1148    APIs. They now write PKCS#8 keys by default. These commands are now in
1149    maintenance mode and no new features will be added to them.
1150
1151    *Paul Dale*
1152
1153  * All of the low level DH functions have been deprecated.
1154
1155    *Paul Dale and Matt Caswell*
1156
1157  * All of the low level DSA functions have been deprecated.
1158
1159    *Paul Dale*
1160
1161  * Reworked the treatment of EC EVP_PKEYs with the SM2 curve to
1162    automatically become EVP_PKEY_SM2 rather than EVP_PKEY_EC.
1163
1164    *Richard Levitte*
1165
1166  * Deprecated low level ECDH and ECDSA functions.
1167
1168    *Paul Dale*
1169
1170  * Deprecated EVP_PKEY_decrypt_old() and EVP_PKEY_encrypt_old().
1171
1172    *Richard Levitte*
1173
1174  * Enhanced the documentation of EVP_PKEY_get_size(), EVP_PKEY_get_bits()
1175    and EVP_PKEY_get_security_bits().  Especially EVP_PKEY_get_size() needed
1176    a new formulation to include all the things it can be used for,
1177    as well as words of caution.
1178
1179    *Richard Levitte*
1180
1181  * The SSL_CTX_set_tlsext_ticket_key_cb(3) function has been deprecated.
1182
1183    *Paul Dale*
1184
1185  * All of the low level HMAC functions have been deprecated.
1186
1187    *Paul Dale and David von Oheimb*
1188
1189  * Over two thousand fixes were made to the documentation, including:
1190    - Common options (such as -rand/-writerand, TLS version control, etc)
1191      were refactored and point to newly-enhanced descriptions in openssl.pod.
1192    - Added style conformance for all options (with help from Richard Levitte),
1193      documented all reported missing options, added a CI build to check
1194      that all options are documented and that no unimplemented options
1195      are documented.
1196    - Documented some internals, such as all use of environment variables.
1197    - Addressed all internal broken L<> references.
1198
1199    *Rich Salz*
1200
1201  * All of the low level CMAC functions have been deprecated.
1202
1203    *Paul Dale*
1204
1205  * The low-level MD2, MD4, MD5, MDC2, RIPEMD160 and Whirlpool digest
1206    functions have been deprecated.
1207
1208    *Paul Dale and David von Oheimb*
1209
1210  * Corrected the documentation of the return values from the `EVP_DigestSign*`
1211    set of functions.  The documentation mentioned negative values for some
1212    errors, but this was never the case, so the mention of negative values
1213    was removed.
1214
1215    Code that followed the documentation and thereby check with something
1216    like `EVP_DigestSignInit(...) <= 0` will continue to work undisturbed.
1217
1218    *Richard Levitte*
1219
1220  * All of the low level cipher functions have been deprecated.
1221
1222    *Matt Caswell and Paul Dale*
1223
1224  * Removed include/openssl/opensslconf.h.in and replaced it with
1225    include/openssl/configuration.h.in, which differs in not including
1226    <openssl/macros.h>.  A short header include/openssl/opensslconf.h
1227    was added to include both.
1228
1229    This allows internal hacks where one might need to modify the set
1230    of configured macros, for example this if deprecated symbols are
1231    still supposed to be available internally:
1232
1233        #include <openssl/configuration.h>
1234
1235        #undef OPENSSL_NO_DEPRECATED
1236        #define OPENSSL_SUPPRESS_DEPRECATED
1237
1238        #include <openssl/macros.h>
1239
1240    This should not be used by applications that use the exported
1241    symbols, as that will lead to linking errors.
1242
1243    *Richard Levitte*
1244
1245  * Fixed an overflow bug in the x64_64 Montgomery squaring procedure
1246    used in exponentiation with 512-bit moduli. No EC algorithms are
1247    affected. Analysis suggests that attacks against 2-prime RSA1024,
1248    3-prime RSA1536, and DSA1024 as a result of this defect would be very
1249    difficult to perform and are not believed likely. Attacks against DH512
1250    are considered just feasible. However, for an attack the target would
1251    have to re-use the DH512 private key, which is not recommended anyway.
1252    Also applications directly using the low-level API BN_mod_exp may be
1253    affected if they use BN_FLG_CONSTTIME.
1254    ([CVE-2019-1551])
1255
1256    *Andy Polyakov*
1257
1258  * Most memory-debug features have been deprecated, and the functionality
1259    replaced with no-ops.
1260
1261    *Rich Salz*
1262
1263  * Added documentation for the STACK API.
1264
1265    *Rich Salz*
1266
1267  * Introduced a new method type and API, OSSL_ENCODER, to represent
1268    generic encoders.  These do the same sort of job that PEM writers
1269    and d2i functions do, but with support for methods supplied by
1270    providers, and the possibility for providers to support other
1271    formats as well.
1272
1273    *Richard Levitte*
1274
1275  * Introduced a new method type and API, OSSL_DECODER, to represent
1276    generic decoders.  These do the same sort of job that PEM readers
1277    and i2d functions do, but with support for methods supplied by
1278    providers, and the possibility for providers to support other
1279    formats as well.
1280
1281    *Richard Levitte*
1282
1283  * Added a .pragma directive to the syntax of configuration files, to
1284    allow varying behavior in a supported and predictable manner.
1285    Currently added pragma:
1286
1287            .pragma dollarid:on
1288
1289    This allows dollar signs to be a keyword character unless it's
1290    followed by a opening brace or parenthesis.  This is useful for
1291    platforms where dollar signs are commonly used in names, such as
1292    volume names and system directory names on VMS.
1293
1294    *Richard Levitte*
1295
1296  * Added functionality to create an EVP_PKEY from user data.
1297
1298    *Richard Levitte*
1299
1300  * Change the interpretation of the '--api' configuration option to
1301    mean that this is a desired API compatibility level with no
1302    further meaning.  The previous interpretation, that this would
1303    also mean to remove all deprecated symbols up to and including
1304    the given version, no requires that 'no-deprecated' is also used
1305    in the configuration.
1306
1307    When building applications, the desired API compatibility level
1308    can be set with the OPENSSL_API_COMPAT macro like before.  For
1309    API compatibility version below 3.0, the old style numerical
1310    value is valid as before, such as -DOPENSSL_API_COMPAT=0x10100000L.
1311    For version 3.0 and on, the value is expected to be the decimal
1312    value calculated from the major and minor version like this:
1313
1314            MAJOR * 10000 + MINOR * 100
1315
1316    Examples:
1317
1318            -DOPENSSL_API_COMPAT=30000             For 3.0
1319            -DOPENSSL_API_COMPAT=30200             For 3.2
1320
1321    To hide declarations that are deprecated up to and including the
1322    given API compatibility level, -DOPENSSL_NO_DEPRECATED must be
1323    given when building the application as well.
1324
1325    *Richard Levitte*
1326
1327  * Added the X509_LOOKUP_METHOD called X509_LOOKUP_store, to allow
1328    access to certificate and CRL stores via URIs and OSSL_STORE
1329    loaders.
1330
1331    This adds the following functions:
1332
1333    - X509_LOOKUP_store()
1334    - X509_STORE_load_file()
1335    - X509_STORE_load_path()
1336    - X509_STORE_load_store()
1337    - SSL_add_store_cert_subjects_to_stack()
1338    - SSL_CTX_set_default_verify_store()
1339    - SSL_CTX_load_verify_file()
1340    - SSL_CTX_load_verify_dir()
1341    - SSL_CTX_load_verify_store()
1342
1343    *Richard Levitte*
1344
1345  * Added a new method to gather entropy on VMS, based on SYS$GET_ENTROPY.
1346    The presence of this system service is determined at run-time.
1347
1348    *Richard Levitte*
1349
1350  * Added functionality to create an EVP_PKEY context based on data
1351    for methods from providers.  This takes an algorithm name and a
1352    property query string and simply stores them, with the intent
1353    that any operation that uses this context will use those strings
1354    to fetch the needed methods implicitly, thereby making the port
1355    of application written for pre-3.0 OpenSSL easier.
1356
1357    *Richard Levitte*
1358
1359  * The undocumented function NCONF_WIN32() has been deprecated; for
1360    conversion details see the HISTORY section of doc/man5/config.pod
1361
1362    *Rich Salz*
1363
1364  * Introduced the new functions EVP_DigestSignInit_ex() and
1365    EVP_DigestVerifyInit_ex(). The macros EVP_DigestSignUpdate() and
1366    EVP_DigestVerifyUpdate() have been converted to functions. See the man
1367    pages for further details.
1368
1369    *Matt Caswell*
1370
1371  * Over two thousand fixes were made to the documentation, including:
1372    adding missing command flags, better style conformance, documentation
1373    of internals, etc.
1374
1375    *Rich Salz, Richard Levitte*
1376
1377  * s390x assembly pack: add hardware-support for P-256, P-384, P-521,
1378    X25519, X448, Ed25519 and Ed448.
1379
1380    *Patrick Steuer*
1381
1382  * Print all values for a PKCS#12 attribute with 'openssl pkcs12', not just
1383    the first value.
1384
1385    *Jon Spillett*
1386
1387  * Deprecated the public definition of `ERR_STATE` as well as the function
1388    `ERR_get_state()`.  This is done in preparation of making `ERR_STATE` an
1389    opaque type.
1390
1391    *Richard Levitte*
1392
1393  * Added ERR functionality to give callers access to the stored function
1394    names that have replaced the older function code based functions.
1395
1396    New functions are ERR_peek_error_func(), ERR_peek_last_error_func(),
1397    ERR_peek_error_data(), ERR_peek_last_error_data(), ERR_get_error_all(),
1398    ERR_peek_error_all() and ERR_peek_last_error_all().
1399
1400    Deprecate ERR functions ERR_get_error_line(), ERR_get_error_line_data(),
1401    ERR_peek_error_line_data(), ERR_peek_last_error_line_data() and
1402    ERR_func_error_string().
1403
1404    *Richard Levitte*
1405
1406  * Extended testing to be verbose for failing tests only.  The make variables
1407    VERBOSE_FAILURE or VF can be used to enable this:
1408
1409            $ make VF=1 test                           # Unix
1410            $ mms /macro=(VF=1) test                   ! OpenVMS
1411            $ nmake VF=1 test                          # Windows
1412
1413    *Richard Levitte*
1414
1415  * Added the `-copy_extensions` option to the `x509` command for use with
1416    `-req` and `-x509toreq`. When given with the `copy` or `copyall` argument,
1417    all extensions in the request are copied to the certificate or vice versa.
1418
1419    *David von Oheimb*, *Kirill Stefanenkov <kirill_stefanenkov@rambler.ru>*
1420
1421  * Added the `-copy_extensions` option to the `req` command for use with
1422    `-x509`. When given with the `copy` or `copyall` argument,
1423    all extensions in the certification request are copied to the certificate.
1424
1425    *David von Oheimb*
1426
1427  * The `x509`, `req`, and `ca` commands now make sure that X.509v3 certificates
1428    they generate are by default RFC 5280 compliant in the following sense:
1429    There is a subjectKeyIdentifier extension with a hash value of the public key
1430    and for not self-signed certs there is an authorityKeyIdentifier extension
1431    with a keyIdentifier field or issuer information identifying the signing key.
1432    This is done unless some configuration overrides the new default behavior,
1433    such as `subjectKeyIdentifier = none` and `authorityKeyIdentifier = none`.
1434
1435    *David von Oheimb*
1436
1437  * Added several checks to `X509_verify_cert()` according to requirements in
1438    RFC 5280 in case `X509_V_FLAG_X509_STRICT` is set
1439    (which may be done by using the CLI option `-x509_strict`):
1440    * The basicConstraints of CA certificates must be marked critical.
1441    * CA certificates must explicitly include the keyUsage extension.
1442    * If a pathlenConstraint is given the key usage keyCertSign must be allowed.
1443    * The issuer name of any certificate must not be empty.
1444    * The subject name of CA certs, certs with keyUsage crlSign,
1445      and certs without subjectAlternativeName must not be empty.
1446    * If a subjectAlternativeName extension is given it must not be empty.
1447    * The signatureAlgorithm field and the cert signature must be consistent.
1448    * Any given authorityKeyIdentifier and any given subjectKeyIdentifier
1449      must not be marked critical.
1450    * The authorityKeyIdentifier must be given for X.509v3 certs
1451      unless they are self-signed.
1452    * The subjectKeyIdentifier must be given for all X.509v3 CA certs.
1453
1454    *David von Oheimb*
1455
1456  * Certificate verification using `X509_verify_cert()` meanwhile rejects EC keys
1457    with explicit curve parameters (specifiedCurve) as required by RFC 5480.
1458
1459    *Tomáš Mráz*
1460
1461  * For built-in EC curves, ensure an EC_GROUP built from the curve name is
1462    used even when parsing explicit parameters, when loading a encoded key
1463    or calling `EC_GROUP_new_from_ecpkparameters()`/
1464    `EC_GROUP_new_from_ecparameters()`.
1465    This prevents bypass of security hardening and performance gains,
1466    especially for curves with specialized EC_METHODs.
1467    By default, if a key encoded with explicit parameters is loaded and later
1468    encoded, the output is still encoded with explicit parameters, even if
1469    internally a "named" EC_GROUP is used for computation.
1470
1471    *Nicola Tuveri*
1472
1473  * Compute ECC cofactors if not provided during EC_GROUP construction. Before
1474    this change, EC_GROUP_set_generator would accept order and/or cofactor as
1475    NULL. After this change, only the cofactor parameter can be NULL. It also
1476    does some minimal sanity checks on the passed order.
1477    ([CVE-2019-1547])
1478
1479    *Billy Bob Brumley*
1480
1481  * Fixed a padding oracle in PKCS7_dataDecode and CMS_decrypt_set1_pkey.
1482    An attack is simple, if the first CMS_recipientInfo is valid but the
1483    second CMS_recipientInfo is chosen ciphertext. If the second
1484    recipientInfo decodes to PKCS #1 v1.5 form plaintext, the correct
1485    encryption key will be replaced by garbage, and the message cannot be
1486    decoded, but if the RSA decryption fails, the correct encryption key is
1487    used and the recipient will not notice the attack.
1488    As a work around for this potential attack the length of the decrypted
1489    key must be equal to the cipher default key length, in case the
1490    certifiate is not given and all recipientInfo are tried out.
1491    The old behaviour can be re-enabled in the CMS code by setting the
1492    CMS_DEBUG_DECRYPT flag.
1493
1494    *Bernd Edlinger*
1495
1496  * Early start up entropy quality from the DEVRANDOM seed source has been
1497    improved for older Linux systems.  The RAND subsystem will wait for
1498    /dev/random to be producing output before seeding from /dev/urandom.
1499    The seeded state is stored for future library initialisations using
1500    a system global shared memory segment.  The shared memory identifier
1501    can be configured by defining OPENSSL_RAND_SEED_DEVRANDOM_SHM_ID to
1502    the desired value.  The default identifier is 114.
1503
1504    *Paul Dale*
1505
1506  * Revised BN_generate_prime_ex to not avoid factors 2..17863 in p-1
1507    when primes for RSA keys are computed.
1508    Since we previously always generated primes == 2 (mod 3) for RSA keys,
1509    the 2-prime and 3-prime RSA modules were easy to distinguish, since
1510    `N = p*q = 1 (mod 3)`, but `N = p*q*r = 2 (mod 3)`. Therefore fingerprinting
1511    2-prime vs. 3-prime RSA keys was possible by computing N mod 3.
1512    This avoids possible fingerprinting of newly generated RSA modules.
1513
1514    *Bernd Edlinger*
1515
1516  * Correct the extended master secret constant on EBCDIC systems. Without this
1517    fix TLS connections between an EBCDIC system and a non-EBCDIC system that
1518    negotiate EMS will fail. Unfortunately this also means that TLS connections
1519    between EBCDIC systems with this fix, and EBCDIC systems without this
1520    fix will fail if they negotiate EMS.
1521
1522    *Matt Caswell*
1523
1524  * Changed the library initialisation so that the config file is now loaded
1525    by default. This was already the case for libssl. It now occurs for both
1526    libcrypto and libssl. Use the OPENSSL_INIT_NO_LOAD_CONFIG option to
1527    `OPENSSL_init_crypto()` to suppress automatic loading of a config file.
1528
1529    *Matt Caswell*
1530
1531  * Introduced new error raising macros, `ERR_raise()` and `ERR_raise_data()`,
1532    where the former acts as a replacement for `ERR_put_error()`, and the
1533    latter replaces the combination `ERR_put_error()` + `ERR_add_error_data()`.
1534    `ERR_raise_data()` adds more flexibility by taking a format string and
1535    an arbitrary number of arguments following it, to be processed with
1536    `BIO_snprintf()`.
1537
1538    *Richard Levitte*
1539
1540  * Introduced a new function, `OSSL_PROVIDER_available()`, which can be used
1541    to check if a named provider is loaded and available.  When called, it
1542    will also activate all fallback providers if such are still present.
1543
1544    *Richard Levitte*
1545
1546  * Enforce a minimum DH modulus size of 512 bits.
1547
1548    *Bernd Edlinger*
1549
1550  * Changed DH parameters to generate the order q subgroup instead of 2q.
1551    Previously generated DH parameters are still accepted by DH_check
1552    but DH_generate_key works around that by clearing bit 0 of the
1553    private key for those. This avoids leaking bit 0 of the private key.
1554
1555    *Bernd Edlinger*
1556
1557  * Significantly reduce secure memory usage by the randomness pools.
1558
1559    *Paul Dale*
1560
1561  * `{CRYPTO,OPENSSL}_mem_debug_{push,pop}` are now no-ops and have been
1562    deprecated.
1563
1564    *Rich Salz*
1565
1566  * A new type, EVP_KEYEXCH, has been introduced to represent key exchange
1567    algorithms. An implementation of a key exchange algorithm can be obtained
1568    by using the function EVP_KEYEXCH_fetch(). An EVP_KEYEXCH algorithm can be
1569    used in a call to EVP_PKEY_derive_init_ex() which works in a similar way to
1570    the older EVP_PKEY_derive_init() function. See the man pages for the new
1571    functions for further details.
1572
1573    *Matt Caswell*
1574
1575  * The EVP_PKEY_CTX_set_dh_pad() macro has now been converted to a function.
1576
1577    *Matt Caswell*
1578
1579  * Removed the function names from error messages and deprecated the
1580    xxx_F_xxx define's.
1581
1582    *Richard Levitte*
1583
1584  * Removed NextStep support and the macro OPENSSL_UNISTD
1585
1586    *Rich Salz*
1587
1588  * Removed DES_check_key.  Also removed OPENSSL_IMPLEMENT_GLOBAL,
1589    OPENSSL_GLOBAL_REF, OPENSSL_DECLARE_GLOBAL.
1590    Also removed "export var as function" capability; we do not export
1591    variables, only functions.
1592
1593    *Rich Salz*
1594
1595  * RC5_32_set_key has been changed to return an int type, with 0 indicating
1596    an error and 1 indicating success. In previous versions of OpenSSL this
1597    was a void type. If a key was set longer than the maximum possible this
1598    would crash.
1599
1600    *Matt Caswell*
1601
1602  * Support SM2 signing and verification schemes with X509 certificate.
1603
1604    *Paul Yang*
1605
1606  * Use SHA256 as the default digest for TS query in the `ts` app.
1607
1608    *Tomáš Mráz*
1609
1610  * Change PBKDF2 to conform to SP800-132 instead of the older PKCS5 RFC2898.
1611
1612    *Shane Lontis*
1613
1614  * Default cipher lists/suites are now available via a function, the
1615    #defines are deprecated.
1616
1617    *Todd Short*
1618
1619  * Add target VC-WIN32-UWP, VC-WIN64A-UWP, VC-WIN32-ARM-UWP and
1620    VC-WIN64-ARM-UWP in Windows OneCore target for making building libraries
1621    for Windows Store apps easier. Also, the "no-uplink" option has been added.
1622
1623    *Kenji Mouri*
1624
1625  * Join the directories crypto/x509 and crypto/x509v3
1626
1627    *Richard Levitte*
1628
1629  * Added command 'openssl kdf' that uses the EVP_KDF API.
1630
1631    *Shane Lontis*
1632
1633  * Added command 'openssl mac' that uses the EVP_MAC API.
1634
1635    *Shane Lontis*
1636
1637  * Added OPENSSL_info() to get diverse built-in OpenSSL data, such
1638    as default directories.  Also added the command 'openssl info'
1639    for scripting purposes.
1640
1641    *Richard Levitte*
1642
1643  * The functions AES_ige_encrypt() and AES_bi_ige_encrypt() have been
1644    deprecated.
1645
1646    *Matt Caswell*
1647
1648  * Add prediction resistance to the DRBG reseeding process.
1649
1650    *Paul Dale*
1651
1652  * Limit the number of blocks in a data unit for AES-XTS to 2^20 as
1653    mandated by IEEE Std 1619-2018.
1654
1655    *Paul Dale*
1656
1657  * Added newline escaping functionality to a filename when using openssl dgst.
1658    This output format is to replicate the output format found in the `*sum`
1659    checksum programs. This aims to preserve backward compatibility.
1660
1661    *Matt Eaton, Richard Levitte, and Paul Dale*
1662
1663  * Removed the heartbeat message in DTLS feature, as it has very
1664    little usage and doesn't seem to fulfill a valuable purpose.
1665    The configuration option is now deprecated.
1666
1667    *Richard Levitte*
1668
1669  * Changed the output of 'openssl {digestname} < file' to display the
1670    digest name in its output.
1671
1672    *Richard Levitte*
1673
1674  * Added a new generic trace API which provides support for enabling
1675    instrumentation through trace output.
1676
1677    *Richard Levitte & Matthias St. Pierre*
1678
1679  * Added build tests for C++.  These are generated files that only do one
1680    thing, to include one public OpenSSL head file each.  This tests that
1681    the public header files can be usefully included in a C++ application.
1682
1683    This test isn't enabled by default.  It can be enabled with the option
1684    'enable-buildtest-c++'.
1685
1686    *Richard Levitte*
1687
1688  * Added KB KDF (EVP_KDF_KB) to EVP_KDF.
1689
1690    *Robbie Harwood*
1691
1692  * Added SSH KDF (EVP_KDF_SSHKDF) and KRB5 KDF (EVP_KDF_KRB5KDF) to EVP_KDF.
1693
1694    *Simo Sorce*
1695
1696  * Added Single Step KDF (EVP_KDF_SS), X963 KDF, and X942 KDF to EVP_KDF.
1697
1698    *Shane Lontis*
1699
1700  * Added KMAC to EVP_MAC.
1701
1702    *Shane Lontis*
1703
1704  * Added property based algorithm implementation selection framework to
1705    the core.
1706
1707    *Paul Dale*
1708
1709  * Added SCA hardening for modular field inversion in EC_GROUP through
1710    a new dedicated field_inv() pointer in EC_METHOD.
1711    This also addresses a leakage affecting conversions from projective
1712    to affine coordinates.
1713
1714    *Billy Bob Brumley, Nicola Tuveri*
1715
1716  * Added EVP_KDF, an EVP layer KDF API, to simplify adding KDF and PRF
1717    implementations.  This includes an EVP_PKEY to EVP_KDF bridge for
1718    those algorithms that were already supported through the EVP_PKEY API
1719    (scrypt, TLS1 PRF and HKDF).  The low-level KDF functions for PBKDF2
1720    and scrypt are now wrappers that call EVP_KDF.
1721
1722    *David Makepeace*
1723
1724  * Build devcrypto engine as a dynamic engine.
1725
1726    *Eneas U de Queiroz*
1727
1728  * Add keyed BLAKE2 to EVP_MAC.
1729
1730    *Antoine Salon*
1731
1732  * Fix a bug in the computation of the endpoint-pair shared secret used
1733    by DTLS over SCTP. This breaks interoperability with older versions
1734    of OpenSSL like OpenSSL 1.1.0 and OpenSSL 1.0.2. There is a runtime
1735    switch SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG (off by default) enabling
1736    interoperability with such broken implementations. However, enabling
1737    this switch breaks interoperability with correct implementations.
1738
1739  * Fix a use after free bug in d2i_X509_PUBKEY when overwriting a
1740    re-used X509_PUBKEY object if the second PUBKEY is malformed.
1741
1742    *Bernd Edlinger*
1743
1744  * Move strictness check from EVP_PKEY_asn1_new() to EVP_PKEY_asn1_add0().
1745
1746    *Richard Levitte*
1747
1748  * Changed the license to the Apache License v2.0.
1749
1750    *Richard Levitte*
1751
1752  * Switch to a new version scheme using three numbers MAJOR.MINOR.PATCH.
1753
1754    - Major releases (indicated by incrementing the MAJOR release number)
1755      may introduce incompatible API/ABI changes.
1756    - Minor releases (indicated by incrementing the MINOR release number)
1757      may introduce new features but retain API/ABI compatibility.
1758    - Patch releases (indicated by incrementing the PATCH number)
1759      are intended for bug fixes and other improvements of existing
1760      features only (like improving performance or adding documentation)
1761      and retain API/ABI compatibility.
1762
1763    *Richard Levitte*
1764
1765  * Add support for RFC5297 SIV mode (siv128), including AES-SIV.
1766
1767    *Todd Short*
1768
1769  * Remove the 'dist' target and add a tarball building script.  The
1770    'dist' target has fallen out of use, and it shouldn't be
1771    necessary to configure just to create a source distribution.
1772
1773    *Richard Levitte*
1774
1775  * Recreate the OS390-Unix config target.  It no longer relies on a
1776    special script like it did for OpenSSL pre-1.1.0.
1777
1778    *Richard Levitte*
1779
1780  * Instead of having the source directories listed in Configure, add
1781    a 'build.info' keyword SUBDIRS to indicate what sub-directories to
1782    look into.
1783
1784    *Richard Levitte*
1785
1786  * Add GMAC to EVP_MAC.
1787
1788    *Paul Dale*
1789
1790  * Ported the HMAC, CMAC and SipHash EVP_PKEY_METHODs to EVP_MAC.
1791
1792    *Richard Levitte*
1793
1794  * Added EVP_MAC, an EVP layer MAC API, to simplify adding MAC
1795    implementations.  This includes a generic EVP_PKEY to EVP_MAC bridge,
1796    to facilitate the continued use of MACs through raw private keys in
1797    functionality such as `EVP_DigestSign*` and `EVP_DigestVerify*`.
1798
1799    *Richard Levitte*
1800
1801  * Deprecate ECDH_KDF_X9_62().
1802
1803    *Antoine Salon*
1804
1805  * Added EVP_PKEY_ECDH_KDF_X9_63 and ecdh_KDF_X9_63() as replacements for
1806    the EVP_PKEY_ECDH_KDF_X9_62 KDF type and ECDH_KDF_X9_62(). The old names
1807    are retained for backwards compatibility.
1808
1809    *Antoine Salon*
1810
1811  * AES-XTS mode now enforces that its two keys are different to mitigate
1812    the attacked described in "Efficient Instantiations of Tweakable
1813    Blockciphers and Refinements to Modes OCB and PMAC" by Phillip Rogaway.
1814    Details of this attack can be obtained from:
1815    <http://web.cs.ucdavis.edu/%7Erogaway/papers/offsets.pdf>
1816
1817    *Paul Dale*
1818
1819  * Rename the object files, i.e. give them other names than in previous
1820    versions.  Their names now include the name of the final product, as
1821    well as its type mnemonic (bin, lib, shlib).
1822
1823    *Richard Levitte*
1824
1825  * Added new option for 'openssl list', '-objects', which will display the
1826    list of built in objects, i.e. OIDs with names.
1827
1828    *Richard Levitte*
1829
1830  * Added the options `-crl_lastupdate` and `-crl_nextupdate` to `openssl ca`,
1831    allowing the `lastUpdate` and `nextUpdate` fields in the generated CRL to
1832    be set explicitly.
1833
1834    *Chris Novakovic*
1835
1836  * Added support for Linux Kernel TLS data-path. The Linux Kernel data-path
1837    improves application performance by removing data copies and providing
1838    applications with zero-copy system calls such as sendfile and splice.
1839
1840    *Boris Pismenny*
1841
1842  * The SSL option SSL_OP_CLEANSE_PLAINTEXT is introduced.
1843
1844    *Martin Elshuber*
1845
1846  * `PKCS12_parse` now maintains the order of the parsed certificates
1847    when outputting them via `*ca` (rather than reversing it).
1848
1849    *David von Oheimb*
1850
1851  * Deprecated pthread fork support methods.
1852
1853    *Randall S. Becker*
1854
1855  * Added support for FFDHE key exchange in TLS 1.3.
1856
1857    *Raja Ashok*
1858
1859  * Added a new concept for OpenSSL plugability: providers.  This
1860    functionality is designed to replace the ENGINE API and ENGINE
1861    implementations, and to be much more dynamic, allowing provider
1862    authors to introduce new algorithms among other things, as long as
1863    there's an API that supports the algorithm type.
1864
1865    With this concept comes a new core API for interaction between
1866    libcrypto and provider implementations.  Public libcrypto functions
1867    that want to use providers do so through this core API.
1868
1869    The main documentation for this core API is found in
1870    doc/man7/provider.pod, doc/man7/provider-base.pod, and they in turn
1871    refer to other manuals describing the API specific for supported
1872    algorithm types (also called operations).
1873
1874    *The OpenSSL team*
1875
1876 OpenSSL 1.1.1
1877 -------------
1878
1879 ### Changes between 1.1.1l and 1.1.1m [xx XXX xxxx]
1880
1881  * Avoid loading of a dynamic engine twice.
1882
1883    *Bernd Edlinger*
1884
1885  * Prioritise DANE TLSA issuer certs over peer certs
1886
1887    *Viktor Dukhovni*
1888
1889  * Fixed random API for MacOS prior to 10.12
1890
1891    These MacOS versions don't support the CommonCrypto APIs
1892
1893    *Lenny Primak*
1894
1895 ### Changes between 1.1.1k and 1.1.1l [24 Aug 2021]
1896
1897  * Fixed an SM2 Decryption Buffer Overflow.
1898
1899    In order to decrypt SM2 encrypted data an application is expected to
1900    call the API function EVP_PKEY_decrypt(). Typically an application will
1901    call this function twice. The first time, on entry, the "out" parameter
1902    can be NULL and, on exit, the "outlen" parameter is populated with the
1903    buffer size required to hold the decrypted plaintext. The application
1904    can then allocate a sufficiently sized buffer and call EVP_PKEY_decrypt()
1905    again, but this time passing a non-NULL value for the "out" parameter.
1906
1907    A bug in the implementation of the SM2 decryption code means that the
1908    calculation of the buffer size required to hold the plaintext returned
1909    by the first call to EVP_PKEY_decrypt() can be smaller than the actual
1910    size required by the second call. This can lead to a buffer overflow
1911    when EVP_PKEY_decrypt() is called by the application a second time with
1912    a buffer that is too small.
1913
1914    A malicious attacker who is able present SM2 content for decryption to
1915    an application could cause attacker chosen data to overflow the buffer
1916    by up to a maximum of 62 bytes altering the contents of other data held
1917    after the buffer, possibly changing application behaviour or causing
1918    the application to crash. The location of the buffer is application
1919    dependent but is typically heap allocated.
1920    ([CVE-2021-3711])
1921
1922    *Matt Caswell*
1923
1924  * Fixed various read buffer overruns processing ASN.1 strings
1925
1926    ASN.1 strings are represented internally within OpenSSL as an ASN1_STRING
1927    structure which contains a buffer holding the string data and a field
1928    holding the buffer length. This contrasts with normal C strings which
1929    are repesented as a buffer for the string data which is terminated
1930    with a NUL (0) byte.
1931
1932    Although not a strict requirement, ASN.1 strings that are parsed using
1933    OpenSSL's own "d2i" functions (and other similar parsing functions) as
1934    well as any string whose value has been set with the ASN1_STRING_set()
1935    function will additionally NUL terminate the byte array in the
1936    ASN1_STRING structure.
1937
1938    However, it is possible for applications to directly construct valid
1939    ASN1_STRING structures which do not NUL terminate the byte array by
1940    directly setting the "data" and "length" fields in the ASN1_STRING
1941    array. This can also happen by using the ASN1_STRING_set0() function.
1942
1943    Numerous OpenSSL functions that print ASN.1 data have been found to
1944    assume that the ASN1_STRING byte array will be NUL terminated, even
1945    though this is not guaranteed for strings that have been directly
1946    constructed. Where an application requests an ASN.1 structure to be
1947    printed, and where that ASN.1 structure contains ASN1_STRINGs that have
1948    been directly constructed by the application without NUL terminating
1949    the "data" field, then a read buffer overrun can occur.
1950
1951    The same thing can also occur during name constraints processing
1952    of certificates (for example if a certificate has been directly
1953    constructed by the application instead of loading it via the OpenSSL
1954    parsing functions, and the certificate contains non NUL terminated
1955    ASN1_STRING structures). It can also occur in the X509_get1_email(),
1956    X509_REQ_get1_email() and X509_get1_ocsp() functions.
1957
1958    If a malicious actor can cause an application to directly construct an
1959    ASN1_STRING and then process it through one of the affected OpenSSL
1960    functions then this issue could be hit. This might result in a crash
1961    (causing a Denial of Service attack). It could also result in the
1962    disclosure of private memory contents (such as private keys, or
1963    sensitive plaintext).
1964    ([CVE-2021-3712])
1965
1966    *Matt Caswell*
1967
1968 ### Changes between 1.1.1j and 1.1.1k [25 Mar 2021]
1969
1970  * Fixed a problem with verifying a certificate chain when using the
1971    X509_V_FLAG_X509_STRICT flag. This flag enables additional security checks of
1972    the certificates present in a certificate chain. It is not set by default.
1973
1974    Starting from OpenSSL version 1.1.1h a check to disallow certificates in
1975    the chain that have explicitly encoded elliptic curve parameters was added
1976    as an additional strict check.
1977
1978    An error in the implementation of this check meant that the result of a
1979    previous check to confirm that certificates in the chain are valid CA
1980    certificates was overwritten. This effectively bypasses the check
1981    that non-CA certificates must not be able to issue other certificates.
1982
1983    If a "purpose" has been configured then there is a subsequent opportunity
1984    for checks that the certificate is a valid CA.  All of the named "purpose"
1985    values implemented in libcrypto perform this check.  Therefore, where
1986    a purpose is set the certificate chain will still be rejected even when the
1987    strict flag has been used. A purpose is set by default in libssl client and
1988    server certificate verification routines, but it can be overridden or
1989    removed by an application.
1990
1991    In order to be affected, an application must explicitly set the
1992    X509_V_FLAG_X509_STRICT verification flag and either not set a purpose
1993    for the certificate verification or, in the case of TLS client or server
1994    applications, override the default purpose.
1995    ([CVE-2021-3450])
1996
1997    *Tomáš Mráz*
1998
1999  * Fixed an issue where an OpenSSL TLS server may crash if sent a maliciously
2000    crafted renegotiation ClientHello message from a client. If a TLSv1.2
2001    renegotiation ClientHello omits the signature_algorithms extension (where it
2002    was present in the initial ClientHello), but includes a
2003    signature_algorithms_cert extension then a NULL pointer dereference will
2004    result, leading to a crash and a denial of service attack.
2005
2006    A server is only vulnerable if it has TLSv1.2 and renegotiation enabled
2007    (which is the default configuration). OpenSSL TLS clients are not impacted by
2008    this issue.
2009    ([CVE-2021-3449])
2010
2011    *Peter Kästle and Samuel Sapalski*
2012
2013 ### Changes between 1.1.1i and 1.1.1j [16 Feb 2021]
2014
2015  * Fixed the X509_issuer_and_serial_hash() function. It attempts to
2016    create a unique hash value based on the issuer and serial number data
2017    contained within an X509 certificate. However it was failing to correctly
2018    handle any errors that may occur while parsing the issuer field (which might
2019    occur if the issuer field is maliciously constructed). This may subsequently
2020    result in a NULL pointer deref and a crash leading to a potential denial of
2021    service attack.
2022    ([CVE-2021-23841])
2023
2024    *Matt Caswell*
2025
2026  * Fixed the RSA_padding_check_SSLv23() function and the RSA_SSLV23_PADDING
2027    padding mode to correctly check for rollback attacks. This is considered a
2028    bug in OpenSSL 1.1.1 because it does not support SSLv2. In 1.0.2 this is
2029    CVE-2021-23839.
2030
2031    *Matt Caswell*
2032
2033    Fixed the EVP_CipherUpdate, EVP_EncryptUpdate and EVP_DecryptUpdate
2034    functions. Previously they could overflow the output length argument in some
2035    cases where the input length is close to the maximum permissable length for
2036    an integer on the platform. In such cases the return value from the function
2037    call would be 1 (indicating success), but the output length value would be
2038    negative. This could cause applications to behave incorrectly or crash.
2039    ([CVE-2021-23840])
2040
2041    *Matt Caswell*
2042
2043  * Fixed SRP_Calc_client_key so that it runs in constant time. The previous
2044    implementation called BN_mod_exp without setting BN_FLG_CONSTTIME. This
2045    could be exploited in a side channel attack to recover the password. Since
2046    the attack is local host only this is outside of the current OpenSSL
2047    threat model and therefore no CVE is assigned.
2048
2049    Thanks to Mohammed Sabt and Daniel De Almeida Braga for reporting this
2050    issue.
2051
2052    *Matt Caswell*
2053
2054 ### Changes between 1.1.1h and 1.1.1i [8 Dec 2020]
2055
2056  * Fixed NULL pointer deref in the GENERAL_NAME_cmp function
2057    This function could crash if both GENERAL_NAMEs contain an EDIPARTYNAME.
2058     If an attacker can control both items being compared  then this could lead
2059     to a possible denial of service attack. OpenSSL itself uses the
2060     GENERAL_NAME_cmp function for two purposes:
2061     1) Comparing CRL distribution point names between an available CRL and a
2062        CRL distribution point embedded in an X509 certificate
2063     2) When verifying that a timestamp response token signer matches the
2064        timestamp authority name (exposed via the API functions
2065        TS_RESP_verify_response and TS_RESP_verify_token)
2066    ([CVE-2020-1971])
2067
2068    *Matt Caswell*
2069
2070 ### Changes between 1.1.1g and 1.1.1h [22 Sep 2020]
2071
2072  * Certificates with explicit curve parameters are now disallowed in
2073    verification chains if the X509_V_FLAG_X509_STRICT flag is used.
2074
2075    *Tomáš Mráz*
2076
2077  * The 'MinProtocol' and 'MaxProtocol' configuration commands now silently
2078    ignore TLS protocol version bounds when configuring DTLS-based contexts, and
2079    conversely, silently ignore DTLS protocol version bounds when configuring
2080    TLS-based contexts.  The commands can be repeated to set bounds of both
2081    types.  The same applies with the corresponding "min_protocol" and
2082    "max_protocol" command-line switches, in case some application uses both TLS
2083    and DTLS.
2084
2085    SSL_CTX instances that are created for a fixed protocol version (e.g.
2086    TLSv1_server_method()) also silently ignore version bounds.  Previously
2087    attempts to apply bounds to these protocol versions would result in an
2088    error.  Now only the "version-flexible" SSL_CTX instances are subject to
2089    limits in configuration files in command-line options.
2090
2091    *Viktor Dukhovni*
2092
2093  * Handshake now fails if Extended Master Secret extension is dropped
2094    on renegotiation.
2095
2096    *Tomáš Mráz*
2097
2098  * The Oracle Developer Studio compiler will start reporting deprecated APIs
2099
2100 ### Changes between 1.1.1f and 1.1.1g [21 Apr 2020]
2101
2102  * Fixed segmentation fault in SSL_check_chain()
2103    Server or client applications that call the SSL_check_chain() function
2104    during or after a TLS 1.3 handshake may crash due to a NULL pointer
2105    dereference as a result of incorrect handling of the
2106    "signature_algorithms_cert" TLS extension. The crash occurs if an invalid
2107    or unrecognised signature algorithm is received from the peer. This could
2108    be exploited by a malicious peer in a Denial of Service attack.
2109    ([CVE-2020-1967])
2110
2111    *Benjamin Kaduk*
2112
2113  * Added AES consttime code for no-asm configurations
2114    an optional constant time support for AES was added
2115    when building openssl for no-asm.
2116    Enable with: ./config no-asm -DOPENSSL_AES_CONST_TIME
2117    Disable with: ./config no-asm -DOPENSSL_NO_AES_CONST_TIME
2118    At this time this feature is by default disabled.
2119    It will be enabled by default in 3.0.
2120
2121    *Bernd Edlinger*
2122
2123 ### Changes between 1.1.1e and 1.1.1f [31 Mar 2020]
2124
2125  * Revert the change of EOF detection while reading in libssl to avoid
2126    regressions in applications depending on the current way of reporting
2127    the EOF. As the existing method is not fully accurate the change to
2128    reporting the EOF via SSL_ERROR_SSL is kept on the current development
2129    branch and will be present in the 3.0 release.
2130
2131    *Tomáš Mráz*
2132
2133  * Revised BN_generate_prime_ex to not avoid factors 3..17863 in p-1
2134    when primes for RSA keys are computed.
2135    Since we previously always generated primes == 2 (mod 3) for RSA keys,
2136    the 2-prime and 3-prime RSA modules were easy to distinguish, since
2137    N = p*q = 1 (mod 3), but N = p*q*r = 2 (mod 3). Therefore fingerprinting
2138    2-prime vs. 3-prime RSA keys was possible by computing N mod 3.
2139    This avoids possible fingerprinting of newly generated RSA modules.
2140
2141    *Bernd Edlinger*
2142
2143 ### Changes between 1.1.1d and 1.1.1e [17 Mar 2020]
2144
2145  * Properly detect EOF while reading in libssl. Previously if we hit an EOF
2146    while reading in libssl then we would report an error back to the
2147    application (SSL_ERROR_SYSCALL) but errno would be 0. We now add
2148    an error to the stack (which means we instead return SSL_ERROR_SSL) and
2149    therefore give a hint as to what went wrong.
2150
2151    *Matt Caswell*
2152
2153  * Check that ed25519 and ed448 are allowed by the security level. Previously
2154    signature algorithms not using an MD were not being checked that they were
2155    allowed by the security level.
2156
2157    *Kurt Roeckx*
2158
2159  * Fixed SSL_get_servername() behaviour. The behaviour of SSL_get_servername()
2160    was not quite right. The behaviour was not consistent between resumption
2161    and normal handshakes, and also not quite consistent with historical
2162    behaviour. The behaviour in various scenarios has been clarified and
2163    it has been updated to make it match historical behaviour as closely as
2164    possible.
2165
2166    *Matt Caswell*
2167
2168  * *[VMS only]* The header files that the VMS compilers include automatically,
2169    `__DECC_INCLUDE_PROLOGUE.H` and `__DECC_INCLUDE_EPILOGUE.H`, use pragmas
2170    that the C++ compiler doesn't understand.  This is a shortcoming in the
2171    compiler, but can be worked around with `__cplusplus` guards.
2172
2173    C++ applications that use OpenSSL libraries must be compiled using the
2174    qualifier `/NAMES=(AS_IS,SHORTENED)` to be able to use all the OpenSSL
2175    functions.  Otherwise, only functions with symbols of less than 31
2176    characters can be used, as the linker will not be able to successfully
2177    resolve symbols with longer names.
2178
2179    *Richard Levitte*
2180
2181  * Added a new method to gather entropy on VMS, based on SYS$GET_ENTROPY.
2182    The presence of this system service is determined at run-time.
2183
2184    *Richard Levitte*
2185
2186  * Print all values for a PKCS#12 attribute with 'openssl pkcs12', not just
2187    the first value.
2188
2189    *Jon Spillett*
2190
2191 ### Changes between 1.1.1c and 1.1.1d [10 Sep 2019]
2192
2193  * Fixed a fork protection issue. OpenSSL 1.1.1 introduced a rewritten random
2194    number generator (RNG). This was intended to include protection in the
2195    event of a fork() system call in order to ensure that the parent and child
2196    processes did not share the same RNG state. However this protection was not
2197    being used in the default case.
2198
2199    A partial mitigation for this issue is that the output from a high
2200    precision timer is mixed into the RNG state so the likelihood of a parent
2201    and child process sharing state is significantly reduced.
2202
2203    If an application already calls OPENSSL_init_crypto() explicitly using
2204    OPENSSL_INIT_ATFORK then this problem does not occur at all.
2205    ([CVE-2019-1549])
2206
2207    *Matthias St. Pierre*
2208
2209  * For built-in EC curves, ensure an EC_GROUP built from the curve name is
2210    used even when parsing explicit parameters, when loading a encoded key
2211    or calling `EC_GROUP_new_from_ecpkparameters()`/
2212    `EC_GROUP_new_from_ecparameters()`.
2213    This prevents bypass of security hardening and performance gains,
2214    especially for curves with specialized EC_METHODs.
2215    By default, if a key encoded with explicit parameters is loaded and later
2216    encoded, the output is still encoded with explicit parameters, even if
2217    internally a "named" EC_GROUP is used for computation.
2218
2219    *Nicola Tuveri*
2220
2221  * Compute ECC cofactors if not provided during EC_GROUP construction. Before
2222    this change, EC_GROUP_set_generator would accept order and/or cofactor as
2223    NULL. After this change, only the cofactor parameter can be NULL. It also
2224    does some minimal sanity checks on the passed order.
2225    ([CVE-2019-1547])
2226
2227    *Billy Bob Brumley*
2228
2229  * Fixed a padding oracle in PKCS7_dataDecode and CMS_decrypt_set1_pkey.
2230    An attack is simple, if the first CMS_recipientInfo is valid but the
2231    second CMS_recipientInfo is chosen ciphertext. If the second
2232    recipientInfo decodes to PKCS #1 v1.5 form plaintext, the correct
2233    encryption key will be replaced by garbage, and the message cannot be
2234    decoded, but if the RSA decryption fails, the correct encryption key is
2235    used and the recipient will not notice the attack.
2236    As a work around for this potential attack the length of the decrypted
2237    key must be equal to the cipher default key length, in case the
2238    certifiate is not given and all recipientInfo are tried out.
2239    The old behaviour can be re-enabled in the CMS code by setting the
2240    CMS_DEBUG_DECRYPT flag.
2241    ([CVE-2019-1563])
2242
2243    *Bernd Edlinger*
2244
2245  * Early start up entropy quality from the DEVRANDOM seed source has been
2246    improved for older Linux systems.  The RAND subsystem will wait for
2247    /dev/random to be producing output before seeding from /dev/urandom.
2248    The seeded state is stored for future library initialisations using
2249    a system global shared memory segment.  The shared memory identifier
2250    can be configured by defining OPENSSL_RAND_SEED_DEVRANDOM_SHM_ID to
2251    the desired value.  The default identifier is 114.
2252
2253    *Paul Dale*
2254
2255  * Correct the extended master secret constant on EBCDIC systems. Without this
2256    fix TLS connections between an EBCDIC system and a non-EBCDIC system that
2257    negotiate EMS will fail. Unfortunately this also means that TLS connections
2258    between EBCDIC systems with this fix, and EBCDIC systems without this
2259    fix will fail if they negotiate EMS.
2260
2261    *Matt Caswell*
2262
2263  * Use Windows installation paths in the mingw builds
2264
2265    Mingw isn't a POSIX environment per se, which means that Windows
2266    paths should be used for installation.
2267    ([CVE-2019-1552])
2268
2269    *Richard Levitte*
2270
2271  * Changed DH_check to accept parameters with order q and 2q subgroups.
2272    With order 2q subgroups the bit 0 of the private key is not secret
2273    but DH_generate_key works around that by clearing bit 0 of the
2274    private key for those. This avoids leaking bit 0 of the private key.
2275
2276    *Bernd Edlinger*
2277
2278  * Significantly reduce secure memory usage by the randomness pools.
2279
2280    *Paul Dale*
2281
2282  * Revert the DEVRANDOM_WAIT feature for Linux systems
2283
2284    The DEVRANDOM_WAIT feature added a select() call to wait for the
2285    /dev/random device to become readable before reading from the
2286    /dev/urandom device.
2287
2288    It turned out that this change had negative side effects on
2289    performance which were not acceptable. After some discussion it
2290    was decided to revert this feature and leave it up to the OS
2291    resp. the platform maintainer to ensure a proper initialization
2292    during early boot time.
2293
2294    *Matthias St. Pierre*
2295
2296 ### Changes between 1.1.1b and 1.1.1c [28 May 2019]
2297
2298  * Add build tests for C++.  These are generated files that only do one
2299    thing, to include one public OpenSSL head file each.  This tests that
2300    the public header files can be usefully included in a C++ application.
2301
2302    This test isn't enabled by default.  It can be enabled with the option
2303    'enable-buildtest-c++'.
2304
2305    *Richard Levitte*
2306
2307  * Enable SHA3 pre-hashing for ECDSA and DSA.
2308
2309    *Patrick Steuer*
2310
2311  * Change the default RSA, DSA and DH size to 2048 bit instead of 1024.
2312    This changes the size when using the `genpkey` command when no size is given.
2313    It fixes an omission in earlier changes that changed all RSA, DSA and DH
2314    generation commands to use 2048 bits by default.
2315
2316    *Kurt Roeckx*
2317
2318  * Reorganize the manual pages to consistently have RETURN VALUES,
2319    EXAMPLES, SEE ALSO and HISTORY come in that order, and adjust
2320    util/fix-doc-nits accordingly.
2321
2322    *Paul Yang, Joshua Lock*
2323
2324  * Add the missing accessor EVP_PKEY_get0_engine()
2325
2326    *Matt Caswell*
2327
2328  * Have commands like `s_client` and `s_server` output the signature scheme
2329    along with other cipher suite parameters when debugging.
2330
2331    *Lorinczy Zsigmond*
2332
2333  * Make OPENSSL_config() error agnostic again.
2334
2335    *Richard Levitte*
2336
2337  * Do the error handling in RSA decryption constant time.
2338
2339    *Bernd Edlinger*
2340
2341  * Prevent over long nonces in ChaCha20-Poly1305.
2342
2343    ChaCha20-Poly1305 is an AEAD cipher, and requires a unique nonce input
2344    for every encryption operation. RFC 7539 specifies that the nonce value
2345    (IV) should be 96 bits (12 bytes). OpenSSL allows a variable nonce length
2346    and front pads the nonce with 0 bytes if it is less than 12
2347    bytes. However it also incorrectly allows a nonce to be set of up to 16
2348    bytes. In this case only the last 12 bytes are significant and any
2349    additional leading bytes are ignored.
2350
2351    It is a requirement of using this cipher that nonce values are
2352    unique. Messages encrypted using a reused nonce value are susceptible to
2353    serious confidentiality and integrity attacks. If an application changes
2354    the default nonce length to be longer than 12 bytes and then makes a
2355    change to the leading bytes of the nonce expecting the new value to be a
2356    new unique nonce then such an application could inadvertently encrypt
2357    messages with a reused nonce.
2358
2359    Additionally the ignored bytes in a long nonce are not covered by the
2360    integrity guarantee of this cipher. Any application that relies on the
2361    integrity of these ignored leading bytes of a long nonce may be further
2362    affected. Any OpenSSL internal use of this cipher, including in SSL/TLS,
2363    is safe because no such use sets such a long nonce value. However user
2364    applications that use this cipher directly and set a non-default nonce
2365    length to be longer than 12 bytes may be vulnerable.
2366
2367    This issue was reported to OpenSSL on 16th of March 2019 by Joran Dirk
2368    Greef of Ronomon.
2369    ([CVE-2019-1543])
2370
2371    *Matt Caswell*
2372
2373  * Add DEVRANDOM_WAIT feature for Linux systems
2374
2375    On older Linux systems where the getrandom() system call is not available,
2376    OpenSSL normally uses the /dev/urandom device for seeding its CSPRNG.
2377    Contrary to getrandom(), the /dev/urandom device will not block during
2378    early boot when the kernel CSPRNG has not been seeded yet.
2379
2380    To mitigate this known weakness, use select() to wait for /dev/random to
2381    become readable before reading from /dev/urandom.
2382
2383  * Ensure that SM2 only uses SM3 as digest algorithm
2384
2385    *Paul Yang*
2386
2387 ### Changes between 1.1.1a and 1.1.1b [26 Feb 2019]
2388
2389  * Change the info callback signals for the start and end of a post-handshake
2390    message exchange in TLSv1.3. In 1.1.1/1.1.1a we used SSL_CB_HANDSHAKE_START
2391    and SSL_CB_HANDSHAKE_DONE. Experience has shown that many applications get
2392    confused by this and assume that a TLSv1.2 renegotiation has started. This
2393    can break KeyUpdate handling. Instead we no longer signal the start and end
2394    of a post handshake message exchange (although the messages themselves are
2395    still signalled). This could break some applications that were expecting
2396    the old signals. However without this KeyUpdate is not usable for many
2397    applications.
2398
2399    *Matt Caswell*
2400
2401 ### Changes between 1.1.1 and 1.1.1a [20 Nov 2018]
2402
2403  * Timing vulnerability in DSA signature generation
2404
2405    The OpenSSL DSA signature algorithm has been shown to be vulnerable to a
2406    timing side channel attack. An attacker could use variations in the signing
2407    algorithm to recover the private key.
2408
2409    This issue was reported to OpenSSL on 16th October 2018 by Samuel Weiser.
2410    ([CVE-2018-0734])
2411
2412    *Paul Dale*
2413
2414  * Timing vulnerability in ECDSA signature generation
2415
2416    The OpenSSL ECDSA signature algorithm has been shown to be vulnerable to a
2417    timing side channel attack. An attacker could use variations in the signing
2418    algorithm to recover the private key.
2419
2420    This issue was reported to OpenSSL on 25th October 2018 by Samuel Weiser.
2421    ([CVE-2018-0735])
2422
2423    *Paul Dale*
2424
2425  * Fixed the issue that RAND_add()/RAND_seed() silently discards random input
2426    if its length exceeds 4096 bytes. The limit has been raised to a buffer size
2427    of two gigabytes and the error handling improved.
2428
2429    This issue was reported to OpenSSL by Dr. Falko Strenzke. It has been
2430    categorized as a normal bug, not a security issue, because the DRBG reseeds
2431    automatically and is fully functional even without additional randomness
2432    provided by the application.
2433
2434 ### Changes between 1.1.0i and 1.1.1 [11 Sep 2018]
2435
2436  * Add a new ClientHello callback. Provides a callback interface that gives
2437    the application the ability to adjust the nascent SSL object at the
2438    earliest stage of ClientHello processing, immediately after extensions have
2439    been collected but before they have been processed. In particular, this
2440    callback can adjust the supported TLS versions in response to the contents
2441    of the ClientHello
2442
2443    *Benjamin Kaduk*
2444
2445  * Add SM2 base algorithm support.
2446
2447    *Jack Lloyd*
2448
2449  * s390x assembly pack: add (improved) hardware-support for the following
2450    cryptographic primitives: sha3, shake, aes-gcm, aes-ccm, aes-ctr, aes-ofb,
2451    aes-cfb/cfb8, aes-ecb.
2452
2453    *Patrick Steuer*
2454
2455  * Make EVP_PKEY_asn1_new() a bit stricter about its input.  A NULL pem_str
2456    parameter is no longer accepted, as it leads to a corrupt table.  NULL
2457    pem_str is reserved for alias entries only.
2458
2459    *Richard Levitte*
2460
2461  * Use the new ec_scalar_mul_ladder scaffold to implement a specialized ladder
2462    step for prime curves. The new implementation is based on formulae from
2463    differential addition-and-doubling in homogeneous projective coordinates
2464    from Izu-Takagi "A fast parallel elliptic curve multiplication resistant
2465    against side channel attacks" and Brier-Joye "Weierstrass Elliptic Curves
2466    and Side-Channel Attacks" Eq. (8) for y-coordinate recovery, modified
2467    to work in projective coordinates.
2468
2469    *Billy Bob Brumley, Nicola Tuveri*
2470
2471  * Change generating and checking of primes so that the error rate of not
2472    being prime depends on the intended use based on the size of the input.
2473    For larger primes this will result in more rounds of Miller-Rabin.
2474    The maximal error rate for primes with more than 1080 bits is lowered
2475    to 2^-128.
2476
2477    *Kurt Roeckx, Annie Yousar*
2478
2479  * Increase the number of Miller-Rabin rounds for DSA key generating to 64.
2480
2481    *Kurt Roeckx*
2482
2483  * The 'tsget' script is renamed to 'tsget.pl', to avoid confusion when
2484    moving between systems, and to avoid confusion when a Windows build is
2485    done with mingw vs with MSVC.  For POSIX installs, there's still a
2486    symlink or copy named 'tsget' to avoid that confusion as well.
2487
2488    *Richard Levitte*
2489
2490  * Revert blinding in ECDSA sign and instead make problematic addition
2491    length-invariant. Switch even to fixed-length Montgomery multiplication.
2492
2493    *Andy Polyakov*
2494
2495  * Use the new ec_scalar_mul_ladder scaffold to implement a specialized ladder
2496    step for binary curves. The new implementation is based on formulae from
2497    differential addition-and-doubling in mixed Lopez-Dahab projective
2498    coordinates, modified to independently blind the operands.
2499
2500    *Billy Bob Brumley, Sohaib ul Hassan, Nicola Tuveri*
2501
2502  * Add a scaffold to optionally enhance the Montgomery ladder implementation
2503    for `ec_scalar_mul_ladder` (formerly `ec_mul_consttime`) allowing
2504    EC_METHODs to implement their own specialized "ladder step", to take
2505    advantage of more favorable coordinate systems or more efficient
2506    differential addition-and-doubling algorithms.
2507
2508    *Billy Bob Brumley, Sohaib ul Hassan, Nicola Tuveri*
2509
2510  * Modified the random device based seed sources to keep the relevant
2511    file descriptors open rather than reopening them on each access.
2512    This allows such sources to operate in a chroot() jail without
2513    the associated device nodes being available. This behaviour can be
2514    controlled using RAND_keep_random_devices_open().
2515
2516    *Paul Dale*
2517
2518  * Numerous side-channel attack mitigations have been applied. This may have
2519    performance impacts for some algorithms for the benefit of improved
2520    security. Specific changes are noted in this change log by their respective
2521    authors.
2522
2523    *Matt Caswell*
2524
2525  * AIX shared library support overhaul. Switch to AIX "natural" way of
2526    handling shared libraries, which means collecting shared objects of
2527    different versions and bitnesses in one common archive. This allows to
2528    mitigate conflict between 1.0 and 1.1 side-by-side installations. It
2529    doesn't affect the way 3rd party applications are linked, only how
2530    multi-version installation is managed.
2531
2532    *Andy Polyakov*
2533
2534  * Make ec_group_do_inverse_ord() more robust and available to other
2535    EC cryptosystems, so that irrespective of BN_FLG_CONSTTIME, SCA
2536    mitigations are applied to the fallback BN_mod_inverse().
2537    When using this function rather than BN_mod_inverse() directly, new
2538    EC cryptosystem implementations are then safer-by-default.
2539
2540    *Billy Bob Brumley*
2541
2542  * Add coordinate blinding for EC_POINT and implement projective
2543    coordinate blinding for generic prime curves as a countermeasure to
2544    chosen point SCA attacks.
2545
2546    *Sohaib ul Hassan, Nicola Tuveri, Billy Bob Brumley*
2547
2548  * Add blinding to ECDSA and DSA signatures to protect against side channel
2549    attacks discovered by Keegan Ryan (NCC Group).
2550
2551    *Matt Caswell*
2552
2553  * Enforce checking in the `pkeyutl` command to ensure that the input
2554    length does not exceed the maximum supported digest length when performing
2555    a sign, verify or verifyrecover operation.
2556
2557    *Matt Caswell*
2558
2559  * SSL_MODE_AUTO_RETRY is enabled by default. Applications that use blocking
2560    I/O in combination with something like select() or poll() will hang. This
2561    can be turned off again using SSL_CTX_clear_mode().
2562    Many applications do not properly handle non-application data records, and
2563    TLS 1.3 sends more of such records. Setting SSL_MODE_AUTO_RETRY works
2564    around the problems in those applications, but can also break some.
2565    It's recommended to read the manpages about SSL_read(), SSL_write(),
2566    SSL_get_error(), SSL_shutdown(), SSL_CTX_set_mode() and
2567    SSL_CTX_set_read_ahead() again.
2568
2569    *Kurt Roeckx*
2570
2571  * When unlocking a pass phrase protected PEM file or PKCS#8 container, we
2572    now allow empty (zero character) pass phrases.
2573
2574    *Richard Levitte*
2575
2576  * Apply blinding to binary field modular inversion and remove patent
2577    pending (OPENSSL_SUN_GF2M_DIV) BN_GF2m_mod_div implementation.
2578
2579    *Billy Bob Brumley*
2580
2581  * Deprecate ec2_mult.c and unify scalar multiplication code paths for
2582    binary and prime elliptic curves.
2583
2584    *Billy Bob Brumley*
2585
2586  * Remove ECDSA nonce padding: EC_POINT_mul is now responsible for
2587    constant time fixed point multiplication.
2588
2589    *Billy Bob Brumley*
2590
2591  * Revise elliptic curve scalar multiplication with timing attack
2592    defenses: ec_wNAF_mul redirects to a constant time implementation
2593    when computing fixed point and variable point multiplication (which
2594    in OpenSSL are mostly used with secret scalars in keygen, sign,
2595    ECDH derive operations).
2596    *Billy Bob Brumley, Nicola Tuveri, Cesar Pereida García,
2597     Sohaib ul Hassan*
2598
2599  * Updated CONTRIBUTING
2600
2601    *Rich Salz*
2602
2603  * Updated DRBG / RAND to request nonce and additional low entropy
2604    randomness from the system.
2605
2606    *Matthias St. Pierre*
2607
2608  * Updated 'openssl rehash' to use OpenSSL consistent default.
2609
2610    *Richard Levitte*
2611
2612  * Moved the load of the ssl_conf module to libcrypto, which helps
2613    loading engines that libssl uses before libssl is initialised.
2614
2615    *Matt Caswell*
2616
2617  * Added EVP_PKEY_sign() and EVP_PKEY_verify() for EdDSA
2618
2619    *Matt Caswell*
2620
2621  * Fixed X509_NAME_ENTRY_set to get multi-valued RDNs right in all cases.
2622
2623    *Ingo Schwarze, Rich Salz*
2624
2625  * Added output of accepting IP address and port for 'openssl s_server'
2626
2627    *Richard Levitte*
2628
2629  * Added a new API for TLSv1.3 ciphersuites:
2630       SSL_CTX_set_ciphersuites()
2631       SSL_set_ciphersuites()
2632
2633    *Matt Caswell*
2634
2635  * Memory allocation failures consistently add an error to the error
2636    stack.
2637
2638    *Rich Salz*
2639
2640  * Don't use OPENSSL_ENGINES and OPENSSL_CONF environment values
2641    in libcrypto when run as setuid/setgid.
2642
2643    *Bernd Edlinger*
2644
2645  * Load any config file by default when libssl is used.
2646
2647    *Matt Caswell*
2648
2649  * Added new public header file <openssl/rand_drbg.h> and documentation
2650    for the RAND_DRBG API. See manual page RAND_DRBG(7) for an overview.
2651
2652    *Matthias St. Pierre*
2653
2654  * QNX support removed (cannot find contributors to get their approval
2655    for the license change).
2656
2657    *Rich Salz*
2658
2659  * TLSv1.3 replay protection for early data has been implemented. See the
2660    SSL_read_early_data() man page for further details.
2661
2662    *Matt Caswell*
2663
2664  * Separated TLSv1.3 ciphersuite configuration out from TLSv1.2 ciphersuite
2665    configuration. TLSv1.3 ciphersuites are not compatible with TLSv1.2 and
2666    below. Similarly TLSv1.2 ciphersuites are not compatible with TLSv1.3.
2667    In order to avoid issues where legacy TLSv1.2 ciphersuite configuration
2668    would otherwise inadvertently disable all TLSv1.3 ciphersuites the
2669    configuration has been separated out. See the ciphers man page or the
2670    SSL_CTX_set_ciphersuites() man page for more information.
2671
2672    *Matt Caswell*
2673
2674  * On POSIX (BSD, Linux, ...) systems the ocsp(1) command running
2675    in responder mode now supports the new "-multi" option, which
2676    spawns the specified number of child processes to handle OCSP
2677    requests.  The "-timeout" option now also limits the OCSP
2678    responder's patience to wait to receive the full client request
2679    on a newly accepted connection. Child processes are respawned
2680    as needed, and the CA index file is automatically reloaded
2681    when changed.  This makes it possible to run the "ocsp" responder
2682    as a long-running service, making the OpenSSL CA somewhat more
2683    feature-complete.  In this mode, most diagnostic messages logged
2684    after entering the event loop are logged via syslog(3) rather than
2685    written to stderr.
2686
2687    *Viktor Dukhovni*
2688
2689  * Added support for X448 and Ed448. Heavily based on original work by
2690    Mike Hamburg.
2691
2692    *Matt Caswell*
2693
2694  * Extend OSSL_STORE with capabilities to search and to narrow the set of
2695    objects loaded.  This adds the functions OSSL_STORE_expect() and
2696    OSSL_STORE_find() as well as needed tools to construct searches and
2697    get the search data out of them.
2698
2699    *Richard Levitte*
2700
2701  * Support for TLSv1.3 added. Note that users upgrading from an earlier
2702    version of OpenSSL should review their configuration settings to ensure
2703    that they are still appropriate for TLSv1.3. For further information see:
2704    <https://wiki.openssl.org/index.php/TLS1.3>
2705
2706    *Matt Caswell*
2707
2708  * Grand redesign of the OpenSSL random generator
2709
2710    The default RAND method now utilizes an AES-CTR DRBG according to
2711    NIST standard SP 800-90Ar1. The new random generator is essentially
2712    a port of the default random generator from the OpenSSL FIPS 2.0
2713    object module. It is a hybrid deterministic random bit generator
2714    using an AES-CTR bit stream and which seeds and reseeds itself
2715    automatically using trusted system entropy sources.
2716
2717    Some of its new features are:
2718     - Support for multiple DRBG instances with seed chaining.
2719     - The default RAND method makes use of a DRBG.
2720     - There is a public and private DRBG instance.
2721     - The DRBG instances are fork-safe.
2722     - Keep all global DRBG instances on the secure heap if it is enabled.
2723     - The public and private DRBG instance are per thread for lock free
2724       operation
2725
2726    *Paul Dale, Benjamin Kaduk, Kurt Roeckx, Rich Salz, Matthias St. Pierre*
2727
2728  * Changed Configure so it only says what it does and doesn't dump
2729    so much data.  Instead, ./configdata.pm should be used as a script
2730    to display all sorts of configuration data.
2731
2732    *Richard Levitte*
2733
2734  * Added processing of "make variables" to Configure.
2735
2736    *Richard Levitte*
2737
2738  * Added SHA512/224 and SHA512/256 algorithm support.
2739
2740    *Paul Dale*
2741
2742  * The last traces of Netware support, first removed in 1.1.0, have
2743    now been removed.
2744
2745    *Rich Salz*
2746
2747  * Get rid of Makefile.shared, and in the process, make the processing
2748    of certain files (rc.obj, or the .def/.map/.opt files produced from
2749    the ordinal files) more visible and hopefully easier to trace and
2750    debug (or make silent).
2751
2752    *Richard Levitte*
2753
2754  * Make it possible to have environment variable assignments as
2755    arguments to config / Configure.
2756
2757    *Richard Levitte*
2758
2759  * Add multi-prime RSA (RFC 8017) support.
2760
2761    *Paul Yang*
2762
2763  * Add SM3 implemented according to GB/T 32905-2016
2764    *Jack Lloyd <jack.lloyd@ribose.com>,*
2765    *Ronald Tse <ronald.tse@ribose.com>,*
2766    *Erick Borsboom <erick.borsboom@ribose.com>*
2767
2768  * Add 'Maximum Fragment Length' TLS extension negotiation and support
2769    as documented in RFC6066.
2770    Based on a patch from Tomasz Moń
2771
2772    *Filipe Raimundo da Silva*
2773
2774  * Add SM4 implemented according to GB/T 32907-2016.
2775    *Jack Lloyd <jack.lloyd@ribose.com>,*
2776    *Ronald Tse <ronald.tse@ribose.com>,*
2777    *Erick Borsboom <erick.borsboom@ribose.com>*
2778
2779  * Reimplement -newreq-nodes and ERR_error_string_n; the
2780    original author does not agree with the license change.
2781
2782    *Rich Salz*
2783
2784  * Add ARIA AEAD TLS support.
2785
2786    *Jon Spillett*
2787
2788  * Some macro definitions to support VS6 have been removed.  Visual
2789    Studio 6 has not worked since 1.1.0
2790
2791    *Rich Salz*
2792
2793  * Add ERR_clear_last_mark(), to allow callers to clear the last mark
2794    without clearing the errors.
2795
2796    *Richard Levitte*
2797
2798  * Add "atfork" functions.  If building on a system that without
2799    pthreads, see doc/man3/OPENSSL_fork_prepare.pod for application
2800    requirements.  The RAND facility now uses/requires this.
2801
2802    *Rich Salz*
2803
2804  * Add SHA3.
2805
2806    *Andy Polyakov*
2807
2808  * The UI API becomes a permanent and integral part of libcrypto, i.e.
2809    not possible to disable entirely.  However, it's still possible to
2810    disable the console reading UI method, UI_OpenSSL() (use UI_null()
2811    as a fallback).
2812
2813    To disable, configure with 'no-ui-console'.  'no-ui' is still
2814    possible to use as an alias.  Check at compile time with the
2815    macro OPENSSL_NO_UI_CONSOLE.  The macro OPENSSL_NO_UI is still
2816    possible to check and is an alias for OPENSSL_NO_UI_CONSOLE.
2817
2818    *Richard Levitte*
2819
2820  * Add a STORE module, which implements a uniform and URI based reader of
2821    stores that can contain keys, certificates, CRLs and numerous other
2822    objects.  The main API is loosely based on a few stdio functions,
2823    and includes OSSL_STORE_open, OSSL_STORE_load, OSSL_STORE_eof,
2824    OSSL_STORE_error and OSSL_STORE_close.
2825    The implementation uses backends called "loaders" to implement arbitrary
2826    URI schemes.  There is one built in "loader" for the 'file' scheme.
2827
2828    *Richard Levitte*
2829
2830  * Add devcrypto engine.  This has been implemented against cryptodev-linux,
2831    then adjusted to work on FreeBSD 8.4 as well.
2832    Enable by configuring with 'enable-devcryptoeng'.  This is done by default
2833    on BSD implementations, as cryptodev.h is assumed to exist on all of them.
2834
2835    *Richard Levitte*
2836
2837  * Module names can prefixed with OSSL_ or OPENSSL_.  This affects
2838    util/mkerr.pl, which is adapted to allow those prefixes, leading to
2839    error code calls like this:
2840
2841            OSSL_FOOerr(OSSL_FOO_F_SOMETHING, OSSL_FOO_R_WHATEVER);
2842
2843    With this change, we claim the namespaces OSSL and OPENSSL in a manner
2844    that can be encoded in C.  For the foreseeable future, this will only
2845    affect new modules.
2846
2847    *Richard Levitte and Tim Hudson*
2848
2849  * Removed BSD cryptodev engine.
2850
2851    *Rich Salz*
2852
2853  * Add a build target 'build_all_generated', to build all generated files
2854    and only that.  This can be used to prepare everything that requires
2855    things like perl for a system that lacks perl and then move everything
2856    to that system and do the rest of the build there.
2857
2858    *Richard Levitte*
2859
2860  * In the UI interface, make it possible to duplicate the user data.  This
2861    can be used by engines that need to retain the data for a longer time
2862    than just the call where this user data is passed.
2863
2864    *Richard Levitte*
2865
2866  * Ignore the '-named_curve auto' value for compatibility of applications
2867    with OpenSSL 1.0.2.
2868
2869    *Tomáš Mráz <tmraz@fedoraproject.org>*
2870
2871  * Fragmented SSL/TLS alerts are no longer accepted. An alert message is 2
2872    bytes long. In theory it is permissible in SSLv3 - TLSv1.2 to fragment such
2873    alerts across multiple records (some of which could be empty). In practice
2874    it make no sense to send an empty alert record, or to fragment one. TLSv1.3
2875    prohibits this altogether and other libraries (BoringSSL, NSS) do not
2876    support this at all. Supporting it adds significant complexity to the
2877    record layer, and its removal is unlikely to cause interoperability
2878    issues.
2879
2880    *Matt Caswell*
2881
2882  * Add the ASN.1 types INT32, UINT32, INT64, UINT64 and variants prefixed
2883    with Z.  These are meant to replace LONG and ZLONG and to be size safe.
2884    The use of LONG and ZLONG is discouraged and scheduled for deprecation
2885    in OpenSSL 1.2.0.
2886
2887    *Richard Levitte*
2888
2889  * Add the 'z' and 'j' modifiers to BIO_printf() et al formatting string,
2890    'z' is to be used for [s]size_t, and 'j' - with [u]int64_t.
2891
2892    *Richard Levitte, Andy Polyakov*
2893
2894  * Add EC_KEY_get0_engine(), which does for EC_KEY what RSA_get0_engine()
2895    does for RSA, etc.
2896
2897    *Richard Levitte*
2898
2899  * Have 'config' recognise 64-bit mingw and choose 'mingw64' as the target
2900    platform rather than 'mingw'.
2901
2902    *Richard Levitte*
2903
2904  * The functions X509_STORE_add_cert and X509_STORE_add_crl return
2905    success if they are asked to add an object which already exists
2906    in the store. This change cascades to other functions which load
2907    certificates and CRLs.
2908
2909    *Paul Dale*
2910
2911  * x86_64 assembly pack: annotate code with DWARF CFI directives to
2912    facilitate stack unwinding even from assembly subroutines.
2913
2914    *Andy Polyakov*
2915
2916  * Remove VAX C specific definitions of OPENSSL_EXPORT, OPENSSL_EXTERN.
2917    Also remove OPENSSL_GLOBAL entirely, as it became a no-op.
2918
2919    *Richard Levitte*
2920
2921  * Remove the VMS-specific reimplementation of gmtime from crypto/o_times.c.
2922    VMS C's RTL has a fully up to date gmtime() and gmtime_r() since V7.1,
2923    which is the minimum version we support.
2924
2925    *Richard Levitte*
2926
2927  * Certificate time validation (X509_cmp_time) enforces stricter
2928    compliance with RFC 5280. Fractional seconds and timezone offsets
2929    are no longer allowed.
2930
2931    *Emilia Käsper*
2932
2933  * Add support for ARIA
2934
2935    *Paul Dale*
2936
2937  * s_client will now send the Server Name Indication (SNI) extension by
2938    default unless the new "-noservername" option is used. The server name is
2939    based on the host provided to the "-connect" option unless overridden by
2940    using "-servername".
2941
2942    *Matt Caswell*
2943
2944  * Add support for SipHash
2945
2946    *Todd Short*
2947
2948  * OpenSSL now fails if it receives an unrecognised record type in TLS1.0
2949    or TLS1.1. Previously this only happened in SSLv3 and TLS1.2. This is to
2950    prevent issues where no progress is being made and the peer continually
2951    sends unrecognised record types, using up resources processing them.
2952
2953    *Matt Caswell*
2954
2955  * 'openssl passwd' can now produce SHA256 and SHA512 based output,
2956    using the algorithm defined in
2957    <https://www.akkadia.org/drepper/SHA-crypt.txt>
2958
2959    *Richard Levitte*
2960
2961  * Heartbeat support has been removed; the ABI is changed for now.
2962
2963    *Richard Levitte, Rich Salz*
2964
2965  * Support for SSL_OP_NO_ENCRYPT_THEN_MAC in SSL_CONF_cmd.
2966
2967    *Emilia Käsper*
2968
2969  * The RSA "null" method, which was partially supported to avoid patent
2970    issues, has been replaced to always returns NULL.
2971
2972    *Rich Salz*
2973
2974 OpenSSL 1.1.0
2975 -------------
2976
2977 ### Changes between 1.1.0k and 1.1.0l [10 Sep 2019]
2978
2979  * For built-in EC curves, ensure an EC_GROUP built from the curve name is
2980    used even when parsing explicit parameters, when loading a encoded key
2981    or calling `EC_GROUP_new_from_ecpkparameters()`/
2982    `EC_GROUP_new_from_ecparameters()`.
2983    This prevents bypass of security hardening and performance gains,
2984    especially for curves with specialized EC_METHODs.
2985    By default, if a key encoded with explicit parameters is loaded and later
2986    encoded, the output is still encoded with explicit parameters, even if
2987    internally a "named" EC_GROUP is used for computation.
2988
2989    *Nicola Tuveri*
2990
2991  * Compute ECC cofactors if not provided during EC_GROUP construction. Before
2992    this change, EC_GROUP_set_generator would accept order and/or cofactor as
2993    NULL. After this change, only the cofactor parameter can be NULL. It also
2994    does some minimal sanity checks on the passed order.
2995    ([CVE-2019-1547])
2996
2997    *Billy Bob Brumley*
2998
2999  * Fixed a padding oracle in PKCS7_dataDecode and CMS_decrypt_set1_pkey.
3000    An attack is simple, if the first CMS_recipientInfo is valid but the
3001    second CMS_recipientInfo is chosen ciphertext. If the second
3002    recipientInfo decodes to PKCS #1 v1.5 form plaintext, the correct
3003    encryption key will be replaced by garbage, and the message cannot be
3004    decoded, but if the RSA decryption fails, the correct encryption key is
3005    used and the recipient will not notice the attack.
3006    As a work around for this potential attack the length of the decrypted
3007    key must be equal to the cipher default key length, in case the
3008    certifiate is not given and all recipientInfo are tried out.
3009    The old behaviour can be re-enabled in the CMS code by setting the
3010    CMS_DEBUG_DECRYPT flag.
3011    ([CVE-2019-1563])
3012
3013    *Bernd Edlinger*
3014
3015  * Use Windows installation paths in the mingw builds
3016
3017    Mingw isn't a POSIX environment per se, which means that Windows
3018    paths should be used for installation.
3019    ([CVE-2019-1552])
3020
3021    *Richard Levitte*
3022
3023 ### Changes between 1.1.0j and 1.1.0k [28 May 2019]
3024
3025  * Change the default RSA, DSA and DH size to 2048 bit instead of 1024.
3026    This changes the size when using the `genpkey` command when no size is given.
3027    It fixes an omission in earlier changes that changed all RSA, DSA and DH
3028    generation commands to use 2048 bits by default.
3029
3030    *Kurt Roeckx*
3031
3032  * Prevent over long nonces in ChaCha20-Poly1305.
3033
3034    ChaCha20-Poly1305 is an AEAD cipher, and requires a unique nonce input
3035    for every encryption operation. RFC 7539 specifies that the nonce value
3036    (IV) should be 96 bits (12 bytes). OpenSSL allows a variable nonce length
3037    and front pads the nonce with 0 bytes if it is less than 12
3038    bytes. However it also incorrectly allows a nonce to be set of up to 16
3039    bytes. In this case only the last 12 bytes are significant and any
3040    additional leading bytes are ignored.
3041
3042    It is a requirement of using this cipher that nonce values are
3043    unique. Messages encrypted using a reused nonce value are susceptible to
3044    serious confidentiality and integrity attacks. If an application changes
3045    the default nonce length to be longer than 12 bytes and then makes a
3046    change to the leading bytes of the nonce expecting the new value to be a
3047    new unique nonce then such an application could inadvertently encrypt
3048    messages with a reused nonce.
3049
3050    Additionally the ignored bytes in a long nonce are not covered by the
3051    integrity guarantee of this cipher. Any application that relies on the
3052    integrity of these ignored leading bytes of a long nonce may be further
3053    affected. Any OpenSSL internal use of this cipher, including in SSL/TLS,
3054    is safe because no such use sets such a long nonce value. However user
3055    applications that use this cipher directly and set a non-default nonce
3056    length to be longer than 12 bytes may be vulnerable.
3057
3058    This issue was reported to OpenSSL on 16th of March 2019 by Joran Dirk
3059    Greef of Ronomon.
3060    ([CVE-2019-1543])
3061
3062    *Matt Caswell*
3063
3064  * Added SCA hardening for modular field inversion in EC_GROUP through
3065    a new dedicated field_inv() pointer in EC_METHOD.
3066    This also addresses a leakage affecting conversions from projective
3067    to affine coordinates.
3068
3069    *Billy Bob Brumley, Nicola Tuveri*
3070
3071  * Fix a use after free bug in d2i_X509_PUBKEY when overwriting a
3072    re-used X509_PUBKEY object if the second PUBKEY is malformed.
3073
3074    *Bernd Edlinger*
3075
3076  * Move strictness check from EVP_PKEY_asn1_new() to EVP_PKEY_asn1_add0().
3077
3078    *Richard Levitte*
3079
3080  * Remove the 'dist' target and add a tarball building script.  The
3081    'dist' target has fallen out of use, and it shouldn't be
3082    necessary to configure just to create a source distribution.
3083
3084    *Richard Levitte*
3085
3086 ### Changes between 1.1.0i and 1.1.0j [20 Nov 2018]
3087
3088  * Timing vulnerability in DSA signature generation
3089
3090    The OpenSSL DSA signature algorithm has been shown to be vulnerable to a
3091    timing side channel attack. An attacker could use variations in the signing
3092    algorithm to recover the private key.
3093
3094    This issue was reported to OpenSSL on 16th October 2018 by Samuel Weiser.
3095    ([CVE-2018-0734])
3096
3097    *Paul Dale*
3098
3099  * Timing vulnerability in ECDSA signature generation
3100
3101    The OpenSSL ECDSA signature algorithm has been shown to be vulnerable to a
3102    timing side channel attack. An attacker could use variations in the signing
3103    algorithm to recover the private key.
3104
3105    This issue was reported to OpenSSL on 25th October 2018 by Samuel Weiser.
3106    ([CVE-2018-0735])
3107
3108    *Paul Dale*
3109
3110  * Add coordinate blinding for EC_POINT and implement projective
3111    coordinate blinding for generic prime curves as a countermeasure to
3112    chosen point SCA attacks.
3113
3114    *Sohaib ul Hassan, Nicola Tuveri, Billy Bob Brumley*
3115
3116 ### Changes between 1.1.0h and 1.1.0i [14 Aug 2018]
3117
3118  * Client DoS due to large DH parameter
3119
3120    During key agreement in a TLS handshake using a DH(E) based ciphersuite a
3121    malicious server can send a very large prime value to the client. This will
3122    cause the client to spend an unreasonably long period of time generating a
3123    key for this prime resulting in a hang until the client has finished. This
3124    could be exploited in a Denial Of Service attack.
3125
3126    This issue was reported to OpenSSL on 5th June 2018 by Guido Vranken
3127    ([CVE-2018-0732])
3128
3129    *Guido Vranken*
3130
3131  * Cache timing vulnerability in RSA Key Generation
3132
3133    The OpenSSL RSA Key generation algorithm has been shown to be vulnerable to
3134    a cache timing side channel attack. An attacker with sufficient access to
3135    mount cache timing attacks during the RSA key generation process could
3136    recover the private key.
3137
3138    This issue was reported to OpenSSL on 4th April 2018 by Alejandro Cabrera
3139    Aldaya, Billy Brumley, Cesar Pereida Garcia and Luis Manuel Alvarez Tapia.
3140    ([CVE-2018-0737])
3141
3142    *Billy Brumley*
3143
3144  * Make EVP_PKEY_asn1_new() a bit stricter about its input.  A NULL pem_str
3145    parameter is no longer accepted, as it leads to a corrupt table.  NULL
3146    pem_str is reserved for alias entries only.
3147
3148    *Richard Levitte*
3149
3150  * Revert blinding in ECDSA sign and instead make problematic addition
3151    length-invariant. Switch even to fixed-length Montgomery multiplication.
3152
3153    *Andy Polyakov*
3154
3155  * Change generating and checking of primes so that the error rate of not
3156    being prime depends on the intended use based on the size of the input.
3157    For larger primes this will result in more rounds of Miller-Rabin.
3158    The maximal error rate for primes with more than 1080 bits is lowered
3159    to 2^-128.
3160
3161    *Kurt Roeckx, Annie Yousar*
3162
3163  * Increase the number of Miller-Rabin rounds for DSA key generating to 64.
3164
3165    *Kurt Roeckx*
3166
3167  * Add blinding to ECDSA and DSA signatures to protect against side channel
3168    attacks discovered by Keegan Ryan (NCC Group).
3169
3170    *Matt Caswell*
3171
3172  * When unlocking a pass phrase protected PEM file or PKCS#8 container, we
3173    now allow empty (zero character) pass phrases.
3174
3175    *Richard Levitte*
3176
3177  * Certificate time validation (X509_cmp_time) enforces stricter
3178    compliance with RFC 5280. Fractional seconds and timezone offsets
3179    are no longer allowed.
3180
3181    *Emilia Käsper*
3182
3183  * Fixed a text canonicalisation bug in CMS
3184
3185    Where a CMS detached signature is used with text content the text goes
3186    through a canonicalisation process first prior to signing or verifying a
3187    signature. This process strips trailing space at the end of lines, converts
3188    line terminators to CRLF and removes additional trailing line terminators
3189    at the end of a file. A bug in the canonicalisation process meant that
3190    some characters, such as form-feed, were incorrectly treated as whitespace
3191    and removed. This is contrary to the specification (RFC5485). This fix
3192    could mean that detached text data signed with an earlier version of
3193    OpenSSL 1.1.0 may fail to verify using the fixed version, or text data
3194    signed with a fixed OpenSSL may fail to verify with an earlier version of
3195    OpenSSL 1.1.0. A workaround is to only verify the canonicalised text data
3196    and use the "-binary" flag (for the "cms" command line application) or set
3197    the SMIME_BINARY/PKCS7_BINARY/CMS_BINARY flags (if using CMS_verify()).
3198
3199    *Matt Caswell*
3200
3201 ### Changes between 1.1.0g and 1.1.0h [27 Mar 2018]
3202
3203  * Constructed ASN.1 types with a recursive definition could exceed the stack
3204
3205    Constructed ASN.1 types with a recursive definition (such as can be found
3206    in PKCS7) could eventually exceed the stack given malicious input with
3207    excessive recursion. This could result in a Denial Of Service attack. There
3208    are no such structures used within SSL/TLS that come from untrusted sources
3209    so this is considered safe.
3210
3211    This issue was reported to OpenSSL on 4th January 2018 by the OSS-fuzz
3212    project.
3213    ([CVE-2018-0739])
3214
3215    *Matt Caswell*
3216
3217  * Incorrect CRYPTO_memcmp on HP-UX PA-RISC
3218
3219    Because of an implementation bug the PA-RISC CRYPTO_memcmp function is
3220    effectively reduced to only comparing the least significant bit of each
3221    byte. This allows an attacker to forge messages that would be considered as
3222    authenticated in an amount of tries lower than that guaranteed by the
3223    security claims of the scheme. The module can only be compiled by the
3224    HP-UX assembler, so that only HP-UX PA-RISC targets are affected.
3225
3226    This issue was reported to OpenSSL on 2nd March 2018 by Peter Waltenberg
3227    (IBM).
3228    ([CVE-2018-0733])
3229
3230    *Andy Polyakov*
3231
3232  * Add a build target 'build_all_generated', to build all generated files
3233    and only that.  This can be used to prepare everything that requires
3234    things like perl for a system that lacks perl and then move everything
3235    to that system and do the rest of the build there.
3236
3237    *Richard Levitte*
3238
3239  * Backport SSL_OP_NO_RENGOTIATION
3240
3241    OpenSSL 1.0.2 and below had the ability to disable renegotiation using the
3242    (undocumented) SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS flag. Due to the opacity
3243    changes this is no longer possible in 1.1.0. Therefore the new
3244    SSL_OP_NO_RENEGOTIATION option from 1.1.1-dev has been backported to
3245    1.1.0 to provide equivalent functionality.
3246
3247    Note that if an application built against 1.1.0h headers (or above) is run
3248    using an older version of 1.1.0 (prior to 1.1.0h) then the option will be
3249    accepted but nothing will happen, i.e. renegotiation will not be prevented.
3250
3251    *Matt Caswell*
3252
3253  * Removed the OS390-Unix config target.  It relied on a script that doesn't
3254    exist.
3255
3256    *Rich Salz*
3257
3258  * rsaz_1024_mul_avx2 overflow bug on x86_64
3259
3260    There is an overflow bug in the AVX2 Montgomery multiplication procedure
3261    used in exponentiation with 1024-bit moduli. No EC algorithms are affected.
3262    Analysis suggests that attacks against RSA and DSA as a result of this
3263    defect would be very difficult to perform and are not believed likely.
3264    Attacks against DH1024 are considered just feasible, because most of the
3265    work necessary to deduce information about a private key may be performed
3266    offline. The amount of resources required for such an attack would be
3267    significant. However, for an attack on TLS to be meaningful, the server
3268    would have to share the DH1024 private key among multiple clients, which is
3269    no longer an option since CVE-2016-0701.
3270
3271    This only affects processors that support the AVX2 but not ADX extensions
3272    like Intel Haswell (4th generation).
3273
3274    This issue was reported to OpenSSL by David Benjamin (Google). The issue
3275    was originally found via the OSS-Fuzz project.
3276    ([CVE-2017-3738])
3277
3278    *Andy Polyakov*
3279
3280 ### Changes between 1.1.0f and 1.1.0g [2 Nov 2017]
3281
3282  * bn_sqrx8x_internal carry bug on x86_64
3283
3284    There is a carry propagating bug in the x86_64 Montgomery squaring
3285    procedure. No EC algorithms are affected. Analysis suggests that attacks
3286    against RSA and DSA as a result of this defect would be very difficult to
3287    perform and are not believed likely. Attacks against DH are considered just
3288    feasible (although very difficult) because most of the work necessary to
3289    deduce information about a private key may be performed offline. The amount
3290    of resources required for such an attack would be very significant and
3291    likely only accessible to a limited number of attackers. An attacker would
3292    additionally need online access to an unpatched system using the target
3293    private key in a scenario with persistent DH parameters and a private
3294    key that is shared between multiple clients.
3295
3296    This only affects processors that support the BMI1, BMI2 and ADX extensions
3297    like Intel Broadwell (5th generation) and later or AMD Ryzen.
3298
3299    This issue was reported to OpenSSL by the OSS-Fuzz project.
3300    ([CVE-2017-3736])
3301
3302    *Andy Polyakov*
3303
3304  * Malformed X.509 IPAddressFamily could cause OOB read
3305
3306    If an X.509 certificate has a malformed IPAddressFamily extension,
3307    OpenSSL could do a one-byte buffer overread. The most likely result
3308    would be an erroneous display of the certificate in text format.
3309
3310    This issue was reported to OpenSSL by the OSS-Fuzz project.
3311    ([CVE-2017-3735])
3312
3313    *Rich Salz*
3314
3315 ### Changes between 1.1.0e and 1.1.0f [25 May 2017]
3316
3317  * Have 'config' recognise 64-bit mingw and choose 'mingw64' as the target
3318    platform rather than 'mingw'.
3319
3320    *Richard Levitte*
3321
3322  * Remove the VMS-specific reimplementation of gmtime from crypto/o_times.c.
3323    VMS C's RTL has a fully up to date gmtime() and gmtime_r() since V7.1,
3324    which is the minimum version we support.
3325
3326    *Richard Levitte*
3327
3328 ### Changes between 1.1.0d and 1.1.0e [16 Feb 2017]
3329
3330  * Encrypt-Then-Mac renegotiation crash
3331
3332    During a renegotiation handshake if the Encrypt-Then-Mac extension is
3333    negotiated where it was not in the original handshake (or vice-versa) then
3334    this can cause OpenSSL to crash (dependant on ciphersuite). Both clients
3335    and servers are affected.
3336
3337    This issue was reported to OpenSSL by Joe Orton (Red Hat).
3338    ([CVE-2017-3733])
3339
3340    *Matt Caswell*
3341
3342 ### Changes between 1.1.0c and 1.1.0d [26 Jan 2017]
3343
3344  * Truncated packet could crash via OOB read
3345
3346    If one side of an SSL/TLS path is running on a 32-bit host and a specific
3347    cipher is being used, then a truncated packet can cause that host to
3348    perform an out-of-bounds read, usually resulting in a crash.
3349
3350    This issue was reported to OpenSSL by Robert Święcki of Google.
3351    ([CVE-2017-3731])
3352
3353    *Andy Polyakov*
3354
3355  * Bad (EC)DHE parameters cause a client crash
3356
3357    If a malicious server supplies bad parameters for a DHE or ECDHE key
3358    exchange then this can result in the client attempting to dereference a
3359    NULL pointer leading to a client crash. This could be exploited in a Denial
3360    of Service attack.
3361
3362    This issue was reported to OpenSSL by Guido Vranken.
3363    ([CVE-2017-3730])
3364
3365    *Matt Caswell*
3366
3367  * BN_mod_exp may produce incorrect results on x86_64
3368
3369    There is a carry propagating bug in the x86_64 Montgomery squaring
3370    procedure. No EC algorithms are affected. Analysis suggests that attacks
3371    against RSA and DSA as a result of this defect would be very difficult to
3372    perform and are not believed likely. Attacks against DH are considered just
3373    feasible (although very difficult) because most of the work necessary to
3374    deduce information about a private key may be performed offline. The amount
3375    of resources required for such an attack would be very significant and
3376    likely only accessible to a limited number of attackers. An attacker would
3377    additionally need online access to an unpatched system using the target
3378    private key in a scenario with persistent DH parameters and a private
3379    key that is shared between multiple clients. For example this can occur by
3380    default in OpenSSL DHE based SSL/TLS ciphersuites. Note: This issue is very
3381    similar to CVE-2015-3193 but must be treated as a separate problem.
3382
3383    This issue was reported to OpenSSL by the OSS-Fuzz project.
3384    ([CVE-2017-3732])
3385
3386    *Andy Polyakov*
3387
3388 ### Changes between 1.1.0b and 1.1.0c [10 Nov 2016]
3389
3390  * ChaCha20/Poly1305 heap-buffer-overflow
3391
3392    TLS connections using `*-CHACHA20-POLY1305` ciphersuites are susceptible to
3393    a DoS attack by corrupting larger payloads. This can result in an OpenSSL
3394    crash. This issue is not considered to be exploitable beyond a DoS.
3395
3396    This issue was reported to OpenSSL by Robert Święcki (Google Security Team)
3397    ([CVE-2016-7054])
3398
3399    *Richard Levitte*
3400
3401  * CMS Null dereference
3402
3403    Applications parsing invalid CMS structures can crash with a NULL pointer
3404    dereference. This is caused by a bug in the handling of the ASN.1 CHOICE
3405    type in OpenSSL 1.1.0 which can result in a NULL value being passed to the
3406    structure callback if an attempt is made to free certain invalid encodings.
3407    Only CHOICE structures using a callback which do not handle NULL value are
3408    affected.
3409
3410    This issue was reported to OpenSSL by Tyler Nighswander of ForAllSecure.
3411    ([CVE-2016-7053])
3412
3413    *Stephen Henson*
3414
3415  * Montgomery multiplication may produce incorrect results
3416
3417    There is a carry propagating bug in the Broadwell-specific Montgomery
3418    multiplication procedure that handles input lengths divisible by, but
3419    longer than 256 bits. Analysis suggests that attacks against RSA, DSA
3420    and DH private keys are impossible. This is because the subroutine in
3421    question is not used in operations with the private key itself and an input
3422    of the attacker's direct choice. Otherwise the bug can manifest itself as
3423    transient authentication and key negotiation failures or reproducible
3424    erroneous outcome of public-key operations with specially crafted input.
3425    Among EC algorithms only Brainpool P-512 curves are affected and one
3426    presumably can attack ECDH key negotiation. Impact was not analyzed in
3427    detail, because pre-requisites for attack are considered unlikely. Namely
3428    multiple clients have to choose the curve in question and the server has to
3429    share the private key among them, neither of which is default behaviour.
3430    Even then only clients that chose the curve will be affected.
3431
3432    This issue was publicly reported as transient failures and was not
3433    initially recognized as a security issue. Thanks to Richard Morgan for
3434    providing reproducible case.
3435    ([CVE-2016-7055])
3436
3437    *Andy Polyakov*
3438
3439  * Removed automatic addition of RPATH in shared libraries and executables,
3440    as this was a remainder from OpenSSL 1.0.x and isn't needed any more.
3441
3442    *Richard Levitte*
3443
3444 ### Changes between 1.1.0a and 1.1.0b [26 Sep 2016]
3445
3446  * Fix Use After Free for large message sizes
3447
3448    The patch applied to address CVE-2016-6307 resulted in an issue where if a
3449    message larger than approx 16k is received then the underlying buffer to
3450    store the incoming message is reallocated and moved. Unfortunately a
3451    dangling pointer to the old location is left which results in an attempt to
3452    write to the previously freed location. This is likely to result in a
3453    crash, however it could potentially lead to execution of arbitrary code.
3454
3455    This issue only affects OpenSSL 1.1.0a.
3456
3457    This issue was reported to OpenSSL by Robert Święcki.
3458    ([CVE-2016-6309])
3459
3460    *Matt Caswell*
3461
3462 ### Changes between 1.1.0 and 1.1.0a [22 Sep 2016]
3463
3464  * OCSP Status Request extension unbounded memory growth
3465
3466    A malicious client can send an excessively large OCSP Status Request
3467    extension. If that client continually requests renegotiation, sending a
3468    large OCSP Status Request extension each time, then there will be unbounded
3469    memory growth on the server. This will eventually lead to a Denial Of
3470    Service attack through memory exhaustion. Servers with a default
3471    configuration are vulnerable even if they do not support OCSP. Builds using
3472    the "no-ocsp" build time option are not affected.
3473
3474    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
3475    ([CVE-2016-6304])
3476
3477    *Matt Caswell*
3478
3479  * SSL_peek() hang on empty record
3480
3481    OpenSSL 1.1.0 SSL/TLS will hang during a call to SSL_peek() if the peer
3482    sends an empty record. This could be exploited by a malicious peer in a
3483    Denial Of Service attack.
3484
3485    This issue was reported to OpenSSL by Alex Gaynor.
3486    ([CVE-2016-6305])
3487
3488    *Matt Caswell*
3489
3490  * Excessive allocation of memory in tls_get_message_header() and
3491    dtls1_preprocess_fragment()
3492
3493    A (D)TLS message includes 3 bytes for its length in the header for the
3494    message. This would allow for messages up to 16Mb in length. Messages of
3495    this length are excessive and OpenSSL includes a check to ensure that a
3496    peer is sending reasonably sized messages in order to avoid too much memory
3497    being consumed to service a connection. A flaw in the logic of version
3498    1.1.0 means that memory for the message is allocated too early, prior to
3499    the excessive message length check. Due to way memory is allocated in
3500    OpenSSL this could mean an attacker could force up to 21Mb to be allocated
3501    to service a connection. This could lead to a Denial of Service through
3502    memory exhaustion. However, the excessive message length check still takes
3503    place, and this would cause the connection to immediately fail. Assuming
3504    that the application calls SSL_free() on the failed connection in a timely
3505    manner then the 21Mb of allocated memory will then be immediately freed
3506    again. Therefore the excessive memory allocation will be transitory in
3507    nature. This then means that there is only a security impact if:
3508
3509    1) The application does not call SSL_free() in a timely manner in the event
3510    that the connection fails
3511    or
3512    2) The application is working in a constrained environment where there is
3513    very little free memory
3514    or
3515    3) The attacker initiates multiple connection attempts such that there are
3516    multiple connections in a state where memory has been allocated for the
3517    connection; SSL_free() has not yet been called; and there is insufficient
3518    memory to service the multiple requests.
3519
3520    Except in the instance of (1) above any Denial Of Service is likely to be
3521    transitory because as soon as the connection fails the memory is
3522    subsequently freed again in the SSL_free() call. However there is an
3523    increased risk during this period of application crashes due to the lack of
3524    memory - which would then mean a more serious Denial of Service.
3525
3526    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
3527    (CVE-2016-6307 and CVE-2016-6308)
3528
3529    *Matt Caswell*
3530
3531  * solaris-x86-cc, i.e. 32-bit configuration with vendor compiler,
3532    had to be removed. Primary reason is that vendor assembler can't
3533    assemble our modules with -KPIC flag. As result it, assembly
3534    support, was not even available as option. But its lack means
3535    lack of side-channel resistant code, which is incompatible with
3536    security by todays standards. Fortunately gcc is readily available
3537    prepackaged option, which we firmly point at...
3538
3539    *Andy Polyakov*
3540
3541 ### Changes between 1.0.2h and 1.1.0  [25 Aug 2016]
3542
3543  * Windows command-line tool supports UTF-8 opt-in option for arguments
3544    and console input. Setting OPENSSL_WIN32_UTF8 environment variable
3545    (to any value) allows Windows user to access PKCS#12 file generated
3546    with Windows CryptoAPI and protected with non-ASCII password, as well
3547    as files generated under UTF-8 locale on Linux also protected with
3548    non-ASCII password.
3549
3550    *Andy Polyakov*
3551
3552  * To mitigate the SWEET32 attack ([CVE-2016-2183]), 3DES cipher suites
3553    have been disabled by default and removed from DEFAULT, just like RC4.
3554    See the RC4 item below to re-enable both.
3555
3556    *Rich Salz*
3557
3558  * The method for finding the storage location for the Windows RAND seed file
3559    has changed. First we check %RANDFILE%. If that is not set then we check
3560    the directories %HOME%, %USERPROFILE% and %SYSTEMROOT% in that order. If
3561    all else fails we fall back to C:\.
3562
3563    *Matt Caswell*
3564
3565  * The EVP_EncryptUpdate() function has had its return type changed from void
3566    to int. A return of 0 indicates and error while a return of 1 indicates
3567    success.
3568
3569    *Matt Caswell*
3570
3571  * The flags RSA_FLAG_NO_CONSTTIME, DSA_FLAG_NO_EXP_CONSTTIME and
3572    DH_FLAG_NO_EXP_CONSTTIME which previously provided the ability to switch
3573    off the constant time implementation for RSA, DSA and DH have been made
3574    no-ops and deprecated.
3575
3576    *Matt Caswell*
3577
3578  * Windows RAND implementation was simplified to only get entropy by
3579    calling CryptGenRandom(). Various other RAND-related tickets
3580    were also closed.
3581
3582    *Joseph Wylie Yandle, Rich Salz*
3583
3584  * The stack and lhash API's were renamed to start with `OPENSSL_SK_`
3585    and `OPENSSL_LH_`, respectively.  The old names are available
3586    with API compatibility.  They new names are now completely documented.
3587
3588    *Rich Salz*
3589
3590  * Unify TYPE_up_ref(obj) methods signature.
3591    SSL_CTX_up_ref(), SSL_up_ref(), X509_up_ref(), EVP_PKEY_up_ref(),
3592    X509_CRL_up_ref(), X509_OBJECT_up_ref_count() methods are now returning an
3593    int (instead of void) like all others TYPE_up_ref() methods.
3594    So now these methods also check the return value of CRYPTO_atomic_add(),
3595    and the validity of object reference counter.
3596
3597    *fdasilvayy@gmail.com*
3598
3599  * With Windows Visual Studio builds, the .pdb files are installed
3600    alongside the installed libraries and executables.  For a static
3601    library installation, ossl_static.pdb is the associate compiler
3602    generated .pdb file to be used when linking programs.
3603
3604    *Richard Levitte*
3605
3606  * Remove openssl.spec.  Packaging files belong with the packagers.
3607
3608    *Richard Levitte*
3609
3610  * Automatic Darwin/OSX configuration has had a refresh, it will now
3611    recognise x86_64 architectures automatically.  You can still decide
3612    to build for a different bitness with the environment variable
3613    KERNEL_BITS (can be 32 or 64), for example:
3614
3615            KERNEL_BITS=32 ./config
3616
3617    *Richard Levitte*
3618
3619  * Change default algorithms in pkcs8 utility to use PKCS#5 v2.0,
3620    256 bit AES and HMAC with SHA256.
3621
3622    *Steve Henson*
3623
3624  * Remove support for MIPS o32 ABI on IRIX (and IRIX only).
3625
3626    *Andy Polyakov*
3627
3628  * Triple-DES ciphers have been moved from HIGH to MEDIUM.
3629
3630    *Rich Salz*
3631
3632  * To enable users to have their own config files and build file templates,
3633    Configure looks in the directory indicated by the environment variable
3634    OPENSSL_LOCAL_CONFIG_DIR as well as the in-source Configurations/
3635    directory.  On VMS, OPENSSL_LOCAL_CONFIG_DIR is expected to be a logical
3636    name and is used as is.
3637
3638    *Richard Levitte*
3639
3640  * The following datatypes were made opaque: X509_OBJECT, X509_STORE_CTX,
3641    X509_STORE, X509_LOOKUP, and X509_LOOKUP_METHOD.  The unused type
3642    X509_CERT_FILE_CTX was removed.
3643
3644    *Rich Salz*
3645
3646  * "shared" builds are now the default. To create only static libraries use
3647    the "no-shared" Configure option.
3648
3649    *Matt Caswell*
3650
3651  * Remove the no-aes, no-hmac, no-rsa, no-sha and no-md5 Configure options.
3652    All of these option have not worked for some while and are fundamental
3653    algorithms.
3654
3655    *Matt Caswell*
3656
3657  * Make various cleanup routines no-ops and mark them as deprecated. Most
3658    global cleanup functions are no longer required because they are handled
3659    via auto-deinit (see OPENSSL_init_crypto and OPENSSL_init_ssl man pages).
3660    Explicitly de-initing can cause problems (e.g. where a library that uses
3661    OpenSSL de-inits, but an application is still using it). The affected
3662    functions are CONF_modules_free(), ENGINE_cleanup(), OBJ_cleanup(),
3663    EVP_cleanup(), BIO_sock_cleanup(), CRYPTO_cleanup_all_ex_data(),
3664    RAND_cleanup(), SSL_COMP_free_compression_methods(), ERR_free_strings() and
3665    COMP_zlib_cleanup().
3666
3667    *Matt Caswell*
3668
3669  * --strict-warnings no longer enables runtime debugging options
3670    such as REF_DEBUG. Instead, debug options are automatically
3671    enabled with '--debug' builds.
3672
3673    *Andy Polyakov, Emilia Käsper*
3674
3675  * Made DH and DH_METHOD opaque. The structures for managing DH objects
3676    have been moved out of the public header files. New functions for managing
3677    these have been added.
3678
3679    *Matt Caswell*
3680
3681  * Made RSA and RSA_METHOD opaque. The structures for managing RSA
3682    objects have been moved out of the public header files. New
3683    functions for managing these have been added.
3684
3685    *Richard Levitte*
3686
3687  * Made DSA and DSA_METHOD opaque. The structures for managing DSA objects
3688    have been moved out of the public header files. New functions for managing
3689    these have been added.
3690
3691    *Matt Caswell*
3692
3693  * Made BIO and BIO_METHOD opaque. The structures for managing BIOs have been
3694    moved out of the public header files. New functions for managing these
3695    have been added.
3696
3697    *Matt Caswell*
3698
3699  * Removed no-rijndael as a config option. Rijndael is an old name for AES.
3700
3701    *Matt Caswell*
3702
3703  * Removed the mk1mf build scripts.
3704
3705    *Richard Levitte*
3706
3707  * Headers are now wrapped, if necessary, with OPENSSL_NO_xxx, so
3708    it is always safe to #include a header now.
3709
3710    *Rich Salz*
3711
3712  * Removed the aged BC-32 config and all its supporting scripts
3713
3714    *Richard Levitte*
3715
3716  * Removed support for Ultrix, Netware, and OS/2.
3717
3718    *Rich Salz*
3719
3720  * Add support for HKDF.
3721
3722    *Alessandro Ghedini*
3723
3724  * Add support for blake2b and blake2s
3725
3726    *Bill Cox*
3727
3728  * Added support for "pipelining". Ciphers that have the
3729    EVP_CIPH_FLAG_PIPELINE flag set have a capability to process multiple
3730    encryptions/decryptions simultaneously. There are currently no built-in
3731    ciphers with this property but the expectation is that engines will be able
3732    to offer it to significantly improve throughput. Support has been extended
3733    into libssl so that multiple records for a single connection can be
3734    processed in one go (for >=TLS 1.1).
3735
3736    *Matt Caswell*
3737
3738  * Added the AFALG engine. This is an async capable engine which is able to
3739    offload work to the Linux kernel. In this initial version it only supports
3740    AES128-CBC. The kernel must be version 4.1.0 or greater.
3741
3742    *Catriona Lucey*
3743
3744  * OpenSSL now uses a new threading API. It is no longer necessary to
3745    set locking callbacks to use OpenSSL in a multi-threaded environment. There
3746    are two supported threading models: pthreads and windows threads. It is
3747    also possible to configure OpenSSL at compile time for "no-threads". The
3748    old threading API should no longer be used. The functions have been
3749    replaced with "no-op" compatibility macros.
3750
3751    *Alessandro Ghedini, Matt Caswell*
3752
3753  * Modify behavior of ALPN to invoke callback after SNI/servername
3754    callback, such that updates to the SSL_CTX affect ALPN.
3755
3756    *Todd Short*
3757
3758  * Add SSL_CIPHER queries for authentication and key-exchange.
3759
3760    *Todd Short*
3761
3762  * Changes to the DEFAULT cipherlist:
3763    - Prefer (EC)DHE handshakes over plain RSA.
3764    - Prefer AEAD ciphers over legacy ciphers.
3765    - Prefer ECDSA over RSA when both certificates are available.
3766    - Prefer TLSv1.2 ciphers/PRF.
3767    - Remove DSS, SEED, IDEA, CAMELLIA, and AES-CCM from the
3768      default cipherlist.
3769
3770    *Emilia Käsper*
3771
3772  * Change the ECC default curve list to be this, in order: x25519,
3773    secp256r1, secp521r1, secp384r1.
3774
3775    *Rich Salz*
3776
3777  * RC4 based libssl ciphersuites are now classed as "weak" ciphers and are
3778    disabled by default. They can be re-enabled using the
3779    enable-weak-ssl-ciphers option to Configure.
3780
3781    *Matt Caswell*
3782
3783  * If the server has ALPN configured, but supports no protocols that the
3784    client advertises, send a fatal "no_application_protocol" alert.
3785    This behaviour is SHALL in RFC 7301, though it isn't universally
3786    implemented by other servers.
3787
3788    *Emilia Käsper*
3789
3790  * Add X25519 support.
3791    Add ASN.1 and EVP_PKEY methods for X25519. This includes support
3792    for public and private key encoding using the format documented in
3793    draft-ietf-curdle-pkix-02. The corresponding EVP_PKEY method supports
3794    key generation and key derivation.
3795
3796    TLS support complies with draft-ietf-tls-rfc4492bis-08 and uses
3797    X25519(29).
3798
3799    *Steve Henson*
3800
3801  * Deprecate SRP_VBASE_get_by_user.
3802    SRP_VBASE_get_by_user had inconsistent memory management behaviour.
3803    In order to fix an unavoidable memory leak ([CVE-2016-0798]),
3804    SRP_VBASE_get_by_user was changed to ignore the "fake user" SRP
3805    seed, even if the seed is configured.
3806
3807    Users should use SRP_VBASE_get1_by_user instead. Note that in
3808    SRP_VBASE_get1_by_user, caller must free the returned value. Note
3809    also that even though configuring the SRP seed attempts to hide
3810    invalid usernames by continuing the handshake with fake
3811    credentials, this behaviour is not constant time and no strong
3812    guarantees are made that the handshake is indistinguishable from
3813    that of a valid user.
3814
3815    *Emilia Käsper*
3816
3817  * Configuration change; it's now possible to build dynamic engines
3818    without having to build shared libraries and vice versa.  This
3819    only applies to the engines in `engines/`, those in `crypto/engine/`
3820    will always be built into libcrypto (i.e. "static").
3821
3822    Building dynamic engines is enabled by default; to disable, use
3823    the configuration option "disable-dynamic-engine".
3824
3825    The only requirements for building dynamic engines are the
3826    presence of the DSO module and building with position independent
3827    code, so they will also automatically be disabled if configuring
3828    with "disable-dso" or "disable-pic".
3829
3830    The macros OPENSSL_NO_STATIC_ENGINE and OPENSSL_NO_DYNAMIC_ENGINE
3831    are also taken away from openssl/opensslconf.h, as they are
3832    irrelevant.
3833
3834    *Richard Levitte*
3835
3836  * Configuration change; if there is a known flag to compile
3837    position independent code, it will always be applied on the
3838    libcrypto and libssl object files, and never on the application
3839    object files.  This means other libraries that use routines from
3840    libcrypto / libssl can be made into shared libraries regardless
3841    of how OpenSSL was configured.
3842
3843    If this isn't desirable, the configuration options "disable-pic"
3844    or "no-pic" can be used to disable the use of PIC.  This will
3845    also disable building shared libraries and dynamic engines.
3846
3847    *Richard Levitte*
3848
3849  * Removed JPAKE code.  It was experimental and has no wide use.
3850
3851    *Rich Salz*
3852
3853  * The INSTALL_PREFIX Makefile variable has been renamed to
3854    DESTDIR.  That makes for less confusion on what this variable
3855    is for.  Also, the configuration option --install_prefix is
3856    removed.
3857
3858    *Richard Levitte*
3859
3860  * Heartbeat for TLS has been removed and is disabled by default
3861    for DTLS; configure with enable-heartbeats.  Code that uses the
3862    old #define's might need to be updated.
3863
3864    *Emilia Käsper, Rich Salz*
3865
3866  * Rename REF_CHECK to REF_DEBUG.
3867
3868    *Rich Salz*
3869
3870  * New "unified" build system
3871
3872    The "unified" build system is aimed to be a common system for all
3873    platforms we support.  With it comes new support for VMS.
3874
3875    This system builds supports building in a different directory tree
3876    than the source tree.  It produces one Makefile (for unix family
3877    or lookalikes), or one descrip.mms (for VMS).
3878
3879    The source of information to make the Makefile / descrip.mms is
3880    small files called 'build.info', holding the necessary
3881    information for each directory with source to compile, and a
3882    template in Configurations, like unix-Makefile.tmpl or
3883    descrip.mms.tmpl.
3884
3885    With this change, the library names were also renamed on Windows
3886    and on VMS.  They now have names that are closer to the standard
3887    on Unix, and include the major version number, and in certain
3888    cases, the architecture they are built for.  See "Notes on shared
3889    libraries" in INSTALL.
3890
3891    We rely heavily on the perl module Text::Template.
3892
3893    *Richard Levitte*
3894
3895  * Added support for auto-initialisation and de-initialisation of the library.
3896    OpenSSL no longer requires explicit init or deinit routines to be called,
3897    except in certain circumstances. See the OPENSSL_init_crypto() and
3898    OPENSSL_init_ssl() man pages for further information.
3899
3900    *Matt Caswell*
3901
3902  * The arguments to the DTLSv1_listen function have changed. Specifically the
3903    "peer" argument is now expected to be a BIO_ADDR object.
3904
3905  * Rewrite of BIO networking library. The BIO library lacked consistent
3906    support of IPv6, and adding it required some more extensive
3907    modifications.  This introduces the BIO_ADDR and BIO_ADDRINFO types,
3908    which hold all types of addresses and chains of address information.
3909    It also introduces a new API, with functions like BIO_socket,
3910    BIO_connect, BIO_listen, BIO_lookup and a rewrite of BIO_accept.
3911    The source/sink BIOs BIO_s_connect, BIO_s_accept and BIO_s_datagram
3912    have been adapted accordingly.
3913
3914    *Richard Levitte*
3915
3916  * RSA_padding_check_PKCS1_type_1 now accepts inputs with and without
3917    the leading 0-byte.
3918
3919    *Emilia Käsper*
3920
3921  * CRIME protection: disable compression by default, even if OpenSSL is
3922    compiled with zlib enabled. Applications can still enable compression
3923    by calling SSL_CTX_clear_options(ctx, SSL_OP_NO_COMPRESSION), or by
3924    using the SSL_CONF library to configure compression.
3925
3926    *Emilia Käsper*
3927
3928  * The signature of the session callback configured with
3929    SSL_CTX_sess_set_get_cb was changed. The read-only input buffer
3930    was explicitly marked as `const unsigned char*` instead of
3931    `unsigned char*`.
3932
3933    *Emilia Käsper*
3934
3935  * Always DPURIFY. Remove the use of uninitialized memory in the
3936    RNG, and other conditional uses of DPURIFY. This makes -DPURIFY a no-op.
3937
3938    *Emilia Käsper*
3939
3940  * Removed many obsolete configuration items, including
3941       DES_PTR, DES_RISC1, DES_RISC2, DES_INT
3942       MD2_CHAR, MD2_INT, MD2_LONG
3943       BF_PTR, BF_PTR2
3944       IDEA_SHORT, IDEA_LONG
3945       RC2_SHORT, RC2_LONG, RC4_LONG, RC4_CHUNK, RC4_INDEX
3946
3947    *Rich Salz, with advice from Andy Polyakov*
3948
3949  * Many BN internals have been moved to an internal header file.
3950
3951    *Rich Salz with help from Andy Polyakov*
3952
3953  * Configuration and writing out the results from it has changed.
3954    Files such as Makefile include/openssl/opensslconf.h and are now
3955    produced through general templates, such as Makefile.in and
3956    crypto/opensslconf.h.in and some help from the perl module
3957    Text::Template.
3958
3959    Also, the center of configuration information is no longer
3960    Makefile.  Instead, Configure produces a perl module in
3961    configdata.pm which holds most of the config data (in the hash
3962    table %config), the target data that comes from the target
3963    configuration in one of the `Configurations/*.conf` files (in
3964    %target).
3965
3966    *Richard Levitte*
3967
3968  * To clarify their intended purposes, the Configure options
3969    --prefix and --openssldir change their semantics, and become more
3970    straightforward and less interdependent.
3971
3972    --prefix shall be used exclusively to give the location INSTALLTOP
3973    where programs, scripts, libraries, include files and manuals are
3974    going to be installed.  The default is now /usr/local.
3975
3976    --openssldir shall be used exclusively to give the default
3977    location OPENSSLDIR where certificates, private keys, CRLs are
3978    managed.  This is also where the default openssl.cnf gets
3979    installed.
3980    If the directory given with this option is a relative path, the
3981    values of both the --prefix value and the --openssldir value will
3982    be combined to become OPENSSLDIR.
3983    The default for --openssldir is INSTALLTOP/ssl.
3984
3985    Anyone who uses --openssldir to specify where OpenSSL is to be
3986    installed MUST change to use --prefix instead.
3987
3988    *Richard Levitte*
3989
3990  * The GOST engine was out of date and therefore it has been removed. An up
3991    to date GOST engine is now being maintained in an external repository.
3992    See: <https://wiki.openssl.org/index.php/Binaries>. Libssl still retains
3993    support for GOST ciphersuites (these are only activated if a GOST engine
3994    is present).
3995
3996    *Matt Caswell*
3997
3998  * EGD is no longer supported by default; use enable-egd when
3999    configuring.
4000
4001    *Ben Kaduk and Rich Salz*
4002
4003  * The distribution now has Makefile.in files, which are used to
4004    create Makefile's when Configure is run.  *Configure must be run
4005    before trying to build now.*
4006
4007    *Rich Salz*
4008
4009  * The return value for SSL_CIPHER_description() for error conditions
4010    has changed.
4011
4012    *Rich Salz*
4013
4014  * Support for RFC6698/RFC7671 DANE TLSA peer authentication.
4015
4016    Obtaining and performing DNSSEC validation of TLSA records is
4017    the application's responsibility.  The application provides
4018    the TLSA records of its choice to OpenSSL, and these are then
4019    used to authenticate the peer.
4020
4021    The TLSA records need not even come from DNS.  They can, for
4022    example, be used to implement local end-entity certificate or
4023    trust-anchor "pinning", where the "pin" data takes the form
4024    of TLSA records, which can augment or replace verification
4025    based on the usual WebPKI public certification authorities.
4026
4027    *Viktor Dukhovni*
4028
4029  * Revert default OPENSSL_NO_DEPRECATED setting.  Instead OpenSSL
4030    continues to support deprecated interfaces in default builds.
4031    However, applications are strongly advised to compile their
4032    source files with -DOPENSSL_API_COMPAT=0x10100000L, which hides
4033    the declarations of all interfaces deprecated in 0.9.8, 1.0.0
4034    or the 1.1.0 releases.
4035
4036    In environments in which all applications have been ported to
4037    not use any deprecated interfaces OpenSSL's Configure script
4038    should be used with the --api=1.1.0 option to entirely remove
4039    support for the deprecated features from the library and
4040    unconditionally disable them in the installed headers.
4041    Essentially the same effect can be achieved with the "no-deprecated"
4042    argument to Configure, except that this will always restrict
4043    the build to just the latest API, rather than a fixed API
4044    version.
4045
4046    As applications are ported to future revisions of the API,
4047    they should update their compile-time OPENSSL_API_COMPAT define
4048    accordingly, but in most cases should be able to continue to
4049    compile with later releases.
4050
4051    The OPENSSL_API_COMPAT versions for 1.0.0, and 0.9.8 are
4052    0x10000000L and 0x00908000L, respectively.  However those
4053    versions did not support the OPENSSL_API_COMPAT feature, and
4054    so applications are not typically tested for explicit support
4055    of just the undeprecated features of either release.
4056
4057    *Viktor Dukhovni*
4058
4059  * Add support for setting the minimum and maximum supported protocol.
4060    It can bet set via the SSL_set_min_proto_version() and
4061    SSL_set_max_proto_version(), or via the SSL_CONF's MinProtocol and
4062    MaxProtocol.  It's recommended to use the new APIs to disable
4063    protocols instead of disabling individual protocols using
4064    SSL_set_options() or SSL_CONF's Protocol.  This change also
4065    removes support for disabling TLS 1.2 in the OpenSSL TLS
4066    client at compile time by defining OPENSSL_NO_TLS1_2_CLIENT.
4067
4068    *Kurt Roeckx*
4069
4070  * Support for ChaCha20 and Poly1305 added to libcrypto and libssl.
4071
4072    *Andy Polyakov*
4073
4074  * New EC_KEY_METHOD, this replaces the older ECDSA_METHOD and ECDH_METHOD
4075    and integrates ECDSA and ECDH functionality into EC. Implementations can
4076    now redirect key generation and no longer need to convert to or from
4077    ECDSA_SIG format.
4078
4079    Note: the ecdsa.h and ecdh.h headers are now no longer needed and just
4080    include the ec.h header file instead.
4081
4082    *Steve Henson*
4083
4084  * Remove support for all 40 and 56 bit ciphers.  This includes all the export
4085    ciphers who are no longer supported and drops support the ephemeral RSA key
4086    exchange. The LOW ciphers currently doesn't have any ciphers in it.
4087
4088    *Kurt Roeckx*
4089
4090  * Made EVP_MD_CTX, EVP_MD, EVP_CIPHER_CTX, EVP_CIPHER and HMAC_CTX
4091    opaque.  For HMAC_CTX, the following constructors and destructors
4092    were added:
4093
4094        HMAC_CTX *HMAC_CTX_new(void);
4095        void HMAC_CTX_free(HMAC_CTX *ctx);
4096
4097    For EVP_MD and EVP_CIPHER, complete APIs to create, fill and
4098    destroy such methods has been added.  See EVP_MD_meth_new(3) and
4099    EVP_CIPHER_meth_new(3) for documentation.
4100
4101    Additional changes:
4102    1) `EVP_MD_CTX_cleanup()`, `EVP_CIPHER_CTX_cleanup()` and
4103       `HMAC_CTX_cleanup()` were removed. `HMAC_CTX_reset()` and
4104       `EVP_MD_CTX_reset()` should be called instead to reinitialise
4105       an already created structure.
4106    2) For consistency with the majority of our object creators and
4107       destructors, `EVP_MD_CTX_(create|destroy)` were renamed to
4108       `EVP_MD_CTX_(new|free)`.  The old names are retained as macros
4109       for deprecated builds.
4110
4111    *Richard Levitte*
4112
4113  * Added ASYNC support. Libcrypto now includes the async sub-library to enable
4114    cryptographic operations to be performed asynchronously as long as an
4115    asynchronous capable engine is used. See the ASYNC_start_job() man page for
4116    further details. Libssl has also had this capability integrated with the
4117    introduction of the new mode SSL_MODE_ASYNC and associated error
4118    SSL_ERROR_WANT_ASYNC. See the SSL_CTX_set_mode() and SSL_get_error() man
4119    pages. This work was developed in partnership with Intel Corp.
4120
4121    *Matt Caswell*
4122
4123  * SSL_{CTX_}set_ecdh_auto() has been removed and ECDH is support is
4124    always enabled now.  If you want to disable the support you should
4125    exclude it using the list of supported ciphers. This also means that the
4126    "-no_ecdhe" option has been removed from s_server.
4127
4128    *Kurt Roeckx*
4129
4130  * SSL_{CTX}_set_tmp_ecdh() which can set 1 EC curve now internally calls
4131    SSL_{CTX_}set1_curves() which can set a list.
4132
4133    *Kurt Roeckx*
4134
4135  * Remove support for SSL_{CTX_}set_tmp_ecdh_callback().  You should set the
4136    curve you want to support using SSL_{CTX_}set1_curves().
4137
4138    *Kurt Roeckx*
4139
4140  * State machine rewrite. The state machine code has been significantly
4141    refactored in order to remove much duplication of code and solve issues
4142    with the old code (see [ssl/statem/README.md](ssl/statem/README.md) for
4143    further details). This change does have some associated API changes.
4144    Notably the SSL_state() function has been removed and replaced by
4145    SSL_get_state which now returns an "OSSL_HANDSHAKE_STATE" instead of an int.
4146    SSL_set_state() has been removed altogether. The previous handshake states
4147    defined in ssl.h and ssl3.h have also been removed.
4148
4149    *Matt Caswell*
4150
4151  * All instances of the string "ssleay" in the public API were replaced
4152    with OpenSSL (case-matching; e.g., OPENSSL_VERSION for #define's)
4153    Some error codes related to internal RSA_eay API's were renamed.
4154
4155    *Rich Salz*
4156
4157  * The demo files in crypto/threads were moved to demo/threads.
4158
4159    *Rich Salz*
4160
4161  * Removed obsolete engines: 4758cca, aep, atalla, cswift, nuron, gmp,
4162    sureware and ubsec.
4163
4164    *Matt Caswell, Rich Salz*
4165
4166  * New ASN.1 embed macro.
4167
4168    New ASN.1 macro ASN1_EMBED. This is the same as ASN1_SIMPLE except the
4169    structure is not allocated: it is part of the parent. That is instead of
4170
4171            FOO *x;
4172
4173    it must be:
4174
4175            FOO x;
4176
4177    This reduces memory fragmentation and make it impossible to accidentally
4178    set a mandatory field to NULL.
4179
4180    This currently only works for some fields specifically a SEQUENCE, CHOICE,
4181    or ASN1_STRING type which is part of a parent SEQUENCE. Since it is
4182    equivalent to ASN1_SIMPLE it cannot be tagged, OPTIONAL, SET OF or
4183    SEQUENCE OF.
4184
4185    *Steve Henson*
4186
4187  * Remove EVP_CHECK_DES_KEY, a compile-time option that never compiled.
4188
4189    *Emilia Käsper*
4190
4191  * Removed DES and RC4 ciphersuites from DEFAULT. Also removed RC2 although
4192    in 1.0.2 EXPORT was already removed and the only RC2 ciphersuite is also
4193    an EXPORT one. COMPLEMENTOFDEFAULT has been updated accordingly to add
4194    DES and RC4 ciphersuites.
4195
4196    *Matt Caswell*
4197
4198  * Rewrite EVP_DecodeUpdate (base64 decoding) to fix several bugs.
4199    This changes the decoding behaviour for some invalid messages,
4200    though the change is mostly in the more lenient direction, and
4201    legacy behaviour is preserved as much as possible.
4202
4203    *Emilia Käsper*
4204
4205  * Fix no-stdio build.
4206    *David Woodhouse <David.Woodhouse@intel.com> and also*
4207    *Ivan Nestlerode <ivan.nestlerode@sonos.com>*
4208
4209  * New testing framework
4210    The testing framework has been largely rewritten and is now using
4211    perl and the perl modules Test::Harness and an extended variant of
4212    Test::More called OpenSSL::Test to do its work.  All test scripts in
4213    test/ have been rewritten into test recipes, and all direct calls to
4214    executables in test/Makefile have become individual recipes using the
4215    simplified testing OpenSSL::Test::Simple.
4216
4217    For documentation on our testing modules, do:
4218
4219            perldoc test/testlib/OpenSSL/Test/Simple.pm
4220            perldoc test/testlib/OpenSSL/Test.pm
4221
4222    *Richard Levitte*
4223
4224  * Revamped memory debug; only -DCRYPTO_MDEBUG and -DCRYPTO_MDEBUG_ABORT
4225    are used; the latter aborts on memory leaks (usually checked on exit).
4226    Some undocumented "set malloc, etc., hooks" functions were removed
4227    and others were changed.  All are now documented.
4228
4229    *Rich Salz*
4230
4231  * In DSA_generate_parameters_ex, if the provided seed is too short,
4232    return an error
4233
4234    *Rich Salz and Ismo Puustinen <ismo.puustinen@intel.com>*
4235
4236  * Rewrite PSK to support ECDHE_PSK, DHE_PSK and RSA_PSK. Add ciphersuites
4237    from RFC4279, RFC4785, RFC5487, RFC5489.
4238
4239    Thanks to Christian J. Dietrich and Giuseppe D'Angelo for the
4240    original RSA_PSK patch.
4241
4242    *Steve Henson*
4243
4244  * Dropped support for the SSL3_FLAGS_DELAY_CLIENT_FINISHED flag. This SSLeay
4245    era flag was never set throughout the codebase (only read). Also removed
4246    SSL3_FLAGS_POP_BUFFER which was only used if
4247    SSL3_FLAGS_DELAY_CLIENT_FINISHED was also set.
4248
4249    *Matt Caswell*
4250
4251  * Changed the default name options in the "ca", "crl", "req" and "x509"
4252    to be "oneline" instead of "compat".
4253
4254    *Richard Levitte*
4255
4256  * Remove SSL_OP_TLS_BLOCK_PADDING_BUG. This is SSLeay legacy, we're
4257    not aware of clients that still exhibit this bug, and the workaround
4258    hasn't been working properly for a while.
4259
4260    *Emilia Käsper*
4261
4262  * The return type of BIO_number_read() and BIO_number_written() as well as
4263    the corresponding num_read and num_write members in the BIO structure has
4264    changed from unsigned long to uint64_t. On platforms where an unsigned
4265    long is 32 bits (e.g. Windows) these counters could overflow if >4Gb is
4266    transferred.
4267
4268    *Matt Caswell*
4269
4270  * Given the pervasive nature of TLS extensions it is inadvisable to run
4271    OpenSSL without support for them. It also means that maintaining
4272    the OPENSSL_NO_TLSEXT option within the code is very invasive (and probably
4273    not well tested). Therefore the OPENSSL_NO_TLSEXT option has been removed.
4274
4275    *Matt Caswell*
4276
4277  * Removed support for the two export grade static DH ciphersuites
4278    EXP-DH-RSA-DES-CBC-SHA and EXP-DH-DSS-DES-CBC-SHA. These two ciphersuites
4279    were newly added (along with a number of other static DH ciphersuites) to
4280    1.0.2. However the two export ones have *never* worked since they were
4281    introduced. It seems strange in any case to be adding new export
4282    ciphersuites, and given "logjam" it also does not seem correct to fix them.
4283
4284    *Matt Caswell*
4285
4286  * Version negotiation has been rewritten. In particular SSLv23_method(),
4287    SSLv23_client_method() and SSLv23_server_method() have been deprecated,
4288    and turned into macros which simply call the new preferred function names
4289    TLS_method(), TLS_client_method() and TLS_server_method(). All new code
4290    should use the new names instead. Also as part of this change the ssl23.h
4291    header file has been removed.
4292
4293    *Matt Caswell*
4294
4295  * Support for Kerberos ciphersuites in TLS (RFC2712) has been removed. This
4296    code and the associated standard is no longer considered fit-for-purpose.
4297
4298    *Matt Caswell*
4299
4300  * RT2547 was closed.  When generating a private key, try to make the
4301    output file readable only by the owner.  This behavior change might
4302    be noticeable when interacting with other software.
4303
4304  * Documented all exdata functions.  Added CRYPTO_free_ex_index.
4305    Added a test.
4306
4307    *Rich Salz*
4308
4309  * Added HTTP GET support to the ocsp command.
4310
4311    *Rich Salz*
4312
4313  * Changed default digest for the dgst and enc commands from MD5 to
4314    sha256
4315
4316    *Rich Salz*
4317
4318  * RAND_pseudo_bytes has been deprecated. Users should use RAND_bytes instead.
4319
4320    *Matt Caswell*
4321
4322  * Added support for TLS extended master secret from
4323    draft-ietf-tls-session-hash-03.txt. Thanks for Alfredo Pironti for an
4324    initial patch which was a great help during development.
4325
4326    *Steve Henson*
4327
4328  * All libssl internal structures have been removed from the public header
4329    files, and the OPENSSL_NO_SSL_INTERN option has been removed (since it is
4330    now redundant). Users should not attempt to access internal structures
4331    directly. Instead they should use the provided API functions.
4332
4333    *Matt Caswell*
4334
4335  * config has been changed so that by default OPENSSL_NO_DEPRECATED is used.
4336    Access to deprecated functions can be re-enabled by running config with
4337    "enable-deprecated". In addition applications wishing to use deprecated
4338    functions must define OPENSSL_USE_DEPRECATED. Note that this new behaviour
4339    will, by default, disable some transitive includes that previously existed
4340    in the header files (e.g. ec.h will no longer, by default, include bn.h)
4341
4342    *Matt Caswell*
4343
4344  * Added support for OCB mode. OpenSSL has been granted a patent license
4345    compatible with the OpenSSL license for use of OCB. Details are available
4346    at <https://www.openssl.org/source/OCB-patent-grant-OpenSSL.pdf>. Support
4347    for OCB can be removed by calling config with no-ocb.
4348
4349    *Matt Caswell*
4350
4351  * SSLv2 support has been removed.  It still supports receiving a SSLv2
4352    compatible client hello.
4353
4354    *Kurt Roeckx*
4355
4356  * Increased the minimal RSA keysize from 256 to 512 bits [Rich Salz],
4357    done while fixing the error code for the key-too-small case.
4358
4359    *Annie Yousar <a.yousar@informatik.hu-berlin.de>*
4360
4361  * CA.sh has been removed; use CA.pl instead.
4362
4363    *Rich Salz*
4364
4365  * Removed old DES API.
4366
4367    *Rich Salz*
4368
4369  * Remove various unsupported platforms:
4370       Sony NEWS4
4371       BEOS and BEOS_R5
4372       NeXT
4373       SUNOS
4374       MPE/iX
4375       Sinix/ReliantUNIX RM400
4376       DGUX
4377       NCR
4378       Tandem
4379       Cray
4380       16-bit platforms such as WIN16
4381
4382    *Rich Salz*
4383
4384  * Clean up OPENSSL_NO_xxx #define's
4385    - Use setbuf() and remove OPENSSL_NO_SETVBUF_IONBF
4386    - Rename OPENSSL_SYSNAME_xxx to OPENSSL_SYS_xxx
4387    - OPENSSL_NO_EC{DH,DSA} merged into OPENSSL_NO_EC
4388    - OPENSSL_NO_RIPEMD160, OPENSSL_NO_RIPEMD merged into OPENSSL_NO_RMD160
4389    - OPENSSL_NO_FP_API merged into OPENSSL_NO_STDIO
4390    - Remove OPENSSL_NO_BIO OPENSSL_NO_BUFFER OPENSSL_NO_CHAIN_VERIFY
4391      OPENSSL_NO_EVP OPENSSL_NO_FIPS_ERR OPENSSL_NO_HASH_COMP
4392      OPENSSL_NO_LHASH OPENSSL_NO_OBJECT OPENSSL_NO_SPEED OPENSSL_NO_STACK
4393      OPENSSL_NO_X509 OPENSSL_NO_X509_VERIFY
4394    - Remove MS_STATIC; it's a relic from platforms <32 bits.
4395
4396    *Rich Salz*
4397
4398  * Cleaned up dead code
4399      Remove all but one '#ifdef undef' which is to be looked at.
4400
4401    *Rich Salz*
4402
4403  * Clean up calling of xxx_free routines.
4404       Just like free(), fix most of the xxx_free routines to accept
4405       NULL.  Remove the non-null checks from callers.  Save much code.
4406
4407    *Rich Salz*
4408
4409  * Add secure heap for storage of private keys (when possible).
4410    Add BIO_s_secmem(), CBIGNUM, etc.
4411    Contributed by Akamai Technologies under our Corporate CLA.
4412
4413    *Rich Salz*
4414
4415  * Experimental support for a new, fast, unbiased prime candidate generator,
4416    bn_probable_prime_dh_coprime(). Not currently used by any prime generator.
4417
4418    *Felix Laurie von Massenbach <felix@erbridge.co.uk>*
4419
4420  * New output format NSS in the sess_id command line tool. This allows
4421    exporting the session id and the master key in NSS keylog format.
4422
4423    *Martin Kaiser <martin@kaiser.cx>*
4424
4425  * Harmonize version and its documentation. -f flag is used to display
4426    compilation flags.
4427
4428    *mancha <mancha1@zoho.com>*
4429
4430  * Fix eckey_priv_encode so it immediately returns an error upon a failure
4431    in i2d_ECPrivateKey.  Thanks to Ted Unangst for feedback on this issue.
4432
4433    *mancha <mancha1@zoho.com>*
4434
4435  * Fix some double frees. These are not thought to be exploitable.
4436
4437    *mancha <mancha1@zoho.com>*
4438
4439  * A missing bounds check in the handling of the TLS heartbeat extension
4440    can be used to reveal up to 64k of memory to a connected client or
4441    server.
4442
4443    Thanks for Neel Mehta of Google Security for discovering this bug and to
4444    Adam Langley <agl@chromium.org> and Bodo Moeller <bmoeller@acm.org> for
4445    preparing the fix ([CVE-2014-0160])
4446
4447    *Adam Langley, Bodo Moeller*
4448
4449  * Fix for the attack described in the paper "Recovering OpenSSL
4450    ECDSA Nonces Using the FLUSH+RELOAD Cache Side-channel Attack"
4451    by Yuval Yarom and Naomi Benger. Details can be obtained from:
4452    <http://eprint.iacr.org/2014/140>
4453
4454    Thanks to Yuval Yarom and Naomi Benger for discovering this
4455    flaw and to Yuval Yarom for supplying a fix ([CVE-2014-0076])
4456
4457    *Yuval Yarom and Naomi Benger*
4458
4459  * Use algorithm specific chains in SSL_CTX_use_certificate_chain_file():
4460    this fixes a limitation in previous versions of OpenSSL.
4461
4462    *Steve Henson*
4463
4464  * Experimental encrypt-then-mac support.
4465
4466    Experimental support for encrypt then mac from
4467    draft-gutmann-tls-encrypt-then-mac-02.txt
4468
4469    To enable it set the appropriate extension number (0x42 for the test
4470    server) using e.g. -DTLSEXT_TYPE_encrypt_then_mac=0x42
4471
4472    For non-compliant peers (i.e. just about everything) this should have no
4473    effect.
4474
4475    WARNING: EXPERIMENTAL, SUBJECT TO CHANGE.
4476
4477    *Steve Henson*
4478
4479  * Add EVP support for key wrapping algorithms, to avoid problems with
4480    existing code the flag EVP_CIPHER_CTX_WRAP_ALLOW has to be set in
4481    the EVP_CIPHER_CTX or an error is returned. Add AES and DES3 wrap
4482    algorithms and include tests cases.
4483
4484    *Steve Henson*
4485
4486  * Extend CMS code to support RSA-PSS signatures and RSA-OAEP for
4487    enveloped data.
4488
4489    *Steve Henson*
4490
4491  * Extended RSA OAEP support via EVP_PKEY API. Options to specify digest,
4492    MGF1 digest and OAEP label.
4493
4494    *Steve Henson*
4495
4496  * Make openssl verify return errors.
4497
4498    *Chris Palmer <palmer@google.com> and Ben Laurie*
4499
4500  * New function ASN1_TIME_diff to calculate the difference between two
4501    ASN1_TIME structures or one structure and the current time.
4502
4503    *Steve Henson*
4504
4505  * Update fips_test_suite to support multiple command line options. New
4506    test to induce all self test errors in sequence and check expected
4507    failures.
4508
4509    *Steve Henson*
4510
4511  * Add FIPS_{rsa,dsa,ecdsa}_{sign,verify} functions which digest and
4512    sign or verify all in one operation.
4513
4514    *Steve Henson*
4515
4516  * Add fips_algvs: a multicall fips utility incorporating all the algorithm
4517    test programs and fips_test_suite. Includes functionality to parse
4518    the minimal script output of fipsalgest.pl directly.
4519
4520    *Steve Henson*
4521
4522  * Add authorisation parameter to FIPS_module_mode_set().
4523
4524    *Steve Henson*
4525
4526  * Add FIPS selftest for ECDH algorithm using P-224 and B-233 curves.
4527
4528    *Steve Henson*
4529
4530  * Use separate DRBG fields for internal and external flags. New function
4531    FIPS_drbg_health_check() to perform on demand health checking. Add
4532    generation tests to fips_test_suite with reduced health check interval to
4533    demonstrate periodic health checking. Add "nodh" option to
4534    fips_test_suite to skip very slow DH test.
4535
4536    *Steve Henson*
4537
4538  * New function FIPS_get_cipherbynid() to lookup FIPS supported ciphers
4539    based on NID.
4540
4541    *Steve Henson*
4542
4543  * More extensive health check for DRBG checking many more failure modes.
4544    New function FIPS_selftest_drbg_all() to handle every possible DRBG
4545    combination: call this in fips_test_suite.
4546
4547    *Steve Henson*
4548
4549  * Add support for canonical generation of DSA parameter 'g'. See
4550    FIPS 186-3 A.2.3.
4551
4552  * Add support for HMAC DRBG from SP800-90. Update DRBG algorithm test and
4553    POST to handle HMAC cases.
4554
4555    *Steve Henson*
4556
4557  * Add functions FIPS_module_version() and FIPS_module_version_text()
4558    to return numerical and string versions of the FIPS module number.
4559
4560    *Steve Henson*
4561
4562  * Rename FIPS_mode_set and FIPS_mode to FIPS_module_mode_set and
4563    FIPS_module_mode. FIPS_mode and FIPS_mode_set will be implemented
4564    outside the validated module in the FIPS capable OpenSSL.
4565
4566    *Steve Henson*
4567
4568  * Minor change to DRBG entropy callback semantics. In some cases
4569    there is no multiple of the block length between min_len and
4570    max_len. Allow the callback to return more than max_len bytes
4571    of entropy but discard any extra: it is the callback's responsibility
4572    to ensure that the extra data discarded does not impact the
4573    requested amount of entropy.
4574
4575    *Steve Henson*
4576
4577  * Add PRNG security strength checks to RSA, DSA and ECDSA using
4578    information in FIPS186-3, SP800-57 and SP800-131A.
4579
4580    *Steve Henson*
4581
4582  * CCM support via EVP. Interface is very similar to GCM case except we
4583    must supply all data in one chunk (i.e. no update, final) and the
4584    message length must be supplied if AAD is used. Add algorithm test
4585    support.
4586
4587    *Steve Henson*
4588
4589  * Initial version of POST overhaul. Add POST callback to allow the status
4590    of POST to be monitored and/or failures induced. Modify fips_test_suite
4591    to use callback. Always run all selftests even if one fails.
4592
4593    *Steve Henson*
4594
4595  * XTS support including algorithm test driver in the fips_gcmtest program.
4596    Note: this does increase the maximum key length from 32 to 64 bytes but
4597    there should be no binary compatibility issues as existing applications
4598    will never use XTS mode.
4599
4600    *Steve Henson*
4601
4602  * Extensive reorganisation of FIPS PRNG behaviour. Remove all dependencies
4603    to OpenSSL RAND code and replace with a tiny FIPS RAND API which also
4604    performs algorithm blocking for unapproved PRNG types. Also do not
4605    set PRNG type in FIPS_mode_set(): leave this to the application.
4606    Add default OpenSSL DRBG handling: sets up FIPS PRNG and seeds with
4607    the standard OpenSSL PRNG: set additional data to a date time vector.
4608
4609    *Steve Henson*
4610
4611  * Rename old X9.31 PRNG functions of the form `FIPS_rand*` to `FIPS_x931*`.
4612    This shouldn't present any incompatibility problems because applications
4613    shouldn't be using these directly and any that are will need to rethink
4614    anyway as the X9.31 PRNG is now deprecated by FIPS 140-2
4615
4616    *Steve Henson*
4617
4618  * Extensive self tests and health checking required by SP800-90 DRBG.
4619    Remove strength parameter from FIPS_drbg_instantiate and always
4620    instantiate at maximum supported strength.
4621
4622    *Steve Henson*
4623
4624  * Add ECDH code to fips module and fips_ecdhvs for primitives only testing.
4625
4626    *Steve Henson*
4627
4628  * New algorithm test program fips_dhvs to handle DH primitives only testing.
4629
4630    *Steve Henson*
4631
4632  * New function DH_compute_key_padded() to compute a DH key and pad with
4633    leading zeroes if needed: this complies with SP800-56A et al.
4634
4635    *Steve Henson*
4636
4637  * Initial implementation of SP800-90 DRBGs for Hash and CTR. Not used by
4638    anything, incomplete, subject to change and largely untested at present.
4639
4640    *Steve Henson*
4641
4642  * Modify fipscanisteronly build option to only build the necessary object
4643    files by filtering FIPS_EX_OBJ through a perl script in crypto/Makefile.
4644
4645    *Steve Henson*
4646
4647  * Add experimental option FIPSSYMS to give all symbols in
4648    fipscanister.o and FIPS or fips prefix. This will avoid
4649    conflicts with future versions of OpenSSL. Add perl script
4650    util/fipsas.pl to preprocess assembly language source files
4651    and rename any affected symbols.
4652
4653    *Steve Henson*
4654
4655  * Add selftest checks and algorithm block of non-fips algorithms in
4656    FIPS mode. Remove DES2 from selftests.
4657
4658    *Steve Henson*
4659
4660  * Add ECDSA code to fips module. Add tiny fips_ecdsa_check to just
4661    return internal method without any ENGINE dependencies. Add new
4662    tiny fips sign and verify functions.
4663
4664    *Steve Henson*
4665
4666  * New build option no-ec2m to disable characteristic 2 code.
4667
4668    *Steve Henson*
4669
4670  * New build option "fipscanisteronly". This only builds fipscanister.o
4671    and (currently) associated fips utilities. Uses the file Makefile.fips
4672    instead of Makefile.org as the prototype.
4673
4674    *Steve Henson*
4675
4676  * Add some FIPS mode restrictions to GCM. Add internal IV generator.
4677    Update fips_gcmtest to use IV generator.
4678
4679    *Steve Henson*
4680
4681  * Initial, experimental EVP support for AES-GCM. AAD can be input by
4682    setting output buffer to NULL. The `*Final` function must be
4683    called although it will not retrieve any additional data. The tag
4684    can be set or retrieved with a ctrl. The IV length is by default 12
4685    bytes (96 bits) but can be set to an alternative value. If the IV
4686    length exceeds the maximum IV length (currently 16 bytes) it cannot be
4687    set before the key.
4688
4689    *Steve Henson*
4690
4691  * New flag in ciphers: EVP_CIPH_FLAG_CUSTOM_CIPHER. This means the
4692    underlying do_cipher function handles all cipher semantics itself
4693    including padding and finalisation. This is useful if (for example)
4694    an ENGINE cipher handles block padding itself. The behaviour of
4695    do_cipher is subtly changed if this flag is set: the return value
4696    is the number of characters written to the output buffer (zero is
4697    no longer an error code) or a negative error code. Also if the
4698    input buffer is NULL and length 0 finalisation should be performed.
4699
4700    *Steve Henson*
4701
4702  * If a candidate issuer certificate is already part of the constructed
4703    path ignore it: new debug notification X509_V_ERR_PATH_LOOP for this case.
4704
4705    *Steve Henson*
4706
4707  * Improve forward-security support: add functions
4708
4709            void SSL_CTX_set_not_resumable_session_callback(
4710                     SSL_CTX *ctx, int (*cb)(SSL *ssl, int is_forward_secure))
4711            void SSL_set_not_resumable_session_callback(
4712                     SSL *ssl, int (*cb)(SSL *ssl, int is_forward_secure))
4713
4714    for use by SSL/TLS servers; the callback function will be called whenever a
4715    new session is created, and gets to decide whether the session may be
4716    cached to make it resumable (return 0) or not (return 1).  (As by the
4717    SSL/TLS protocol specifications, the session_id sent by the server will be
4718    empty to indicate that the session is not resumable; also, the server will
4719    not generate RFC 4507 (RFC 5077) session tickets.)
4720
4721    A simple reasonable callback implementation is to return is_forward_secure.
4722    This parameter will be set to 1 or 0 depending on the ciphersuite selected
4723    by the SSL/TLS server library, indicating whether it can provide forward
4724    security.
4725
4726    *Emilia Käsper <emilia.kasper@esat.kuleuven.be> (Google)*
4727
4728  * New -verify_name option in command line utilities to set verification
4729    parameters by name.
4730
4731    *Steve Henson*
4732
4733  * Initial CMAC implementation. WARNING: EXPERIMENTAL, API MAY CHANGE.
4734    Add CMAC pkey methods.
4735
4736    *Steve Henson*
4737
4738  * Experimental renegotiation in s_server -www mode. If the client
4739    browses /reneg connection is renegotiated. If /renegcert it is
4740    renegotiated requesting a certificate.
4741
4742    *Steve Henson*
4743
4744  * Add an "external" session cache for debugging purposes to s_server. This
4745    should help trace issues which normally are only apparent in deployed
4746    multi-process servers.
4747
4748    *Steve Henson*
4749
4750  * Extensive audit of libcrypto with DEBUG_UNUSED. Fix many cases where
4751    return value is ignored. NB. The functions RAND_add(), RAND_seed(),
4752    BIO_set_cipher() and some obscure PEM functions were changed so they
4753    can now return an error. The RAND changes required a change to the
4754    RAND_METHOD structure.
4755
4756    *Steve Henson*
4757
4758  * New macro `__owur` for "OpenSSL Warn Unused Result". This makes use of
4759    a gcc attribute to warn if the result of a function is ignored. This
4760    is enable if DEBUG_UNUSED is set. Add to several functions in evp.h
4761    whose return value is often ignored.
4762
4763    *Steve Henson*
4764
4765  * New -noct, -requestct, -requirect and -ctlogfile options for s_client.
4766    These allow SCTs (signed certificate timestamps) to be requested and
4767    validated when establishing a connection.
4768
4769    *Rob Percival <robpercival@google.com>*
4770
4771 OpenSSL 1.0.2
4772 -------------
4773
4774 ### Changes between 1.0.2s and 1.0.2t [10 Sep 2019]
4775
4776  * For built-in EC curves, ensure an EC_GROUP built from the curve name is
4777    used even when parsing explicit parameters, when loading a encoded key
4778    or calling `EC_GROUP_new_from_ecpkparameters()`/
4779    `EC_GROUP_new_from_ecparameters()`.
4780    This prevents bypass of security hardening and performance gains,
4781    especially for curves with specialized EC_METHODs.
4782    By default, if a key encoded with explicit parameters is loaded and later
4783    encoded, the output is still encoded with explicit parameters, even if
4784    internally a "named" EC_GROUP is used for computation.
4785
4786    *Nicola Tuveri*
4787
4788  * Compute ECC cofactors if not provided during EC_GROUP construction. Before
4789    this change, EC_GROUP_set_generator would accept order and/or cofactor as
4790    NULL. After this change, only the cofactor parameter can be NULL. It also
4791    does some minimal sanity checks on the passed order.
4792    ([CVE-2019-1547])
4793
4794    *Billy Bob Brumley*
4795
4796  * Fixed a padding oracle in PKCS7_dataDecode and CMS_decrypt_set1_pkey.
4797    An attack is simple, if the first CMS_recipientInfo is valid but the
4798    second CMS_recipientInfo is chosen ciphertext. If the second
4799    recipientInfo decodes to PKCS #1 v1.5 form plaintext, the correct
4800    encryption key will be replaced by garbage, and the message cannot be
4801    decoded, but if the RSA decryption fails, the correct encryption key is
4802    used and the recipient will not notice the attack.
4803    As a work around for this potential attack the length of the decrypted
4804    key must be equal to the cipher default key length, in case the
4805    certifiate is not given and all recipientInfo are tried out.
4806    The old behaviour can be re-enabled in the CMS code by setting the
4807    CMS_DEBUG_DECRYPT flag.
4808    ([CVE-2019-1563])
4809
4810    *Bernd Edlinger*
4811
4812  * Document issue with installation paths in diverse Windows builds
4813
4814    '/usr/local/ssl' is an unsafe prefix for location to install OpenSSL
4815    binaries and run-time config file.
4816    ([CVE-2019-1552])
4817
4818    *Richard Levitte*
4819
4820 ### Changes between 1.0.2r and 1.0.2s [28 May 2019]
4821
4822  * Change the default RSA, DSA and DH size to 2048 bit instead of 1024.
4823    This changes the size when using the `genpkey` command when no size is given.
4824    It fixes an omission in earlier changes that changed all RSA, DSA and DH
4825    generation commands to use 2048 bits by default.
4826
4827    *Kurt Roeckx*
4828
4829  * Add FIPS support for Android Arm 64-bit
4830
4831    Support for Android Arm 64-bit was added to the OpenSSL FIPS Object
4832    Module in Version 2.0.10. For some reason, the corresponding target
4833    'android64-aarch64' was missing OpenSSL 1.0.2, whence it could not be
4834    built with FIPS support on Android Arm 64-bit. This omission has been
4835    fixed.
4836
4837    *Matthias St. Pierre*
4838
4839 ### Changes between 1.0.2q and 1.0.2r [26 Feb 2019]
4840
4841  * 0-byte record padding oracle
4842
4843    If an application encounters a fatal protocol error and then calls
4844    SSL_shutdown() twice (once to send a close_notify, and once to receive one)
4845    then OpenSSL can respond differently to the calling application if a 0 byte
4846    record is received with invalid padding compared to if a 0 byte record is
4847    received with an invalid MAC. If the application then behaves differently
4848    based on that in a way that is detectable to the remote peer, then this
4849    amounts to a padding oracle that could be used to decrypt data.
4850
4851    In order for this to be exploitable "non-stitched" ciphersuites must be in
4852    use. Stitched ciphersuites are optimised implementations of certain
4853    commonly used ciphersuites. Also the application must call SSL_shutdown()
4854    twice even if a protocol error has occurred (applications should not do
4855    this but some do anyway).
4856
4857    This issue was discovered by Juraj Somorovsky, Robert Merget and Nimrod
4858    Aviram, with additional investigation by Steven Collison and Andrew
4859    Hourselt. It was reported to OpenSSL on 10th December 2018.
4860    ([CVE-2019-1559])
4861
4862    *Matt Caswell*
4863
4864  * Move strictness check from EVP_PKEY_asn1_new() to EVP_PKEY_asn1_add0().
4865
4866    *Richard Levitte*
4867
4868 ### Changes between 1.0.2p and 1.0.2q [20 Nov 2018]
4869
4870  * Microarchitecture timing vulnerability in ECC scalar multiplication
4871
4872    OpenSSL ECC scalar multiplication, used in e.g. ECDSA and ECDH, has been
4873    shown to be vulnerable to a microarchitecture timing side channel attack.
4874    An attacker with sufficient access to mount local timing attacks during
4875    ECDSA signature generation could recover the private key.
4876
4877    This issue was reported to OpenSSL on 26th October 2018 by Alejandro
4878    Cabrera Aldaya, Billy Brumley, Sohaib ul Hassan, Cesar Pereida Garcia and
4879    Nicola Tuveri.
4880    ([CVE-2018-5407])
4881
4882    *Billy Brumley*
4883
4884  * Timing vulnerability in DSA signature generation
4885
4886    The OpenSSL DSA signature algorithm has been shown to be vulnerable to a
4887    timing side channel attack. An attacker could use variations in the signing
4888    algorithm to recover the private key.
4889
4890    This issue was reported to OpenSSL on 16th October 2018 by Samuel Weiser.
4891    ([CVE-2018-0734])
4892
4893    *Paul Dale*
4894
4895  * Resolve a compatibility issue in EC_GROUP handling with the FIPS Object
4896    Module, accidentally introduced while backporting security fixes from the
4897    development branch and hindering the use of ECC in FIPS mode.
4898
4899    *Nicola Tuveri*
4900
4901 ### Changes between 1.0.2o and 1.0.2p [14 Aug 2018]
4902
4903  * Client DoS due to large DH parameter
4904
4905    During key agreement in a TLS handshake using a DH(E) based ciphersuite a
4906    malicious server can send a very large prime value to the client. This will
4907    cause the client to spend an unreasonably long period of time generating a
4908    key for this prime resulting in a hang until the client has finished. This
4909    could be exploited in a Denial Of Service attack.
4910
4911    This issue was reported to OpenSSL on 5th June 2018 by Guido Vranken
4912    ([CVE-2018-0732])
4913
4914    *Guido Vranken*
4915
4916  * Cache timing vulnerability in RSA Key Generation
4917
4918    The OpenSSL RSA Key generation algorithm has been shown to be vulnerable to
4919    a cache timing side channel attack. An attacker with sufficient access to
4920    mount cache timing attacks during the RSA key generation process could
4921    recover the private key.
4922
4923    This issue was reported to OpenSSL on 4th April 2018 by Alejandro Cabrera
4924    Aldaya, Billy Brumley, Cesar Pereida Garcia and Luis Manuel Alvarez Tapia.
4925    ([CVE-2018-0737])
4926
4927    *Billy Brumley*
4928
4929  * Make EVP_PKEY_asn1_new() a bit stricter about its input.  A NULL pem_str
4930    parameter is no longer accepted, as it leads to a corrupt table.  NULL
4931    pem_str is reserved for alias entries only.
4932
4933    *Richard Levitte*
4934
4935  * Revert blinding in ECDSA sign and instead make problematic addition
4936    length-invariant. Switch even to fixed-length Montgomery multiplication.
4937
4938    *Andy Polyakov*
4939
4940  * Change generating and checking of primes so that the error rate of not
4941    being prime depends on the intended use based on the size of the input.
4942    For larger primes this will result in more rounds of Miller-Rabin.
4943    The maximal error rate for primes with more than 1080 bits is lowered
4944    to 2^-128.
4945
4946    *Kurt Roeckx, Annie Yousar*
4947
4948  * Increase the number of Miller-Rabin rounds for DSA key generating to 64.
4949
4950    *Kurt Roeckx*
4951
4952  * Add blinding to ECDSA and DSA signatures to protect against side channel
4953    attacks discovered by Keegan Ryan (NCC Group).
4954
4955    *Matt Caswell*
4956
4957  * When unlocking a pass phrase protected PEM file or PKCS#8 container, we
4958    now allow empty (zero character) pass phrases.
4959
4960    *Richard Levitte*
4961
4962  * Certificate time validation (X509_cmp_time) enforces stricter
4963    compliance with RFC 5280. Fractional seconds and timezone offsets
4964    are no longer allowed.
4965
4966    *Emilia Käsper*
4967
4968 ### Changes between 1.0.2n and 1.0.2o [27 Mar 2018]
4969
4970  * Constructed ASN.1 types with a recursive definition could exceed the stack
4971
4972    Constructed ASN.1 types with a recursive definition (such as can be found
4973    in PKCS7) could eventually exceed the stack given malicious input with
4974    excessive recursion. This could result in a Denial Of Service attack. There
4975    are no such structures used within SSL/TLS that come from untrusted sources
4976    so this is considered safe.
4977
4978    This issue was reported to OpenSSL on 4th January 2018 by the OSS-fuzz
4979    project.
4980    ([CVE-2018-0739])
4981
4982    *Matt Caswell*
4983
4984 ### Changes between 1.0.2m and 1.0.2n [7 Dec 2017]
4985
4986  * Read/write after SSL object in error state
4987
4988    OpenSSL 1.0.2 (starting from version 1.0.2b) introduced an "error state"
4989    mechanism. The intent was that if a fatal error occurred during a handshake
4990    then OpenSSL would move into the error state and would immediately fail if
4991    you attempted to continue the handshake. This works as designed for the
4992    explicit handshake functions (SSL_do_handshake(), SSL_accept() and
4993    SSL_connect()), however due to a bug it does not work correctly if
4994    SSL_read() or SSL_write() is called directly. In that scenario, if the
4995    handshake fails then a fatal error will be returned in the initial function
4996    call. If SSL_read()/SSL_write() is subsequently called by the application
4997    for the same SSL object then it will succeed and the data is passed without
4998    being decrypted/encrypted directly from the SSL/TLS record layer.
4999
5000    In order to exploit this issue an application bug would have to be present
5001    that resulted in a call to SSL_read()/SSL_write() being issued after having
5002    already received a fatal error.
5003
5004    This issue was reported to OpenSSL by David Benjamin (Google).
5005    ([CVE-2017-3737])
5006
5007    *Matt Caswell*
5008
5009  * rsaz_1024_mul_avx2 overflow bug on x86_64
5010
5011    There is an overflow bug in the AVX2 Montgomery multiplication procedure
5012    used in exponentiation with 1024-bit moduli. No EC algorithms are affected.
5013    Analysis suggests that attacks against RSA and DSA as a result of this
5014    defect would be very difficult to perform and are not believed likely.
5015    Attacks against DH1024 are considered just feasible, because most of the
5016    work necessary to deduce information about a private key may be performed
5017    offline. The amount of resources required for such an attack would be
5018    significant. However, for an attack on TLS to be meaningful, the server
5019    would have to share the DH1024 private key among multiple clients, which is
5020    no longer an option since CVE-2016-0701.
5021
5022    This only affects processors that support the AVX2 but not ADX extensions
5023    like Intel Haswell (4th generation).
5024
5025    This issue was reported to OpenSSL by David Benjamin (Google). The issue
5026    was originally found via the OSS-Fuzz project.
5027    ([CVE-2017-3738])
5028
5029    *Andy Polyakov*
5030
5031 ### Changes between 1.0.2l and 1.0.2m [2 Nov 2017]
5032
5033  * bn_sqrx8x_internal carry bug on x86_64
5034
5035    There is a carry propagating bug in the x86_64 Montgomery squaring
5036    procedure. No EC algorithms are affected. Analysis suggests that attacks
5037    against RSA and DSA as a result of this defect would be very difficult to
5038    perform and are not believed likely. Attacks against DH are considered just
5039    feasible (although very difficult) because most of the work necessary to
5040    deduce information about a private key may be performed offline. The amount
5041    of resources required for such an attack would be very significant and
5042    likely only accessible to a limited number of attackers. An attacker would
5043    additionally need online access to an unpatched system using the target
5044    private key in a scenario with persistent DH parameters and a private
5045    key that is shared between multiple clients.
5046
5047    This only affects processors that support the BMI1, BMI2 and ADX extensions
5048    like Intel Broadwell (5th generation) and later or AMD Ryzen.
5049
5050    This issue was reported to OpenSSL by the OSS-Fuzz project.
5051    ([CVE-2017-3736])
5052
5053    *Andy Polyakov*
5054
5055  * Malformed X.509 IPAddressFamily could cause OOB read
5056
5057    If an X.509 certificate has a malformed IPAddressFamily extension,
5058    OpenSSL could do a one-byte buffer overread. The most likely result
5059    would be an erroneous display of the certificate in text format.
5060
5061    This issue was reported to OpenSSL by the OSS-Fuzz project.
5062
5063    *Rich Salz*
5064
5065 ### Changes between 1.0.2k and 1.0.2l [25 May 2017]
5066
5067  * Have 'config' recognise 64-bit mingw and choose 'mingw64' as the target
5068    platform rather than 'mingw'.
5069
5070    *Richard Levitte*
5071
5072 ### Changes between 1.0.2j and 1.0.2k [26 Jan 2017]
5073
5074  * Truncated packet could crash via OOB read
5075
5076    If one side of an SSL/TLS path is running on a 32-bit host and a specific
5077    cipher is being used, then a truncated packet can cause that host to
5078    perform an out-of-bounds read, usually resulting in a crash.
5079
5080    This issue was reported to OpenSSL by Robert Święcki of Google.
5081    ([CVE-2017-3731])
5082
5083    *Andy Polyakov*
5084
5085  * BN_mod_exp may produce incorrect results on x86_64
5086
5087    There is a carry propagating bug in the x86_64 Montgomery squaring
5088    procedure. No EC algorithms are affected. Analysis suggests that attacks
5089    against RSA and DSA as a result of this defect would be very difficult to
5090    perform and are not believed likely. Attacks against DH are considered just
5091    feasible (although very difficult) because most of the work necessary to
5092    deduce information about a private key may be performed offline. The amount
5093    of resources required for such an attack would be very significant and
5094    likely only accessible to a limited number of attackers. An attacker would
5095    additionally need online access to an unpatched system using the target
5096    private key in a scenario with persistent DH parameters and a private
5097    key that is shared between multiple clients. For example this can occur by
5098    default in OpenSSL DHE based SSL/TLS ciphersuites. Note: This issue is very
5099    similar to CVE-2015-3193 but must be treated as a separate problem.
5100
5101    This issue was reported to OpenSSL by the OSS-Fuzz project.
5102    ([CVE-2017-3732])
5103
5104    *Andy Polyakov*
5105
5106  * Montgomery multiplication may produce incorrect results
5107
5108    There is a carry propagating bug in the Broadwell-specific Montgomery
5109    multiplication procedure that handles input lengths divisible by, but
5110    longer than 256 bits. Analysis suggests that attacks against RSA, DSA
5111    and DH private keys are impossible. This is because the subroutine in
5112    question is not used in operations with the private key itself and an input
5113    of the attacker's direct choice. Otherwise the bug can manifest itself as
5114    transient authentication and key negotiation failures or reproducible
5115    erroneous outcome of public-key operations with specially crafted input.
5116    Among EC algorithms only Brainpool P-512 curves are affected and one
5117    presumably can attack ECDH key negotiation. Impact was not analyzed in
5118    detail, because pre-requisites for attack are considered unlikely. Namely
5119    multiple clients have to choose the curve in question and the server has to
5120    share the private key among them, neither of which is default behaviour.
5121    Even then only clients that chose the curve will be affected.
5122
5123    This issue was publicly reported as transient failures and was not
5124    initially recognized as a security issue. Thanks to Richard Morgan for
5125    providing reproducible case.
5126    ([CVE-2016-7055])
5127
5128    *Andy Polyakov*
5129
5130  * OpenSSL now fails if it receives an unrecognised record type in TLS1.0
5131    or TLS1.1. Previously this only happened in SSLv3 and TLS1.2. This is to
5132    prevent issues where no progress is being made and the peer continually
5133    sends unrecognised record types, using up resources processing them.
5134
5135    *Matt Caswell*
5136
5137 ### Changes between 1.0.2i and 1.0.2j [26 Sep 2016]
5138
5139  * Missing CRL sanity check
5140
5141    A bug fix which included a CRL sanity check was added to OpenSSL 1.1.0
5142    but was omitted from OpenSSL 1.0.2i. As a result any attempt to use
5143    CRLs in OpenSSL 1.0.2i will crash with a null pointer exception.
5144
5145    This issue only affects the OpenSSL 1.0.2i
5146    ([CVE-2016-7052])
5147
5148    *Matt Caswell*
5149
5150 ### Changes between 1.0.2h and 1.0.2i [22 Sep 2016]
5151
5152  * OCSP Status Request extension unbounded memory growth
5153
5154    A malicious client can send an excessively large OCSP Status Request
5155    extension. If that client continually requests renegotiation, sending a
5156    large OCSP Status Request extension each time, then there will be unbounded
5157    memory growth on the server. This will eventually lead to a Denial Of
5158    Service attack through memory exhaustion. Servers with a default
5159    configuration are vulnerable even if they do not support OCSP. Builds using
5160    the "no-ocsp" build time option are not affected.
5161
5162    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
5163    ([CVE-2016-6304])
5164
5165    *Matt Caswell*
5166
5167  * In order to mitigate the SWEET32 attack, the DES ciphers were moved from
5168    HIGH to MEDIUM.
5169
5170    This issue was reported to OpenSSL Karthikeyan Bhargavan and Gaetan
5171    Leurent (INRIA)
5172    ([CVE-2016-2183])
5173
5174    *Rich Salz*
5175
5176  * OOB write in MDC2_Update()
5177
5178    An overflow can occur in MDC2_Update() either if called directly or
5179    through the EVP_DigestUpdate() function using MDC2. If an attacker
5180    is able to supply very large amounts of input data after a previous
5181    call to EVP_EncryptUpdate() with a partial block then a length check
5182    can overflow resulting in a heap corruption.
5183
5184    The amount of data needed is comparable to SIZE_MAX which is impractical
5185    on most platforms.
5186
5187    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
5188    ([CVE-2016-6303])
5189
5190    *Stephen Henson*
5191
5192  * Malformed SHA512 ticket DoS
5193
5194    If a server uses SHA512 for TLS session ticket HMAC it is vulnerable to a
5195    DoS attack where a malformed ticket will result in an OOB read which will
5196    ultimately crash.
5197
5198    The use of SHA512 in TLS session tickets is comparatively rare as it requires
5199    a custom server callback and ticket lookup mechanism.
5200
5201    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
5202    ([CVE-2016-6302])
5203
5204    *Stephen Henson*
5205
5206  * OOB write in BN_bn2dec()
5207
5208    The function BN_bn2dec() does not check the return value of BN_div_word().
5209    This can cause an OOB write if an application uses this function with an
5210    overly large BIGNUM. This could be a problem if an overly large certificate
5211    or CRL is printed out from an untrusted source. TLS is not affected because
5212    record limits will reject an oversized certificate before it is parsed.
5213
5214    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
5215    ([CVE-2016-2182])
5216
5217    *Stephen Henson*
5218
5219  * OOB read in TS_OBJ_print_bio()
5220
5221    The function TS_OBJ_print_bio() misuses OBJ_obj2txt(): the return value is
5222    the total length the OID text representation would use and not the amount
5223    of data written. This will result in OOB reads when large OIDs are
5224    presented.
5225
5226    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
5227    ([CVE-2016-2180])
5228
5229    *Stephen Henson*
5230
5231  * Pointer arithmetic undefined behaviour
5232
5233    Avoid some undefined pointer arithmetic
5234
5235    A common idiom in the codebase is to check limits in the following manner:
5236    "p + len > limit"
5237
5238    Where "p" points to some malloc'd data of SIZE bytes and
5239    limit == p + SIZE
5240
5241    "len" here could be from some externally supplied data (e.g. from a TLS
5242    message).
5243
5244    The rules of C pointer arithmetic are such that "p + len" is only well
5245    defined where len <= SIZE. Therefore the above idiom is actually
5246    undefined behaviour.
5247
5248    For example this could cause problems if some malloc implementation
5249    provides an address for "p" such that "p + len" actually overflows for
5250    values of len that are too big and therefore p + len < limit.
5251
5252    This issue was reported to OpenSSL by Guido Vranken
5253    ([CVE-2016-2177])
5254
5255    *Matt Caswell*
5256
5257  * Constant time flag not preserved in DSA signing
5258
5259    Operations in the DSA signing algorithm should run in constant time in
5260    order to avoid side channel attacks. A flaw in the OpenSSL DSA
5261    implementation means that a non-constant time codepath is followed for
5262    certain operations. This has been demonstrated through a cache-timing
5263    attack to be sufficient for an attacker to recover the private DSA key.
5264
5265    This issue was reported by César Pereida (Aalto University), Billy Brumley
5266    (Tampere University of Technology), and Yuval Yarom (The University of
5267    Adelaide and NICTA).
5268    ([CVE-2016-2178])
5269
5270    *César Pereida*
5271
5272  * DTLS buffered message DoS
5273
5274    In a DTLS connection where handshake messages are delivered out-of-order
5275    those messages that OpenSSL is not yet ready to process will be buffered
5276    for later use. Under certain circumstances, a flaw in the logic means that
5277    those messages do not get removed from the buffer even though the handshake
5278    has been completed. An attacker could force up to approx. 15 messages to
5279    remain in the buffer when they are no longer required. These messages will
5280    be cleared when the DTLS connection is closed. The default maximum size for
5281    a message is 100k. Therefore the attacker could force an additional 1500k
5282    to be consumed per connection. By opening many simulataneous connections an
5283    attacker could cause a DoS attack through memory exhaustion.
5284
5285    This issue was reported to OpenSSL by Quan Luo.
5286    ([CVE-2016-2179])
5287
5288    *Matt Caswell*
5289
5290  * DTLS replay protection DoS
5291
5292    A flaw in the DTLS replay attack protection mechanism means that records
5293    that arrive for future epochs update the replay protection "window" before
5294    the MAC for the record has been validated. This could be exploited by an
5295    attacker by sending a record for the next epoch (which does not have to
5296    decrypt or have a valid MAC), with a very large sequence number. This means
5297    that all subsequent legitimate packets are dropped causing a denial of
5298    service for a specific DTLS connection.
5299
5300    This issue was reported to OpenSSL by the OCAP audit team.
5301    ([CVE-2016-2181])
5302
5303    *Matt Caswell*
5304
5305  * Certificate message OOB reads
5306
5307    In OpenSSL 1.0.2 and earlier some missing message length checks can result
5308    in OOB reads of up to 2 bytes beyond an allocated buffer. There is a
5309    theoretical DoS risk but this has not been observed in practice on common
5310    platforms.
5311
5312    The messages affected are client certificate, client certificate request
5313    and server certificate. As a result the attack can only be performed
5314    against a client or a server which enables client authentication.
5315
5316    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
5317    ([CVE-2016-6306])
5318
5319    *Stephen Henson*
5320
5321 ### Changes between 1.0.2g and 1.0.2h [3 May 2016]
5322
5323  * Prevent padding oracle in AES-NI CBC MAC check
5324
5325    A MITM attacker can use a padding oracle attack to decrypt traffic
5326    when the connection uses an AES CBC cipher and the server support
5327    AES-NI.
5328
5329    This issue was introduced as part of the fix for Lucky 13 padding
5330    attack ([CVE-2013-0169]). The padding check was rewritten to be in
5331    constant time by making sure that always the same bytes are read and
5332    compared against either the MAC or padding bytes. But it no longer
5333    checked that there was enough data to have both the MAC and padding
5334    bytes.
5335
5336    This issue was reported by Juraj Somorovsky using TLS-Attacker.
5337
5338    *Kurt Roeckx*
5339
5340  * Fix EVP_EncodeUpdate overflow
5341
5342    An overflow can occur in the EVP_EncodeUpdate() function which is used for
5343    Base64 encoding of binary data. If an attacker is able to supply very large
5344    amounts of input data then a length check can overflow resulting in a heap
5345    corruption.
5346
5347    Internally to OpenSSL the EVP_EncodeUpdate() function is primarily used by
5348    the `PEM_write_bio*` family of functions. These are mainly used within the
5349    OpenSSL command line applications, so any application which processes data
5350    from an untrusted source and outputs it as a PEM file should be considered
5351    vulnerable to this issue. User applications that call these APIs directly
5352    with large amounts of untrusted data may also be vulnerable.
5353
5354    This issue was reported by Guido Vranken.
5355    ([CVE-2016-2105])
5356
5357    *Matt Caswell*
5358
5359  * Fix EVP_EncryptUpdate overflow
5360
5361    An overflow can occur in the EVP_EncryptUpdate() function. If an attacker
5362    is able to supply very large amounts of input data after a previous call to
5363    EVP_EncryptUpdate() with a partial block then a length check can overflow
5364    resulting in a heap corruption. Following an analysis of all OpenSSL
5365    internal usage of the EVP_EncryptUpdate() function all usage is one of two
5366    forms. The first form is where the EVP_EncryptUpdate() call is known to be
5367    the first called function after an EVP_EncryptInit(), and therefore that
5368    specific call must be safe. The second form is where the length passed to
5369    EVP_EncryptUpdate() can be seen from the code to be some small value and
5370    therefore there is no possibility of an overflow. Since all instances are
5371    one of these two forms, it is believed that there can be no overflows in
5372    internal code due to this problem. It should be noted that
5373    EVP_DecryptUpdate() can call EVP_EncryptUpdate() in certain code paths.
5374    Also EVP_CipherUpdate() is a synonym for EVP_EncryptUpdate(). All instances
5375    of these calls have also been analysed too and it is believed there are no
5376    instances in internal usage where an overflow could occur.
5377
5378    This issue was reported by Guido Vranken.
5379    ([CVE-2016-2106])
5380
5381    *Matt Caswell*
5382
5383  * Prevent ASN.1 BIO excessive memory allocation
5384
5385    When ASN.1 data is read from a BIO using functions such as d2i_CMS_bio()
5386    a short invalid encoding can cause allocation of large amounts of memory
5387    potentially consuming excessive resources or exhausting memory.
5388
5389    Any application parsing untrusted data through d2i BIO functions is
5390    affected. The memory based functions such as d2i_X509() are *not* affected.
5391    Since the memory based functions are used by the TLS library, TLS
5392    applications are not affected.
5393
5394    This issue was reported by Brian Carpenter.
5395    ([CVE-2016-2109])
5396
5397    *Stephen Henson*
5398
5399  * EBCDIC overread
5400
5401    ASN1 Strings that are over 1024 bytes can cause an overread in applications
5402    using the X509_NAME_oneline() function on EBCDIC systems. This could result
5403    in arbitrary stack data being returned in the buffer.
5404
5405    This issue was reported by Guido Vranken.
5406    ([CVE-2016-2176])
5407
5408    *Matt Caswell*
5409
5410  * Modify behavior of ALPN to invoke callback after SNI/servername
5411    callback, such that updates to the SSL_CTX affect ALPN.
5412
5413    *Todd Short*
5414
5415  * Remove LOW from the DEFAULT cipher list.  This removes singles DES from the
5416    default.
5417
5418    *Kurt Roeckx*
5419
5420  * Only remove the SSLv2 methods with the no-ssl2-method option. When the
5421    methods are enabled and ssl2 is disabled the methods return NULL.
5422
5423    *Kurt Roeckx*
5424
5425 ### Changes between 1.0.2f and 1.0.2g [1 Mar 2016]
5426
5427 * Disable weak ciphers in SSLv3 and up in default builds of OpenSSL.
5428   Builds that are not configured with "enable-weak-ssl-ciphers" will not
5429   provide any "EXPORT" or "LOW" strength ciphers.
5430
5431   *Viktor Dukhovni*
5432
5433 * Disable SSLv2 default build, default negotiation and weak ciphers.  SSLv2
5434   is by default disabled at build-time.  Builds that are not configured with
5435   "enable-ssl2" will not support SSLv2.  Even if "enable-ssl2" is used,
5436   users who want to negotiate SSLv2 via the version-flexible SSLv23_method()
5437   will need to explicitly call either of:
5438
5439       SSL_CTX_clear_options(ctx, SSL_OP_NO_SSLv2);
5440   or
5441       SSL_clear_options(ssl, SSL_OP_NO_SSLv2);
5442
5443   as appropriate.  Even if either of those is used, or the application
5444   explicitly uses the version-specific SSLv2_method() or its client and
5445   server variants, SSLv2 ciphers vulnerable to exhaustive search key
5446   recovery have been removed.  Specifically, the SSLv2 40-bit EXPORT
5447   ciphers, and SSLv2 56-bit DES are no longer available.
5448   ([CVE-2016-0800])
5449
5450    *Viktor Dukhovni*
5451
5452  * Fix a double-free in DSA code
5453
5454    A double free bug was discovered when OpenSSL parses malformed DSA private
5455    keys and could lead to a DoS attack or memory corruption for applications
5456    that receive DSA private keys from untrusted sources.  This scenario is
5457    considered rare.
5458
5459    This issue was reported to OpenSSL by Adam Langley(Google/BoringSSL) using
5460    libFuzzer.
5461    ([CVE-2016-0705])
5462
5463    *Stephen Henson*
5464
5465  * Disable SRP fake user seed to address a server memory leak.
5466
5467    Add a new method SRP_VBASE_get1_by_user that handles the seed properly.
5468
5469    SRP_VBASE_get_by_user had inconsistent memory management behaviour.
5470    In order to fix an unavoidable memory leak, SRP_VBASE_get_by_user
5471    was changed to ignore the "fake user" SRP seed, even if the seed
5472    is configured.
5473
5474    Users should use SRP_VBASE_get1_by_user instead. Note that in
5475    SRP_VBASE_get1_by_user, caller must free the returned value. Note
5476    also that even though configuring the SRP seed attempts to hide
5477    invalid usernames by continuing the handshake with fake
5478    credentials, this behaviour is not constant time and no strong
5479    guarantees are made that the handshake is indistinguishable from
5480    that of a valid user.
5481    ([CVE-2016-0798])
5482
5483    *Emilia Käsper*
5484
5485  * Fix BN_hex2bn/BN_dec2bn NULL pointer deref/heap corruption
5486
5487    In the BN_hex2bn function the number of hex digits is calculated using an
5488    int value `i`. Later `bn_expand` is called with a value of `i * 4`. For
5489    large values of `i` this can result in `bn_expand` not allocating any
5490    memory because `i * 4` is negative. This can leave the internal BIGNUM data
5491    field as NULL leading to a subsequent NULL ptr deref. For very large values
5492    of `i`, the calculation `i * 4` could be a positive value smaller than `i`.
5493    In this case memory is allocated to the internal BIGNUM data field, but it
5494    is insufficiently sized leading to heap corruption. A similar issue exists
5495    in BN_dec2bn. This could have security consequences if BN_hex2bn/BN_dec2bn
5496    is ever called by user applications with very large untrusted hex/dec data.
5497    This is anticipated to be a rare occurrence.
5498
5499    All OpenSSL internal usage of these functions use data that is not expected
5500    to be untrusted, e.g. config file data or application command line
5501    arguments. If user developed applications generate config file data based
5502    on untrusted data then it is possible that this could also lead to security
5503    consequences. This is also anticipated to be rare.
5504
5505    This issue was reported to OpenSSL by Guido Vranken.
5506    ([CVE-2016-0797])
5507
5508    *Matt Caswell*
5509
5510  * Fix memory issues in `BIO_*printf` functions
5511
5512    The internal `fmtstr` function used in processing a "%s" format string in
5513    the `BIO_*printf` functions could overflow while calculating the length of a
5514    string and cause an OOB read when printing very long strings.
5515
5516    Additionally the internal `doapr_outch` function can attempt to write to an
5517    OOB memory location (at an offset from the NULL pointer) in the event of a
5518    memory allocation failure. In 1.0.2 and below this could be caused where
5519    the size of a buffer to be allocated is greater than INT_MAX. E.g. this
5520    could be in processing a very long "%s" format string. Memory leaks can
5521    also occur.
5522
5523    The first issue may mask the second issue dependent on compiler behaviour.
5524    These problems could enable attacks where large amounts of untrusted data
5525    is passed to the `BIO_*printf` functions. If applications use these functions
5526    in this way then they could be vulnerable. OpenSSL itself uses these
5527    functions when printing out human-readable dumps of ASN.1 data. Therefore
5528    applications that print this data could be vulnerable if the data is from
5529    untrusted sources. OpenSSL command line applications could also be
5530    vulnerable where they print out ASN.1 data, or if untrusted data is passed
5531    as command line arguments.
5532
5533    Libssl is not considered directly vulnerable. Additionally certificates etc
5534    received via remote connections via libssl are also unlikely to be able to
5535    trigger these issues because of message size limits enforced within libssl.
5536
5537    This issue was reported to OpenSSL Guido Vranken.
5538    ([CVE-2016-0799])
5539
5540    *Matt Caswell*
5541
5542  * Side channel attack on modular exponentiation
5543
5544    A side-channel attack was found which makes use of cache-bank conflicts on
5545    the Intel Sandy-Bridge microarchitecture which could lead to the recovery
5546    of RSA keys.  The ability to exploit this issue is limited as it relies on
5547    an attacker who has control of code in a thread running on the same
5548    hyper-threaded core as the victim thread which is performing decryptions.
5549
5550    This issue was reported to OpenSSL by Yuval Yarom, The University of
5551    Adelaide and NICTA, Daniel Genkin, Technion and Tel Aviv University, and
5552    Nadia Heninger, University of Pennsylvania with more information at
5553    <http://cachebleed.info>.
5554    ([CVE-2016-0702])
5555
5556    *Andy Polyakov*
5557
5558  * Change the `req` command to generate a 2048-bit RSA/DSA key by default,
5559    if no keysize is specified with default_bits. This fixes an
5560    omission in an earlier change that changed all RSA/DSA key generation
5561    commands to use 2048 bits by default.
5562
5563    *Emilia Käsper*
5564
5565 ### Changes between 1.0.2e and 1.0.2f [28 Jan 2016]
5566
5567  * DH small subgroups
5568
5569    Historically OpenSSL only ever generated DH parameters based on "safe"
5570    primes. More recently (in version 1.0.2) support was provided for
5571    generating X9.42 style parameter files such as those required for RFC 5114
5572    support. The primes used in such files may not be "safe". Where an
5573    application is using DH configured with parameters based on primes that are
5574    not "safe" then an attacker could use this fact to find a peer's private
5575    DH exponent. This attack requires that the attacker complete multiple
5576    handshakes in which the peer uses the same private DH exponent. For example
5577    this could be used to discover a TLS server's private DH exponent if it's
5578    reusing the private DH exponent or it's using a static DH ciphersuite.
5579
5580    OpenSSL provides the option SSL_OP_SINGLE_DH_USE for ephemeral DH (DHE) in
5581    TLS. It is not on by default. If the option is not set then the server
5582    reuses the same private DH exponent for the life of the server process and
5583    would be vulnerable to this attack. It is believed that many popular
5584    applications do set this option and would therefore not be at risk.
5585
5586    The fix for this issue adds an additional check where a "q" parameter is
5587    available (as is the case in X9.42 based parameters). This detects the
5588    only known attack, and is the only possible defense for static DH
5589    ciphersuites. This could have some performance impact.
5590
5591    Additionally the SSL_OP_SINGLE_DH_USE option has been switched on by
5592    default and cannot be disabled. This could have some performance impact.
5593
5594    This issue was reported to OpenSSL by Antonio Sanso (Adobe).
5595    ([CVE-2016-0701])
5596
5597    *Matt Caswell*
5598
5599  * SSLv2 doesn't block disabled ciphers
5600
5601    A malicious client can negotiate SSLv2 ciphers that have been disabled on
5602    the server and complete SSLv2 handshakes even if all SSLv2 ciphers have
5603    been disabled, provided that the SSLv2 protocol was not also disabled via
5604    SSL_OP_NO_SSLv2.
5605
5606    This issue was reported to OpenSSL on 26th December 2015 by Nimrod Aviram
5607    and Sebastian Schinzel.
5608    ([CVE-2015-3197])
5609
5610    *Viktor Dukhovni*
5611
5612 ### Changes between 1.0.2d and 1.0.2e [3 Dec 2015]
5613
5614  * BN_mod_exp may produce incorrect results on x86_64
5615
5616    There is a carry propagating bug in the x86_64 Montgomery squaring
5617    procedure. No EC algorithms are affected. Analysis suggests that attacks
5618    against RSA and DSA as a result of this defect would be very difficult to
5619    perform and are not believed likely. Attacks against DH are considered just
5620    feasible (although very difficult) because most of the work necessary to
5621    deduce information about a private key may be performed offline. The amount
5622    of resources required for such an attack would be very significant and
5623    likely only accessible to a limited number of attackers. An attacker would
5624    additionally need online access to an unpatched system using the target
5625    private key in a scenario with persistent DH parameters and a private
5626    key that is shared between multiple clients. For example this can occur by
5627    default in OpenSSL DHE based SSL/TLS ciphersuites.
5628
5629    This issue was reported to OpenSSL by Hanno Böck.
5630    ([CVE-2015-3193])
5631
5632    *Andy Polyakov*
5633
5634  * Certificate verify crash with missing PSS parameter
5635
5636    The signature verification routines will crash with a NULL pointer
5637    dereference if presented with an ASN.1 signature using the RSA PSS
5638    algorithm and absent mask generation function parameter. Since these
5639    routines are used to verify certificate signature algorithms this can be
5640    used to crash any certificate verification operation and exploited in a
5641    DoS attack. Any application which performs certificate verification is
5642    vulnerable including OpenSSL clients and servers which enable client
5643    authentication.
5644
5645    This issue was reported to OpenSSL by Loïc Jonas Etienne (Qnective AG).
5646    ([CVE-2015-3194])
5647
5648    *Stephen Henson*
5649
5650  * X509_ATTRIBUTE memory leak
5651
5652    When presented with a malformed X509_ATTRIBUTE structure OpenSSL will leak
5653    memory. This structure is used by the PKCS#7 and CMS routines so any
5654    application which reads PKCS#7 or CMS data from untrusted sources is
5655    affected. SSL/TLS is not affected.
5656
5657    This issue was reported to OpenSSL by Adam Langley (Google/BoringSSL) using
5658    libFuzzer.
5659    ([CVE-2015-3195])
5660
5661    *Stephen Henson*
5662
5663  * Rewrite EVP_DecodeUpdate (base64 decoding) to fix several bugs.
5664    This changes the decoding behaviour for some invalid messages,
5665    though the change is mostly in the more lenient direction, and
5666    legacy behaviour is preserved as much as possible.
5667
5668    *Emilia Käsper*
5669
5670  * In DSA_generate_parameters_ex, if the provided seed is too short,
5671    return an error
5672
5673    *Rich Salz and Ismo Puustinen <ismo.puustinen@intel.com>*
5674
5675 ### Changes between 1.0.2c and 1.0.2d [9 Jul 2015]
5676
5677  * Alternate chains certificate forgery
5678
5679    During certificate verification, OpenSSL will attempt to find an
5680    alternative certificate chain if the first attempt to build such a chain
5681    fails. An error in the implementation of this logic can mean that an
5682    attacker could cause certain checks on untrusted certificates to be
5683    bypassed, such as the CA flag, enabling them to use a valid leaf
5684    certificate to act as a CA and "issue" an invalid certificate.
5685
5686    This issue was reported to OpenSSL by Adam Langley/David Benjamin
5687    (Google/BoringSSL).
5688
5689    *Matt Caswell*
5690
5691 ### Changes between 1.0.2b and 1.0.2c [12 Jun 2015]
5692
5693  * Fix HMAC ABI incompatibility. The previous version introduced an ABI
5694    incompatibility in the handling of HMAC. The previous ABI has now been
5695    restored.
5696
5697    *Matt Caswell*
5698
5699 ### Changes between 1.0.2a and 1.0.2b [11 Jun 2015]
5700
5701  * Malformed ECParameters causes infinite loop
5702
5703    When processing an ECParameters structure OpenSSL enters an infinite loop
5704    if the curve specified is over a specially malformed binary polynomial
5705    field.
5706
5707    This can be used to perform denial of service against any
5708    system which processes public keys, certificate requests or
5709    certificates.  This includes TLS clients and TLS servers with
5710    client authentication enabled.
5711
5712    This issue was reported to OpenSSL by Joseph Barr-Pixton.
5713    ([CVE-2015-1788])
5714
5715    *Andy Polyakov*
5716
5717  * Exploitable out-of-bounds read in X509_cmp_time
5718
5719    X509_cmp_time does not properly check the length of the ASN1_TIME
5720    string and can read a few bytes out of bounds. In addition,
5721    X509_cmp_time accepts an arbitrary number of fractional seconds in the
5722    time string.
5723
5724    An attacker can use this to craft malformed certificates and CRLs of
5725    various sizes and potentially cause a segmentation fault, resulting in
5726    a DoS on applications that verify certificates or CRLs. TLS clients
5727    that verify CRLs are affected. TLS clients and servers with client
5728    authentication enabled may be affected if they use custom verification
5729    callbacks.
5730
5731    This issue was reported to OpenSSL by Robert Swiecki (Google), and
5732    independently by Hanno Böck.
5733    ([CVE-2015-1789])
5734
5735    *Emilia Käsper*
5736
5737  * PKCS7 crash with missing EnvelopedContent
5738
5739    The PKCS#7 parsing code does not handle missing inner EncryptedContent
5740    correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs
5741    with missing content and trigger a NULL pointer dereference on parsing.
5742
5743    Applications that decrypt PKCS#7 data or otherwise parse PKCS#7
5744    structures from untrusted sources are affected. OpenSSL clients and
5745    servers are not affected.
5746
5747    This issue was reported to OpenSSL by Michal Zalewski (Google).
5748    ([CVE-2015-1790])
5749
5750    *Emilia Käsper*
5751
5752  * CMS verify infinite loop with unknown hash function
5753
5754    When verifying a signedData message the CMS code can enter an infinite loop
5755    if presented with an unknown hash function OID. This can be used to perform
5756    denial of service against any system which verifies signedData messages using
5757    the CMS code.
5758    This issue was reported to OpenSSL by Johannes Bauer.
5759    ([CVE-2015-1792])
5760
5761    *Stephen Henson*
5762
5763  * Race condition handling NewSessionTicket
5764
5765    If a NewSessionTicket is received by a multi-threaded client when attempting to
5766    reuse a previous ticket then a race condition can occur potentially leading to
5767    a double free of the ticket data.
5768    ([CVE-2015-1791])
5769
5770    *Matt Caswell*
5771
5772  * Only support 256-bit or stronger elliptic curves with the
5773    'ecdh_auto' setting (server) or by default (client). Of supported
5774    curves, prefer P-256 (both).
5775
5776    *Emilia Kasper*
5777
5778 ### Changes between 1.0.2 and 1.0.2a [19 Mar 2015]
5779
5780  * ClientHello sigalgs DoS fix
5781
5782    If a client connects to an OpenSSL 1.0.2 server and renegotiates with an
5783    invalid signature algorithms extension a NULL pointer dereference will
5784    occur. This can be exploited in a DoS attack against the server.
5785
5786    This issue was was reported to OpenSSL by David Ramos of Stanford
5787    University.
5788    ([CVE-2015-0291])
5789
5790    *Stephen Henson and Matt Caswell*
5791
5792  * Multiblock corrupted pointer fix
5793
5794    OpenSSL 1.0.2 introduced the "multiblock" performance improvement. This
5795    feature only applies on 64 bit x86 architecture platforms that support AES
5796    NI instructions. A defect in the implementation of "multiblock" can cause
5797    OpenSSL's internal write buffer to become incorrectly set to NULL when
5798    using non-blocking IO. Typically, when the user application is using a
5799    socket BIO for writing, this will only result in a failed connection.
5800    However if some other BIO is used then it is likely that a segmentation
5801    fault will be triggered, thus enabling a potential DoS attack.
5802
5803    This issue was reported to OpenSSL by Daniel Danner and Rainer Mueller.
5804    ([CVE-2015-0290])
5805
5806    *Matt Caswell*
5807
5808  * Segmentation fault in DTLSv1_listen fix
5809
5810    The DTLSv1_listen function is intended to be stateless and processes the
5811    initial ClientHello from many peers. It is common for user code to loop
5812    over the call to DTLSv1_listen until a valid ClientHello is received with
5813    an associated cookie. A defect in the implementation of DTLSv1_listen means
5814    that state is preserved in the SSL object from one invocation to the next
5815    that can lead to a segmentation fault. Errors processing the initial
5816    ClientHello can trigger this scenario. An example of such an error could be
5817    that a DTLS1.0 only client is attempting to connect to a DTLS1.2 only
5818    server.
5819
5820    This issue was reported to OpenSSL by Per Allansson.
5821    ([CVE-2015-0207])
5822
5823    *Matt Caswell*
5824
5825  * Segmentation fault in ASN1_TYPE_cmp fix
5826
5827    The function ASN1_TYPE_cmp will crash with an invalid read if an attempt is
5828    made to compare ASN.1 boolean types. Since ASN1_TYPE_cmp is used to check
5829    certificate signature algorithm consistency this can be used to crash any
5830    certificate verification operation and exploited in a DoS attack. Any
5831    application which performs certificate verification is vulnerable including
5832    OpenSSL clients and servers which enable client authentication.
5833    ([CVE-2015-0286])
5834
5835    *Stephen Henson*
5836
5837  * Segmentation fault for invalid PSS parameters fix
5838
5839    The signature verification routines will crash with a NULL pointer
5840    dereference if presented with an ASN.1 signature using the RSA PSS
5841    algorithm and invalid parameters. Since these routines are used to verify
5842    certificate signature algorithms this can be used to crash any
5843    certificate verification operation and exploited in a DoS attack. Any
5844    application which performs certificate verification is vulnerable including
5845    OpenSSL clients and servers which enable client authentication.
5846
5847    This issue was was reported to OpenSSL by Brian Carpenter.
5848    ([CVE-2015-0208])
5849
5850    *Stephen Henson*
5851
5852  * ASN.1 structure reuse memory corruption fix
5853
5854    Reusing a structure in ASN.1 parsing may allow an attacker to cause
5855    memory corruption via an invalid write. Such reuse is and has been
5856    strongly discouraged and is believed to be rare.
5857
5858    Applications that parse structures containing CHOICE or ANY DEFINED BY
5859    components may be affected. Certificate parsing (d2i_X509 and related
5860    functions) are however not affected. OpenSSL clients and servers are
5861    not affected.
5862    ([CVE-2015-0287])
5863
5864    *Stephen Henson*
5865
5866  * PKCS7 NULL pointer dereferences fix
5867
5868    The PKCS#7 parsing code does not handle missing outer ContentInfo
5869    correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs with
5870    missing content and trigger a NULL pointer dereference on parsing.
5871
5872    Applications that verify PKCS#7 signatures, decrypt PKCS#7 data or
5873    otherwise parse PKCS#7 structures from untrusted sources are
5874    affected. OpenSSL clients and servers are not affected.
5875
5876    This issue was reported to OpenSSL by Michal Zalewski (Google).
5877    ([CVE-2015-0289])
5878
5879    *Emilia Käsper*
5880
5881  * DoS via reachable assert in SSLv2 servers fix
5882
5883    A malicious client can trigger an OPENSSL_assert (i.e., an abort) in
5884    servers that both support SSLv2 and enable export cipher suites by sending
5885    a specially crafted SSLv2 CLIENT-MASTER-KEY message.
5886
5887    This issue was discovered by Sean Burford (Google) and Emilia Käsper
5888    (OpenSSL development team).
5889    ([CVE-2015-0293])
5890
5891    *Emilia Käsper*
5892
5893  * Empty CKE with client auth and DHE fix
5894
5895    If client auth is used then a server can seg fault in the event of a DHE
5896    ciphersuite being selected and a zero length ClientKeyExchange message
5897    being sent by the client. This could be exploited in a DoS attack.
5898    ([CVE-2015-1787])
5899
5900    *Matt Caswell*
5901
5902  * Handshake with unseeded PRNG fix
5903
5904    Under certain conditions an OpenSSL 1.0.2 client can complete a handshake
5905    with an unseeded PRNG. The conditions are:
5906    - The client is on a platform where the PRNG has not been seeded
5907    automatically, and the user has not seeded manually
5908    - A protocol specific client method version has been used (i.e. not
5909    SSL_client_methodv23)
5910    - A ciphersuite is used that does not require additional random data from
5911    the PRNG beyond the initial ClientHello client random (e.g. PSK-RC4-SHA).
5912
5913    If the handshake succeeds then the client random that has been used will
5914    have been generated from a PRNG with insufficient entropy and therefore the
5915    output may be predictable.
5916
5917    For example using the following command with an unseeded openssl will
5918    succeed on an unpatched platform:
5919
5920    openssl s_client -psk 1a2b3c4d -tls1_2 -cipher PSK-RC4-SHA
5921    ([CVE-2015-0285])
5922
5923    *Matt Caswell*
5924
5925  * Use After Free following d2i_ECPrivatekey error fix
5926
5927    A malformed EC private key file consumed via the d2i_ECPrivateKey function
5928    could cause a use after free condition. This, in turn, could cause a double
5929    free in several private key parsing functions (such as d2i_PrivateKey
5930    or EVP_PKCS82PKEY) and could lead to a DoS attack or memory corruption
5931    for applications that receive EC private keys from untrusted
5932    sources. This scenario is considered rare.
5933
5934    This issue was discovered by the BoringSSL project and fixed in their
5935    commit 517073cd4b.
5936    ([CVE-2015-0209])
5937
5938    *Matt Caswell*
5939
5940  * X509_to_X509_REQ NULL pointer deref fix
5941
5942    The function X509_to_X509_REQ will crash with a NULL pointer dereference if
5943    the certificate key is invalid. This function is rarely used in practice.
5944
5945    This issue was discovered by Brian Carpenter.
5946    ([CVE-2015-0288])
5947
5948    *Stephen Henson*
5949
5950  * Removed the export ciphers from the DEFAULT ciphers
5951
5952    *Kurt Roeckx*
5953
5954 ### Changes between 1.0.1l and 1.0.2 [22 Jan 2015]
5955
5956  * Facilitate "universal" ARM builds targeting range of ARM ISAs, e.g.
5957    ARMv5 through ARMv8, as opposite to "locking" it to single one.
5958    So far those who have to target multiple platforms would compromise
5959    and argue that binary targeting say ARMv5 would still execute on
5960    ARMv8. "Universal" build resolves this compromise by providing
5961    near-optimal performance even on newer platforms.
5962
5963    *Andy Polyakov*
5964
5965  * Accelerated NIST P-256 elliptic curve implementation for x86_64
5966    (other platforms pending).
5967
5968    *Shay Gueron & Vlad Krasnov (Intel Corp), Andy Polyakov*
5969
5970  * Add support for the SignedCertificateTimestampList certificate and
5971    OCSP response extensions from RFC6962.
5972
5973    *Rob Stradling*
5974
5975  * Fix ec_GFp_simple_points_make_affine (thus, EC_POINTs_mul etc.)
5976    for corner cases. (Certain input points at infinity could lead to
5977    bogus results, with non-infinity inputs mapped to infinity too.)
5978
5979    *Bodo Moeller*
5980
5981  * Initial support for PowerISA 2.0.7, first implemented in POWER8.
5982    This covers AES, SHA256/512 and GHASH. "Initial" means that most
5983    common cases are optimized and there still is room for further
5984    improvements. Vector Permutation AES for Altivec is also added.
5985
5986    *Andy Polyakov*
5987
5988  * Add support for little-endian ppc64 Linux target.
5989
5990    *Marcelo Cerri (IBM)*
5991
5992  * Initial support for AMRv8 ISA crypto extensions. This covers AES,
5993    SHA1, SHA256 and GHASH. "Initial" means that most common cases
5994    are optimized and there still is room for further improvements.
5995    Both 32- and 64-bit modes are supported.
5996
5997    *Andy Polyakov, Ard Biesheuvel (Linaro)*
5998
5999  * Improved ARMv7 NEON support.
6000
6001    *Andy Polyakov*
6002
6003  * Support for SPARC Architecture 2011 crypto extensions, first
6004    implemented in SPARC T4. This covers AES, DES, Camellia, SHA1,
6005    SHA256/512, MD5, GHASH and modular exponentiation.
6006
6007    *Andy Polyakov, David Miller*
6008
6009  * Accelerated modular exponentiation for Intel processors, a.k.a.
6010    RSAZ.
6011
6012    *Shay Gueron & Vlad Krasnov (Intel Corp)*
6013
6014  * Support for new and upcoming Intel processors, including AVX2,
6015    BMI and SHA ISA extensions. This includes additional "stitched"
6016    implementations, AESNI-SHA256 and GCM, and multi-buffer support
6017    for TLS encrypt.
6018
6019    This work was sponsored by Intel Corp.
6020
6021    *Andy Polyakov*
6022
6023  * Support for DTLS 1.2. This adds two sets of DTLS methods: DTLS_*_method()
6024    supports both DTLS 1.2 and 1.0 and should use whatever version the peer
6025    supports and DTLSv1_2_*_method() which supports DTLS 1.2 only.
6026
6027    *Steve Henson*
6028
6029  * Use algorithm specific chains in SSL_CTX_use_certificate_chain_file():
6030    this fixes a limitation in previous versions of OpenSSL.
6031
6032    *Steve Henson*
6033
6034  * Extended RSA OAEP support via EVP_PKEY API. Options to specify digest,
6035    MGF1 digest and OAEP label.
6036
6037    *Steve Henson*
6038
6039  * Add EVP support for key wrapping algorithms, to avoid problems with
6040    existing code the flag EVP_CIPHER_CTX_WRAP_ALLOW has to be set in
6041    the EVP_CIPHER_CTX or an error is returned. Add AES and DES3 wrap
6042    algorithms and include tests cases.
6043
6044    *Steve Henson*
6045
6046  * Add functions to allocate and set the fields of an ECDSA_METHOD
6047    structure.
6048
6049    *Douglas E. Engert, Steve Henson*
6050
6051  * New functions OPENSSL_gmtime_diff and ASN1_TIME_diff to find the
6052    difference in days and seconds between two tm or ASN1_TIME structures.
6053
6054    *Steve Henson*
6055
6056  * Add -rev test option to s_server to just reverse order of characters
6057    received by client and send back to server. Also prints an abbreviated
6058    summary of the connection parameters.
6059
6060    *Steve Henson*
6061
6062  * New option -brief for s_client and s_server to print out a brief summary
6063    of connection parameters.
6064
6065    *Steve Henson*
6066
6067  * Add callbacks for arbitrary TLS extensions.
6068
6069    *Trevor Perrin <trevp@trevp.net> and Ben Laurie*
6070
6071  * New option -crl_download in several openssl utilities to download CRLs
6072    from CRLDP extension in certificates.
6073
6074    *Steve Henson*
6075
6076  * New options -CRL and -CRLform for s_client and s_server for CRLs.
6077
6078    *Steve Henson*
6079
6080  * New function X509_CRL_diff to generate a delta CRL from the difference
6081    of two full CRLs. Add support to "crl" utility.
6082
6083    *Steve Henson*
6084
6085  * New functions to set lookup_crls function and to retrieve
6086    X509_STORE from X509_STORE_CTX.
6087
6088    *Steve Henson*
6089
6090  * Print out deprecated issuer and subject unique ID fields in
6091    certificates.
6092
6093    *Steve Henson*
6094
6095  * Extend OCSP I/O functions so they can be used for simple general purpose
6096    HTTP as well as OCSP. New wrapper function which can be used to download
6097    CRLs using the OCSP API.
6098
6099    *Steve Henson*
6100
6101  * Delegate command line handling in s_client/s_server to SSL_CONF APIs.
6102
6103    *Steve Henson*
6104
6105  * `SSL_CONF*` functions. These provide a common framework for application
6106    configuration using configuration files or command lines.
6107
6108    *Steve Henson*
6109
6110  * SSL/TLS tracing code. This parses out SSL/TLS records using the
6111    message callback and prints the results. Needs compile time option
6112    "enable-ssl-trace". New options to s_client and s_server to enable
6113    tracing.
6114
6115    *Steve Henson*
6116
6117  * New ctrl and macro to retrieve supported points extensions.
6118    Print out extension in s_server and s_client.
6119
6120    *Steve Henson*
6121
6122  * New functions to retrieve certificate signature and signature
6123    OID NID.
6124
6125    *Steve Henson*
6126
6127  * Add functions to retrieve and manipulate the raw cipherlist sent by a
6128    client to OpenSSL.
6129
6130    *Steve Henson*
6131
6132  * New Suite B modes for TLS code. These use and enforce the requirements
6133    of RFC6460: restrict ciphersuites, only permit Suite B algorithms and
6134    only use Suite B curves. The Suite B modes can be set by using the
6135    strings "SUITEB128", "SUITEB192" or "SUITEB128ONLY" for the cipherstring.
6136
6137    *Steve Henson*
6138
6139  * New chain verification flags for Suite B levels of security. Check
6140    algorithms are acceptable when flags are set in X509_verify_cert.
6141
6142    *Steve Henson*
6143
6144  * Make tls1_check_chain return a set of flags indicating checks passed
6145    by a certificate chain. Add additional tests to handle client
6146    certificates: checks for matching certificate type and issuer name
6147    comparison.
6148
6149    *Steve Henson*
6150
6151  * If an attempt is made to use a signature algorithm not in the peer
6152    preference list abort the handshake. If client has no suitable
6153    signature algorithms in response to a certificate request do not
6154    use the certificate.
6155
6156    *Steve Henson*
6157
6158  * If server EC tmp key is not in client preference list abort handshake.
6159
6160    *Steve Henson*
6161
6162  * Add support for certificate stores in CERT structure. This makes it
6163    possible to have different stores per SSL structure or one store in
6164    the parent SSL_CTX. Include distinct stores for certificate chain
6165    verification and chain building. New ctrl SSL_CTRL_BUILD_CERT_CHAIN
6166    to build and store a certificate chain in CERT structure: returning
6167    an error if the chain cannot be built: this will allow applications
6168    to test if a chain is correctly configured.
6169
6170    Note: if the CERT based stores are not set then the parent SSL_CTX
6171    store is used to retain compatibility with existing behaviour.
6172
6173    *Steve Henson*
6174
6175  * New function ssl_set_client_disabled to set a ciphersuite disabled
6176    mask based on the current session, check mask when sending client
6177    hello and checking the requested ciphersuite.
6178
6179    *Steve Henson*
6180
6181  * New ctrls to retrieve and set certificate types in a certificate
6182    request message. Print out received values in s_client. If certificate
6183    types is not set with custom values set sensible values based on
6184    supported signature algorithms.
6185
6186    *Steve Henson*
6187
6188  * Support for distinct client and server supported signature algorithms.
6189
6190    *Steve Henson*
6191
6192  * Add certificate callback. If set this is called whenever a certificate
6193    is required by client or server. An application can decide which
6194    certificate chain to present based on arbitrary criteria: for example
6195    supported signature algorithms. Add very simple example to s_server.
6196    This fixes many of the problems and restrictions of the existing client
6197    certificate callback: for example you can now clear an existing
6198    certificate and specify the whole chain.
6199
6200    *Steve Henson*
6201
6202  * Add new "valid_flags" field to CERT_PKEY structure which determines what
6203    the certificate can be used for (if anything). Set valid_flags field
6204    in new tls1_check_chain function. Simplify ssl_set_cert_masks which used
6205    to have similar checks in it.
6206
6207    Add new "cert_flags" field to CERT structure and include a "strict mode".
6208    This enforces some TLS certificate requirements (such as only permitting
6209    certificate signature algorithms contained in the supported algorithms
6210    extension) which some implementations ignore: this option should be used
6211    with caution as it could cause interoperability issues.
6212
6213    *Steve Henson*
6214
6215  * Update and tidy signature algorithm extension processing. Work out
6216    shared signature algorithms based on preferences and peer algorithms
6217    and print them out in s_client and s_server. Abort handshake if no
6218    shared signature algorithms.
6219
6220    *Steve Henson*
6221
6222  * Add new functions to allow customised supported signature algorithms
6223    for SSL and SSL_CTX structures. Add options to s_client and s_server
6224    to support them.
6225
6226    *Steve Henson*
6227
6228  * New function SSL_certs_clear() to delete all references to certificates
6229    from an SSL structure. Before this once a certificate had been added
6230    it couldn't be removed.
6231
6232    *Steve Henson*
6233
6234  * Integrate hostname, email address and IP address checking with certificate
6235    verification. New verify options supporting checking in openssl utility.
6236
6237    *Steve Henson*
6238
6239  * Fixes and wildcard matching support to hostname and email checking
6240    functions. Add manual page.
6241
6242    *Florian Weimer (Red Hat Product Security Team)*
6243
6244  * New functions to check a hostname email or IP address against a
6245    certificate. Add options x509 utility to print results of checks against
6246    a certificate.
6247
6248    *Steve Henson*
6249
6250  * Fix OCSP checking.
6251
6252    *Rob Stradling <rob.stradling@comodo.com> and Ben Laurie*
6253
6254  * Initial experimental support for explicitly trusted non-root CAs.
6255    OpenSSL still tries to build a complete chain to a root but if an
6256    intermediate CA has a trust setting included that is used. The first
6257    setting is used: whether to trust (e.g., -addtrust option to the x509
6258    utility) or reject.
6259
6260    *Steve Henson*
6261
6262  * Add -trusted_first option which attempts to find certificates in the
6263    trusted store even if an untrusted chain is also supplied.
6264
6265    *Steve Henson*
6266
6267  * MIPS assembly pack updates: support for MIPS32r2 and SmartMIPS ASE,
6268    platform support for Linux and Android.
6269
6270    *Andy Polyakov*
6271
6272  * Support for linux-x32, ILP32 environment in x86_64 framework.
6273
6274    *Andy Polyakov*
6275
6276  * Experimental multi-implementation support for FIPS capable OpenSSL.
6277    When in FIPS mode the approved implementations are used as normal,
6278    when not in FIPS mode the internal unapproved versions are used instead.
6279    This means that the FIPS capable OpenSSL isn't forced to use the
6280    (often lower performance) FIPS implementations outside FIPS mode.
6281
6282    *Steve Henson*
6283
6284  * Transparently support X9.42 DH parameters when calling
6285    PEM_read_bio_DHparameters. This means existing applications can handle
6286    the new parameter format automatically.
6287
6288    *Steve Henson*
6289
6290  * Initial experimental support for X9.42 DH parameter format: mainly
6291    to support use of 'q' parameter for RFC5114 parameters.
6292
6293    *Steve Henson*
6294
6295  * Add DH parameters from RFC5114 including test data to dhtest.
6296
6297    *Steve Henson*
6298
6299  * Support for automatic EC temporary key parameter selection. If enabled
6300    the most preferred EC parameters are automatically used instead of
6301    hardcoded fixed parameters. Now a server just has to call:
6302    SSL_CTX_set_ecdh_auto(ctx, 1) and the server will automatically
6303    support ECDH and use the most appropriate parameters.
6304
6305    *Steve Henson*
6306
6307  * Enhance and tidy EC curve and point format TLS extension code. Use
6308    static structures instead of allocation if default values are used.
6309    New ctrls to set curves we wish to support and to retrieve shared curves.
6310    Print out shared curves in s_server. New options to s_server and s_client
6311    to set list of supported curves.
6312
6313    *Steve Henson*
6314
6315  * New ctrls to retrieve supported signature algorithms and
6316    supported curve values as an array of NIDs. Extend openssl utility
6317    to print out received values.
6318
6319    *Steve Henson*
6320
6321  * Add new APIs EC_curve_nist2nid and EC_curve_nid2nist which convert
6322    between NIDs and the more common NIST names such as "P-256". Enhance
6323    ecparam utility and ECC method to recognise the NIST names for curves.
6324
6325    *Steve Henson*
6326
6327  * Enhance SSL/TLS certificate chain handling to support different
6328    chains for each certificate instead of one chain in the parent SSL_CTX.
6329
6330    *Steve Henson*
6331
6332  * Support for fixed DH ciphersuite client authentication: where both
6333    server and client use DH certificates with common parameters.
6334
6335    *Steve Henson*
6336
6337  * Support for fixed DH ciphersuites: those requiring DH server
6338    certificates.
6339
6340    *Steve Henson*
6341
6342  * New function i2d_re_X509_tbs for re-encoding the TBS portion of
6343    the certificate.
6344    Note: Related 1.0.2-beta specific macros X509_get_cert_info,
6345    X509_CINF_set_modified, X509_CINF_get_issuer, X509_CINF_get_extensions and
6346    X509_CINF_get_signature were reverted post internal team review.
6347
6348 OpenSSL 1.0.1
6349 -------------
6350
6351 ### Changes between 1.0.1t and 1.0.1u [22 Sep 2016]
6352
6353  * OCSP Status Request extension unbounded memory growth
6354
6355    A malicious client can send an excessively large OCSP Status Request
6356    extension. If that client continually requests renegotiation, sending a
6357    large OCSP Status Request extension each time, then there will be unbounded
6358    memory growth on the server. This will eventually lead to a Denial Of
6359    Service attack through memory exhaustion. Servers with a default
6360    configuration are vulnerable even if they do not support OCSP. Builds using
6361    the "no-ocsp" build time option are not affected.
6362
6363    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
6364    ([CVE-2016-6304])
6365
6366    *Matt Caswell*
6367
6368  * In order to mitigate the SWEET32 attack, the DES ciphers were moved from
6369    HIGH to MEDIUM.
6370
6371    This issue was reported to OpenSSL Karthikeyan Bhargavan and Gaetan
6372    Leurent (INRIA)
6373    ([CVE-2016-2183])
6374
6375    *Rich Salz*
6376
6377  * OOB write in MDC2_Update()
6378
6379    An overflow can occur in MDC2_Update() either if called directly or
6380    through the EVP_DigestUpdate() function using MDC2. If an attacker
6381    is able to supply very large amounts of input data after a previous
6382    call to EVP_EncryptUpdate() with a partial block then a length check
6383    can overflow resulting in a heap corruption.
6384
6385    The amount of data needed is comparable to SIZE_MAX which is impractical
6386    on most platforms.
6387
6388    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
6389    ([CVE-2016-6303])
6390
6391    *Stephen Henson*
6392
6393  * Malformed SHA512 ticket DoS
6394
6395    If a server uses SHA512 for TLS session ticket HMAC it is vulnerable to a
6396    DoS attack where a malformed ticket will result in an OOB read which will
6397    ultimately crash.
6398
6399    The use of SHA512 in TLS session tickets is comparatively rare as it requires
6400    a custom server callback and ticket lookup mechanism.
6401
6402    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
6403    ([CVE-2016-6302])
6404
6405    *Stephen Henson*
6406
6407  * OOB write in BN_bn2dec()
6408
6409    The function BN_bn2dec() does not check the return value of BN_div_word().
6410    This can cause an OOB write if an application uses this function with an
6411    overly large BIGNUM. This could be a problem if an overly large certificate
6412    or CRL is printed out from an untrusted source. TLS is not affected because
6413    record limits will reject an oversized certificate before it is parsed.
6414
6415    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
6416    ([CVE-2016-2182])
6417
6418    *Stephen Henson*
6419
6420  * OOB read in TS_OBJ_print_bio()
6421
6422    The function TS_OBJ_print_bio() misuses OBJ_obj2txt(): the return value is
6423    the total length the OID text representation would use and not the amount
6424    of data written. This will result in OOB reads when large OIDs are
6425    presented.
6426
6427    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
6428    ([CVE-2016-2180])
6429
6430    *Stephen Henson*
6431
6432  * Pointer arithmetic undefined behaviour
6433
6434    Avoid some undefined pointer arithmetic
6435
6436    A common idiom in the codebase is to check limits in the following manner:
6437    "p + len > limit"
6438
6439    Where "p" points to some malloc'd data of SIZE bytes and
6440    limit == p + SIZE
6441
6442    "len" here could be from some externally supplied data (e.g. from a TLS
6443    message).
6444
6445    The rules of C pointer arithmetic are such that "p + len" is only well
6446    defined where len <= SIZE. Therefore the above idiom is actually
6447    undefined behaviour.
6448
6449    For example this could cause problems if some malloc implementation
6450    provides an address for "p" such that "p + len" actually overflows for
6451    values of len that are too big and therefore p + len < limit.
6452
6453    This issue was reported to OpenSSL by Guido Vranken
6454    ([CVE-2016-2177])
6455
6456    *Matt Caswell*
6457
6458  * Constant time flag not preserved in DSA signing
6459
6460    Operations in the DSA signing algorithm should run in constant time in
6461    order to avoid side channel attacks. A flaw in the OpenSSL DSA
6462    implementation means that a non-constant time codepath is followed for
6463    certain operations. This has been demonstrated through a cache-timing
6464    attack to be sufficient for an attacker to recover the private DSA key.
6465
6466    This issue was reported by César Pereida (Aalto University), Billy Brumley
6467    (Tampere University of Technology), and Yuval Yarom (The University of
6468    Adelaide and NICTA).
6469    ([CVE-2016-2178])
6470
6471    *César Pereida*
6472
6473  * DTLS buffered message DoS
6474
6475    In a DTLS connection where handshake messages are delivered out-of-order
6476    those messages that OpenSSL is not yet ready to process will be buffered
6477    for later use. Under certain circumstances, a flaw in the logic means that
6478    those messages do not get removed from the buffer even though the handshake
6479    has been completed. An attacker could force up to approx. 15 messages to
6480    remain in the buffer when they are no longer required. These messages will
6481    be cleared when the DTLS connection is closed. The default maximum size for
6482    a message is 100k. Therefore the attacker could force an additional 1500k
6483    to be consumed per connection. By opening many simulataneous connections an
6484    attacker could cause a DoS attack through memory exhaustion.
6485
6486    This issue was reported to OpenSSL by Quan Luo.
6487    ([CVE-2016-2179])
6488
6489    *Matt Caswell*
6490
6491  * DTLS replay protection DoS
6492
6493    A flaw in the DTLS replay attack protection mechanism means that records
6494    that arrive for future epochs update the replay protection "window" before
6495    the MAC for the record has been validated. This could be exploited by an
6496    attacker by sending a record for the next epoch (which does not have to
6497    decrypt or have a valid MAC), with a very large sequence number. This means
6498    that all subsequent legitimate packets are dropped causing a denial of
6499    service for a specific DTLS connection.
6500
6501    This issue was reported to OpenSSL by the OCAP audit team.
6502    ([CVE-2016-2181])
6503
6504    *Matt Caswell*
6505
6506  * Certificate message OOB reads
6507
6508    In OpenSSL 1.0.2 and earlier some missing message length checks can result
6509    in OOB reads of up to 2 bytes beyond an allocated buffer. There is a
6510    theoretical DoS risk but this has not been observed in practice on common
6511    platforms.
6512
6513    The messages affected are client certificate, client certificate request
6514    and server certificate. As a result the attack can only be performed
6515    against a client or a server which enables client authentication.
6516
6517    This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.)
6518    ([CVE-2016-6306])
6519
6520    *Stephen Henson*
6521
6522 ### Changes between 1.0.1s and 1.0.1t [3 May 2016]
6523
6524  * Prevent padding oracle in AES-NI CBC MAC check
6525
6526    A MITM attacker can use a padding oracle attack to decrypt traffic
6527    when the connection uses an AES CBC cipher and the server support
6528    AES-NI.
6529
6530    This issue was introduced as part of the fix for Lucky 13 padding
6531    attack ([CVE-2013-0169]). The padding check was rewritten to be in
6532    constant time by making sure that always the same bytes are read and
6533    compared against either the MAC or padding bytes. But it no longer
6534    checked that there was enough data to have both the MAC and padding
6535    bytes.
6536
6537    This issue was reported by Juraj Somorovsky using TLS-Attacker.
6538    ([CVE-2016-2107])
6539
6540    *Kurt Roeckx*
6541
6542  * Fix EVP_EncodeUpdate overflow
6543
6544    An overflow can occur in the EVP_EncodeUpdate() function which is used for
6545    Base64 encoding of binary data. If an attacker is able to supply very large
6546    amounts of input data then a length check can overflow resulting in a heap
6547    corruption.
6548
6549    Internally to OpenSSL the EVP_EncodeUpdate() function is primarly used by
6550    the `PEM_write_bio*` family of functions. These are mainly used within the
6551    OpenSSL command line applications, so any application which processes data
6552    from an untrusted source and outputs it as a PEM file should be considered
6553    vulnerable to this issue. User applications that call these APIs directly
6554    with large amounts of untrusted data may also be vulnerable.
6555
6556    This issue was reported by Guido Vranken.
6557    ([CVE-2016-2105])
6558
6559    *Matt Caswell*
6560
6561  * Fix EVP_EncryptUpdate overflow
6562
6563    An overflow can occur in the EVP_EncryptUpdate() function. If an attacker
6564    is able to supply very large amounts of input data after a previous call to
6565    EVP_EncryptUpdate() with a partial block then a length check can overflow
6566    resulting in a heap corruption. Following an analysis of all OpenSSL
6567    internal usage of the EVP_EncryptUpdate() function all usage is one of two
6568    forms. The first form is where the EVP_EncryptUpdate() call is known to be
6569    the first called function after an EVP_EncryptInit(), and therefore that
6570    specific call must be safe. The second form is where the length passed to
6571    EVP_EncryptUpdate() can be seen from the code to be some small value and
6572    therefore there is no possibility of an overflow. Since all instances are
6573    one of these two forms, it is believed that there can be no overflows in
6574    internal code due to this problem. It should be noted that
6575    EVP_DecryptUpdate() can call EVP_EncryptUpdate() in certain code paths.
6576    Also EVP_CipherUpdate() is a synonym for EVP_EncryptUpdate(). All instances
6577    of these calls have also been analysed too and it is believed there are no
6578    instances in internal usage where an overflow could occur.
6579
6580    This issue was reported by Guido Vranken.
6581    ([CVE-2016-2106])
6582
6583    *Matt Caswell*
6584
6585  * Prevent ASN.1 BIO excessive memory allocation
6586
6587    When ASN.1 data is read from a BIO using functions such as d2i_CMS_bio()
6588    a short invalid encoding can casuse allocation of large amounts of memory
6589    potentially consuming excessive resources or exhausting memory.
6590
6591    Any application parsing untrusted data through d2i BIO functions is
6592    affected. The memory based functions such as d2i_X509() are *not* affected.
6593    Since the memory based functions are used by the TLS library, TLS
6594    applications are not affected.
6595
6596    This issue was reported by Brian Carpenter.
6597    ([CVE-2016-2109])
6598
6599    *Stephen Henson*
6600
6601  * EBCDIC overread
6602
6603    ASN1 Strings that are over 1024 bytes can cause an overread in applications
6604    using the X509_NAME_oneline() function on EBCDIC systems. This could result
6605    in arbitrary stack data being returned in the buffer.
6606
6607    This issue was reported by Guido Vranken.
6608    ([CVE-2016-2176])
6609
6610    *Matt Caswell*
6611
6612  * Modify behavior of ALPN to invoke callback after SNI/servername
6613    callback, such that updates to the SSL_CTX affect ALPN.
6614
6615    *Todd Short*
6616
6617  * Remove LOW from the DEFAULT cipher list.  This removes singles DES from the
6618    default.
6619
6620    *Kurt Roeckx*
6621
6622  * Only remove the SSLv2 methods with the no-ssl2-method option. When the
6623    methods are enabled and ssl2 is disabled the methods return NULL.
6624
6625    *Kurt Roeckx*
6626
6627 ### Changes between 1.0.1r and 1.0.1s [1 Mar 2016]
6628
6629 * Disable weak ciphers in SSLv3 and up in default builds of OpenSSL.
6630   Builds that are not configured with "enable-weak-ssl-ciphers" will not
6631   provide any "EXPORT" or "LOW" strength ciphers.
6632
6633   *Viktor Dukhovni*
6634
6635 * Disable SSLv2 default build, default negotiation and weak ciphers.  SSLv2
6636   is by default disabled at build-time.  Builds that are not configured with
6637   "enable-ssl2" will not support SSLv2.  Even if "enable-ssl2" is used,
6638   users who want to negotiate SSLv2 via the version-flexible SSLv23_method()
6639   will need to explicitly call either of:
6640
6641       SSL_CTX_clear_options(ctx, SSL_OP_NO_SSLv2);
6642   or
6643       SSL_clear_options(ssl, SSL_OP_NO_SSLv2);
6644
6645   as appropriate.  Even if either of those is used, or the application
6646   explicitly uses the version-specific SSLv2_method() or its client and
6647   server variants, SSLv2 ciphers vulnerable to exhaustive search key
6648   recovery have been removed.  Specifically, the SSLv2 40-bit EXPORT
6649   ciphers, and SSLv2 56-bit DES are no longer available.
6650   ([CVE-2016-0800])
6651
6652   *Viktor Dukhovni*
6653
6654  * Fix a double-free in DSA code
6655
6656    A double free bug was discovered when OpenSSL parses malformed DSA private
6657    keys and could lead to a DoS attack or memory corruption for applications
6658    that receive DSA private keys from untrusted sources.  This scenario is
6659    considered rare.
6660
6661    This issue was reported to OpenSSL by Adam Langley(Google/BoringSSL) using
6662    libFuzzer.
6663    ([CVE-2016-0705])
6664
6665    *Stephen Henson*
6666
6667  * Disable SRP fake user seed to address a server memory leak.
6668
6669    Add a new method SRP_VBASE_get1_by_user that handles the seed properly.
6670
6671    SRP_VBASE_get_by_user had inconsistent memory management behaviour.
6672    In order to fix an unavoidable memory leak, SRP_VBASE_get_by_user
6673    was changed to ignore the "fake user" SRP seed, even if the seed
6674    is configured.
6675
6676    Users should use SRP_VBASE_get1_by_user instead. Note that in
6677    SRP_VBASE_get1_by_user, caller must free the returned value. Note
6678    also that even though configuring the SRP seed attempts to hide
6679    invalid usernames by continuing the handshake with fake
6680    credentials, this behaviour is not constant time and no strong
6681    guarantees are made that the handshake is indistinguishable from
6682    that of a valid user.
6683    ([CVE-2016-0798])
6684
6685    *Emilia Käsper*
6686
6687  * Fix BN_hex2bn/BN_dec2bn NULL pointer deref/heap corruption
6688
6689    In the BN_hex2bn function the number of hex digits is calculated using an
6690    int value `i`. Later `bn_expand` is called with a value of `i * 4`. For
6691    large values of `i` this can result in `bn_expand` not allocating any
6692    memory because `i * 4` is negative. This can leave the internal BIGNUM data
6693    field as NULL leading to a subsequent NULL ptr deref. For very large values
6694    of `i`, the calculation `i * 4` could be a positive value smaller than `i`.
6695    In this case memory is allocated to the internal BIGNUM data field, but it
6696    is insufficiently sized leading to heap corruption. A similar issue exists
6697    in BN_dec2bn. This could have security consequences if BN_hex2bn/BN_dec2bn
6698    is ever called by user applications with very large untrusted hex/dec data.
6699    This is anticipated to be a rare occurrence.
6700
6701    All OpenSSL internal usage of these functions use data that is not expected
6702    to be untrusted, e.g. config file data or application command line
6703    arguments. If user developed applications generate config file data based
6704    on untrusted data then it is possible that this could also lead to security
6705    consequences. This is also anticipated to be rare.
6706
6707    This issue was reported to OpenSSL by Guido Vranken.
6708    ([CVE-2016-0797])
6709
6710    *Matt Caswell*
6711
6712  * Fix memory issues in `BIO_*printf` functions
6713
6714    The internal `fmtstr` function used in processing a "%s" format string in
6715    the `BIO_*printf` functions could overflow while calculating the length of a
6716    string and cause an OOB read when printing very long strings.
6717
6718    Additionally the internal `doapr_outch` function can attempt to write to an
6719    OOB memory location (at an offset from the NULL pointer) in the event of a
6720    memory allocation failure. In 1.0.2 and below this could be caused where
6721    the size of a buffer to be allocated is greater than INT_MAX. E.g. this
6722    could be in processing a very long "%s" format string. Memory leaks can
6723    also occur.
6724
6725    The first issue may mask the second issue dependent on compiler behaviour.
6726    These problems could enable attacks where large amounts of untrusted data
6727    is passed to the `BIO_*printf` functions. If applications use these functions
6728    in this way then they could be vulnerable. OpenSSL itself uses these
6729    functions when printing out human-readable dumps of ASN.1 data. Therefore
6730    applications that print this data could be vulnerable if the data is from
6731    untrusted sources. OpenSSL command line applications could also be
6732    vulnerable where they print out ASN.1 data, or if untrusted data is passed
6733    as command line arguments.
6734
6735    Libssl is not considered directly vulnerable. Additionally certificates etc
6736    received via remote connections via libssl are also unlikely to be able to
6737    trigger these issues because of message size limits enforced within libssl.
6738
6739    This issue was reported to OpenSSL Guido Vranken.
6740    ([CVE-2016-0799])
6741
6742    *Matt Caswell*
6743
6744  * Side channel attack on modular exponentiation
6745
6746    A side-channel attack was found which makes use of cache-bank conflicts on
6747    the Intel Sandy-Bridge microarchitecture which could lead to the recovery
6748    of RSA keys.  The ability to exploit this issue is limited as it relies on
6749    an attacker who has control of code in a thread running on the same
6750    hyper-threaded core as the victim thread which is performing decryptions.
6751
6752    This issue was reported to OpenSSL by Yuval Yarom, The University of
6753    Adelaide and NICTA, Daniel Genkin, Technion and Tel Aviv University, and
6754    Nadia Heninger, University of Pennsylvania with more information at
6755    <http://cachebleed.info>.
6756    ([CVE-2016-0702])
6757
6758    *Andy Polyakov*
6759
6760  * Change the req command to generate a 2048-bit RSA/DSA key by default,
6761    if no keysize is specified with default_bits. This fixes an
6762    omission in an earlier change that changed all RSA/DSA key generation
6763    commands to use 2048 bits by default.
6764
6765    *Emilia Käsper*
6766
6767 ### Changes between 1.0.1q and 1.0.1r [28 Jan 2016]
6768
6769  * Protection for DH small subgroup attacks
6770
6771    As a precautionary measure the SSL_OP_SINGLE_DH_USE option has been
6772    switched on by default and cannot be disabled. This could have some
6773    performance impact.
6774
6775    *Matt Caswell*
6776
6777  * SSLv2 doesn't block disabled ciphers
6778
6779    A malicious client can negotiate SSLv2 ciphers that have been disabled on
6780    the server and complete SSLv2 handshakes even if all SSLv2 ciphers have
6781    been disabled, provided that the SSLv2 protocol was not also disabled via
6782    SSL_OP_NO_SSLv2.
6783
6784    This issue was reported to OpenSSL on 26th December 2015 by Nimrod Aviram
6785    and Sebastian Schinzel.
6786    ([CVE-2015-3197])
6787
6788    *Viktor Dukhovni*
6789
6790  * Reject DH handshakes with parameters shorter than 1024 bits.
6791
6792    *Kurt Roeckx*
6793
6794 ### Changes between 1.0.1p and 1.0.1q [3 Dec 2015]
6795
6796  * Certificate verify crash with missing PSS parameter
6797
6798    The signature verification routines will crash with a NULL pointer
6799    dereference if presented with an ASN.1 signature using the RSA PSS
6800    algorithm and absent mask generation function parameter. Since these
6801    routines are used to verify certificate signature algorithms this can be
6802    used to crash any certificate verification operation and exploited in a
6803    DoS attack. Any application which performs certificate verification is
6804    vulnerable including OpenSSL clients and servers which enable client
6805    authentication.
6806
6807    This issue was reported to OpenSSL by Loïc Jonas Etienne (Qnective AG).
6808    ([CVE-2015-3194])
6809
6810    *Stephen Henson*
6811
6812  * X509_ATTRIBUTE memory leak
6813
6814    When presented with a malformed X509_ATTRIBUTE structure OpenSSL will leak
6815    memory. This structure is used by the PKCS#7 and CMS routines so any
6816    application which reads PKCS#7 or CMS data from untrusted sources is
6817    affected. SSL/TLS is not affected.
6818
6819    This issue was reported to OpenSSL by Adam Langley (Google/BoringSSL) using
6820    libFuzzer.
6821    ([CVE-2015-3195])
6822
6823    *Stephen Henson*
6824
6825  * Rewrite EVP_DecodeUpdate (base64 decoding) to fix several bugs.
6826    This changes the decoding behaviour for some invalid messages,
6827    though the change is mostly in the more lenient direction, and
6828    legacy behaviour is preserved as much as possible.
6829
6830    *Emilia Käsper*
6831
6832  * In DSA_generate_parameters_ex, if the provided seed is too short,
6833    use a random seed, as already documented.
6834
6835    *Rich Salz and Ismo Puustinen <ismo.puustinen@intel.com>*
6836
6837 ### Changes between 1.0.1o and 1.0.1p [9 Jul 2015]
6838
6839  * Alternate chains certificate forgery
6840
6841    During certificate verfification, OpenSSL will attempt to find an
6842    alternative certificate chain if the first attempt to build such a chain
6843    fails. An error in the implementation of this logic can mean that an
6844    attacker could cause certain checks on untrusted certificates to be
6845    bypassed, such as the CA flag, enabling them to use a valid leaf
6846    certificate to act as a CA and "issue" an invalid certificate.
6847
6848    This issue was reported to OpenSSL by Adam Langley/David Benjamin
6849    (Google/BoringSSL).
6850    ([CVE-2015-1793])
6851
6852    *Matt Caswell*
6853
6854  * Race condition handling PSK identify hint
6855
6856    If PSK identity hints are received by a multi-threaded client then
6857    the values are wrongly updated in the parent SSL_CTX structure. This can
6858    result in a race condition potentially leading to a double free of the
6859    identify hint data.
6860    ([CVE-2015-3196])
6861
6862    *Stephen Henson*
6863
6864 ### Changes between 1.0.1n and 1.0.1o [12 Jun 2015]
6865
6866  * Fix HMAC ABI incompatibility. The previous version introduced an ABI
6867    incompatibility in the handling of HMAC. The previous ABI has now been
6868    restored.
6869
6870 ### Changes between 1.0.1m and 1.0.1n [11 Jun 2015]
6871
6872  * Malformed ECParameters causes infinite loop
6873
6874    When processing an ECParameters structure OpenSSL enters an infinite loop
6875    if the curve specified is over a specially malformed binary polynomial
6876    field.
6877
6878    This can be used to perform denial of service against any
6879    system which processes public keys, certificate requests or
6880    certificates.  This includes TLS clients and TLS servers with
6881    client authentication enabled.
6882
6883    This issue was reported to OpenSSL by Joseph Barr-Pixton.
6884    ([CVE-2015-1788])
6885
6886    *Andy Polyakov*
6887
6888  * Exploitable out-of-bounds read in X509_cmp_time
6889
6890    X509_cmp_time does not properly check the length of the ASN1_TIME
6891    string and can read a few bytes out of bounds. In addition,
6892    X509_cmp_time accepts an arbitrary number of fractional seconds in the
6893    time string.
6894
6895    An attacker can use this to craft malformed certificates and CRLs of
6896    various sizes and potentially cause a segmentation fault, resulting in
6897    a DoS on applications that verify certificates or CRLs. TLS clients
6898    that verify CRLs are affected. TLS clients and servers with client
6899    authentication enabled may be affected if they use custom verification
6900    callbacks.
6901
6902    This issue was reported to OpenSSL by Robert Swiecki (Google), and
6903    independently by Hanno Böck.
6904    ([CVE-2015-1789])
6905
6906    *Emilia Käsper*
6907
6908  * PKCS7 crash with missing EnvelopedContent
6909
6910    The PKCS#7 parsing code does not handle missing inner EncryptedContent
6911    correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs
6912    with missing content and trigger a NULL pointer dereference on parsing.
6913
6914    Applications that decrypt PKCS#7 data or otherwise parse PKCS#7
6915    structures from untrusted sources are affected. OpenSSL clients and
6916    servers are not affected.
6917
6918    This issue was reported to OpenSSL by Michal Zalewski (Google).
6919    ([CVE-2015-1790])
6920
6921    *Emilia Käsper*
6922
6923  * CMS verify infinite loop with unknown hash function
6924
6925    When verifying a signedData message the CMS code can enter an infinite loop
6926    if presented with an unknown hash function OID. This can be used to perform
6927    denial of service against any system which verifies signedData messages using
6928    the CMS code.
6929    This issue was reported to OpenSSL by Johannes Bauer.
6930    ([CVE-2015-1792])
6931
6932    *Stephen Henson*
6933
6934  * Race condition handling NewSessionTicket
6935
6936    If a NewSessionTicket is received by a multi-threaded client when attempting to
6937    reuse a previous ticket then a race condition can occur potentially leading to
6938    a double free of the ticket data.
6939    ([CVE-2015-1791])
6940
6941    *Matt Caswell*
6942
6943  * Reject DH handshakes with parameters shorter than 768 bits.
6944
6945    *Kurt Roeckx and Emilia Kasper*
6946
6947  * dhparam: generate 2048-bit parameters by default.
6948
6949    *Kurt Roeckx and Emilia Kasper*
6950
6951 ### Changes between 1.0.1l and 1.0.1m [19 Mar 2015]
6952
6953  * Segmentation fault in ASN1_TYPE_cmp fix
6954
6955    The function ASN1_TYPE_cmp will crash with an invalid read if an attempt is
6956    made to compare ASN.1 boolean types. Since ASN1_TYPE_cmp is used to check
6957    certificate signature algorithm consistency this can be used to crash any
6958    certificate verification operation and exploited in a DoS attack. Any
6959    application which performs certificate verification is vulnerable including
6960    OpenSSL clients and servers which enable client authentication.
6961    ([CVE-2015-0286])
6962
6963    *Stephen Henson*
6964
6965  * ASN.1 structure reuse memory corruption fix
6966
6967    Reusing a structure in ASN.1 parsing may allow an attacker to cause
6968    memory corruption via an invalid write. Such reuse is and has been
6969    strongly discouraged and is believed to be rare.
6970
6971    Applications that parse structures containing CHOICE or ANY DEFINED BY
6972    components may be affected. Certificate parsing (d2i_X509 and related
6973    functions) are however not affected. OpenSSL clients and servers are
6974    not affected.
6975    ([CVE-2015-0287])
6976
6977    *Stephen Henson*
6978
6979  * PKCS7 NULL pointer dereferences fix
6980
6981    The PKCS#7 parsing code does not handle missing outer ContentInfo
6982    correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs with
6983    missing content and trigger a NULL pointer dereference on parsing.
6984
6985    Applications that verify PKCS#7 signatures, decrypt PKCS#7 data or
6986    otherwise parse PKCS#7 structures from untrusted sources are
6987    affected. OpenSSL clients and servers are not affected.
6988
6989    This issue was reported to OpenSSL by Michal Zalewski (Google).
6990    ([CVE-2015-0289])
6991
6992    *Emilia Käsper*
6993
6994  * DoS via reachable assert in SSLv2 servers fix
6995
6996    A malicious client can trigger an OPENSSL_assert (i.e., an abort) in
6997    servers that both support SSLv2 and enable export cipher suites by sending
6998    a specially crafted SSLv2 CLIENT-MASTER-KEY message.
6999
7000    This issue was discovered by Sean Burford (Google) and Emilia Käsper
7001    (OpenSSL development team).
7002    ([CVE-2015-0293])
7003
7004    *Emilia Käsper*
7005
7006  * Use After Free following d2i_ECPrivatekey error fix
7007
7008    A malformed EC private key file consumed via the d2i_ECPrivateKey function
7009    could cause a use after free condition. This, in turn, could cause a double
7010    free in several private key parsing functions (such as d2i_PrivateKey
7011    or EVP_PKCS82PKEY) and could lead to a DoS attack or memory corruption
7012    for applications that receive EC private keys from untrusted
7013    sources. This scenario is considered rare.
7014
7015    This issue was discovered by the BoringSSL project and fixed in their
7016    commit 517073cd4b.
7017    ([CVE-2015-0209])
7018
7019    *Matt Caswell*
7020
7021  * X509_to_X509_REQ NULL pointer deref fix
7022
7023    The function X509_to_X509_REQ will crash with a NULL pointer dereference if
7024    the certificate key is invalid. This function is rarely used in practice.
7025
7026    This issue was discovered by Brian Carpenter.
7027    ([CVE-2015-0288])
7028
7029    *Stephen Henson*
7030
7031  * Removed the export ciphers from the DEFAULT ciphers
7032
7033    *Kurt Roeckx*
7034
7035 ### Changes between 1.0.1k and 1.0.1l [15 Jan 2015]
7036
7037  * Build fixes for the Windows and OpenVMS platforms
7038
7039    *Matt Caswell and Richard Levitte*
7040
7041 ### Changes between 1.0.1j and 1.0.1k [8 Jan 2015]
7042
7043  * Fix DTLS segmentation fault in dtls1_get_record. A carefully crafted DTLS
7044    message can cause a segmentation fault in OpenSSL due to a NULL pointer
7045    dereference. This could lead to a Denial Of Service attack. Thanks to
7046    Markus Stenberg of Cisco Systems, Inc. for reporting this issue.
7047    ([CVE-2014-3571])
7048
7049    *Steve Henson*
7050
7051  * Fix DTLS memory leak in dtls1_buffer_record. A memory leak can occur in the
7052    dtls1_buffer_record function under certain conditions. In particular this
7053    could occur if an attacker sent repeated DTLS records with the same
7054    sequence number but for the next epoch. The memory leak could be exploited
7055    by an attacker in a Denial of Service attack through memory exhaustion.
7056    Thanks to Chris Mueller for reporting this issue.
7057    ([CVE-2015-0206])
7058
7059    *Matt Caswell*
7060
7061  * Fix issue where no-ssl3 configuration sets method to NULL. When openssl is
7062    built with the no-ssl3 option and a SSL v3 ClientHello is received the ssl
7063    method would be set to NULL which could later result in a NULL pointer
7064    dereference. Thanks to Frank Schmirler for reporting this issue.
7065    ([CVE-2014-3569])
7066
7067    *Kurt Roeckx*
7068
7069  * Abort handshake if server key exchange message is omitted for ephemeral
7070    ECDH ciphersuites.
7071
7072    Thanks to Karthikeyan Bhargavan of the PROSECCO team at INRIA for
7073    reporting this issue.
7074    ([CVE-2014-3572])
7075
7076    *Steve Henson*
7077
7078  * Remove non-export ephemeral RSA code on client and server. This code
7079    violated the TLS standard by allowing the use of temporary RSA keys in
7080    non-export ciphersuites and could be used by a server to effectively
7081    downgrade the RSA key length used to a value smaller than the server
7082    certificate. Thanks for Karthikeyan Bhargavan of the PROSECCO team at
7083    INRIA or reporting this issue.
7084    ([CVE-2015-0204])
7085
7086    *Steve Henson*
7087
7088  * Fixed issue where DH client certificates are accepted without verification.
7089    An OpenSSL server will accept a DH certificate for client authentication
7090    without the certificate verify message. This effectively allows a client to
7091    authenticate without the use of a private key. This only affects servers
7092    which trust a client certificate authority which issues certificates
7093    containing DH keys: these are extremely rare and hardly ever encountered.
7094    Thanks for Karthikeyan Bhargavan of the PROSECCO team at INRIA or reporting
7095    this issue.
7096    ([CVE-2015-0205])
7097
7098    *Steve Henson*
7099
7100  * Ensure that the session ID context of an SSL is updated when its
7101    SSL_CTX is updated via SSL_set_SSL_CTX.
7102
7103    The session ID context is typically set from the parent SSL_CTX,
7104    and can vary with the CTX.
7105
7106    *Adam Langley*
7107
7108  * Fix various certificate fingerprint issues.
7109
7110    By using non-DER or invalid encodings outside the signed portion of a
7111    certificate the fingerprint can be changed without breaking the signature.
7112    Although no details of the signed portion of the certificate can be changed
7113    this can cause problems with some applications: e.g. those using the
7114    certificate fingerprint for blacklists.
7115
7116    1. Reject signatures with non zero unused bits.
7117
7118    If the BIT STRING containing the signature has non zero unused bits reject
7119    the signature. All current signature algorithms require zero unused bits.
7120
7121    2. Check certificate algorithm consistency.
7122
7123    Check the AlgorithmIdentifier inside TBS matches the one in the
7124    certificate signature. NB: this will result in signature failure
7125    errors for some broken certificates.
7126
7127    Thanks to Konrad Kraszewski from Google for reporting this issue.
7128
7129    3. Check DSA/ECDSA signatures use DER.
7130
7131    Re-encode DSA/ECDSA signatures and compare with the original received
7132    signature. Return an error if there is a mismatch.
7133
7134    This will reject various cases including garbage after signature
7135    (thanks to Antti Karjalainen and Tuomo Untinen from the Codenomicon CROSS
7136    program for discovering this case) and use of BER or invalid ASN.1 INTEGERs
7137    (negative or with leading zeroes).
7138
7139    Further analysis was conducted and fixes were developed by Stephen Henson
7140    of the OpenSSL core team.
7141
7142    ([CVE-2014-8275])
7143
7144    *Steve Henson*
7145
7146  * Correct Bignum squaring. Bignum squaring (BN_sqr) may produce incorrect
7147    results on some platforms, including x86_64. This bug occurs at random
7148    with a very low probability, and is not known to be exploitable in any
7149    way, though its exact impact is difficult to determine. Thanks to Pieter
7150    Wuille (Blockstream) who reported this issue and also suggested an initial
7151    fix. Further analysis was conducted by the OpenSSL development team and
7152    Adam Langley of Google. The final fix was developed by Andy Polyakov of
7153    the OpenSSL core team.
7154    ([CVE-2014-3570])
7155
7156    *Andy Polyakov*
7157
7158  * Do not resume sessions on the server if the negotiated protocol
7159    version does not match the session's version. Resuming with a different
7160    version, while not strictly forbidden by the RFC, is of questionable
7161    sanity and breaks all known clients.
7162
7163    *David Benjamin, Emilia Käsper*
7164
7165  * Tighten handling of the ChangeCipherSpec (CCS) message: reject
7166    early CCS messages during renegotiation. (Note that because
7167    renegotiation is encrypted, this early CCS was not exploitable.)
7168
7169    *Emilia Käsper*
7170
7171  * Tighten client-side session ticket handling during renegotiation:
7172    ensure that the client only accepts a session ticket if the server sends
7173    the extension anew in the ServerHello. Previously, a TLS client would
7174    reuse the old extension state and thus accept a session ticket if one was
7175    announced in the initial ServerHello.
7176
7177    Similarly, ensure that the client requires a session ticket if one
7178    was advertised in the ServerHello. Previously, a TLS client would
7179    ignore a missing NewSessionTicket message.
7180
7181    *Emilia Käsper*
7182
7183 ### Changes between 1.0.1i and 1.0.1j [15 Oct 2014]
7184
7185  * SRTP Memory Leak.
7186
7187    A flaw in the DTLS SRTP extension parsing code allows an attacker, who
7188    sends a carefully crafted handshake message, to cause OpenSSL to fail
7189    to free up to 64k of memory causing a memory leak. This could be
7190    exploited in a Denial Of Service attack. This issue affects OpenSSL
7191    1.0.1 server implementations for both SSL/TLS and DTLS regardless of
7192    whether SRTP is used or configured. Implementations of OpenSSL that
7193    have been compiled with OPENSSL_NO_SRTP defined are not affected.
7194
7195    The fix was developed by the OpenSSL team.
7196    ([CVE-2014-3513])
7197
7198    *OpenSSL team*
7199
7200  * Session Ticket Memory Leak.
7201
7202    When an OpenSSL SSL/TLS/DTLS server receives a session ticket the
7203    integrity of that ticket is first verified. In the event of a session
7204    ticket integrity check failing, OpenSSL will fail to free memory
7205    causing a memory leak. By sending a large number of invalid session
7206    tickets an attacker could exploit this issue in a Denial Of Service
7207    attack.
7208    ([CVE-2014-3567])
7209
7210    *Steve Henson*
7211
7212  * Build option no-ssl3 is incomplete.
7213
7214    When OpenSSL is configured with "no-ssl3" as a build option, servers
7215    could accept and complete a SSL 3.0 handshake, and clients could be
7216    configured to send them.
7217    ([CVE-2014-3568])
7218
7219    *Akamai and the OpenSSL team*
7220
7221  * Add support for TLS_FALLBACK_SCSV.
7222    Client applications doing fallback retries should call
7223    SSL_set_mode(s, SSL_MODE_SEND_FALLBACK_SCSV).
7224    ([CVE-2014-3566])
7225
7226    *Adam Langley, Bodo Moeller*
7227
7228  * Add additional DigestInfo checks.
7229
7230    Re-encode DigestInto in DER and check against the original when
7231    verifying RSA signature: this will reject any improperly encoded
7232    DigestInfo structures.
7233
7234    Note: this is a precautionary measure and no attacks are currently known.
7235
7236    *Steve Henson*
7237
7238 ### Changes between 1.0.1h and 1.0.1i [6 Aug 2014]
7239
7240  * Fix SRP buffer overrun vulnerability. Invalid parameters passed to the
7241    SRP code can be overrun an internal buffer. Add sanity check that
7242    g, A, B < N to SRP code.
7243
7244    Thanks to Sean Devlin and Watson Ladd of Cryptography Services, NCC
7245    Group for discovering this issue.
7246    ([CVE-2014-3512])
7247
7248    *Steve Henson*
7249
7250  * A flaw in the OpenSSL SSL/TLS server code causes the server to negotiate
7251    TLS 1.0 instead of higher protocol versions when the ClientHello message
7252    is badly fragmented. This allows a man-in-the-middle attacker to force a
7253    downgrade to TLS 1.0 even if both the server and the client support a
7254    higher protocol version, by modifying the client's TLS records.
7255
7256    Thanks to David Benjamin and Adam Langley (Google) for discovering and
7257    researching this issue.
7258    ([CVE-2014-3511])
7259
7260    *David Benjamin*
7261
7262  * OpenSSL DTLS clients enabling anonymous (EC)DH ciphersuites are subject
7263    to a denial of service attack. A malicious server can crash the client
7264    with a null pointer dereference (read) by specifying an anonymous (EC)DH
7265    ciphersuite and sending carefully crafted handshake messages.
7266
7267    Thanks to Felix Gröbert (Google) for discovering and researching this
7268    issue.
7269    ([CVE-2014-3510])
7270
7271    *Emilia Käsper*
7272
7273  * By sending carefully crafted DTLS packets an attacker could cause openssl
7274    to leak memory. This can be exploited through a Denial of Service attack.
7275    Thanks to Adam Langley for discovering and researching this issue.
7276    ([CVE-2014-3507])
7277
7278    *Adam Langley*
7279
7280  * An attacker can force openssl to consume large amounts of memory whilst
7281    processing DTLS handshake messages. This can be exploited through a
7282    Denial of Service attack.
7283    Thanks to Adam Langley for discovering and researching this issue.
7284    ([CVE-2014-3506])
7285
7286    *Adam Langley*
7287
7288  * An attacker can force an error condition which causes openssl to crash
7289    whilst processing DTLS packets due to memory being freed twice. This
7290    can be exploited through a Denial of Service attack.
7291    Thanks to Adam Langley and Wan-Teh Chang for discovering and researching
7292    this issue.
7293    ([CVE-2014-3505])
7294
7295    *Adam Langley*
7296
7297  * If a multithreaded client connects to a malicious server using a resumed
7298    session and the server sends an ec point format extension it could write
7299    up to 255 bytes to freed memory.
7300
7301    Thanks to Gabor Tyukasz (LogMeIn Inc) for discovering and researching this
7302    issue.
7303    ([CVE-2014-3509])
7304
7305    *Gabor Tyukasz*
7306
7307  * A malicious server can crash an OpenSSL client with a null pointer
7308    dereference (read) by specifying an SRP ciphersuite even though it was not
7309    properly negotiated with the client. This can be exploited through a
7310    Denial of Service attack.
7311
7312    Thanks to Joonas Kuorilehto and Riku Hietamäki (Codenomicon) for
7313    discovering and researching this issue.
7314    ([CVE-2014-5139])
7315
7316    *Steve Henson*
7317
7318  * A flaw in OBJ_obj2txt may cause pretty printing functions such as
7319    X509_name_oneline, X509_name_print_ex et al. to leak some information
7320    from the stack. Applications may be affected if they echo pretty printing
7321    output to the attacker.
7322
7323    Thanks to Ivan Fratric (Google) for discovering this issue.
7324    ([CVE-2014-3508])
7325
7326    *Emilia Käsper, and Steve Henson*
7327
7328  * Fix ec_GFp_simple_points_make_affine (thus, EC_POINTs_mul etc.)
7329    for corner cases. (Certain input points at infinity could lead to
7330    bogus results, with non-infinity inputs mapped to infinity too.)
7331
7332    *Bodo Moeller*
7333
7334 ### Changes between 1.0.1g and 1.0.1h [5 Jun 2014]
7335
7336  * Fix for SSL/TLS MITM flaw. An attacker using a carefully crafted
7337    handshake can force the use of weak keying material in OpenSSL
7338    SSL/TLS clients and servers.
7339
7340    Thanks to KIKUCHI Masashi (Lepidum Co. Ltd.) for discovering and
7341    researching this issue. ([CVE-2014-0224])
7342
7343    *KIKUCHI Masashi, Steve Henson*
7344
7345  * Fix DTLS recursion flaw. By sending an invalid DTLS handshake to an
7346    OpenSSL DTLS client the code can be made to recurse eventually crashing
7347    in a DoS attack.
7348
7349    Thanks to Imre Rad (Search-Lab Ltd.) for discovering this issue.
7350    ([CVE-2014-0221])
7351
7352    *Imre Rad, Steve Henson*
7353
7354  * Fix DTLS invalid fragment vulnerability. A buffer overrun attack can
7355    be triggered by sending invalid DTLS fragments to an OpenSSL DTLS
7356    client or server. This is potentially exploitable to run arbitrary
7357    code on a vulnerable client or server.
7358
7359    Thanks to Jüri Aedla for reporting this issue. ([CVE-2014-0195])
7360
7361    *Jüri Aedla, Steve Henson*
7362
7363  * Fix bug in TLS code where clients enable anonymous ECDH ciphersuites
7364    are subject to a denial of service attack.
7365
7366    Thanks to Felix Gröbert and Ivan Fratric at Google for discovering
7367    this issue. ([CVE-2014-3470])
7368
7369    *Felix Gröbert, Ivan Fratric, Steve Henson*
7370
7371  * Harmonize version and its documentation. -f flag is used to display
7372    compilation flags.
7373
7374    *mancha <mancha1@zoho.com>*
7375
7376  * Fix eckey_priv_encode so it immediately returns an error upon a failure
7377    in i2d_ECPrivateKey.
7378
7379    *mancha <mancha1@zoho.com>*
7380
7381  * Fix some double frees. These are not thought to be exploitable.
7382
7383    *mancha <mancha1@zoho.com>*
7384
7385 ### Changes between 1.0.1f and 1.0.1g [7 Apr 2014]
7386
7387  * A missing bounds check in the handling of the TLS heartbeat extension
7388    can be used to reveal up to 64k of memory to a connected client or
7389    server.
7390
7391    Thanks for Neel Mehta of Google Security for discovering this bug and to
7392    Adam Langley <agl@chromium.org> and Bodo Moeller <bmoeller@acm.org> for
7393    preparing the fix ([CVE-2014-0160])
7394
7395    *Adam Langley, Bodo Moeller*
7396
7397  * Fix for the attack described in the paper "Recovering OpenSSL
7398    ECDSA Nonces Using the FLUSH+RELOAD Cache Side-channel Attack"
7399    by Yuval Yarom and Naomi Benger. Details can be obtained from:
7400    <http://eprint.iacr.org/2014/140>
7401
7402    Thanks to Yuval Yarom and Naomi Benger for discovering this
7403    flaw and to Yuval Yarom for supplying a fix ([CVE-2014-0076])
7404
7405    *Yuval Yarom and Naomi Benger*
7406
7407  * TLS pad extension: draft-agl-tls-padding-03
7408
7409    Workaround for the "TLS hang bug" (see FAQ and PR#2771): if the
7410    TLS client Hello record length value would otherwise be > 255 and
7411    less that 512 pad with a dummy extension containing zeroes so it
7412    is at least 512 bytes long.
7413
7414    *Adam Langley, Steve Henson*
7415
7416 ### Changes between 1.0.1e and 1.0.1f [6 Jan 2014]
7417
7418  * Fix for TLS record tampering bug. A carefully crafted invalid
7419    handshake could crash OpenSSL with a NULL pointer exception.
7420    Thanks to Anton Johansson for reporting this issues.
7421    ([CVE-2013-4353])
7422
7423  * Keep original DTLS digest and encryption contexts in retransmission
7424    structures so we can use the previous session parameters if they need
7425    to be resent. ([CVE-2013-6450])
7426
7427    *Steve Henson*
7428
7429  * Add option SSL_OP_SAFARI_ECDHE_ECDSA_BUG (part of SSL_OP_ALL) which
7430    avoids preferring ECDHE-ECDSA ciphers when the client appears to be
7431    Safari on OS X.  Safari on OS X 10.8..10.8.3 advertises support for
7432    several ECDHE-ECDSA ciphers, but fails to negotiate them.  The bug
7433    is fixed in OS X 10.8.4, but Apple have ruled out both hot fixing
7434    10.8..10.8.3 and forcing users to upgrade to 10.8.4 or newer.
7435
7436    *Rob Stradling, Adam Langley*
7437
7438 ### Changes between 1.0.1d and 1.0.1e [11 Feb 2013]
7439
7440  * Correct fix for CVE-2013-0169. The original didn't work on AES-NI
7441    supporting platforms or when small records were transferred.
7442
7443    *Andy Polyakov, Steve Henson*
7444
7445 ### Changes between 1.0.1c and 1.0.1d [5 Feb 2013]
7446
7447  * Make the decoding of SSLv3, TLS and DTLS CBC records constant time.
7448
7449    This addresses the flaw in CBC record processing discovered by
7450    Nadhem Alfardan and Kenny Paterson. Details of this attack can be found
7451    at: <http://www.isg.rhul.ac.uk/tls/>
7452
7453    Thanks go to Nadhem Alfardan and Kenny Paterson of the Information
7454    Security Group at Royal Holloway, University of London
7455    (www.isg.rhul.ac.uk) for discovering this flaw and Adam Langley and
7456    Emilia Käsper for the initial patch.
7457    ([CVE-2013-0169])
7458
7459    *Emilia Käsper, Adam Langley, Ben Laurie, Andy Polyakov, Steve Henson*
7460
7461  * Fix flaw in AESNI handling of TLS 1.2 and 1.1 records for CBC mode
7462    ciphersuites which can be exploited in a denial of service attack.
7463    Thanks go to and to Adam Langley <agl@chromium.org> for discovering
7464    and detecting this bug and to Wolfgang Ettlinger
7465    <wolfgang.ettlinger@gmail.com> for independently discovering this issue.
7466    ([CVE-2012-2686])
7467
7468    *Adam Langley*
7469
7470  * Return an error when checking OCSP signatures when key is NULL.
7471    This fixes a DoS attack. ([CVE-2013-0166])
7472
7473    *Steve Henson*
7474
7475  * Make openssl verify return errors.
7476
7477    *Chris Palmer <palmer@google.com> and Ben Laurie*
7478
7479  * Call OCSP Stapling callback after ciphersuite has been chosen, so
7480    the right response is stapled. Also change SSL_get_certificate()
7481    so it returns the certificate actually sent.
7482    See <http://rt.openssl.org/Ticket/Display.html?id=2836>.
7483
7484    *Rob Stradling <rob.stradling@comodo.com>*
7485
7486  * Fix possible deadlock when decoding public keys.
7487
7488    *Steve Henson*
7489
7490  * Don't use TLS 1.0 record version number in initial client hello
7491    if renegotiating.
7492
7493    *Steve Henson*
7494
7495 ### Changes between 1.0.1b and 1.0.1c [10 May 2012]
7496
7497  * Sanity check record length before skipping explicit IV in TLS
7498    1.2, 1.1 and DTLS to fix DoS attack.
7499
7500    Thanks to Codenomicon for discovering this issue using Fuzz-o-Matic
7501    fuzzing as a service testing platform.
7502    ([CVE-2012-2333])
7503
7504    *Steve Henson*
7505
7506  * Initialise tkeylen properly when encrypting CMS messages.
7507    Thanks to Solar Designer of Openwall for reporting this issue.
7508
7509    *Steve Henson*
7510
7511  * In FIPS mode don't try to use composite ciphers as they are not
7512    approved.
7513
7514    *Steve Henson*
7515
7516 ### Changes between 1.0.1a and 1.0.1b [26 Apr 2012]
7517
7518  * OpenSSL 1.0.0 sets SSL_OP_ALL to 0x80000FFFL and OpenSSL 1.0.1 and
7519    1.0.1a set SSL_OP_NO_TLSv1_1 to 0x00000400L which would unfortunately
7520    mean any application compiled against OpenSSL 1.0.0 headers setting
7521    SSL_OP_ALL would also set SSL_OP_NO_TLSv1_1, unintentionally disabling
7522    TLS 1.1 also. Fix this by changing the value of SSL_OP_NO_TLSv1_1 to
7523    0x10000000L Any application which was previously compiled against
7524    OpenSSL 1.0.1 or 1.0.1a headers and which cares about SSL_OP_NO_TLSv1_1
7525    will need to be recompiled as a result. Letting be results in
7526    inability to disable specifically TLS 1.1 and in client context,
7527    in unlike event, limit maximum offered version to TLS 1.0 [see below].
7528
7529    *Steve Henson*
7530
7531  * In order to ensure interoperability SSL_OP_NO_protocolX does not
7532    disable just protocol X, but all protocols above X *if* there are
7533    protocols *below* X still enabled. In more practical terms it means
7534    that if application wants to disable TLS1.0 in favor of TLS1.1 and
7535    above, it's not sufficient to pass `SSL_OP_NO_TLSv1`, one has to pass
7536    `SSL_OP_NO_TLSv1|SSL_OP_NO_SSLv3|SSL_OP_NO_SSLv2`. This applies to
7537    client side.
7538
7539    *Andy Polyakov*
7540
7541 ### Changes between 1.0.1 and 1.0.1a [19 Apr 2012]
7542
7543  * Check for potentially exploitable overflows in asn1_d2i_read_bio
7544    BUF_mem_grow and BUF_mem_grow_clean. Refuse attempts to shrink buffer
7545    in CRYPTO_realloc_clean.
7546
7547    Thanks to Tavis Ormandy, Google Security Team, for discovering this
7548    issue and to Adam Langley <agl@chromium.org> for fixing it.
7549    ([CVE-2012-2110])
7550
7551    *Adam Langley (Google), Tavis Ormandy, Google Security Team*
7552
7553  * Don't allow TLS 1.2 SHA-256 ciphersuites in TLS 1.0, 1.1 connections.
7554
7555    *Adam Langley*
7556
7557  * Workarounds for some broken servers that "hang" if a client hello
7558    record length exceeds 255 bytes.
7559
7560    1. Do not use record version number > TLS 1.0 in initial client
7561       hello: some (but not all) hanging servers will now work.
7562    2. If we set OPENSSL_MAX_TLS1_2_CIPHER_LENGTH this will truncate
7563       the number of ciphers sent in the client hello. This should be
7564       set to an even number, such as 50, for example by passing:
7565       -DOPENSSL_MAX_TLS1_2_CIPHER_LENGTH=50 to config or Configure.
7566       Most broken servers should now work.
7567    3. If all else fails setting OPENSSL_NO_TLS1_2_CLIENT will disable
7568       TLS 1.2 client support entirely.
7569
7570    *Steve Henson*
7571
7572  * Fix SEGV in Vector Permutation AES module observed in OpenSSH.
7573
7574    *Andy Polyakov*
7575
7576 ### Changes between 1.0.0h and 1.0.1  [14 Mar 2012]
7577
7578  * Add compatibility with old MDC2 signatures which use an ASN1 OCTET
7579    STRING form instead of a DigestInfo.
7580
7581    *Steve Henson*
7582
7583  * The format used for MDC2 RSA signatures is inconsistent between EVP
7584    and the RSA_sign/RSA_verify functions. This was made more apparent when
7585    OpenSSL used RSA_sign/RSA_verify for some RSA signatures in particular
7586    those which went through EVP_PKEY_METHOD in 1.0.0 and later. Detect
7587    the correct format in RSA_verify so both forms transparently work.
7588
7589    *Steve Henson*
7590
7591  * Some servers which support TLS 1.0 can choke if we initially indicate
7592    support for TLS 1.2 and later renegotiate using TLS 1.0 in the RSA
7593    encrypted premaster secret. As a workaround use the maximum permitted
7594    client version in client hello, this should keep such servers happy
7595    and still work with previous versions of OpenSSL.
7596
7597    *Steve Henson*
7598
7599  * Add support for TLS/DTLS heartbeats.
7600
7601    *Robin Seggelmann <seggelmann@fh-muenster.de>*
7602
7603  * Add support for SCTP.
7604
7605    *Robin Seggelmann <seggelmann@fh-muenster.de>*
7606
7607  * Improved PRNG seeding for VOS.
7608
7609    *Paul Green <Paul.Green@stratus.com>*
7610
7611  * Extensive assembler packs updates, most notably:
7612
7613    - x86[_64]:     AES-NI, PCLMULQDQ, RDRAND support;
7614    - x86[_64]:     SSSE3 support (SHA1, vector-permutation AES);
7615    - x86_64:       bit-sliced AES implementation;
7616    - ARM:          NEON support, contemporary platforms optimizations;
7617    - s390x:        z196 support;
7618    - `*`:            GHASH and GF(2^m) multiplication implementations;
7619
7620    *Andy Polyakov*
7621
7622  * Make TLS-SRP code conformant with RFC 5054 API cleanup
7623    (removal of unnecessary code)
7624
7625    *Peter Sylvester <peter.sylvester@edelweb.fr>*
7626
7627  * Add TLS key material exporter from RFC 5705.
7628
7629    *Eric Rescorla*
7630
7631  * Add DTLS-SRTP negotiation from RFC 5764.
7632
7633    *Eric Rescorla*
7634
7635  * Add Next Protocol Negotiation,
7636    <http://tools.ietf.org/html/draft-agl-tls-nextprotoneg-00>. Can be
7637    disabled with a no-npn flag to config or Configure. Code donated
7638    by Google.
7639
7640    *Adam Langley <agl@google.com> and Ben Laurie*
7641
7642  * Add optional 64-bit optimized implementations of elliptic curves NIST-P224,
7643    NIST-P256, NIST-P521, with constant-time single point multiplication on
7644    typical inputs. Compiler support for the nonstandard type `__uint128_t` is
7645    required to use this (present in gcc 4.4 and later, for 64-bit builds).
7646    Code made available under Apache License version 2.0.
7647
7648    Specify "enable-ec_nistp_64_gcc_128" on the Configure (or config) command
7649    line to include this in your build of OpenSSL, and run "make depend" (or
7650    "make update"). This enables the following EC_METHODs:
7651
7652            EC_GFp_nistp224_method()
7653            EC_GFp_nistp256_method()
7654            EC_GFp_nistp521_method()
7655
7656    EC_GROUP_new_by_curve_name() will automatically use these (while
7657    EC_GROUP_new_curve_GFp() currently prefers the more flexible
7658    implementations).
7659
7660    *Emilia Käsper, Adam Langley, Bodo Moeller (Google)*
7661
7662  * Use type ossl_ssize_t instead of ssize_t which isn't available on
7663    all platforms. Move ssize_t definition from e_os.h to the public
7664    header file e_os2.h as it now appears in public header file cms.h
7665
7666    *Steve Henson*
7667
7668  * New -sigopt option to the ca, req and x509 utilities. Additional
7669    signature parameters can be passed using this option and in
7670    particular PSS.
7671
7672    *Steve Henson*
7673
7674  * Add RSA PSS signing function. This will generate and set the
7675    appropriate AlgorithmIdentifiers for PSS based on those in the
7676    corresponding EVP_MD_CTX structure. No application support yet.
7677
7678    *Steve Henson*
7679
7680  * Support for companion algorithm specific ASN1 signing routines.
7681    New function ASN1_item_sign_ctx() signs a pre-initialised
7682    EVP_MD_CTX structure and sets AlgorithmIdentifiers based on
7683    the appropriate parameters.
7684
7685    *Steve Henson*
7686
7687  * Add new algorithm specific ASN1 verification initialisation function
7688    to EVP_PKEY_ASN1_METHOD: this is not in EVP_PKEY_METHOD since the ASN1
7689    handling will be the same no matter what EVP_PKEY_METHOD is used.
7690    Add a PSS handler to support verification of PSS signatures: checked
7691    against a number of sample certificates.
7692
7693    *Steve Henson*
7694
7695  * Add signature printing for PSS. Add PSS OIDs.
7696
7697    *Steve Henson, Martin Kaiser <lists@kaiser.cx>*
7698
7699  * Add algorithm specific signature printing. An individual ASN1 method
7700    can now print out signatures instead of the standard hex dump.
7701
7702    More complex signatures (e.g. PSS) can print out more meaningful
7703    information. Include DSA version that prints out the signature
7704    parameters r, s.
7705
7706    *Steve Henson*
7707
7708  * Password based recipient info support for CMS library: implementing
7709    RFC3211.
7710
7711    *Steve Henson*
7712
7713  * Split password based encryption into PBES2 and PBKDF2 functions. This
7714    neatly separates the code into cipher and PBE sections and is required
7715    for some algorithms that split PBES2 into separate pieces (such as
7716    password based CMS).
7717
7718    *Steve Henson*
7719
7720  * Session-handling fixes:
7721    - Fix handling of connections that are resuming with a session ID,
7722      but also support Session Tickets.
7723    - Fix a bug that suppressed issuing of a new ticket if the client
7724      presented a ticket with an expired session.
7725    - Try to set the ticket lifetime hint to something reasonable.
7726    - Make tickets shorter by excluding irrelevant information.
7727    - On the client side, don't ignore renewed tickets.
7728
7729    *Adam Langley, Bodo Moeller (Google)*
7730
7731  * Fix PSK session representation.
7732
7733    *Bodo Moeller*
7734
7735  * Add RC4-MD5 and AESNI-SHA1 "stitched" implementations.
7736
7737    This work was sponsored by Intel.
7738
7739    *Andy Polyakov*
7740
7741  * Add GCM support to TLS library. Some custom code is needed to split
7742    the IV between the fixed (from PRF) and explicit (from TLS record)
7743    portions. This adds all GCM ciphersuites supported by RFC5288 and
7744    RFC5289. Generalise some `AES*` cipherstrings to include GCM and
7745    add a special AESGCM string for GCM only.
7746
7747    *Steve Henson*
7748
7749  * Expand range of ctrls for AES GCM. Permit setting invocation
7750    field on decrypt and retrieval of invocation field only on encrypt.
7751
7752    *Steve Henson*
7753
7754  * Add HMAC ECC ciphersuites from RFC5289. Include SHA384 PRF support.
7755    As required by RFC5289 these ciphersuites cannot be used if for
7756    versions of TLS earlier than 1.2.
7757
7758    *Steve Henson*
7759
7760  * For FIPS capable OpenSSL interpret a NULL default public key method
7761    as unset and return the appropriate default but do *not* set the default.
7762    This means we can return the appropriate method in applications that
7763    switch between FIPS and non-FIPS modes.
7764
7765    *Steve Henson*
7766
7767  * Redirect HMAC and CMAC operations to FIPS module in FIPS mode. If an
7768    ENGINE is used then we cannot handle that in the FIPS module so we
7769    keep original code iff non-FIPS operations are allowed.
7770
7771    *Steve Henson*
7772
7773  * Add -attime option to openssl utilities.
7774
7775    *Peter Eckersley <pde@eff.org>, Ben Laurie and Steve Henson*
7776
7777  * Redirect DSA and DH operations to FIPS module in FIPS mode.
7778
7779    *Steve Henson*
7780
7781  * Redirect ECDSA and ECDH operations to FIPS module in FIPS mode. Also use
7782    FIPS EC methods unconditionally for now.
7783
7784    *Steve Henson*
7785
7786  * New build option no-ec2m to disable characteristic 2 code.
7787
7788    *Steve Henson*
7789
7790  * Backport libcrypto audit of return value checking from 1.1.0-dev; not
7791    all cases can be covered as some introduce binary incompatibilities.
7792
7793    *Steve Henson*
7794
7795  * Redirect RSA operations to FIPS module including keygen,
7796    encrypt, decrypt, sign and verify. Block use of non FIPS RSA methods.
7797
7798    *Steve Henson*
7799
7800  * Add similar low-level API blocking to ciphers.
7801
7802    *Steve Henson*
7803
7804  * low-level digest APIs are not approved in FIPS mode: any attempt
7805    to use these will cause a fatal error. Applications that *really* want
7806    to use them can use the `private_*` version instead.
7807
7808    *Steve Henson*
7809
7810  * Redirect cipher operations to FIPS module for FIPS builds.
7811
7812    *Steve Henson*
7813
7814  * Redirect digest operations to FIPS module for FIPS builds.
7815
7816    *Steve Henson*
7817
7818  * Update build system to add "fips" flag which will link in fipscanister.o
7819    for static and shared library builds embedding a signature if needed.
7820
7821    *Steve Henson*
7822
7823  * Output TLS supported curves in preference order instead of numerical
7824    order. This is currently hardcoded for the highest order curves first.
7825    This should be configurable so applications can judge speed vs strength.
7826
7827    *Steve Henson*
7828
7829  * Add TLS v1.2 server support for client authentication.
7830
7831    *Steve Henson*
7832
7833  * Add support for FIPS mode in ssl library: disable SSLv3, non-FIPS ciphers
7834    and enable MD5.
7835
7836    *Steve Henson*
7837
7838  * Functions FIPS_mode_set() and FIPS_mode() which call the underlying
7839    FIPS modules versions.
7840
7841    *Steve Henson*
7842
7843  * Add TLS v1.2 client side support for client authentication. Keep cache
7844    of handshake records longer as we don't know the hash algorithm to use
7845    until after the certificate request message is received.
7846
7847    *Steve Henson*
7848
7849  * Initial TLS v1.2 client support. Add a default signature algorithms
7850    extension including all the algorithms we support. Parse new signature
7851    format in client key exchange. Relax some ECC signing restrictions for
7852    TLS v1.2 as indicated in RFC5246.
7853
7854    *Steve Henson*
7855
7856  * Add server support for TLS v1.2 signature algorithms extension. Switch
7857    to new signature format when needed using client digest preference.
7858    All server ciphersuites should now work correctly in TLS v1.2. No client
7859    support yet and no support for client certificates.
7860
7861    *Steve Henson*
7862
7863  * Initial TLS v1.2 support. Add new SHA256 digest to ssl code, switch
7864    to SHA256 for PRF when using TLS v1.2 and later. Add new SHA256 based
7865    ciphersuites. At present only RSA key exchange ciphersuites work with
7866    TLS v1.2. Add new option for TLS v1.2 replacing the old and obsolete
7867    SSL_OP_PKCS1_CHECK flags with SSL_OP_NO_TLSv1_2. New TLSv1.2 methods
7868    and version checking.
7869
7870    *Steve Henson*
7871
7872  * New option OPENSSL_NO_SSL_INTERN. If an application can be compiled
7873    with this defined it will not be affected by any changes to ssl internal
7874    structures. Add several utility functions to allow openssl application
7875    to work with OPENSSL_NO_SSL_INTERN defined.
7876
7877    *Steve Henson*
7878
7879  * A long standing patch to add support for SRP from EdelWeb (Peter
7880    Sylvester and Christophe Renou) was integrated.
7881    *Christophe Renou <christophe.renou@edelweb.fr>, Peter Sylvester
7882    <peter.sylvester@edelweb.fr>, Tom Wu <tjw@cs.stanford.edu>, and
7883    Ben Laurie*
7884
7885  * Add functions to copy EVP_PKEY_METHOD and retrieve flags and id.
7886
7887    *Steve Henson*
7888
7889  * Permit abbreviated handshakes when renegotiating using the function
7890    SSL_renegotiate_abbreviated().
7891
7892    *Robin Seggelmann <seggelmann@fh-muenster.de>*
7893
7894  * Add call to ENGINE_register_all_complete() to
7895    ENGINE_load_builtin_engines(), so some implementations get used
7896    automatically instead of needing explicit application support.
7897
7898    *Steve Henson*
7899
7900  * Add support for TLS key exporter as described in RFC5705.
7901
7902    *Robin Seggelmann <seggelmann@fh-muenster.de>, Steve Henson*
7903
7904  * Initial TLSv1.1 support. Since TLSv1.1 is very similar to TLS v1.0 only
7905    a few changes are required:
7906
7907      Add SSL_OP_NO_TLSv1_1 flag.
7908      Add TLSv1_1 methods.
7909      Update version checking logic to handle version 1.1.
7910      Add explicit IV handling (ported from DTLS code).
7911      Add command line options to s_client/s_server.
7912
7913    *Steve Henson*
7914
7915 OpenSSL 1.0.0
7916 -------------
7917
7918 ### Changes between 1.0.0s and 1.0.0t [3 Dec 2015]
7919
7920  * X509_ATTRIBUTE memory leak
7921
7922    When presented with a malformed X509_ATTRIBUTE structure OpenSSL will leak
7923    memory. This structure is used by the PKCS#7 and CMS routines so any
7924    application which reads PKCS#7 or CMS data from untrusted sources is
7925    affected. SSL/TLS is not affected.
7926
7927    This issue was reported to OpenSSL by Adam Langley (Google/BoringSSL) using
7928    libFuzzer.
7929    ([CVE-2015-3195])
7930
7931    *Stephen Henson*
7932
7933  * Race condition handling PSK identify hint
7934
7935    If PSK identity hints are received by a multi-threaded client then
7936    the values are wrongly updated in the parent SSL_CTX structure. This can
7937    result in a race condition potentially leading to a double free of the
7938    identify hint data.
7939    ([CVE-2015-3196])
7940
7941    *Stephen Henson*
7942
7943 ### Changes between 1.0.0r and 1.0.0s [11 Jun 2015]
7944
7945  * Malformed ECParameters causes infinite loop
7946
7947    When processing an ECParameters structure OpenSSL enters an infinite loop
7948    if the curve specified is over a specially malformed binary polynomial
7949    field.
7950
7951    This can be used to perform denial of service against any
7952    system which processes public keys, certificate requests or
7953    certificates.  This includes TLS clients and TLS servers with
7954    client authentication enabled.
7955
7956    This issue was reported to OpenSSL by Joseph Barr-Pixton.
7957    ([CVE-2015-1788])
7958
7959    *Andy Polyakov*
7960
7961  * Exploitable out-of-bounds read in X509_cmp_time
7962
7963    X509_cmp_time does not properly check the length of the ASN1_TIME
7964    string and can read a few bytes out of bounds. In addition,
7965    X509_cmp_time accepts an arbitrary number of fractional seconds in the
7966    time string.
7967
7968    An attacker can use this to craft malformed certificates and CRLs of
7969    various sizes and potentially cause a segmentation fault, resulting in
7970    a DoS on applications that verify certificates or CRLs. TLS clients
7971    that verify CRLs are affected. TLS clients and servers with client
7972    authentication enabled may be affected if they use custom verification
7973    callbacks.
7974
7975    This issue was reported to OpenSSL by Robert Swiecki (Google), and
7976    independently by Hanno Böck.
7977    ([CVE-2015-1789])
7978
7979    *Emilia Käsper*
7980
7981  * PKCS7 crash with missing EnvelopedContent
7982
7983    The PKCS#7 parsing code does not handle missing inner EncryptedContent
7984    correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs
7985    with missing content and trigger a NULL pointer dereference on parsing.
7986
7987    Applications that decrypt PKCS#7 data or otherwise parse PKCS#7
7988    structures from untrusted sources are affected. OpenSSL clients and
7989    servers are not affected.
7990
7991    This issue was reported to OpenSSL by Michal Zalewski (Google).
7992    ([CVE-2015-1790])
7993
7994    *Emilia Käsper*
7995
7996  * CMS verify infinite loop with unknown hash function
7997
7998    When verifying a signedData message the CMS code can enter an infinite loop
7999    if presented with an unknown hash function OID. This can be used to perform
8000    denial of service against any system which verifies signedData messages using
8001    the CMS code.
8002    This issue was reported to OpenSSL by Johannes Bauer.
8003    ([CVE-2015-1792])
8004
8005    *Stephen Henson*
8006
8007  * Race condition handling NewSessionTicket
8008
8009    If a NewSessionTicket is received by a multi-threaded client when attempting to
8010    reuse a previous ticket then a race condition can occur potentially leading to
8011    a double free of the ticket data.
8012    ([CVE-2015-1791])
8013
8014    *Matt Caswell*
8015
8016 ### Changes between 1.0.0q and 1.0.0r [19 Mar 2015]
8017
8018  * Segmentation fault in ASN1_TYPE_cmp fix
8019
8020    The function ASN1_TYPE_cmp will crash with an invalid read if an attempt is
8021    made to compare ASN.1 boolean types. Since ASN1_TYPE_cmp is used to check
8022    certificate signature algorithm consistency this can be used to crash any
8023    certificate verification operation and exploited in a DoS attack. Any
8024    application which performs certificate verification is vulnerable including
8025    OpenSSL clients and servers which enable client authentication.
8026    ([CVE-2015-0286])
8027
8028    *Stephen Henson*
8029
8030  * ASN.1 structure reuse memory corruption fix
8031
8032    Reusing a structure in ASN.1 parsing may allow an attacker to cause
8033    memory corruption via an invalid write. Such reuse is and has been
8034    strongly discouraged and is believed to be rare.
8035
8036    Applications that parse structures containing CHOICE or ANY DEFINED BY
8037    components may be affected. Certificate parsing (d2i_X509 and related
8038    functions) are however not affected. OpenSSL clients and servers are
8039    not affected.
8040    ([CVE-2015-0287])
8041
8042    *Stephen Henson*
8043
8044  * PKCS7 NULL pointer dereferences fix
8045
8046    The PKCS#7 parsing code does not handle missing outer ContentInfo
8047    correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs with
8048    missing content and trigger a NULL pointer dereference on parsing.
8049
8050    Applications that verify PKCS#7 signatures, decrypt PKCS#7 data or
8051    otherwise parse PKCS#7 structures from untrusted sources are
8052    affected. OpenSSL clients and servers are not affected.
8053
8054    This issue was reported to OpenSSL by Michal Zalewski (Google).
8055    ([CVE-2015-0289])
8056
8057    *Emilia Käsper*
8058
8059  * DoS via reachable assert in SSLv2 servers fix
8060
8061    A malicious client can trigger an OPENSSL_assert (i.e., an abort) in
8062    servers that both support SSLv2 and enable export cipher suites by sending
8063    a specially crafted SSLv2 CLIENT-MASTER-KEY message.
8064
8065    This issue was discovered by Sean Burford (Google) and Emilia Käsper
8066    (OpenSSL development team).
8067    ([CVE-2015-0293])
8068
8069    *Emilia Käsper*
8070
8071  * Use After Free following d2i_ECPrivatekey error fix
8072
8073    A malformed EC private key file consumed via the d2i_ECPrivateKey function
8074    could cause a use after free condition. This, in turn, could cause a double
8075    free in several private key parsing functions (such as d2i_PrivateKey
8076    or EVP_PKCS82PKEY) and could lead to a DoS attack or memory corruption
8077    for applications that receive EC private keys from untrusted
8078    sources. This scenario is considered rare.
8079
8080    This issue was discovered by the BoringSSL project and fixed in their
8081    commit 517073cd4b.
8082    ([CVE-2015-0209])
8083
8084    *Matt Caswell*
8085
8086  * X509_to_X509_REQ NULL pointer deref fix
8087
8088    The function X509_to_X509_REQ will crash with a NULL pointer dereference if
8089    the certificate key is invalid. This function is rarely used in practice.
8090
8091    This issue was discovered by Brian Carpenter.
8092    ([CVE-2015-0288])
8093
8094    *Stephen Henson*
8095
8096  * Removed the export ciphers from the DEFAULT ciphers
8097
8098    *Kurt Roeckx*
8099
8100 ### Changes between 1.0.0p and 1.0.0q [15 Jan 2015]
8101
8102  * Build fixes for the Windows and OpenVMS platforms
8103
8104    *Matt Caswell and Richard Levitte*
8105
8106 ### Changes between 1.0.0o and 1.0.0p [8 Jan 2015]
8107
8108  * Fix DTLS segmentation fault in dtls1_get_record. A carefully crafted DTLS
8109    message can cause a segmentation fault in OpenSSL due to a NULL pointer
8110    dereference. This could lead to a Denial Of Service attack. Thanks to
8111    Markus Stenberg of Cisco Systems, Inc. for reporting this issue.
8112    ([CVE-2014-3571])
8113
8114    *Steve Henson*
8115
8116  * Fix DTLS memory leak in dtls1_buffer_record. A memory leak can occur in the
8117    dtls1_buffer_record function under certain conditions. In particular this
8118    could occur if an attacker sent repeated DTLS records with the same
8119    sequence number but for the next epoch. The memory leak could be exploited
8120    by an attacker in a Denial of Service attack through memory exhaustion.
8121    Thanks to Chris Mueller for reporting this issue.
8122    ([CVE-2015-0206])
8123
8124    *Matt Caswell*
8125
8126  * Fix issue where no-ssl3 configuration sets method to NULL. When openssl is
8127    built with the no-ssl3 option and a SSL v3 ClientHello is received the ssl
8128    method would be set to NULL which could later result in a NULL pointer
8129    dereference. Thanks to Frank Schmirler for reporting this issue.
8130    ([CVE-2014-3569])
8131
8132    *Kurt Roeckx*
8133
8134  * Abort handshake if server key exchange message is omitted for ephemeral
8135    ECDH ciphersuites.
8136
8137    Thanks to Karthikeyan Bhargavan of the PROSECCO team at INRIA for
8138    reporting this issue.
8139    ([CVE-2014-3572])
8140
8141    *Steve Henson*
8142
8143  * Remove non-export ephemeral RSA code on client and server. This code
8144    violated the TLS standard by allowing the use of temporary RSA keys in
8145    non-export ciphersuites and could be used by a server to effectively
8146    downgrade the RSA key length used to a value smaller than the server
8147    certificate. Thanks for Karthikeyan Bhargavan of the PROSECCO team at
8148    INRIA or reporting this issue.
8149    ([CVE-2015-0204])
8150
8151    *Steve Henson*
8152
8153  * Fixed issue where DH client certificates are accepted without verification.
8154    An OpenSSL server will accept a DH certificate for client authentication
8155    without the certificate verify message. This effectively allows a client to
8156    authenticate without the use of a private key. This only affects servers
8157    which trust a client certificate authority which issues certificates
8158    containing DH keys: these are extremely rare and hardly ever encountered.
8159    Thanks for Karthikeyan Bhargavan of the PROSECCO team at INRIA or reporting
8160    this issue.
8161    ([CVE-2015-0205])
8162
8163    *Steve Henson*
8164
8165  * Correct Bignum squaring. Bignum squaring (BN_sqr) may produce incorrect
8166    results on some platforms, including x86_64. This bug occurs at random
8167    with a very low probability, and is not known to be exploitable in any
8168    way, though its exact impact is difficult to determine. Thanks to Pieter
8169    Wuille (Blockstream) who reported this issue and also suggested an initial
8170    fix. Further analysis was conducted by the OpenSSL development team and
8171    Adam Langley of Google. The final fix was developed by Andy Polyakov of
8172    the OpenSSL core team.
8173    ([CVE-2014-3570])
8174
8175    *Andy Polyakov*
8176
8177  * Fix various certificate fingerprint issues.
8178
8179    By using non-DER or invalid encodings outside the signed portion of a
8180    certificate the fingerprint can be changed without breaking the signature.
8181    Although no details of the signed portion of the certificate can be changed
8182    this can cause problems with some applications: e.g. those using the
8183    certificate fingerprint for blacklists.
8184
8185    1. Reject signatures with non zero unused bits.
8186
8187    If the BIT STRING containing the signature has non zero unused bits reject
8188    the signature. All current signature algorithms require zero unused bits.
8189
8190    2. Check certificate algorithm consistency.
8191
8192    Check the AlgorithmIdentifier inside TBS matches the one in the
8193    certificate signature. NB: this will result in signature failure
8194    errors for some broken certificates.
8195
8196    Thanks to Konrad Kraszewski from Google for reporting this issue.
8197
8198    3. Check DSA/ECDSA signatures use DER.
8199
8200    Reencode DSA/ECDSA signatures and compare with the original received
8201    signature. Return an error if there is a mismatch.
8202
8203    This will reject various cases including garbage after signature
8204    (thanks to Antti Karjalainen and Tuomo Untinen from the Codenomicon CROSS
8205    program for discovering this case) and use of BER or invalid ASN.1 INTEGERs
8206    (negative or with leading zeroes).
8207
8208    Further analysis was conducted and fixes were developed by Stephen Henson
8209    of the OpenSSL core team.
8210
8211    ([CVE-2014-8275])
8212
8213    *Steve Henson*
8214
8215 ### Changes between 1.0.0n and 1.0.0o [15 Oct 2014]
8216
8217  * Session Ticket Memory Leak.
8218
8219    When an OpenSSL SSL/TLS/DTLS server receives a session ticket the
8220    integrity of that ticket is first verified. In the event of a session
8221    ticket integrity check failing, OpenSSL will fail to free memory
8222    causing a memory leak. By sending a large number of invalid session
8223    tickets an attacker could exploit this issue in a Denial Of Service
8224    attack.
8225    ([CVE-2014-3567])
8226
8227    *Steve Henson*
8228
8229  * Build option no-ssl3 is incomplete.
8230
8231    When OpenSSL is configured with "no-ssl3" as a build option, servers
8232    could accept and complete a SSL 3.0 handshake, and clients could be
8233    configured to send them.
8234    ([CVE-2014-3568])
8235
8236    *Akamai and the OpenSSL team*
8237
8238  * Add support for TLS_FALLBACK_SCSV.
8239    Client applications doing fallback retries should call
8240    SSL_set_mode(s, SSL_MODE_SEND_FALLBACK_SCSV).
8241    ([CVE-2014-3566])
8242
8243    *Adam Langley, Bodo Moeller*
8244
8245  * Add additional DigestInfo checks.
8246
8247    Reencode DigestInto in DER and check against the original when
8248    verifying RSA signature: this will reject any improperly encoded
8249    DigestInfo structures.
8250
8251    Note: this is a precautionary measure and no attacks are currently known.
8252
8253    *Steve Henson*
8254
8255 ### Changes between 1.0.0m and 1.0.0n [6 Aug 2014]
8256
8257  * OpenSSL DTLS clients enabling anonymous (EC)DH ciphersuites are subject
8258    to a denial of service attack. A malicious server can crash the client
8259    with a null pointer dereference (read) by specifying an anonymous (EC)DH
8260    ciphersuite and sending carefully crafted handshake messages.
8261
8262    Thanks to Felix Gröbert (Google) for discovering and researching this
8263    issue.
8264    ([CVE-2014-3510])
8265
8266    *Emilia Käsper*
8267
8268  * By sending carefully crafted DTLS packets an attacker could cause openssl
8269    to leak memory. This can be exploited through a Denial of Service attack.
8270    Thanks to Adam Langley for discovering and researching this issue.
8271    ([CVE-2014-3507])
8272
8273    *Adam Langley*
8274
8275  * An attacker can force openssl to consume large amounts of memory whilst
8276    processing DTLS handshake messages. This can be exploited through a
8277    Denial of Service attack.
8278    Thanks to Adam Langley for discovering and researching this issue.
8279    ([CVE-2014-3506])
8280
8281    *Adam Langley*
8282
8283  * An attacker can force an error condition which causes openssl to crash
8284    whilst processing DTLS packets due to memory being freed twice. This
8285    can be exploited through a Denial of Service attack.
8286    Thanks to Adam Langley and Wan-Teh Chang for discovering and researching
8287    this issue.
8288    ([CVE-2014-3505])
8289
8290    *Adam Langley*
8291
8292  * If a multithreaded client connects to a malicious server using a resumed
8293    session and the server sends an ec point format extension it could write
8294    up to 255 bytes to freed memory.
8295
8296    Thanks to Gabor Tyukasz (LogMeIn Inc) for discovering and researching this
8297    issue.
8298    ([CVE-2014-3509])
8299
8300    *Gabor Tyukasz*
8301
8302  * A flaw in OBJ_obj2txt may cause pretty printing functions such as
8303    X509_name_oneline, X509_name_print_ex et al. to leak some information
8304    from the stack. Applications may be affected if they echo pretty printing
8305    output to the attacker.
8306
8307    Thanks to Ivan Fratric (Google) for discovering this issue.
8308    ([CVE-2014-3508])
8309
8310    *Emilia Käsper, and Steve Henson*
8311
8312  * Fix ec_GFp_simple_points_make_affine (thus, EC_POINTs_mul etc.)
8313    for corner cases. (Certain input points at infinity could lead to
8314    bogus results, with non-infinity inputs mapped to infinity too.)
8315
8316    *Bodo Moeller*
8317
8318 ### Changes between 1.0.0l and 1.0.0m [5 Jun 2014]
8319
8320  * Fix for SSL/TLS MITM flaw. An attacker using a carefully crafted
8321    handshake can force the use of weak keying material in OpenSSL
8322    SSL/TLS clients and servers.
8323
8324    Thanks to KIKUCHI Masashi (Lepidum Co. Ltd.) for discovering and
8325    researching this issue. ([CVE-2014-0224])
8326
8327    *KIKUCHI Masashi, Steve Henson*
8328
8329  * Fix DTLS recursion flaw. By sending an invalid DTLS handshake to an
8330    OpenSSL DTLS client the code can be made to recurse eventually crashing
8331    in a DoS attack.
8332
8333    Thanks to Imre Rad (Search-Lab Ltd.) for discovering this issue.
8334    ([CVE-2014-0221])
8335
8336    *Imre Rad, Steve Henson*
8337
8338  * Fix DTLS invalid fragment vulnerability. A buffer overrun attack can
8339    be triggered by sending invalid DTLS fragments to an OpenSSL DTLS
8340    client or server. This is potentially exploitable to run arbitrary
8341    code on a vulnerable client or server.
8342
8343    Thanks to Jüri Aedla for reporting this issue. ([CVE-2014-0195])
8344
8345    *Jüri Aedla, Steve Henson*
8346
8347  * Fix bug in TLS code where clients enable anonymous ECDH ciphersuites
8348    are subject to a denial of service attack.
8349
8350    Thanks to Felix Gröbert and Ivan Fratric at Google for discovering
8351    this issue. ([CVE-2014-3470])
8352
8353    *Felix Gröbert, Ivan Fratric, Steve Henson*
8354
8355  * Harmonize version and its documentation. -f flag is used to display
8356    compilation flags.
8357
8358    *mancha <mancha1@zoho.com>*
8359
8360  * Fix eckey_priv_encode so it immediately returns an error upon a failure
8361    in i2d_ECPrivateKey.
8362
8363    *mancha <mancha1@zoho.com>*
8364
8365  * Fix some double frees. These are not thought to be exploitable.
8366
8367    *mancha <mancha1@zoho.com>*
8368
8369  * Fix for the attack described in the paper "Recovering OpenSSL
8370    ECDSA Nonces Using the FLUSH+RELOAD Cache Side-channel Attack"
8371    by Yuval Yarom and Naomi Benger. Details can be obtained from:
8372    <http://eprint.iacr.org/2014/140>
8373
8374    Thanks to Yuval Yarom and Naomi Benger for discovering this
8375    flaw and to Yuval Yarom for supplying a fix ([CVE-2014-0076])
8376
8377    *Yuval Yarom and Naomi Benger*
8378
8379 ### Changes between 1.0.0k and 1.0.0l [6 Jan 2014]
8380
8381  * Keep original DTLS digest and encryption contexts in retransmission
8382    structures so we can use the previous session parameters if they need
8383    to be resent. ([CVE-2013-6450])
8384
8385    *Steve Henson*
8386
8387  * Add option SSL_OP_SAFARI_ECDHE_ECDSA_BUG (part of SSL_OP_ALL) which
8388    avoids preferring ECDHE-ECDSA ciphers when the client appears to be
8389    Safari on OS X.  Safari on OS X 10.8..10.8.3 advertises support for
8390    several ECDHE-ECDSA ciphers, but fails to negotiate them.  The bug
8391    is fixed in OS X 10.8.4, but Apple have ruled out both hot fixing
8392    10.8..10.8.3 and forcing users to upgrade to 10.8.4 or newer.
8393
8394    *Rob Stradling, Adam Langley*
8395
8396 ### Changes between 1.0.0j and 1.0.0k [5 Feb 2013]
8397
8398  * Make the decoding of SSLv3, TLS and DTLS CBC records constant time.
8399
8400    This addresses the flaw in CBC record processing discovered by
8401    Nadhem Alfardan and Kenny Paterson. Details of this attack can be found
8402    at: <http://www.isg.rhul.ac.uk/tls/>
8403
8404    Thanks go to Nadhem Alfardan and Kenny Paterson of the Information
8405    Security Group at Royal Holloway, University of London
8406    (www.isg.rhul.ac.uk) for discovering this flaw and Adam Langley and
8407    Emilia Käsper for the initial patch.
8408    ([CVE-2013-0169])
8409
8410    *Emilia Käsper, Adam Langley, Ben Laurie, Andy Polyakov, Steve Henson*
8411
8412  * Return an error when checking OCSP signatures when key is NULL.
8413    This fixes a DoS attack. ([CVE-2013-0166])
8414
8415    *Steve Henson*
8416
8417  * Call OCSP Stapling callback after ciphersuite has been chosen, so
8418    the right response is stapled. Also change SSL_get_certificate()
8419    so it returns the certificate actually sent.
8420    See <http://rt.openssl.org/Ticket/Display.html?id=2836>.
8421    (This is a backport)
8422
8423    *Rob Stradling <rob.stradling@comodo.com>*
8424
8425  * Fix possible deadlock when decoding public keys.
8426
8427    *Steve Henson*
8428
8429 ### Changes between 1.0.0i and 1.0.0j [10 May 2012]
8430
8431 [NB: OpenSSL 1.0.0i and later 1.0.0 patch levels were released after
8432 OpenSSL 1.0.1.]
8433
8434  * Sanity check record length before skipping explicit IV in DTLS
8435    to fix DoS attack.
8436
8437    Thanks to Codenomicon for discovering this issue using Fuzz-o-Matic
8438    fuzzing as a service testing platform.
8439    ([CVE-2012-2333])
8440
8441    *Steve Henson*
8442
8443  * Initialise tkeylen properly when encrypting CMS messages.
8444    Thanks to Solar Designer of Openwall for reporting this issue.
8445
8446    *Steve Henson*
8447
8448 ### Changes between 1.0.0h and 1.0.0i [19 Apr 2012]
8449
8450  * Check for potentially exploitable overflows in asn1_d2i_read_bio
8451    BUF_mem_grow and BUF_mem_grow_clean. Refuse attempts to shrink buffer
8452    in CRYPTO_realloc_clean.
8453
8454    Thanks to Tavis Ormandy, Google Security Team, for discovering this
8455    issue and to Adam Langley <agl@chromium.org> for fixing it.
8456    ([CVE-2012-2110])
8457
8458    *Adam Langley (Google), Tavis Ormandy, Google Security Team*
8459
8460 ### Changes between 1.0.0g and 1.0.0h [12 Mar 2012]
8461
8462  * Fix MMA (Bleichenbacher's attack on PKCS #1 v1.5 RSA padding) weakness
8463    in CMS and PKCS7 code. When RSA decryption fails use a random key for
8464    content decryption and always return the same error. Note: this attack
8465    needs on average 2^20 messages so it only affects automated senders. The
8466    old behaviour can be re-enabled in the CMS code by setting the
8467    CMS_DEBUG_DECRYPT flag: this is useful for debugging and testing where
8468    an MMA defence is not necessary.
8469    Thanks to Ivan Nestlerode <inestlerode@us.ibm.com> for discovering
8470    this issue. ([CVE-2012-0884])
8471
8472    *Steve Henson*
8473
8474  * Fix CVE-2011-4619: make sure we really are receiving a
8475    client hello before rejecting multiple SGC restarts. Thanks to
8476    Ivan Nestlerode <inestlerode@us.ibm.com> for discovering this bug.
8477
8478    *Steve Henson*
8479
8480 ### Changes between 1.0.0f and 1.0.0g [18 Jan 2012]
8481
8482  * Fix for DTLS DoS issue introduced by fix for CVE-2011-4109.
8483    Thanks to Antonio Martin, Enterprise Secure Access Research and
8484    Development, Cisco Systems, Inc. for discovering this bug and
8485    preparing a fix. ([CVE-2012-0050])
8486
8487    *Antonio Martin*
8488
8489 ### Changes between 1.0.0e and 1.0.0f [4 Jan 2012]
8490
8491  * Nadhem Alfardan and Kenny Paterson have discovered an extension
8492    of the Vaudenay padding oracle attack on CBC mode encryption
8493    which enables an efficient plaintext recovery attack against
8494    the OpenSSL implementation of DTLS. Their attack exploits timing
8495    differences arising during decryption processing. A research
8496    paper describing this attack can be found at:
8497    <http://www.isg.rhul.ac.uk/~kp/dtls.pdf>
8498    Thanks go to Nadhem Alfardan and Kenny Paterson of the Information
8499    Security Group at Royal Holloway, University of London
8500    (www.isg.rhul.ac.uk) for discovering this flaw and to Robin Seggelmann
8501    <seggelmann@fh-muenster.de> and Michael Tuexen <tuexen@fh-muenster.de>
8502    for preparing the fix. ([CVE-2011-4108])
8503
8504    *Robin Seggelmann, Michael Tuexen*
8505
8506  * Clear bytes used for block padding of SSL 3.0 records.
8507    ([CVE-2011-4576])
8508
8509    *Adam Langley (Google)*
8510
8511  * Only allow one SGC handshake restart for SSL/TLS. Thanks to George
8512    Kadianakis <desnacked@gmail.com> for discovering this issue and
8513    Adam Langley for preparing the fix. ([CVE-2011-4619])
8514
8515    *Adam Langley (Google)*
8516
8517  * Check parameters are not NULL in GOST ENGINE. ([CVE-2012-0027])
8518
8519    *Andrey Kulikov <amdeich@gmail.com>*
8520
8521  * Prevent malformed RFC3779 data triggering an assertion failure.
8522    Thanks to Andrew Chi, BBN Technologies, for discovering the flaw
8523    and Rob Austein <sra@hactrn.net> for fixing it. ([CVE-2011-4577])
8524
8525    *Rob Austein <sra@hactrn.net>*
8526
8527  * Improved PRNG seeding for VOS.
8528
8529    *Paul Green <Paul.Green@stratus.com>*
8530
8531  * Fix ssl_ciph.c set-up race.
8532
8533    *Adam Langley (Google)*
8534
8535  * Fix spurious failures in ecdsatest.c.
8536
8537    *Emilia Käsper (Google)*
8538
8539  * Fix the BIO_f_buffer() implementation (which was mixing different
8540    interpretations of the `..._len` fields).
8541
8542    *Adam Langley (Google)*
8543
8544  * Fix handling of BN_BLINDING: now BN_BLINDING_invert_ex (rather than
8545    BN_BLINDING_invert_ex) calls BN_BLINDING_update, ensuring that concurrent
8546    threads won't reuse the same blinding coefficients.
8547
8548    This also avoids the need to obtain the CRYPTO_LOCK_RSA_BLINDING
8549    lock to call BN_BLINDING_invert_ex, and avoids one use of
8550    BN_BLINDING_update for each BN_BLINDING structure (previously,
8551    the last update always remained unused).
8552
8553    *Emilia Käsper (Google)*
8554
8555  * In ssl3_clear, preserve s3->init_extra along with s3->rbuf.
8556
8557    *Bob Buckholz (Google)*
8558
8559 ### Changes between 1.0.0d and 1.0.0e [6 Sep 2011]
8560
8561  * Fix bug where CRLs with nextUpdate in the past are sometimes accepted
8562    by initialising X509_STORE_CTX properly. ([CVE-2011-3207])
8563
8564    *Kaspar Brand <ossl@velox.ch>*
8565
8566  * Fix SSL memory handling for (EC)DH ciphersuites, in particular
8567    for multi-threaded use of ECDH. ([CVE-2011-3210])
8568
8569    *Adam Langley (Google)*
8570
8571  * Fix x509_name_ex_d2i memory leak on bad inputs.
8572
8573    *Bodo Moeller*
8574
8575  * Remove hard coded ecdsaWithSHA1 signature tests in ssl code and check
8576    signature public key algorithm by using OID xref utilities instead.
8577    Before this you could only use some ECC ciphersuites with SHA1 only.
8578
8579    *Steve Henson*
8580
8581  * Add protection against ECDSA timing attacks as mentioned in the paper
8582    by Billy Bob Brumley and Nicola Tuveri, see:
8583    <http://eprint.iacr.org/2011/232.pdf>
8584
8585    *Billy Bob Brumley and Nicola Tuveri*
8586
8587 ### Changes between 1.0.0c and 1.0.0d [8 Feb 2011]
8588
8589  * Fix parsing of OCSP stapling ClientHello extension. CVE-2011-0014
8590
8591    *Neel Mehta, Adam Langley, Bodo Moeller (Google)*
8592
8593  * Fix bug in string printing code: if *any* escaping is enabled we must
8594    escape the escape character (backslash) or the resulting string is
8595    ambiguous.
8596
8597    *Steve Henson*
8598
8599 ### Changes between 1.0.0b and 1.0.0c  [2 Dec 2010]
8600
8601  * Disable code workaround for ancient and obsolete Netscape browsers
8602    and servers: an attacker can use it in a ciphersuite downgrade attack.
8603    Thanks to Martin Rex for discovering this bug. CVE-2010-4180
8604
8605    *Steve Henson*
8606
8607  * Fixed J-PAKE implementation error, originally discovered by
8608    Sebastien Martini, further info and confirmation from Stefan
8609    Arentz and Feng Hao. Note that this fix is a security fix. CVE-2010-4252
8610
8611    *Ben Laurie*
8612
8613 ### Changes between 1.0.0a and 1.0.0b  [16 Nov 2010]
8614
8615  * Fix extension code to avoid race conditions which can result in a buffer
8616    overrun vulnerability: resumed sessions must not be modified as they can
8617    be shared by multiple threads. CVE-2010-3864
8618
8619    *Steve Henson*
8620
8621  * Fix WIN32 build system to correctly link an ENGINE directory into
8622    a DLL.
8623
8624    *Steve Henson*
8625
8626 ### Changes between 1.0.0 and 1.0.0a  [01 Jun 2010]
8627
8628  * Check return value of int_rsa_verify in pkey_rsa_verifyrecover
8629    ([CVE-2010-1633])
8630
8631    *Steve Henson, Peter-Michael Hager <hager@dortmund.net>*
8632
8633 ### Changes between 0.9.8n and 1.0.0  [29 Mar 2010]
8634
8635  * Add "missing" function EVP_CIPHER_CTX_copy(). This copies a cipher
8636    context. The operation can be customised via the ctrl mechanism in
8637    case ENGINEs want to include additional functionality.
8638
8639    *Steve Henson*
8640
8641  * Tolerate yet another broken PKCS#8 key format: private key value negative.
8642
8643    *Steve Henson*
8644
8645  * Add new -subject_hash_old and -issuer_hash_old options to x509 utility to
8646    output hashes compatible with older versions of OpenSSL.
8647
8648    *Willy Weisz <weisz@vcpc.univie.ac.at>*
8649
8650  * Fix compression algorithm handling: if resuming a session use the
8651    compression algorithm of the resumed session instead of determining
8652    it from client hello again. Don't allow server to change algorithm.
8653
8654    *Steve Henson*
8655
8656  * Add load_crls() function to commands tidying load_certs() too. Add option
8657    to verify utility to allow additional CRLs to be included.
8658
8659    *Steve Henson*
8660
8661  * Update OCSP request code to permit adding custom headers to the request:
8662    some responders need this.
8663
8664    *Steve Henson*
8665
8666  * The function EVP_PKEY_sign() returns <=0 on error: check return code
8667    correctly.
8668
8669    *Julia Lawall <julia@diku.dk>*
8670
8671  * Update verify callback code in `apps/s_cb.c` and `apps/verify.c`, it
8672    needlessly dereferenced structures, used obsolete functions and
8673    didn't handle all updated verify codes correctly.
8674
8675    *Steve Henson*
8676
8677  * Disable MD2 in the default configuration.
8678
8679    *Steve Henson*
8680
8681  * In BIO_pop() and BIO_push() use the ctrl argument (which was NULL) to
8682    indicate the initial BIO being pushed or popped. This makes it possible
8683    to determine whether the BIO is the one explicitly called or as a result
8684    of the ctrl being passed down the chain. Fix BIO_pop() and SSL BIOs so
8685    it handles reference counts correctly and doesn't zero out the I/O bio
8686    when it is not being explicitly popped. WARNING: applications which
8687    included workarounds for the old buggy behaviour will need to be modified
8688    or they could free up already freed BIOs.
8689
8690    *Steve Henson*
8691
8692  * Extend the uni2asc/asc2uni => OPENSSL_uni2asc/OPENSSL_asc2uni
8693    renaming to all platforms (within the 0.9.8 branch, this was
8694    done conditionally on Netware platforms to avoid a name clash).
8695
8696    *Guenter <lists@gknw.net>*
8697
8698  * Add ECDHE and PSK support to DTLS.
8699
8700    *Michael Tuexen <tuexen@fh-muenster.de>*
8701
8702  * Add CHECKED_STACK_OF macro to safestack.h, otherwise safestack can't
8703    be used on C++.
8704
8705    *Steve Henson*
8706
8707  * Add "missing" function EVP_MD_flags() (without this the only way to
8708    retrieve a digest flags is by accessing the structure directly. Update
8709    `EVP_MD_do_all*()` and `EVP_CIPHER_do_all*()` to include the name a digest
8710    or cipher is registered as in the "from" argument. Print out all
8711    registered digests in the dgst usage message instead of manually
8712    attempting to work them out.
8713
8714    *Steve Henson*
8715
8716  * If no SSLv2 ciphers are used don't use an SSLv2 compatible client hello:
8717    this allows the use of compression and extensions. Change default cipher
8718    string to remove SSLv2 ciphersuites. This effectively avoids ancient SSLv2
8719    by default unless an application cipher string requests it.
8720
8721    *Steve Henson*
8722
8723  * Alter match criteria in PKCS12_parse(). It used to try to use local
8724    key ids to find matching certificates and keys but some PKCS#12 files
8725    don't follow the (somewhat unwritten) rules and this strategy fails.
8726    Now just gather all certificates together and the first private key
8727    then look for the first certificate that matches the key.
8728
8729    *Steve Henson*
8730
8731  * Support use of registered digest and cipher names for dgst and cipher
8732    commands instead of having to add each one as a special case. So now
8733    you can do:
8734
8735            openssl sha256 foo
8736
8737    as well as:
8738
8739            openssl dgst -sha256 foo
8740
8741    and this works for ENGINE based algorithms too.
8742
8743    *Steve Henson*
8744
8745  * Update Gost ENGINE to support parameter files.
8746
8747    *Victor B. Wagner <vitus@cryptocom.ru>*
8748
8749  * Support GeneralizedTime in ca utility.
8750
8751    *Oliver Martin <oliver@volatilevoid.net>, Steve Henson*
8752
8753  * Enhance the hash format used for certificate directory links. The new
8754    form uses the canonical encoding (meaning equivalent names will work
8755    even if they aren't identical) and uses SHA1 instead of MD5. This form
8756    is incompatible with the older format and as a result c_rehash should
8757    be used to rebuild symbolic links.
8758
8759    *Steve Henson*
8760
8761  * Make PKCS#8 the default write format for private keys, replacing the
8762    traditional format. This form is standardised, more secure and doesn't
8763    include an implicit MD5 dependency.
8764
8765    *Steve Henson*
8766
8767  * Add a $gcc_devteam_warn option to Configure. The idea is that any code
8768    committed to OpenSSL should pass this lot as a minimum.
8769
8770    *Steve Henson*
8771
8772  * Add session ticket override functionality for use by EAP-FAST.
8773
8774    *Jouni Malinen <j@w1.fi>*
8775
8776  * Modify HMAC functions to return a value. Since these can be implemented
8777    in an ENGINE errors can occur.
8778
8779    *Steve Henson*
8780
8781  * Type-checked OBJ_bsearch_ex.
8782
8783    *Ben Laurie*
8784
8785  * Type-checked OBJ_bsearch. Also some constification necessitated
8786    by type-checking.  Still to come: TXT_DB, bsearch(?),
8787    OBJ_bsearch_ex, qsort, CRYPTO_EX_DATA, ASN1_VALUE, ASN1_STRING,
8788    CONF_VALUE.
8789
8790    *Ben Laurie*
8791
8792  * New function OPENSSL_gmtime_adj() to add a specific number of days and
8793    seconds to a tm structure directly, instead of going through OS
8794    specific date routines. This avoids any issues with OS routines such
8795    as the year 2038 bug. New `*_adj()` functions for ASN1 time structures
8796    and X509_time_adj_ex() to cover the extended range. The existing
8797    X509_time_adj() is still usable and will no longer have any date issues.
8798
8799    *Steve Henson*
8800
8801  * Delta CRL support. New use deltas option which will attempt to locate
8802    and search any appropriate delta CRLs available.
8803
8804    This work was sponsored by Google.
8805
8806    *Steve Henson*
8807
8808  * Support for CRLs partitioned by reason code. Reorganise CRL processing
8809    code and add additional score elements. Validate alternate CRL paths
8810    as part of the CRL checking and indicate a new error "CRL path validation
8811    error" in this case. Applications wanting additional details can use
8812    the verify callback and check the new "parent" field. If this is not
8813    NULL CRL path validation is taking place. Existing applications won't
8814    see this because it requires extended CRL support which is off by
8815    default.
8816
8817    This work was sponsored by Google.
8818
8819    *Steve Henson*
8820
8821  * Support for freshest CRL extension.
8822
8823    This work was sponsored by Google.
8824
8825    *Steve Henson*
8826
8827  * Initial indirect CRL support. Currently only supported in the CRLs
8828    passed directly and not via lookup. Process certificate issuer
8829    CRL entry extension and lookup CRL entries by bother issuer name
8830    and serial number. Check and process CRL issuer entry in IDP extension.
8831
8832    This work was sponsored by Google.
8833
8834    *Steve Henson*
8835
8836  * Add support for distinct certificate and CRL paths. The CRL issuer
8837    certificate is validated separately in this case. Only enabled if
8838    an extended CRL support flag is set: this flag will enable additional
8839    CRL functionality in future.
8840
8841    This work was sponsored by Google.
8842
8843    *Steve Henson*
8844
8845  * Add support for policy mappings extension.
8846
8847    This work was sponsored by Google.
8848
8849    *Steve Henson*
8850
8851  * Fixes to pathlength constraint, self issued certificate handling,
8852    policy processing to align with RFC3280 and PKITS tests.
8853
8854    This work was sponsored by Google.
8855
8856    *Steve Henson*
8857
8858  * Support for name constraints certificate extension. DN, email, DNS
8859    and URI types are currently supported.
8860
8861    This work was sponsored by Google.
8862
8863    *Steve Henson*
8864
8865  * To cater for systems that provide a pointer-based thread ID rather
8866    than numeric, deprecate the current numeric thread ID mechanism and
8867    replace it with a structure and associated callback type. This
8868    mechanism allows a numeric "hash" to be extracted from a thread ID in
8869    either case, and on platforms where pointers are larger than 'long',
8870    mixing is done to help ensure the numeric 'hash' is usable even if it
8871    can't be guaranteed unique. The default mechanism is to use "&errno"
8872    as a pointer-based thread ID to distinguish between threads.
8873
8874    Applications that want to provide their own thread IDs should now use
8875    CRYPTO_THREADID_set_callback() to register a callback that will call
8876    either CRYPTO_THREADID_set_numeric() or CRYPTO_THREADID_set_pointer().
8877
8878    Note that ERR_remove_state() is now deprecated, because it is tied
8879    to the assumption that thread IDs are numeric.  ERR_remove_state(0)
8880    to free the current thread's error state should be replaced by
8881    ERR_remove_thread_state(NULL).
8882
8883    (This new approach replaces the functions CRYPTO_set_idptr_callback(),
8884    CRYPTO_get_idptr_callback(), and CRYPTO_thread_idptr() that existed in
8885    OpenSSL 0.9.9-dev between June 2006 and August 2008. Also, if an
8886    application was previously providing a numeric thread callback that
8887    was inappropriate for distinguishing threads, then uniqueness might
8888    have been obtained with &errno that happened immediately in the
8889    intermediate development versions of OpenSSL; this is no longer the
8890    case, the numeric thread callback will now override the automatic use
8891    of &errno.)
8892
8893    *Geoff Thorpe, with help from Bodo Moeller*
8894
8895  * Initial support for different CRL issuing certificates. This covers a
8896    simple case where the self issued certificates in the chain exist and
8897    the real CRL issuer is higher in the existing chain.
8898
8899    This work was sponsored by Google.
8900
8901    *Steve Henson*
8902
8903  * Removed effectively defunct crypto/store from the build.
8904
8905    *Ben Laurie*
8906
8907  * Revamp of STACK to provide stronger type-checking. Still to come:
8908    TXT_DB, bsearch(?), OBJ_bsearch, qsort, CRYPTO_EX_DATA, ASN1_VALUE,
8909    ASN1_STRING, CONF_VALUE.
8910
8911    *Ben Laurie*
8912
8913  * Add a new SSL_MODE_RELEASE_BUFFERS mode flag to release unused buffer
8914    RAM on SSL connections.  This option can save about 34k per idle SSL.
8915
8916    *Nick Mathewson*
8917
8918  * Revamp of LHASH to provide stronger type-checking. Still to come:
8919    STACK, TXT_DB, bsearch, qsort.
8920
8921    *Ben Laurie*
8922
8923  * Initial support for Cryptographic Message Syntax (aka CMS) based
8924    on RFC3850, RFC3851 and RFC3852. New cms directory and cms utility,
8925    support for data, signedData, compressedData, digestedData and
8926    encryptedData, envelopedData types included. Scripts to check against
8927    RFC4134 examples draft and interop and consistency checks of many
8928    content types and variants.
8929
8930    *Steve Henson*
8931
8932  * Add options to enc utility to support use of zlib compression BIO.
8933
8934    *Steve Henson*
8935
8936  * Extend mk1mf to support importing of options and assembly language
8937    files from Configure script, currently only included in VC-WIN32.
8938    The assembly language rules can now optionally generate the source
8939    files from the associated perl scripts.
8940
8941    *Steve Henson*
8942
8943  * Implement remaining functionality needed to support GOST ciphersuites.
8944    Interop testing has been performed using CryptoPro implementations.
8945
8946    *Victor B. Wagner <vitus@cryptocom.ru>*
8947
8948  * s390x assembler pack.
8949
8950    *Andy Polyakov*
8951
8952  * ARMv4 assembler pack. ARMv4 refers to v4 and later ISA, not CPU
8953    "family."
8954
8955    *Andy Polyakov*
8956
8957  * Implement Opaque PRF Input TLS extension as specified in
8958    draft-rescorla-tls-opaque-prf-input-00.txt.  Since this is not an
8959    official specification yet and no extension type assignment by
8960    IANA exists, this extension (for now) will have to be explicitly
8961    enabled when building OpenSSL by providing the extension number
8962    to use.  For example, specify an option
8963
8964            -DTLSEXT_TYPE_opaque_prf_input=0x9527
8965
8966    to the "config" or "Configure" script to enable the extension,
8967    assuming extension number 0x9527 (which is a completely arbitrary
8968    and unofficial assignment based on the MD5 hash of the Internet
8969    Draft).  Note that by doing so, you potentially lose
8970    interoperability with other TLS implementations since these might
8971    be using the same extension number for other purposes.
8972
8973    SSL_set_tlsext_opaque_prf_input(ssl, src, len) is used to set the
8974    opaque PRF input value to use in the handshake.  This will create
8975    an internal copy of the length-'len' string at 'src', and will
8976    return non-zero for success.
8977
8978    To get more control and flexibility, provide a callback function
8979    by using
8980
8981            SSL_CTX_set_tlsext_opaque_prf_input_callback(ctx, cb)
8982            SSL_CTX_set_tlsext_opaque_prf_input_callback_arg(ctx, arg)
8983
8984    where
8985
8986            int (*cb)(SSL *, void *peerinput, size_t len, void *arg);
8987            void *arg;
8988
8989    Callback function 'cb' will be called in handshakes, and is
8990    expected to use SSL_set_tlsext_opaque_prf_input() as appropriate.
8991    Argument 'arg' is for application purposes (the value as given to
8992    SSL_CTX_set_tlsext_opaque_prf_input_callback_arg() will directly
8993    be provided to the callback function).  The callback function
8994    has to return non-zero to report success: usually 1 to use opaque
8995    PRF input just if possible, or 2 to enforce use of the opaque PRF
8996    input.  In the latter case, the library will abort the handshake
8997    if opaque PRF input is not successfully negotiated.
8998
8999    Arguments 'peerinput' and 'len' given to the callback function
9000    will always be NULL and 0 in the case of a client.  A server will
9001    see the client's opaque PRF input through these variables if
9002    available (NULL and 0 otherwise).  Note that if the server
9003    provides an opaque PRF input, the length must be the same as the
9004    length of the client's opaque PRF input.
9005
9006    Note that the callback function will only be called when creating
9007    a new session (session resumption can resume whatever was
9008    previously negotiated), and will not be called in SSL 2.0
9009    handshakes; thus, SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2) or
9010    SSL_set_options(ssl, SSL_OP_NO_SSLv2) is especially recommended
9011    for applications that need to enforce opaque PRF input.
9012
9013    *Bodo Moeller*
9014
9015  * Update ssl code to support digests other than SHA1+MD5 for handshake
9016    MAC.
9017
9018    *Victor B. Wagner <vitus@cryptocom.ru>*
9019
9020  * Add RFC4507 support to OpenSSL. This includes the corrections in
9021    RFC4507bis. The encrypted ticket format is an encrypted encoded
9022    SSL_SESSION structure, that way new session features are automatically
9023    supported.
9024
9025    If a client application caches session in an SSL_SESSION structure
9026    support is transparent because tickets are now stored in the encoded
9027    SSL_SESSION.
9028
9029    The SSL_CTX structure automatically generates keys for ticket
9030    protection in servers so again support should be possible
9031    with no application modification.
9032
9033    If a client or server wishes to disable RFC4507 support then the option
9034    SSL_OP_NO_TICKET can be set.
9035
9036    Add a TLS extension debugging callback to allow the contents of any client
9037    or server extensions to be examined.
9038
9039    This work was sponsored by Google.
9040
9041    *Steve Henson*
9042
9043  * Final changes to avoid use of pointer pointer casts in OpenSSL.
9044    OpenSSL should now compile cleanly on gcc 4.2
9045
9046    *Peter Hartley <pdh@utter.chaos.org.uk>, Steve Henson*
9047
9048  * Update SSL library to use new EVP_PKEY MAC API. Include generic MAC
9049    support including streaming MAC support: this is required for GOST
9050    ciphersuite support.
9051
9052    *Victor B. Wagner <vitus@cryptocom.ru>, Steve Henson*
9053
9054  * Add option -stream to use PKCS#7 streaming in smime utility. New
9055    function i2d_PKCS7_bio_stream() and PEM_write_PKCS7_bio_stream()
9056    to output in BER and PEM format.
9057
9058    *Steve Henson*
9059
9060  * Experimental support for use of HMAC via EVP_PKEY interface. This
9061    allows HMAC to be handled via the `EVP_DigestSign*()` interface. The
9062    EVP_PKEY "key" in this case is the HMAC key, potentially allowing
9063    ENGINE support for HMAC keys which are unextractable. New -mac and
9064    -macopt options to dgst utility.
9065
9066    *Steve Henson*
9067
9068  * New option -sigopt to dgst utility. Update dgst to use
9069    `EVP_Digest{Sign,Verify}*`. These two changes make it possible to use
9070    alternative signing parameters such as X9.31 or PSS in the dgst
9071    utility.
9072
9073    *Steve Henson*
9074
9075  * Change ssl_cipher_apply_rule(), the internal function that does
9076    the work each time a ciphersuite string requests enabling
9077    ("foo+bar"), moving ("+foo+bar"), disabling ("-foo+bar", or
9078    removing ("!foo+bar") a class of ciphersuites: Now it maintains
9079    the order of disabled ciphersuites such that those ciphersuites
9080    that most recently went from enabled to disabled not only stay
9081    in order with respect to each other, but also have higher priority
9082    than other disabled ciphersuites the next time ciphersuites are
9083    enabled again.
9084
9085    This means that you can now say, e.g., "PSK:-PSK:HIGH" to enable
9086    the same ciphersuites as with "HIGH" alone, but in a specific
9087    order where the PSK ciphersuites come first (since they are the
9088    most recently disabled ciphersuites when "HIGH" is parsed).
9089
9090    Also, change ssl_create_cipher_list() (using this new
9091    functionality) such that between otherwise identical
9092    ciphersuites, ephemeral ECDH is preferred over ephemeral DH in
9093    the default order.
9094
9095    *Bodo Moeller*
9096
9097  * Change ssl_create_cipher_list() so that it automatically
9098    arranges the ciphersuites in reasonable order before starting
9099    to process the rule string.  Thus, the definition for "DEFAULT"
9100    (SSL_DEFAULT_CIPHER_LIST) now is just "ALL:!aNULL:!eNULL", but
9101    remains equivalent to `"AES:ALL:!aNULL:!eNULL:+aECDH:+kRSA:+RC4:@STRENGTH"`.
9102    This makes it much easier to arrive at a reasonable default order
9103    in applications for which anonymous ciphers are OK (meaning
9104    that you can't actually use DEFAULT).
9105
9106    *Bodo Moeller; suggested by Victor Duchovni*
9107
9108  * Split the SSL/TLS algorithm mask (as used for ciphersuite string
9109    processing) into multiple integers instead of setting
9110    "SSL_MKEY_MASK" bits, "SSL_AUTH_MASK" bits, "SSL_ENC_MASK",
9111    "SSL_MAC_MASK", and "SSL_SSL_MASK" bits all in a single integer.
9112    (These masks as well as the individual bit definitions are hidden
9113    away into the non-exported interface ssl/ssl_locl.h, so this
9114    change to the definition of the SSL_CIPHER structure shouldn't
9115    affect applications.)  This give us more bits for each of these
9116    categories, so there is no longer a need to coagulate AES128 and
9117    AES256 into a single algorithm bit, and to coagulate Camellia128
9118    and Camellia256 into a single algorithm bit, which has led to all
9119    kinds of kludges.
9120
9121    Thus, among other things, the kludge introduced in 0.9.7m and
9122    0.9.8e for masking out AES256 independently of AES128 or masking
9123    out Camellia256 independently of AES256 is not needed here in 0.9.9.
9124
9125    With the change, we also introduce new ciphersuite aliases that
9126    so far were missing: "AES128", "AES256", "CAMELLIA128", and
9127    "CAMELLIA256".
9128
9129    *Bodo Moeller*
9130
9131  * Add support for dsa-with-SHA224 and dsa-with-SHA256.
9132    Use the leftmost N bytes of the signature input if the input is
9133    larger than the prime q (with N being the size in bytes of q).
9134
9135    *Nils Larsch*
9136
9137  * Very *very* experimental PKCS#7 streaming encoder support. Nothing uses
9138    it yet and it is largely untested.
9139
9140    *Steve Henson*
9141
9142  * Add support for the ecdsa-with-SHA224/256/384/512 signature types.
9143
9144    *Nils Larsch*
9145
9146  * Initial incomplete changes to avoid need for function casts in OpenSSL
9147    some compilers (gcc 4.2 and later) reject their use. Safestack is
9148    reimplemented.  Update ASN1 to avoid use of legacy functions.
9149
9150    *Steve Henson*
9151
9152  * Win32/64 targets are linked with Winsock2.
9153
9154    *Andy Polyakov*
9155
9156  * Add an X509_CRL_METHOD structure to allow CRL processing to be redirected
9157    to external functions. This can be used to increase CRL handling
9158    efficiency especially when CRLs are very large by (for example) storing
9159    the CRL revoked certificates in a database.
9160
9161    *Steve Henson*
9162
9163  * Overhaul of by_dir code. Add support for dynamic loading of CRLs so
9164    new CRLs added to a directory can be used. New command line option
9165    -verify_return_error to s_client and s_server. This causes real errors
9166    to be returned by the verify callback instead of carrying on no matter
9167    what. This reflects the way a "real world" verify callback would behave.
9168
9169    *Steve Henson*
9170
9171  * GOST engine, supporting several GOST algorithms and public key formats.
9172    Kindly donated by Cryptocom.
9173
9174    *Cryptocom*
9175
9176  * Partial support for Issuing Distribution Point CRL extension. CRLs
9177    partitioned by DP are handled but no indirect CRL or reason partitioning
9178    (yet). Complete overhaul of CRL handling: now the most suitable CRL is
9179    selected via a scoring technique which handles IDP and AKID in CRLs.
9180
9181    *Steve Henson*
9182
9183  * New X509_STORE_CTX callbacks lookup_crls() and lookup_certs() which
9184    will ultimately be used for all verify operations: this will remove the
9185    X509_STORE dependency on certificate verification and allow alternative
9186    lookup methods.  X509_STORE based implementations of these two callbacks.
9187
9188    *Steve Henson*
9189
9190  * Allow multiple CRLs to exist in an X509_STORE with matching issuer names.
9191    Modify get_crl() to find a valid (unexpired) CRL if possible.
9192
9193    *Steve Henson*
9194
9195  * New function X509_CRL_match() to check if two CRLs are identical. Normally
9196    this would be called X509_CRL_cmp() but that name is already used by
9197    a function that just compares CRL issuer names. Cache several CRL
9198    extensions in X509_CRL structure and cache CRLDP in X509.
9199
9200    *Steve Henson*
9201
9202  * Store a "canonical" representation of X509_NAME structure (ASN1 Name)
9203    this maps equivalent X509_NAME structures into a consistent structure.
9204    Name comparison can then be performed rapidly using memcmp().
9205
9206    *Steve Henson*
9207
9208  * Non-blocking OCSP request processing. Add -timeout option to ocsp
9209    utility.
9210
9211    *Steve Henson*
9212
9213  * Allow digests to supply their own micalg string for S/MIME type using
9214    the ctrl EVP_MD_CTRL_MICALG.
9215
9216    *Steve Henson*
9217
9218  * During PKCS7 signing pass the PKCS7 SignerInfo structure to the
9219    EVP_PKEY_METHOD before and after signing via the EVP_PKEY_CTRL_PKCS7_SIGN
9220    ctrl. It can then customise the structure before and/or after signing
9221    if necessary.
9222
9223    *Steve Henson*
9224
9225  * New function OBJ_add_sigid() to allow application defined signature OIDs
9226    to be added to OpenSSLs internal tables. New function OBJ_sigid_free()
9227    to free up any added signature OIDs.
9228
9229    *Steve Henson*
9230
9231  * New functions EVP_CIPHER_do_all(), EVP_CIPHER_do_all_sorted(),
9232    EVP_MD_do_all() and EVP_MD_do_all_sorted() to enumerate internal
9233    digest and cipher tables. New options added to openssl utility:
9234    list-message-digest-algorithms and list-cipher-algorithms.
9235
9236    *Steve Henson*
9237
9238  * Change the array representation of binary polynomials: the list
9239    of degrees of non-zero coefficients is now terminated with -1.
9240    Previously it was terminated with 0, which was also part of the
9241    value; thus, the array representation was not applicable to
9242    polynomials where t^0 has coefficient zero.  This change makes
9243    the array representation useful in a more general context.
9244
9245    *Douglas Stebila*
9246
9247  * Various modifications and fixes to SSL/TLS cipher string
9248    handling.  For ECC, the code now distinguishes between fixed ECDH
9249    with RSA certificates on the one hand and with ECDSA certificates
9250    on the other hand, since these are separate ciphersuites.  The
9251    unused code for Fortezza ciphersuites has been removed.
9252
9253    For consistency with EDH, ephemeral ECDH is now called "EECDH"
9254    (not "ECDHE").  For consistency with the code for DH
9255    certificates, use of ECDH certificates is now considered ECDH
9256    authentication, not RSA or ECDSA authentication (the latter is
9257    merely the CA's signing algorithm and not actively used in the
9258    protocol).
9259
9260    The temporary ciphersuite alias "ECCdraft" is no longer
9261    available, and ECC ciphersuites are no longer excluded from "ALL"
9262    and "DEFAULT".  The following aliases now exist for RFC 4492
9263    ciphersuites, most of these by analogy with the DH case:
9264
9265            kECDHr   - ECDH cert, signed with RSA
9266            kECDHe   - ECDH cert, signed with ECDSA
9267            kECDH    - ECDH cert (signed with either RSA or ECDSA)
9268            kEECDH   - ephemeral ECDH
9269            ECDH     - ECDH cert or ephemeral ECDH
9270
9271            aECDH    - ECDH cert
9272            aECDSA   - ECDSA cert
9273            ECDSA    - ECDSA cert
9274
9275            AECDH    - anonymous ECDH
9276            EECDH    - non-anonymous ephemeral ECDH (equivalent to "kEECDH:-AECDH")
9277
9278    *Bodo Moeller*
9279
9280  * Add additional S/MIME capabilities for AES and GOST ciphers if supported.
9281    Use correct micalg parameters depending on digest(s) in signed message.
9282
9283    *Steve Henson*
9284
9285  * Add engine support for EVP_PKEY_ASN1_METHOD. Add functions to process
9286    an ENGINE asn1 method. Support ENGINE lookups in the ASN1 code.
9287
9288    *Steve Henson*
9289
9290  * Initial engine support for EVP_PKEY_METHOD. New functions to permit
9291    an engine to register a method. Add ENGINE lookups for methods and
9292    functional reference processing.
9293
9294    *Steve Henson*
9295
9296  * New functions `EVP_Digest{Sign,Verify)*`. These are enhanced versions of
9297    `EVP_{Sign,Verify}*` which allow an application to customise the signature
9298    process.
9299
9300    *Steve Henson*
9301
9302  * New -resign option to smime utility. This adds one or more signers
9303    to an existing PKCS#7 signedData structure. Also -md option to use an
9304    alternative message digest algorithm for signing.
9305
9306    *Steve Henson*
9307
9308  * Tidy up PKCS#7 routines and add new functions to make it easier to
9309    create PKCS7 structures containing multiple signers. Update smime
9310    application to support multiple signers.
9311
9312    *Steve Henson*
9313
9314  * New -macalg option to pkcs12 utility to allow setting of an alternative
9315    digest MAC.
9316
9317    *Steve Henson*
9318
9319  * Initial support for PKCS#5 v2.0 PRFs other than default SHA1 HMAC.
9320    Reorganize PBE internals to lookup from a static table using NIDs,
9321    add support for HMAC PBE OID translation. Add a EVP_CIPHER ctrl:
9322    EVP_CTRL_PBE_PRF_NID this allows a cipher to specify an alternative
9323    PRF which will be automatically used with PBES2.
9324
9325    *Steve Henson*
9326
9327  * Replace the algorithm specific calls to generate keys in "req" with the
9328    new API.
9329
9330    *Steve Henson*
9331
9332  * Update PKCS#7 enveloped data routines to use new API. This is now
9333    supported by any public key method supporting the encrypt operation. A
9334    ctrl is added to allow the public key algorithm to examine or modify
9335    the PKCS#7 RecipientInfo structure if it needs to: for RSA this is
9336    a no op.
9337
9338    *Steve Henson*
9339
9340  * Add a ctrl to asn1 method to allow a public key algorithm to express
9341    a default digest type to use. In most cases this will be SHA1 but some
9342    algorithms (such as GOST) need to specify an alternative digest. The
9343    return value indicates how strong the preference is 1 means optional and
9344    2 is mandatory (that is it is the only supported type). Modify
9345    ASN1_item_sign() to accept a NULL digest argument to indicate it should
9346    use the default md. Update openssl utilities to use the default digest
9347    type for signing if it is not explicitly indicated.
9348
9349    *Steve Henson*
9350
9351  * Use OID cross reference table in ASN1_sign() and ASN1_verify(). New
9352    EVP_MD flag EVP_MD_FLAG_PKEY_METHOD_SIGNATURE. This uses the relevant
9353    signing method from the key type. This effectively removes the link
9354    between digests and public key types.
9355
9356    *Steve Henson*
9357
9358  * Add an OID cross reference table and utility functions. Its purpose is to
9359    translate between signature OIDs such as SHA1WithrsaEncryption and SHA1,
9360    rsaEncryption. This will allow some of the algorithm specific hackery
9361    needed to use the correct OID to be removed.
9362
9363    *Steve Henson*
9364
9365  * Remove algorithm specific dependencies when setting PKCS7_SIGNER_INFO
9366    structures for PKCS7_sign(). They are now set up by the relevant public
9367    key ASN1 method.
9368
9369    *Steve Henson*
9370
9371  * Add provisional EC pkey method with support for ECDSA and ECDH.
9372
9373    *Steve Henson*
9374
9375  * Add support for key derivation (agreement) in the API, DH method and
9376    pkeyutl.
9377
9378    *Steve Henson*
9379
9380  * Add DSA pkey method and DH pkey methods, extend DH ASN1 method to support
9381    public and private key formats. As a side effect these add additional
9382    command line functionality not previously available: DSA signatures can be
9383    generated and verified using pkeyutl and DH key support and generation in
9384    pkey, genpkey.
9385
9386    *Steve Henson*
9387
9388  * BeOS support.
9389
9390    *Oliver Tappe <zooey@hirschkaefer.de>*
9391
9392  * New make target "install_html_docs" installs HTML renditions of the
9393    manual pages.
9394
9395    *Oliver Tappe <zooey@hirschkaefer.de>*
9396
9397  * New utility "genpkey" this is analogous to "genrsa" etc except it can
9398    generate keys for any algorithm. Extend and update EVP_PKEY_METHOD to
9399    support key and parameter generation and add initial key generation
9400    functionality for RSA.
9401
9402    *Steve Henson*
9403
9404  * Add functions for main EVP_PKEY_method operations. The undocumented
9405    functions `EVP_PKEY_{encrypt,decrypt}` have been renamed to
9406    `EVP_PKEY_{encrypt,decrypt}_old`.
9407
9408    *Steve Henson*
9409
9410  * Initial definitions for EVP_PKEY_METHOD. This will be a high level public
9411    key API, doesn't do much yet.
9412
9413    *Steve Henson*
9414
9415  * New function EVP_PKEY_asn1_get0_info() to retrieve information about
9416    public key algorithms. New option to openssl utility:
9417    "list-public-key-algorithms" to print out info.
9418
9419    *Steve Henson*
9420
9421  * Implement the Supported Elliptic Curves Extension for
9422    ECC ciphersuites from draft-ietf-tls-ecc-12.txt.
9423
9424    *Douglas Stebila*
9425
9426  * Don't free up OIDs in OBJ_cleanup() if they are in use by EVP_MD or
9427    EVP_CIPHER structures to avoid later problems in EVP_cleanup().
9428
9429    *Steve Henson*
9430
9431  * New utilities pkey and pkeyparam. These are similar to algorithm specific
9432    utilities such as rsa, dsa, dsaparam etc except they process any key
9433    type.
9434
9435    *Steve Henson*
9436
9437  * Transfer public key printing routines to EVP_PKEY_ASN1_METHOD. New
9438    functions EVP_PKEY_print_public(), EVP_PKEY_print_private(),
9439    EVP_PKEY_print_param() to print public key data from an EVP_PKEY
9440    structure.
9441
9442    *Steve Henson*
9443
9444  * Initial support for pluggable public key ASN1.
9445    De-spaghettify the public key ASN1 handling. Move public and private
9446    key ASN1 handling to a new EVP_PKEY_ASN1_METHOD structure. Relocate
9447    algorithm specific handling to a single module within the relevant
9448    algorithm directory. Add functions to allow (near) opaque processing
9449    of public and private key structures.
9450
9451    *Steve Henson*
9452
9453  * Implement the Supported Point Formats Extension for
9454    ECC ciphersuites from draft-ietf-tls-ecc-12.txt.
9455
9456    *Douglas Stebila*
9457
9458  * Add initial support for RFC 4279 PSK TLS ciphersuites. Add members
9459    for the psk identity [hint] and the psk callback functions to the
9460    SSL_SESSION, SSL and SSL_CTX structure.
9461
9462    New ciphersuites:
9463            PSK-RC4-SHA, PSK-3DES-EDE-CBC-SHA, PSK-AES128-CBC-SHA,
9464            PSK-AES256-CBC-SHA
9465
9466    New functions:
9467            SSL_CTX_use_psk_identity_hint
9468            SSL_get_psk_identity_hint
9469            SSL_get_psk_identity
9470            SSL_use_psk_identity_hint
9471
9472    *Mika Kousa and Pasi Eronen of Nokia Corporation*
9473
9474  * Add RFC 3161 compliant time stamp request creation, response generation
9475    and response verification functionality.
9476
9477    *Zoltán Glózik <zglozik@opentsa.org>, The OpenTSA Project*
9478
9479  * Add initial support for TLS extensions, specifically for the server_name
9480    extension so far.  The SSL_SESSION, SSL_CTX, and SSL data structures now
9481    have new members for a host name.  The SSL data structure has an
9482    additional member `SSL_CTX *initial_ctx` so that new sessions can be
9483    stored in that context to allow for session resumption, even after the
9484    SSL has been switched to a new SSL_CTX in reaction to a client's
9485    server_name extension.
9486
9487    New functions (subject to change):
9488
9489            SSL_get_servername()
9490            SSL_get_servername_type()
9491            SSL_set_SSL_CTX()
9492
9493    New CTRL codes and macros (subject to change):
9494
9495            SSL_CTRL_SET_TLSEXT_SERVERNAME_CB
9496                                - SSL_CTX_set_tlsext_servername_callback()
9497            SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG
9498                                     - SSL_CTX_set_tlsext_servername_arg()
9499            SSL_CTRL_SET_TLSEXT_HOSTNAME           - SSL_set_tlsext_host_name()
9500
9501    openssl s_client has a new '-servername ...' option.
9502
9503    openssl s_server has new options '-servername_host ...', '-cert2 ...',
9504    '-key2 ...', '-servername_fatal' (subject to change).  This allows
9505    testing the HostName extension for a specific single host name ('-cert'
9506    and '-key' remain fallbacks for handshakes without HostName
9507    negotiation).  If the unrecognized_name alert has to be sent, this by
9508    default is a warning; it becomes fatal with the '-servername_fatal'
9509    option.
9510
9511    *Peter Sylvester,  Remy Allais, Christophe Renou*
9512
9513  * Whirlpool hash implementation is added.
9514
9515    *Andy Polyakov*
9516
9517  * BIGNUM code on 64-bit SPARCv9 targets is switched from bn(64,64) to
9518    bn(64,32). Because of instruction set limitations it doesn't have
9519    any negative impact on performance. This was done mostly in order
9520    to make it possible to share assembler modules, such as bn_mul_mont
9521    implementations, between 32- and 64-bit builds without hassle.
9522
9523    *Andy Polyakov*
9524
9525  * Move code previously exiled into file crypto/ec/ec2_smpt.c
9526    to ec2_smpl.c, and no longer require the OPENSSL_EC_BIN_PT_COMP
9527    macro.
9528
9529    *Bodo Moeller*
9530
9531  * New candidate for BIGNUM assembler implementation, bn_mul_mont,
9532    dedicated Montgomery multiplication procedure, is introduced.
9533    BN_MONT_CTX is modified to allow bn_mul_mont to reach for higher
9534    "64-bit" performance on certain 32-bit targets.
9535
9536    *Andy Polyakov*
9537
9538  * New option SSL_OP_NO_COMP to disable use of compression selectively
9539    in SSL structures. New SSL ctrl to set maximum send fragment size.
9540    Save memory by setting the I/O buffer sizes dynamically instead of
9541    using the maximum available value.
9542
9543    *Steve Henson*
9544
9545  * New option -V for 'openssl ciphers'. This prints the ciphersuite code
9546    in addition to the text details.
9547
9548    *Bodo Moeller*
9549
9550  * Very, very preliminary EXPERIMENTAL support for printing of general
9551    ASN1 structures. This currently produces rather ugly output and doesn't
9552    handle several customised structures at all.
9553
9554    *Steve Henson*
9555
9556  * Integrated support for PVK file format and some related formats such
9557    as MS PUBLICKEYBLOB and PRIVATEKEYBLOB. Command line switches to support
9558    these in the 'rsa' and 'dsa' utilities.
9559
9560    *Steve Henson*
9561
9562  * Support for PKCS#1 RSAPublicKey format on rsa utility command line.
9563
9564    *Steve Henson*
9565
9566  * Remove the ancient ASN1_METHOD code. This was only ever used in one
9567    place for the (very old) "NETSCAPE" format certificates which are now
9568    handled using new ASN1 code equivalents.
9569
9570    *Steve Henson*
9571
9572  * Let the TLSv1_method() etc. functions return a 'const' SSL_METHOD
9573    pointer and make the SSL_METHOD parameter in SSL_CTX_new,
9574    SSL_CTX_set_ssl_version and SSL_set_ssl_method 'const'.
9575
9576    *Nils Larsch*
9577
9578  * Modify CRL distribution points extension code to print out previously
9579    unsupported fields. Enhance extension setting code to allow setting of
9580    all fields.
9581
9582    *Steve Henson*
9583
9584  * Add print and set support for Issuing Distribution Point CRL extension.
9585
9586    *Steve Henson*
9587
9588  * Change 'Configure' script to enable Camellia by default.
9589
9590    *NTT*
9591
9592 OpenSSL 0.9.x
9593 -------------
9594
9595 ### Changes between 0.9.8m and 0.9.8n [24 Mar 2010]
9596
9597  * When rejecting SSL/TLS records due to an incorrect version number, never
9598    update s->server with a new major version number.  As of
9599    - OpenSSL 0.9.8m if 'short' is a 16-bit type,
9600    - OpenSSL 0.9.8f if 'short' is longer than 16 bits,
9601    the previous behavior could result in a read attempt at NULL when
9602    receiving specific incorrect SSL/TLS records once record payload
9603    protection is active.  ([CVE-2010-0740])
9604
9605    *Bodo Moeller, Adam Langley <agl@chromium.org>*
9606
9607  * Fix for CVE-2010-0433 where some kerberos enabled versions of OpenSSL
9608    could be crashed if the relevant tables were not present (e.g. chrooted).
9609
9610    *Tomas Hoger <thoger@redhat.com>*
9611
9612 ### Changes between 0.9.8l and 0.9.8m [25 Feb 2010]
9613
9614  * Always check bn_wexpand() return values for failure.  ([CVE-2009-3245])
9615
9616    *Martin Olsson, Neel Mehta*
9617
9618  * Fix X509_STORE locking: Every 'objs' access requires a lock (to
9619    accommodate for stack sorting, always a write lock!).
9620
9621    *Bodo Moeller*
9622
9623  * On some versions of WIN32 Heap32Next is very slow. This can cause
9624    excessive delays in the RAND_poll(): over a minute. As a workaround
9625    include a time check in the inner Heap32Next loop too.
9626
9627    *Steve Henson*
9628
9629  * The code that handled flushing of data in SSL/TLS originally used the
9630    BIO_CTRL_INFO ctrl to see if any data was pending first. This caused
9631    the problem outlined in PR#1949. The fix suggested there however can
9632    trigger problems with buggy BIO_CTRL_WPENDING (e.g. some versions
9633    of Apache). So instead simplify the code to flush unconditionally.
9634    This should be fine since flushing with no data to flush is a no op.
9635
9636    *Steve Henson*
9637
9638  * Handle TLS versions 2.0 and later properly and correctly use the
9639    highest version of TLS/SSL supported. Although TLS >= 2.0 is some way
9640    off ancient servers have a habit of sticking around for a while...
9641
9642    *Steve Henson*
9643
9644  * Modify compression code so it frees up structures without using the
9645    ex_data callbacks. This works around a problem where some applications
9646    call CRYPTO_cleanup_all_ex_data() before application exit (e.g. when
9647    restarting) then use compression (e.g. SSL with compression) later.
9648    This results in significant per-connection memory leaks and
9649    has caused some security issues including CVE-2008-1678 and
9650    CVE-2009-4355.
9651
9652    *Steve Henson*
9653
9654  * Constify crypto/cast (i.e., <openssl/cast.h>): a CAST_KEY doesn't
9655    change when encrypting or decrypting.
9656
9657    *Bodo Moeller*
9658
9659  * Add option SSL_OP_LEGACY_SERVER_CONNECT which will allow clients to
9660    connect and renegotiate with servers which do not support RI.
9661    Until RI is more widely deployed this option is enabled by default.
9662
9663    *Steve Henson*
9664
9665  * Add "missing" ssl ctrls to clear options and mode.
9666
9667    *Steve Henson*
9668
9669  * If client attempts to renegotiate and doesn't support RI respond with
9670    a no_renegotiation alert as required by RFC5746.  Some renegotiating
9671    TLS clients will continue a connection gracefully when they receive
9672    the alert. Unfortunately OpenSSL mishandled this alert and would hang
9673    waiting for a server hello which it will never receive. Now we treat a
9674    received no_renegotiation alert as a fatal error. This is because
9675    applications requesting a renegotiation might well expect it to succeed
9676    and would have no code in place to handle the server denying it so the
9677    only safe thing to do is to terminate the connection.
9678
9679    *Steve Henson*
9680
9681  * Add ctrl macro SSL_get_secure_renegotiation_support() which returns 1 if
9682    peer supports secure renegotiation and 0 otherwise. Print out peer
9683    renegotiation support in s_client/s_server.
9684
9685    *Steve Henson*
9686
9687  * Replace the highly broken and deprecated SPKAC certification method with
9688    the updated NID creation version. This should correctly handle UTF8.
9689
9690    *Steve Henson*
9691
9692  * Implement RFC5746. Re-enable renegotiation but require the extension
9693    as needed. Unfortunately, SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION
9694    turns out to be a bad idea. It has been replaced by
9695    SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION which can be set with
9696    SSL_CTX_set_options(). This is really not recommended unless you
9697    know what you are doing.
9698
9699    *Eric Rescorla <ekr@networkresonance.com>, Ben Laurie, Steve Henson*
9700
9701  * Fixes to stateless session resumption handling. Use initial_ctx when
9702    issuing and attempting to decrypt tickets in case it has changed during
9703    servername handling. Use a non-zero length session ID when attempting
9704    stateless session resumption: this makes it possible to determine if
9705    a resumption has occurred immediately after receiving server hello
9706    (several places in OpenSSL subtly assume this) instead of later in
9707    the handshake.
9708
9709    *Steve Henson*
9710
9711  * The functions ENGINE_ctrl(), OPENSSL_isservice(),
9712    CMS_get1_RecipientRequest() and RAND_bytes() can return <=0 on error
9713    fixes for a few places where the return code is not checked
9714    correctly.
9715
9716    *Julia Lawall <julia@diku.dk>*
9717
9718  * Add --strict-warnings option to Configure script to include devteam
9719    warnings in other configurations.
9720
9721    *Steve Henson*
9722
9723  * Add support for --libdir option and LIBDIR variable in makefiles. This
9724    makes it possible to install openssl libraries in locations which
9725    have names other than "lib", for example "/usr/lib64" which some
9726    systems need.
9727
9728    *Steve Henson, based on patch from Jeremy Utley*
9729
9730  * Don't allow the use of leading 0x80 in OIDs. This is a violation of
9731    X690 8.9.12 and can produce some misleading textual output of OIDs.
9732
9733    *Steve Henson, reported by Dan Kaminsky*
9734
9735  * Delete MD2 from algorithm tables. This follows the recommendation in
9736    several standards that it is not used in new applications due to
9737    several cryptographic weaknesses. For binary compatibility reasons
9738    the MD2 API is still compiled in by default.
9739
9740    *Steve Henson*
9741
9742  * Add compression id to {d2i,i2d}_SSL_SESSION so it is correctly saved
9743    and restored.
9744
9745    *Steve Henson*
9746
9747  * Rename uni2asc and asc2uni functions to OPENSSL_uni2asc and
9748    OPENSSL_asc2uni conditionally on Netware platforms to avoid a name
9749    clash.
9750
9751    *Guenter <lists@gknw.net>*
9752
9753  * Fix the server certificate chain building code to use X509_verify_cert(),
9754    it used to have an ad-hoc builder which was unable to cope with anything
9755    other than a simple chain.
9756
9757    *David Woodhouse <dwmw2@infradead.org>, Steve Henson*
9758
9759  * Don't check self signed certificate signatures in X509_verify_cert()
9760    by default (a flag can override this): it just wastes time without
9761    adding any security. As a useful side effect self signed root CAs
9762    with non-FIPS digests are now usable in FIPS mode.
9763
9764    *Steve Henson*
9765
9766  * In dtls1_process_out_of_seq_message() the check if the current message
9767    is already buffered was missing. For every new message was memory
9768    allocated, allowing an attacker to perform an denial of service attack
9769    with sending out of seq handshake messages until there is no memory
9770    left. Additionally every future message was buffered, even if the
9771    sequence number made no sense and would be part of another handshake.
9772    So only messages with sequence numbers less than 10 in advance will be
9773    buffered.  ([CVE-2009-1378])
9774
9775    *Robin Seggelmann, discovered by Daniel Mentz*
9776
9777  * Records are buffered if they arrive with a future epoch to be
9778    processed after finishing the corresponding handshake. There is
9779    currently no limitation to this buffer allowing an attacker to perform
9780    a DOS attack with sending records with future epochs until there is no
9781    memory left. This patch adds the pqueue_size() function to determine
9782    the size of a buffer and limits the record buffer to 100 entries.
9783    ([CVE-2009-1377])
9784
9785    *Robin Seggelmann, discovered by Daniel Mentz*
9786
9787  * Keep a copy of frag->msg_header.frag_len so it can be used after the
9788    parent structure is freed.  ([CVE-2009-1379])
9789
9790    *Daniel Mentz*
9791
9792  * Handle non-blocking I/O properly in SSL_shutdown() call.
9793
9794    *Darryl Miles <darryl-mailinglists@netbauds.net>*
9795
9796  * Add `2.5.4.*` OIDs
9797
9798    *Ilya O. <vrghost@gmail.com>*
9799
9800 ### Changes between 0.9.8k and 0.9.8l  [5 Nov 2009]
9801
9802  * Disable renegotiation completely - this fixes a severe security
9803    problem ([CVE-2009-3555]) at the cost of breaking all
9804    renegotiation. Renegotiation can be re-enabled by setting
9805    SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION in s3->flags at
9806    run-time. This is really not recommended unless you know what
9807    you're doing.
9808
9809    *Ben Laurie*
9810
9811 ### Changes between 0.9.8j and 0.9.8k  [25 Mar 2009]
9812
9813  * Don't set val to NULL when freeing up structures, it is freed up by
9814    underlying code. If `sizeof(void *) > sizeof(long)` this can result in
9815    zeroing past the valid field. ([CVE-2009-0789])
9816
9817    *Paolo Ganci <Paolo.Ganci@AdNovum.CH>*
9818
9819  * Fix bug where return value of CMS_SignerInfo_verify_content() was not
9820    checked correctly. This would allow some invalid signed attributes to
9821    appear to verify correctly. ([CVE-2009-0591])
9822
9823    *Ivan Nestlerode <inestlerode@us.ibm.com>*
9824
9825  * Reject UniversalString and BMPString types with invalid lengths. This
9826    prevents a crash in ASN1_STRING_print_ex() which assumes the strings have
9827    a legal length. ([CVE-2009-0590])
9828
9829    *Steve Henson*
9830
9831  * Set S/MIME signing as the default purpose rather than setting it
9832    unconditionally. This allows applications to override it at the store
9833    level.
9834
9835    *Steve Henson*
9836
9837  * Permit restricted recursion of ASN1 strings. This is needed in practice
9838    to handle some structures.
9839
9840    *Steve Henson*
9841
9842  * Improve efficiency of mem_gets: don't search whole buffer each time
9843    for a '\n'
9844
9845    *Jeremy Shapiro <jnshapir@us.ibm.com>*
9846
9847  * New -hex option for openssl rand.
9848
9849    *Matthieu Herrb*
9850
9851  * Print out UTF8String and NumericString when parsing ASN1.
9852
9853    *Steve Henson*
9854
9855  * Support NumericString type for name components.
9856
9857    *Steve Henson*
9858
9859  * Allow CC in the environment to override the automatically chosen
9860    compiler. Note that nothing is done to ensure flags work with the
9861    chosen compiler.
9862
9863    *Ben Laurie*
9864
9865 ### Changes between 0.9.8i and 0.9.8j  [07 Jan 2009]
9866
9867  * Properly check EVP_VerifyFinal() and similar return values
9868    ([CVE-2008-5077]).
9869
9870    *Ben Laurie, Bodo Moeller, Google Security Team*
9871
9872  * Enable TLS extensions by default.
9873
9874    *Ben Laurie*
9875
9876  * Allow the CHIL engine to be loaded, whether the application is
9877    multithreaded or not. (This does not release the developer from the
9878    obligation to set up the dynamic locking callbacks.)
9879
9880    *Sander Temme <sander@temme.net>*
9881
9882  * Use correct exit code if there is an error in dgst command.
9883
9884    *Steve Henson; problem pointed out by Roland Dirlewanger*
9885
9886  * Tweak Configure so that you need to say "experimental-jpake" to enable
9887    JPAKE, and need to use -DOPENSSL_EXPERIMENTAL_JPAKE in applications.
9888
9889    *Bodo Moeller*
9890
9891  * Add experimental JPAKE support, including demo authentication in
9892    s_client and s_server.
9893
9894    *Ben Laurie*
9895
9896  * Set the comparison function in v3_addr_canonize().
9897
9898    *Rob Austein <sra@hactrn.net>*
9899
9900  * Add support for XMPP STARTTLS in s_client.
9901
9902    *Philip Paeps <philip@freebsd.org>*
9903
9904  * Change the server-side SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG behavior
9905    to ensure that even with this option, only ciphersuites in the
9906    server's preference list will be accepted.  (Note that the option
9907    applies only when resuming a session, so the earlier behavior was
9908    just about the algorithm choice for symmetric cryptography.)
9909
9910    *Bodo Moeller*
9911
9912 ### Changes between 0.9.8h and 0.9.8i  [15 Sep 2008]
9913
9914  * Fix NULL pointer dereference if a DTLS server received
9915    ChangeCipherSpec as first record ([CVE-2009-1386]).
9916
9917    *PR #1679*
9918
9919  * Fix a state transition in s3_srvr.c and d1_srvr.c
9920    (was using SSL3_ST_CW_CLNT_HELLO_B, should be `..._ST_SW_SRVR_...`).
9921
9922    *Nagendra Modadugu*
9923
9924  * The fix in 0.9.8c that supposedly got rid of unsafe
9925    double-checked locking was incomplete for RSA blinding,
9926    addressing just one layer of what turns out to have been
9927    doubly unsafe triple-checked locking.
9928
9929    So now fix this for real by retiring the MONT_HELPER macro
9930    in crypto/rsa/rsa_eay.c.
9931
9932    *Bodo Moeller; problem pointed out by Marius Schilder*
9933
9934  * Various precautionary measures:
9935
9936    - Avoid size_t integer overflow in HASH_UPDATE (md32_common.h).
9937
9938    - Avoid a buffer overflow in d2i_SSL_SESSION() (ssl_asn1.c).
9939      (NB: This would require knowledge of the secret session ticket key
9940      to exploit, in which case you'd be SOL either way.)
9941
9942    - Change bn_nist.c so that it will properly handle input BIGNUMs
9943      outside the expected range.
9944
9945    - Enforce the 'num' check in BN_div() (bn_div.c) for non-BN_DEBUG
9946      builds.
9947
9948    *Neel Mehta, Bodo Moeller*
9949
9950  * Allow engines to be "soft loaded" - i.e. optionally don't die if
9951    the load fails. Useful for distros.
9952
9953    *Ben Laurie and the FreeBSD team*
9954
9955  * Add support for Local Machine Keyset attribute in PKCS#12 files.
9956
9957    *Steve Henson*
9958
9959  * Fix BN_GF2m_mod_arr() top-bit cleanup code.
9960
9961    *Huang Ying*
9962
9963  * Expand ENGINE to support engine supplied SSL client certificate functions.
9964
9965    This work was sponsored by Logica.
9966
9967    *Steve Henson*
9968
9969  * Add CryptoAPI ENGINE to support use of RSA and DSA keys held in Windows
9970    keystores. Support for SSL/TLS client authentication too.
9971    Not compiled unless enable-capieng specified to Configure.
9972
9973    This work was sponsored by Logica.
9974
9975    *Steve Henson*
9976
9977  * Fix bug in X509_ATTRIBUTE creation: don't set attribute using
9978    ASN1_TYPE_set1 if MBSTRING flag set. This bug would crash certain
9979    attribute creation routines such as certificate requests and PKCS#12
9980    files.
9981
9982    *Steve Henson*
9983
9984 ### Changes between 0.9.8g and 0.9.8h  [28 May 2008]
9985
9986  * Fix flaw if 'Server Key exchange message' is omitted from a TLS
9987    handshake which could lead to a client crash as found using the
9988    Codenomicon TLS test suite ([CVE-2008-1672])
9989
9990    *Steve Henson, Mark Cox*
9991
9992  * Fix double free in TLS server name extensions which could lead to
9993    a remote crash found by Codenomicon TLS test suite ([CVE-2008-0891])
9994
9995    *Joe Orton*
9996
9997  * Clear error queue in SSL_CTX_use_certificate_chain_file()
9998
9999    Clear the error queue to ensure that error entries left from
10000    older function calls do not interfere with the correct operation.
10001
10002    *Lutz Jaenicke, Erik de Castro Lopo*
10003
10004  * Remove root CA certificates of commercial CAs:
10005
10006    The OpenSSL project does not recommend any specific CA and does not
10007    have any policy with respect to including or excluding any CA.
10008    Therefore it does not make any sense to ship an arbitrary selection
10009    of root CA certificates with the OpenSSL software.
10010
10011    *Lutz Jaenicke*
10012
10013  * RSA OAEP patches to fix two separate invalid memory reads.
10014    The first one involves inputs when 'lzero' is greater than
10015    'SHA_DIGEST_LENGTH' (it would read about SHA_DIGEST_LENGTH bytes
10016    before the beginning of from). The second one involves inputs where
10017    the 'db' section contains nothing but zeroes (there is a one-byte
10018    invalid read after the end of 'db').
10019
10020    *Ivan Nestlerode <inestlerode@us.ibm.com>*
10021
10022  * Partial backport from 0.9.9-dev:
10023
10024    Introduce bn_mul_mont (dedicated Montgomery multiplication
10025    procedure) as a candidate for BIGNUM assembler implementation.
10026    While 0.9.9-dev uses assembler for various architectures, only
10027    x86_64 is available by default here in the 0.9.8 branch, and
10028    32-bit x86 is available through a compile-time setting.
10029
10030    To try the 32-bit x86 assembler implementation, use Configure
10031    option "enable-montasm" (which exists only for this backport).
10032
10033    As "enable-montasm" for 32-bit x86 disclaims code stability
10034    anyway, in this constellation we activate additional code
10035    backported from 0.9.9-dev for further performance improvements,
10036    namely BN_from_montgomery_word.  (To enable this otherwise,
10037    e.g. x86_64, try `-DMONT_FROM_WORD___NON_DEFAULT_0_9_8_BUILD`.)
10038
10039    *Andy Polyakov (backport partially by Bodo Moeller)*
10040
10041  * Add TLS session ticket callback. This allows an application to set
10042    TLS ticket cipher and HMAC keys rather than relying on hardcoded fixed
10043    values. This is useful for key rollover for example where several key
10044    sets may exist with different names.
10045
10046    *Steve Henson*
10047
10048  * Reverse ENGINE-internal logic for caching default ENGINE handles.
10049    This was broken until now in 0.9.8 releases, such that the only way
10050    a registered ENGINE could be used (assuming it initialises
10051    successfully on the host) was to explicitly set it as the default
10052    for the relevant algorithms. This is in contradiction with 0.9.7
10053    behaviour and the documentation. With this fix, when an ENGINE is
10054    registered into a given algorithm's table of implementations, the
10055    'uptodate' flag is reset so that auto-discovery will be used next
10056    time a new context for that algorithm attempts to select an
10057    implementation.
10058
10059    *Ian Lister (tweaked by Geoff Thorpe)*
10060
10061  * Backport of CMS code to OpenSSL 0.9.8. This differs from the 0.9.9
10062    implementation in the following ways:
10063
10064    Lack of EVP_PKEY_ASN1_METHOD means algorithm parameters have to be
10065    hard coded.
10066
10067    Lack of BER streaming support means one pass streaming processing is
10068    only supported if data is detached: setting the streaming flag is
10069    ignored for embedded content.
10070
10071    CMS support is disabled by default and must be explicitly enabled
10072    with the enable-cms configuration option.
10073
10074    *Steve Henson*
10075
10076  * Update the GMP engine glue to do direct copies between BIGNUM and
10077    mpz_t when openssl and GMP use the same limb size. Otherwise the
10078    existing "conversion via a text string export" trick is still used.
10079
10080    *Paul Sheer <paulsheer@gmail.com>*
10081
10082  * Zlib compression BIO. This is a filter BIO which compressed and
10083    uncompresses any data passed through it.
10084
10085    *Steve Henson*
10086
10087  * Add AES_wrap_key() and AES_unwrap_key() functions to implement
10088    RFC3394 compatible AES key wrapping.
10089
10090    *Steve Henson*
10091
10092  * Add utility functions to handle ASN1 structures. ASN1_STRING_set0():
10093    sets string data without copying. X509_ALGOR_set0() and
10094    X509_ALGOR_get0(): set and retrieve X509_ALGOR (AlgorithmIdentifier)
10095    data. Attribute function X509at_get0_data_by_OBJ(): retrieves data
10096    from an X509_ATTRIBUTE structure optionally checking it occurs only
10097    once. ASN1_TYPE_set1(): set and ASN1_TYPE structure copying supplied
10098    data.
10099
10100    *Steve Henson*
10101
10102  * Fix BN flag handling in RSA_eay_mod_exp() and BN_MONT_CTX_set()
10103    to get the expected BN_FLG_CONSTTIME behavior.
10104
10105    *Bodo Moeller (Google)*
10106
10107  * Netware support:
10108
10109    - fixed wrong usage of ioctlsocket() when build for LIBC BSD sockets
10110    - fixed do_tests.pl to run the test suite with CLIB builds too (CLIB_OPT)
10111    - added some more tests to do_tests.pl
10112    - fixed RunningProcess usage so that it works with newer LIBC NDKs too
10113    - removed usage of BN_LLONG for CLIB builds to avoid runtime dependency
10114    - added new Configure targets netware-clib-bsdsock, netware-clib-gcc,
10115      netware-clib-bsdsock-gcc, netware-libc-bsdsock-gcc
10116    - various changes to netware.pl to enable gcc-cross builds on Win32
10117      platform
10118    - changed crypto/bio/b_sock.c to work with macro functions (CLIB BSD)
10119    - various changes to fix missing prototype warnings
10120    - fixed x86nasm.pl to create correct asm files for NASM COFF output
10121    - added AES, WHIRLPOOL and CPUID assembler code to build files
10122    - added missing AES assembler make rules to mk1mf.pl
10123    - fixed order of includes in `apps/ocsp.c` so that `e_os.h` settings apply
10124
10125    *Guenter Knauf <eflash@gmx.net>*
10126
10127  * Implement certificate status request TLS extension defined in RFC3546.
10128    A client can set the appropriate parameters and receive the encoded
10129    OCSP response via a callback. A server can query the supplied parameters
10130    and set the encoded OCSP response in the callback. Add simplified examples
10131    to s_client and s_server.
10132
10133    *Steve Henson*
10134
10135 ### Changes between 0.9.8f and 0.9.8g  [19 Oct 2007]
10136
10137  * Fix various bugs:
10138    + Binary incompatibility of ssl_ctx_st structure
10139    + DTLS interoperation with non-compliant servers
10140    + Don't call get_session_cb() without proposed session
10141    + Fix ia64 assembler code
10142
10143    *Andy Polyakov, Steve Henson*
10144
10145 ### Changes between 0.9.8e and 0.9.8f  [11 Oct 2007]
10146
10147  * DTLS Handshake overhaul. There were longstanding issues with
10148    OpenSSL DTLS implementation, which were making it impossible for
10149    RFC 4347 compliant client to communicate with OpenSSL server.
10150    Unfortunately just fixing these incompatibilities would "cut off"
10151    pre-0.9.8f clients. To allow for hassle free upgrade post-0.9.8e
10152    server keeps tolerating non RFC compliant syntax. The opposite is
10153    not true, 0.9.8f client can not communicate with earlier server.
10154    This update even addresses CVE-2007-4995.
10155
10156    *Andy Polyakov*
10157
10158  * Changes to avoid need for function casts in OpenSSL: some compilers
10159    (gcc 4.2 and later) reject their use.
10160    *Kurt Roeckx <kurt@roeckx.be>, Peter Hartley <pdh@utter.chaos.org.uk>,
10161     Steve Henson*
10162
10163  * Add RFC4507 support to OpenSSL. This includes the corrections in
10164    RFC4507bis. The encrypted ticket format is an encrypted encoded
10165    SSL_SESSION structure, that way new session features are automatically
10166    supported.
10167
10168    If a client application caches session in an SSL_SESSION structure
10169    support is transparent because tickets are now stored in the encoded
10170    SSL_SESSION.
10171
10172    The SSL_CTX structure automatically generates keys for ticket
10173    protection in servers so again support should be possible
10174    with no application modification.
10175
10176    If a client or server wishes to disable RFC4507 support then the option
10177    SSL_OP_NO_TICKET can be set.
10178
10179    Add a TLS extension debugging callback to allow the contents of any client
10180    or server extensions to be examined.
10181
10182    This work was sponsored by Google.
10183
10184    *Steve Henson*
10185
10186  * Add initial support for TLS extensions, specifically for the server_name
10187    extension so far.  The SSL_SESSION, SSL_CTX, and SSL data structures now
10188    have new members for a host name.  The SSL data structure has an
10189    additional member `SSL_CTX *initial_ctx` so that new sessions can be
10190    stored in that context to allow for session resumption, even after the
10191    SSL has been switched to a new SSL_CTX in reaction to a client's
10192    server_name extension.
10193
10194    New functions (subject to change):
10195
10196            SSL_get_servername()
10197            SSL_get_servername_type()
10198            SSL_set_SSL_CTX()
10199
10200    New CTRL codes and macros (subject to change):
10201
10202            SSL_CTRL_SET_TLSEXT_SERVERNAME_CB
10203                                - SSL_CTX_set_tlsext_servername_callback()
10204            SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG
10205                                     - SSL_CTX_set_tlsext_servername_arg()
10206            SSL_CTRL_SET_TLSEXT_HOSTNAME           - SSL_set_tlsext_host_name()
10207
10208    openssl s_client has a new '-servername ...' option.
10209
10210    openssl s_server has new options '-servername_host ...', '-cert2 ...',
10211    '-key2 ...', '-servername_fatal' (subject to change).  This allows
10212    testing the HostName extension for a specific single host name ('-cert'
10213    and '-key' remain fallbacks for handshakes without HostName
10214    negotiation).  If the unrecognized_name alert has to be sent, this by
10215    default is a warning; it becomes fatal with the '-servername_fatal'
10216    option.
10217
10218    *Peter Sylvester,  Remy Allais, Christophe Renou, Steve Henson*
10219
10220  * Add AES and SSE2 assembly language support to VC++ build.
10221
10222    *Steve Henson*
10223
10224  * Mitigate attack on final subtraction in Montgomery reduction.
10225
10226    *Andy Polyakov*
10227
10228  * Fix crypto/ec/ec_mult.c to work properly with scalars of value 0
10229    (which previously caused an internal error).
10230
10231    *Bodo Moeller*
10232
10233  * Squeeze another 10% out of IGE mode when in != out.
10234
10235    *Ben Laurie*
10236
10237  * AES IGE mode speedup.
10238
10239    *Dean Gaudet (Google)*
10240
10241  * Add the Korean symmetric 128-bit cipher SEED (see
10242    <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>) and
10243    add SEED ciphersuites from RFC 4162:
10244
10245            TLS_RSA_WITH_SEED_CBC_SHA      =  "SEED-SHA"
10246            TLS_DHE_DSS_WITH_SEED_CBC_SHA  =  "DHE-DSS-SEED-SHA"
10247            TLS_DHE_RSA_WITH_SEED_CBC_SHA  =  "DHE-RSA-SEED-SHA"
10248            TLS_DH_anon_WITH_SEED_CBC_SHA  =  "ADH-SEED-SHA"
10249
10250    To minimize changes between patchlevels in the OpenSSL 0.9.8
10251    series, SEED remains excluded from compilation unless OpenSSL
10252    is configured with 'enable-seed'.
10253
10254    *KISA, Bodo Moeller*
10255
10256  * Mitigate branch prediction attacks, which can be practical if a
10257    single processor is shared, allowing a spy process to extract
10258    information.  For detailed background information, see
10259    <http://eprint.iacr.org/2007/039> (O. Aciicmez, S. Gueron,
10260    J.-P. Seifert, "New Branch Prediction Vulnerabilities in OpenSSL
10261    and Necessary Software Countermeasures").  The core of the change
10262    are new versions BN_div_no_branch() and
10263    BN_mod_inverse_no_branch() of BN_div() and BN_mod_inverse(),
10264    respectively, which are slower, but avoid the security-relevant
10265    conditional branches.  These are automatically called by BN_div()
10266    and BN_mod_inverse() if the flag BN_FLG_CONSTTIME is set for one
10267    of the input BIGNUMs.  Also, BN_is_bit_set() has been changed to
10268    remove a conditional branch.
10269
10270    BN_FLG_CONSTTIME is the new name for the previous
10271    BN_FLG_EXP_CONSTTIME flag, since it now affects more than just
10272    modular exponentiation.  (Since OpenSSL 0.9.7h, setting this flag
10273    in the exponent causes BN_mod_exp_mont() to use the alternative
10274    implementation in BN_mod_exp_mont_consttime().)  The old name
10275    remains as a deprecated alias.
10276
10277    Similarly, RSA_FLAG_NO_EXP_CONSTTIME is replaced by a more general
10278    RSA_FLAG_NO_CONSTTIME flag since the RSA implementation now uses
10279    constant-time implementations for more than just exponentiation.
10280    Here too the old name is kept as a deprecated alias.
10281
10282    BN_BLINDING_new() will now use BN_dup() for the modulus so that
10283    the BN_BLINDING structure gets an independent copy of the
10284    modulus.  This means that the previous `BIGNUM *m` argument to
10285    BN_BLINDING_new() and to BN_BLINDING_create_param() now
10286    essentially becomes `const BIGNUM *m`, although we can't actually
10287    change this in the header file before 0.9.9.  It allows
10288    RSA_setup_blinding() to use BN_with_flags() on the modulus to
10289    enable BN_FLG_CONSTTIME.
10290
10291    *Matthew D Wood (Intel Corp)*
10292
10293  * In the SSL/TLS server implementation, be strict about session ID
10294    context matching (which matters if an application uses a single
10295    external cache for different purposes).  Previously,
10296    out-of-context reuse was forbidden only if SSL_VERIFY_PEER was
10297    set.  This did ensure strict client verification, but meant that,
10298    with applications using a single external cache for quite
10299    different requirements, clients could circumvent ciphersuite
10300    restrictions for a given session ID context by starting a session
10301    in a different context.
10302
10303    *Bodo Moeller*
10304
10305  * Include "!eNULL" in SSL_DEFAULT_CIPHER_LIST to make sure that
10306    a ciphersuite string such as "DEFAULT:RSA" cannot enable
10307    authentication-only ciphersuites.
10308
10309    *Bodo Moeller*
10310
10311  * Update the SSL_get_shared_ciphers() fix CVE-2006-3738 which was
10312    not complete and could lead to a possible single byte overflow
10313    ([CVE-2007-5135]) [Ben Laurie]
10314
10315 ### Changes between 0.9.8d and 0.9.8e  [23 Feb 2007]
10316
10317  * Since AES128 and AES256 (and similarly Camellia128 and
10318    Camellia256) share a single mask bit in the logic of
10319    ssl/ssl_ciph.c, the code for masking out disabled ciphers needs a
10320    kludge to work properly if AES128 is available and AES256 isn't
10321    (or if Camellia128 is available and Camellia256 isn't).
10322
10323    *Victor Duchovni*
10324
10325  * Fix the BIT STRING encoding generated by crypto/ec/ec_asn1.c
10326    (within i2d_ECPrivateKey, i2d_ECPKParameters, i2d_ECParameters):
10327    When a point or a seed is encoded in a BIT STRING, we need to
10328    prevent the removal of trailing zero bits to get the proper DER
10329    encoding.  (By default, crypto/asn1/a_bitstr.c assumes the case
10330    of a NamedBitList, for which trailing 0 bits need to be removed.)
10331
10332    *Bodo Moeller*
10333
10334  * Have SSL/TLS server implementation tolerate "mismatched" record
10335    protocol version while receiving ClientHello even if the
10336    ClientHello is fragmented.  (The server can't insist on the
10337    particular protocol version it has chosen before the ServerHello
10338    message has informed the client about his choice.)
10339
10340    *Bodo Moeller*
10341
10342  * Add RFC 3779 support.
10343
10344    *Rob Austein for ARIN, Ben Laurie*
10345
10346  * Load error codes if they are not already present instead of using a
10347    static variable. This allows them to be cleanly unloaded and reloaded.
10348    Improve header file function name parsing.
10349
10350    *Steve Henson*
10351
10352  * extend SMTP and IMAP protocol emulation in s_client to use EHLO
10353    or CAPABILITY handshake as required by RFCs.
10354
10355    *Goetz Babin-Ebell*
10356
10357 ### Changes between 0.9.8c and 0.9.8d  [28 Sep 2006]
10358
10359  * Introduce limits to prevent malicious keys being able to
10360    cause a denial of service.  ([CVE-2006-2940])
10361
10362    *Steve Henson, Bodo Moeller*
10363
10364  * Fix ASN.1 parsing of certain invalid structures that can result
10365    in a denial of service.  ([CVE-2006-2937])  [Steve Henson]
10366
10367  * Fix buffer overflow in SSL_get_shared_ciphers() function.
10368    ([CVE-2006-3738]) [Tavis Ormandy and Will Drewry, Google Security Team]
10369
10370  * Fix SSL client code which could crash if connecting to a
10371    malicious SSLv2 server.  ([CVE-2006-4343])
10372
10373    *Tavis Ormandy and Will Drewry, Google Security Team*
10374
10375  * Since 0.9.8b, ciphersuite strings naming explicit ciphersuites
10376    match only those.  Before that, "AES256-SHA" would be interpreted
10377    as a pattern and match "AES128-SHA" too (since AES128-SHA got
10378    the same strength classification in 0.9.7h) as we currently only
10379    have a single AES bit in the ciphersuite description bitmap.
10380    That change, however, also applied to ciphersuite strings such as
10381    "RC4-MD5" that intentionally matched multiple ciphersuites --
10382    namely, SSL 2.0 ciphersuites in addition to the more common ones
10383    from SSL 3.0/TLS 1.0.
10384
10385    So we change the selection algorithm again: Naming an explicit
10386    ciphersuite selects this one ciphersuite, and any other similar
10387    ciphersuite (same bitmap) from *other* protocol versions.
10388    Thus, "RC4-MD5" again will properly select both the SSL 2.0
10389    ciphersuite and the SSL 3.0/TLS 1.0 ciphersuite.
10390
10391    Since SSL 2.0 does not have any ciphersuites for which the
10392    128/256 bit distinction would be relevant, this works for now.
10393    The proper fix will be to use different bits for AES128 and
10394    AES256, which would have avoided the problems from the beginning;
10395    however, bits are scarce, so we can only do this in a new release
10396    (not just a patchlevel) when we can change the SSL_CIPHER
10397    definition to split the single 'unsigned long mask' bitmap into
10398    multiple values to extend the available space.
10399
10400    *Bodo Moeller*
10401
10402 ### Changes between 0.9.8b and 0.9.8c  [05 Sep 2006]
10403
10404  * Avoid PKCS #1 v1.5 signature attack discovered by Daniel Bleichenbacher
10405    ([CVE-2006-4339])  [Ben Laurie and Google Security Team]
10406
10407  * Add AES IGE and biIGE modes.
10408
10409    *Ben Laurie*
10410
10411  * Change the Unix randomness entropy gathering to use poll() when
10412    possible instead of select(), since the latter has some
10413    undesirable limitations.
10414
10415    *Darryl Miles via Richard Levitte and Bodo Moeller*
10416
10417  * Disable "ECCdraft" ciphersuites more thoroughly.  Now special
10418    treatment in ssl/ssl_ciph.s makes sure that these ciphersuites
10419    cannot be implicitly activated as part of, e.g., the "AES" alias.
10420    However, please upgrade to OpenSSL 0.9.9[-dev] for
10421    non-experimental use of the ECC ciphersuites to get TLS extension
10422    support, which is required for curve and point format negotiation
10423    to avoid potential handshake problems.
10424
10425    *Bodo Moeller*
10426
10427  * Disable rogue ciphersuites:
10428
10429    - SSLv2 0x08 0x00 0x80 ("RC4-64-MD5")
10430    - SSLv3/TLSv1 0x00 0x61 ("EXP1024-RC2-CBC-MD5")
10431    - SSLv3/TLSv1 0x00 0x60 ("EXP1024-RC4-MD5")
10432
10433    The latter two were purportedly from
10434    draft-ietf-tls-56-bit-ciphersuites-0[01].txt, but do not really
10435    appear there.
10436
10437    Also deactivate the remaining ciphersuites from
10438    draft-ietf-tls-56-bit-ciphersuites-01.txt.  These are just as
10439    unofficial, and the ID has long expired.
10440
10441    *Bodo Moeller*
10442
10443  * Fix RSA blinding Heisenbug (problems sometimes occurred on
10444    dual-core machines) and other potential thread-safety issues.
10445
10446    *Bodo Moeller*
10447
10448  * Add the symmetric cipher Camellia (128-bit, 192-bit, 256-bit key
10449    versions), which is now available for royalty-free use
10450    (see <http://info.isl.ntt.co.jp/crypt/eng/info/chiteki.html>).
10451    Also, add Camellia TLS ciphersuites from RFC 4132.
10452
10453    To minimize changes between patchlevels in the OpenSSL 0.9.8
10454    series, Camellia remains excluded from compilation unless OpenSSL
10455    is configured with 'enable-camellia'.
10456
10457    *NTT*
10458
10459  * Disable the padding bug check when compression is in use. The padding
10460    bug check assumes the first packet is of even length, this is not
10461    necessarily true if compression is enabled and can result in false
10462    positives causing handshake failure. The actual bug test is ancient
10463    code so it is hoped that implementations will either have fixed it by
10464    now or any which still have the bug do not support compression.
10465
10466    *Steve Henson*
10467
10468 ### Changes between 0.9.8a and 0.9.8b  [04 May 2006]
10469
10470  * When applying a cipher rule check to see if string match is an explicit
10471    cipher suite and only match that one cipher suite if it is.
10472
10473    *Steve Henson*
10474
10475  * Link in manifests for VC++ if needed.
10476
10477    *Austin Ziegler <halostatue@gmail.com>*
10478
10479  * Update support for ECC-based TLS ciphersuites according to
10480    draft-ietf-tls-ecc-12.txt with proposed changes (but without
10481    TLS extensions, which are supported starting with the 0.9.9
10482    branch, not in the OpenSSL 0.9.8 branch).
10483
10484    *Douglas Stebila*
10485
10486  * New functions EVP_CIPHER_CTX_new() and EVP_CIPHER_CTX_free() to support
10487    opaque EVP_CIPHER_CTX handling.
10488
10489    *Steve Henson*
10490
10491  * Fixes and enhancements to zlib compression code. We now only use
10492    "zlib1.dll" and use the default `__cdecl` calling convention on Win32
10493    to conform with the standards mentioned here:
10494    <http://www.zlib.net/DLL_FAQ.txt>
10495    Static zlib linking now works on Windows and the new --with-zlib-include
10496    --with-zlib-lib options to Configure can be used to supply the location
10497    of the headers and library. Gracefully handle case where zlib library
10498    can't be loaded.
10499
10500    *Steve Henson*
10501
10502  * Several fixes and enhancements to the OID generation code. The old code
10503    sometimes allowed invalid OIDs (1.X for X >= 40 for example), couldn't
10504    handle numbers larger than ULONG_MAX, truncated printing and had a
10505    non standard OBJ_obj2txt() behaviour.
10506
10507    *Steve Henson*
10508
10509  * Add support for building of engines under engine/ as shared libraries
10510    under VC++ build system.
10511
10512    *Steve Henson*
10513
10514  * Corrected the numerous bugs in the Win32 path splitter in DSO.
10515    Hopefully, we will not see any false combination of paths any more.
10516
10517    *Richard Levitte*
10518
10519 ### Changes between 0.9.8 and 0.9.8a  [11 Oct 2005]
10520
10521  * Remove the functionality of SSL_OP_MSIE_SSLV2_RSA_PADDING
10522    (part of SSL_OP_ALL).  This option used to disable the
10523    countermeasure against man-in-the-middle protocol-version
10524    rollback in the SSL 2.0 server implementation, which is a bad
10525    idea.  ([CVE-2005-2969])
10526
10527    *Bodo Moeller; problem pointed out by Yutaka Oiwa (Research Center
10528    for Information Security, National Institute of Advanced Industrial
10529    Science and Technology [AIST], Japan)*
10530
10531  * Add two function to clear and return the verify parameter flags.
10532
10533    *Steve Henson*
10534
10535  * Keep cipherlists sorted in the source instead of sorting them at
10536    runtime, thus removing the need for a lock.
10537
10538    *Nils Larsch*
10539
10540  * Avoid some small subgroup attacks in Diffie-Hellman.
10541
10542    *Nick Mathewson and Ben Laurie*
10543
10544  * Add functions for well-known primes.
10545
10546    *Nick Mathewson*
10547
10548  * Extended Windows CE support.
10549
10550    *Satoshi Nakamura and Andy Polyakov*
10551
10552  * Initialize SSL_METHOD structures at compile time instead of during
10553    runtime, thus removing the need for a lock.
10554
10555    *Steve Henson*
10556
10557  * Make PKCS7_decrypt() work even if no certificate is supplied by
10558    attempting to decrypt each encrypted key in turn. Add support to
10559    smime utility.
10560
10561    *Steve Henson*
10562
10563 ### Changes between 0.9.7h and 0.9.8  [05 Jul 2005]
10564
10565 [NB: OpenSSL 0.9.7i and later 0.9.7 patch levels were released after
10566 OpenSSL 0.9.8.]
10567
10568  * Add libcrypto.pc and libssl.pc for those who feel they need them.
10569
10570    *Richard Levitte*
10571
10572  * Change CA.sh and CA.pl so they don't bundle the CSR and the private
10573    key into the same file any more.
10574
10575    *Richard Levitte*
10576
10577  * Add initial support for Win64, both IA64 and AMD64/x64 flavors.
10578
10579    *Andy Polyakov*
10580
10581  * Add -utf8 command line and config file option to 'ca'.
10582
10583    *Stefan <stf@udoma.org*
10584
10585  * Removed the macro des_crypt(), as it seems to conflict with some
10586    libraries.  Use DES_crypt().
10587
10588    *Richard Levitte*
10589
10590  * Correct naming of the 'chil' and '4758cca' ENGINEs. This
10591    involves renaming the source and generated shared-libs for
10592    both. The engines will accept the corrected or legacy ids
10593    ('ncipher' and '4758_cca' respectively) when binding. NB,
10594    this only applies when building 'shared'.
10595
10596    *Corinna Vinschen <vinschen@redhat.com> and Geoff Thorpe*
10597
10598  * Add attribute functions to EVP_PKEY structure. Modify
10599    PKCS12_create() to recognize a CSP name attribute and
10600    use it. Make -CSP option work again in pkcs12 utility.
10601
10602    *Steve Henson*
10603
10604  * Add new functionality to the bn blinding code:
10605    - automatic re-creation of the BN_BLINDING parameters after
10606      a fixed number of uses (currently 32)
10607    - add new function for parameter creation
10608    - introduce flags to control the update behaviour of the
10609      BN_BLINDING parameters
10610    - hide BN_BLINDING structure
10611    Add a second BN_BLINDING slot to the RSA structure to improve
10612    performance when a single RSA object is shared among several
10613    threads.
10614
10615    *Nils Larsch*
10616
10617  * Add support for DTLS.
10618
10619    *Nagendra Modadugu <nagendra@cs.stanford.edu> and Ben Laurie*
10620
10621  * Add support for DER encoded private keys (SSL_FILETYPE_ASN1)
10622    to SSL_CTX_use_PrivateKey_file() and SSL_use_PrivateKey_file()
10623
10624    *Walter Goulet*
10625
10626  * Remove buggy and incomplete DH cert support from
10627    ssl/ssl_rsa.c and ssl/s3_both.c
10628
10629    *Nils Larsch*
10630
10631  * Use SHA-1 instead of MD5 as the default digest algorithm for
10632    the `apps/openssl` commands.
10633
10634    *Nils Larsch*
10635
10636  * Compile clean with "-Wall -Wmissing-prototypes
10637    -Wstrict-prototypes -Wmissing-declarations -Werror". Currently
10638    DEBUG_SAFESTACK must also be set.
10639
10640    *Ben Laurie*
10641
10642  * Change ./Configure so that certain algorithms can be disabled by default.
10643    The new counterpiece to "no-xxx" is "enable-xxx".
10644
10645    The patented RC5 and MDC2 algorithms will now be disabled unless
10646    "enable-rc5" and "enable-mdc2", respectively, are specified.
10647
10648    (IDEA remains enabled despite being patented.  This is because IDEA
10649    is frequently required for interoperability, and there is no license
10650    fee for non-commercial use.  As before, "no-idea" can be used to
10651    avoid this algorithm.)
10652
10653    *Bodo Moeller*
10654
10655  * Add processing of proxy certificates (see RFC 3820).  This work was
10656    sponsored by KTH (The Royal Institute of Technology in Stockholm) and
10657    EGEE (Enabling Grids for E-science in Europe).
10658
10659    *Richard Levitte*
10660
10661  * RC4 performance overhaul on modern architectures/implementations, such
10662    as Intel P4, IA-64 and AMD64.
10663
10664    *Andy Polyakov*
10665
10666  * New utility extract-section.pl. This can be used specify an alternative
10667    section number in a pod file instead of having to treat each file as
10668    a separate case in Makefile. This can be done by adding two lines to the
10669    pod file:
10670
10671    =for comment openssl_section:XXX
10672
10673    The blank line is mandatory.
10674
10675    *Steve Henson*
10676
10677  * New arguments -certform, -keyform and -pass for s_client and s_server
10678    to allow alternative format key and certificate files and passphrase
10679    sources.
10680
10681    *Steve Henson*
10682
10683  * New structure X509_VERIFY_PARAM which combines current verify parameters,
10684    update associated structures and add various utility functions.
10685
10686    Add new policy related verify parameters, include policy checking in
10687    standard verify code. Enhance 'smime' application with extra parameters
10688    to support policy checking and print out.
10689
10690    *Steve Henson*
10691
10692  * Add a new engine to support VIA PadLock ACE extensions in the VIA C3
10693    Nehemiah processors. These extensions support AES encryption in hardware
10694    as well as RNG (though RNG support is currently disabled).
10695
10696    *Michal Ludvig <michal@logix.cz>, with help from Andy Polyakov*
10697
10698  * Deprecate `BN_[get|set]_params()` functions (they were ignored internally).
10699
10700    *Geoff Thorpe*
10701
10702  * New FIPS 180-2 algorithms, SHA-224/-256/-384/-512 are implemented.
10703
10704    *Andy Polyakov and a number of other people*
10705
10706  * Improved PowerPC platform support. Most notably BIGNUM assembler
10707    implementation contributed by IBM.
10708
10709    *Suresh Chari, Peter Waltenberg, Andy Polyakov*
10710
10711  * The new 'RSA_generate_key_ex' function now takes a BIGNUM for the public
10712    exponent rather than 'unsigned long'. There is a corresponding change to
10713    the new 'rsa_keygen' element of the RSA_METHOD structure.
10714
10715    *Jelte Jansen, Geoff Thorpe*
10716
10717  * Functionality for creating the initial serial number file is now
10718    moved from CA.pl to the 'ca' utility with a new option -create_serial.
10719
10720    (Before OpenSSL 0.9.7e, CA.pl used to initialize the serial
10721    number file to 1, which is bound to cause problems.  To avoid
10722    the problems while respecting compatibility between different 0.9.7
10723    patchlevels, 0.9.7e  employed 'openssl x509 -next_serial' in
10724    CA.pl for serial number initialization.  With the new release 0.9.8,
10725    we can fix the problem directly in the 'ca' utility.)
10726
10727    *Steve Henson*
10728
10729  * Reduced header interdependencies by declaring more opaque objects in
10730    ossl_typ.h. As a consequence, including some headers (eg. engine.h) will
10731    give fewer recursive includes, which could break lazy source code - so
10732    this change is covered by the OPENSSL_NO_DEPRECATED symbol. As always,
10733    developers should define this symbol when building and using openssl to
10734    ensure they track the recommended behaviour, interfaces, [etc], but
10735    backwards-compatible behaviour prevails when this isn't defined.
10736
10737    *Geoff Thorpe*
10738
10739  * New function X509_POLICY_NODE_print() which prints out policy nodes.
10740
10741    *Steve Henson*
10742
10743  * Add new EVP function EVP_CIPHER_CTX_rand_key and associated functionality.
10744    This will generate a random key of the appropriate length based on the
10745    cipher context. The EVP_CIPHER can provide its own random key generation
10746    routine to support keys of a specific form. This is used in the des and
10747    3des routines to generate a key of the correct parity. Update S/MIME
10748    code to use new functions and hence generate correct parity DES keys.
10749    Add EVP_CHECK_DES_KEY #define to return an error if the key is not
10750    valid (weak or incorrect parity).
10751
10752    *Steve Henson*
10753
10754  * Add a local set of CRLs that can be used by X509_verify_cert() as well
10755    as looking them up. This is useful when the verified structure may contain
10756    CRLs, for example PKCS#7 signedData. Modify PKCS7_verify() to use any CRLs
10757    present unless the new PKCS7_NO_CRL flag is asserted.
10758
10759    *Steve Henson*
10760
10761  * Extend ASN1 oid configuration module. It now additionally accepts the
10762    syntax:
10763
10764    shortName = some long name, 1.2.3.4
10765
10766    *Steve Henson*
10767
10768  * Reimplemented the BN_CTX implementation. There is now no more static
10769    limitation on the number of variables it can handle nor the depth of the
10770    "stack" handling for BN_CTX_start()/BN_CTX_end() pairs. The stack
10771    information can now expand as required, and rather than having a single
10772    static array of bignums, BN_CTX now uses a linked-list of such arrays
10773    allowing it to expand on demand whilst maintaining the usefulness of
10774    BN_CTX's "bundling".
10775
10776    *Geoff Thorpe*
10777
10778  * Add a missing BN_CTX parameter to the 'rsa_mod_exp' callback in RSA_METHOD
10779    to allow all RSA operations to function using a single BN_CTX.
10780
10781    *Geoff Thorpe*
10782
10783  * Preliminary support for certificate policy evaluation and checking. This
10784    is initially intended to pass the tests outlined in "Conformance Testing
10785    of Relying Party Client Certificate Path Processing Logic" v1.07.
10786
10787    *Steve Henson*
10788
10789  * bn_dup_expand() has been deprecated, it was introduced in 0.9.7 and
10790    remained unused and not that useful. A variety of other little bignum
10791    tweaks and fixes have also been made continuing on from the audit (see
10792    below).
10793
10794    *Geoff Thorpe*
10795
10796  * Constify all or almost all d2i, c2i, s2i and r2i functions, along with
10797    associated ASN1, EVP and SSL functions and old ASN1 macros.
10798
10799    *Richard Levitte*
10800
10801  * BN_zero() only needs to set 'top' and 'neg' to zero for correct results,
10802    and this should never fail. So the return value from the use of
10803    BN_set_word() (which can fail due to needless expansion) is now deprecated;
10804    if OPENSSL_NO_DEPRECATED is defined, BN_zero() is a void macro.
10805
10806    *Geoff Thorpe*
10807
10808  * BN_CTX_get() should return zero-valued bignums, providing the same
10809    initialised value as BN_new().
10810
10811    *Geoff Thorpe, suggested by Ulf Möller*
10812
10813  * Support for inhibitAnyPolicy certificate extension.
10814
10815    *Steve Henson*
10816
10817  * An audit of the BIGNUM code is underway, for which debugging code is
10818    enabled when BN_DEBUG is defined. This makes stricter enforcements on what
10819    is considered valid when processing BIGNUMs, and causes execution to
10820    assert() when a problem is discovered. If BN_DEBUG_RAND is defined,
10821    further steps are taken to deliberately pollute unused data in BIGNUM
10822    structures to try and expose faulty code further on. For now, openssl will
10823    (in its default mode of operation) continue to tolerate the inconsistent
10824    forms that it has tolerated in the past, but authors and packagers should
10825    consider trying openssl and their own applications when compiled with
10826    these debugging symbols defined. It will help highlight potential bugs in
10827    their own code, and will improve the test coverage for OpenSSL itself. At
10828    some point, these tighter rules will become openssl's default to improve
10829    maintainability, though the assert()s and other overheads will remain only
10830    in debugging configurations. See bn.h for more details.
10831
10832    *Geoff Thorpe, Nils Larsch, Ulf Möller*
10833
10834  * BN_CTX_init() has been deprecated, as BN_CTX is an opaque structure
10835    that can only be obtained through BN_CTX_new() (which implicitly
10836    initialises it). The presence of this function only made it possible
10837    to overwrite an existing structure (and cause memory leaks).
10838
10839    *Geoff Thorpe*
10840
10841  * Because of the callback-based approach for implementing LHASH as a
10842    template type, lh_insert() adds opaque objects to hash-tables and
10843    lh_doall() or lh_doall_arg() are typically used with a destructor callback
10844    to clean up those corresponding objects before destroying the hash table
10845    (and losing the object pointers). So some over-zealous constifications in
10846    LHASH have been relaxed so that lh_insert() does not take (nor store) the
10847    objects as "const" and the `lh_doall[_arg]` callback wrappers are not
10848    prototyped to have "const" restrictions on the object pointers they are
10849    given (and so aren't required to cast them away any more).
10850
10851    *Geoff Thorpe*
10852
10853  * The tmdiff.h API was so ugly and minimal that our own timing utility
10854    (speed) prefers to use its own implementation. The two implementations
10855    haven't been consolidated as yet (volunteers?) but the tmdiff API has had
10856    its object type properly exposed (MS_TM) instead of casting to/from
10857    `char *`. This may still change yet if someone realises MS_TM and
10858    `ms_time_***`
10859    aren't necessarily the greatest nomenclatures - but this is what was used
10860    internally to the implementation so I've used that for now.
10861
10862    *Geoff Thorpe*
10863
10864  * Ensure that deprecated functions do not get compiled when
10865    OPENSSL_NO_DEPRECATED is defined. Some "openssl" subcommands and a few of
10866    the self-tests were still using deprecated key-generation functions so
10867    these have been updated also.
10868
10869    *Geoff Thorpe*
10870
10871  * Reorganise PKCS#7 code to separate the digest location functionality
10872    into PKCS7_find_digest(), digest addition into PKCS7_bio_add_digest().
10873    New function PKCS7_set_digest() to set the digest type for PKCS#7
10874    digestedData type. Add additional code to correctly generate the
10875    digestedData type and add support for this type in PKCS7 initialization
10876    functions.
10877
10878    *Steve Henson*
10879
10880  * New function PKCS7_set0_type_other() this initializes a PKCS7
10881    structure of type "other".
10882
10883    *Steve Henson*
10884
10885  * Fix prime generation loop in crypto/bn/bn_prime.pl by making
10886    sure the loop does correctly stop and breaking ("division by zero")
10887    modulus operations are not performed. The (pre-generated) prime
10888    table crypto/bn/bn_prime.h was already correct, but it could not be
10889    re-generated on some platforms because of the "division by zero"
10890    situation in the script.
10891
10892    *Ralf S. Engelschall*
10893
10894  * Update support for ECC-based TLS ciphersuites according to
10895    draft-ietf-tls-ecc-03.txt: the KDF1 key derivation function with
10896    SHA-1 now is only used for "small" curves (where the
10897    representation of a field element takes up to 24 bytes); for
10898    larger curves, the field element resulting from ECDH is directly
10899    used as premaster secret.
10900
10901    *Douglas Stebila (Sun Microsystems Laboratories)*
10902
10903  * Add code for kP+lQ timings to crypto/ec/ectest.c, and add SEC2
10904    curve secp160r1 to the tests.
10905
10906    *Douglas Stebila (Sun Microsystems Laboratories)*
10907
10908  * Add the possibility to load symbols globally with DSO.
10909
10910    *Götz Babin-Ebell <babin-ebell@trustcenter.de> via Richard Levitte*
10911
10912  * Add the functions ERR_set_mark() and ERR_pop_to_mark() for better
10913    control of the error stack.
10914
10915    *Richard Levitte*
10916
10917  * Add support for STORE in ENGINE.
10918
10919    *Richard Levitte*
10920
10921  * Add the STORE type.  The intention is to provide a common interface
10922    to certificate and key stores, be they simple file-based stores, or
10923    HSM-type store, or LDAP stores, or...
10924    NOTE: The code is currently UNTESTED and isn't really used anywhere.
10925
10926    *Richard Levitte*
10927
10928  * Add a generic structure called OPENSSL_ITEM.  This can be used to
10929    pass a list of arguments to any function as well as provide a way
10930    for a function to pass data back to the caller.
10931
10932    *Richard Levitte*
10933
10934  * Add the functions BUF_strndup() and BUF_memdup().  BUF_strndup()
10935    works like BUF_strdup() but can be used to duplicate a portion of
10936    a string.  The copy gets NUL-terminated.  BUF_memdup() duplicates
10937    a memory area.
10938
10939    *Richard Levitte*
10940
10941  * Add the function sk_find_ex() which works like sk_find(), but will
10942    return an index to an element even if an exact match couldn't be
10943    found.  The index is guaranteed to point at the element where the
10944    searched-for key would be inserted to preserve sorting order.
10945
10946    *Richard Levitte*
10947
10948  * Add the function OBJ_bsearch_ex() which works like OBJ_bsearch() but
10949    takes an extra flags argument for optional functionality.  Currently,
10950    the following flags are defined:
10951
10952       OBJ_BSEARCH_VALUE_ON_NOMATCH
10953       This one gets OBJ_bsearch_ex() to return a pointer to the first
10954       element where the comparing function returns a negative or zero
10955       number.
10956
10957       OBJ_BSEARCH_FIRST_VALUE_ON_MATCH
10958       This one gets OBJ_bsearch_ex() to return a pointer to the first
10959       element where the comparing function returns zero.  This is useful
10960       if there are more than one element where the comparing function
10961       returns zero.
10962
10963    *Richard Levitte*
10964
10965  * Make it possible to create self-signed certificates with 'openssl ca'
10966    in such a way that the self-signed certificate becomes part of the
10967    CA database and uses the same mechanisms for serial number generation
10968    as all other certificate signing.  The new flag '-selfsign' enables
10969    this functionality.  Adapt CA.sh and CA.pl.in.
10970
10971    *Richard Levitte*
10972
10973  * Add functionality to check the public key of a certificate request
10974    against a given private.  This is useful to check that a certificate
10975    request can be signed by that key (self-signing).
10976
10977    *Richard Levitte*
10978
10979  * Make it possible to have multiple active certificates with the same
10980    subject in the CA index file.  This is done only if the keyword
10981    'unique_subject' is set to 'no' in the main CA section (default
10982    if 'CA_default') of the configuration file.  The value is saved
10983    with the database itself in a separate index attribute file,
10984    named like the index file with '.attr' appended to the name.
10985
10986    *Richard Levitte*
10987
10988  * Generate multi-valued AVAs using '+' notation in config files for
10989    req and dirName.
10990
10991    *Steve Henson*
10992
10993  * Support for nameConstraints certificate extension.
10994
10995    *Steve Henson*
10996
10997  * Support for policyConstraints certificate extension.
10998
10999    *Steve Henson*
11000
11001  * Support for policyMappings certificate extension.
11002
11003    *Steve Henson*
11004
11005  * Make sure the default DSA_METHOD implementation only uses its
11006    dsa_mod_exp() and/or bn_mod_exp() handlers if they are non-NULL,
11007    and change its own handlers to be NULL so as to remove unnecessary
11008    indirection. This lets alternative implementations fallback to the
11009    default implementation more easily.
11010
11011    *Geoff Thorpe*
11012
11013  * Support for directoryName in GeneralName related extensions
11014    in config files.
11015
11016    *Steve Henson*
11017
11018  * Make it possible to link applications using Makefile.shared.
11019    Make that possible even when linking against static libraries!
11020
11021    *Richard Levitte*
11022
11023  * Support for single pass processing for S/MIME signing. This now
11024    means that S/MIME signing can be done from a pipe, in addition
11025    cleartext signing (multipart/signed type) is effectively streaming
11026    and the signed data does not need to be all held in memory.
11027
11028    This is done with a new flag PKCS7_STREAM. When this flag is set
11029    PKCS7_sign() only initializes the PKCS7 structure and the actual signing
11030    is done after the data is output (and digests calculated) in
11031    SMIME_write_PKCS7().
11032
11033    *Steve Henson*
11034
11035  * Add full support for -rpath/-R, both in shared libraries and
11036    applications, at least on the platforms where it's known how
11037    to do it.
11038
11039    *Richard Levitte*
11040
11041  * In crypto/ec/ec_mult.c, implement fast point multiplication with
11042    precomputation, based on wNAF splitting: EC_GROUP_precompute_mult()
11043    will now compute a table of multiples of the generator that
11044    makes subsequent invocations of EC_POINTs_mul() or EC_POINT_mul()
11045    faster (notably in the case of a single point multiplication,
11046    scalar * generator).
11047
11048    *Nils Larsch, Bodo Moeller*
11049
11050  * IPv6 support for certificate extensions. The various extensions
11051    which use the IP:a.b.c.d can now take IPv6 addresses using the
11052    formats of RFC1884 2.2 . IPv6 addresses are now also displayed
11053    correctly.
11054
11055    *Steve Henson*
11056
11057  * Added an ENGINE that implements RSA by performing private key
11058    exponentiations with the GMP library. The conversions to and from
11059    GMP's mpz_t format aren't optimised nor are any montgomery forms
11060    cached, and on x86 it appears OpenSSL's own performance has caught up.
11061    However there are likely to be other architectures where GMP could
11062    provide a boost. This ENGINE is not built in by default, but it can be
11063    specified at Configure time and should be accompanied by the necessary
11064    linker additions, eg;
11065            ./config -DOPENSSL_USE_GMP -lgmp
11066
11067    *Geoff Thorpe*
11068
11069  * "openssl engine" will not display ENGINE/DSO load failure errors when
11070    testing availability of engines with "-t" - the old behaviour is
11071    produced by increasing the feature's verbosity with "-tt".
11072
11073    *Geoff Thorpe*
11074
11075  * ECDSA routines: under certain error conditions uninitialized BN objects
11076    could be freed. Solution: make sure initialization is performed early
11077    enough. (Reported and fix supplied by Nils Larsch <nla@trustcenter.de>
11078    via PR#459)
11079
11080    *Lutz Jaenicke*
11081
11082  * Key-generation can now be implemented in RSA_METHOD, DSA_METHOD
11083    and DH_METHOD (eg. by ENGINE implementations) to override the normal
11084    software implementations. For DSA and DH, parameter generation can
11085    also be overridden by providing the appropriate method callbacks.
11086
11087    *Geoff Thorpe*
11088
11089  * Change the "progress" mechanism used in key-generation and
11090    primality testing to functions that take a new BN_GENCB pointer in
11091    place of callback/argument pairs. The new API functions have `_ex`
11092    postfixes and the older functions are reimplemented as wrappers for
11093    the new ones. The OPENSSL_NO_DEPRECATED symbol can be used to hide
11094    declarations of the old functions to help (graceful) attempts to
11095    migrate to the new functions. Also, the new key-generation API
11096    functions operate on a caller-supplied key-structure and return
11097    success/failure rather than returning a key or NULL - this is to
11098    help make "keygen" another member function of RSA_METHOD etc.
11099
11100    Example for using the new callback interface:
11101
11102            int (*my_callback)(int a, int b, BN_GENCB *cb) = ...;
11103            void *my_arg = ...;
11104            BN_GENCB my_cb;
11105
11106            BN_GENCB_set(&my_cb, my_callback, my_arg);
11107
11108            return BN_is_prime_ex(some_bignum, BN_prime_checks, NULL, &cb);
11109            /* For the meaning of a, b in calls to my_callback(), see the
11110             * documentation of the function that calls the callback.
11111             * cb will point to my_cb; my_arg can be retrieved as cb->arg.
11112             * my_callback should return 1 if it wants BN_is_prime_ex()
11113             * to continue, or 0 to stop.
11114             */
11115
11116    *Geoff Thorpe*
11117
11118  * Change the ZLIB compression method to be stateful, and make it
11119    available to TLS with the number defined in
11120    draft-ietf-tls-compression-04.txt.
11121
11122    *Richard Levitte*
11123
11124  * Add the ASN.1 structures and functions for CertificatePair, which
11125    is defined as follows (according to X.509_4thEditionDraftV6.pdf):
11126
11127            CertificatePair ::= SEQUENCE {
11128               forward         [0]     Certificate OPTIONAL,
11129               reverse         [1]     Certificate OPTIONAL,
11130               -- at least one of the pair shall be present -- }
11131
11132    Also implement the PEM functions to read and write certificate
11133    pairs, and defined the PEM tag as "CERTIFICATE PAIR".
11134
11135    This needed to be defined, mostly for the sake of the LDAP
11136    attribute crossCertificatePair, but may prove useful elsewhere as
11137    well.
11138
11139    *Richard Levitte*
11140
11141  * Make it possible to inhibit symlinking of shared libraries in
11142    Makefile.shared, for Cygwin's sake.
11143
11144    *Richard Levitte*
11145
11146  * Extend the BIGNUM API by creating a function
11147            void BN_set_negative(BIGNUM *a, int neg);
11148    and a macro that behave like
11149            int  BN_is_negative(const BIGNUM *a);
11150
11151    to avoid the need to access 'a->neg' directly in applications.
11152
11153    *Nils Larsch*
11154
11155  * Implement fast modular reduction for pseudo-Mersenne primes
11156    used in NIST curves (crypto/bn/bn_nist.c, crypto/ec/ecp_nist.c).
11157    EC_GROUP_new_curve_GFp() will now automatically use this
11158    if applicable.
11159
11160    *Nils Larsch <nla@trustcenter.de>*
11161
11162  * Add new lock type (CRYPTO_LOCK_BN).
11163
11164    *Bodo Moeller*
11165
11166  * Change the ENGINE framework to automatically load engines
11167    dynamically from specific directories unless they could be
11168    found to already be built in or loaded.  Move all the
11169    current engines except for the cryptodev one to a new
11170    directory engines/.
11171    The engines in engines/ are built as shared libraries if
11172    the "shared" options was given to ./Configure or ./config.
11173    Otherwise, they are inserted in libcrypto.a.
11174    /usr/local/ssl/engines is the default directory for dynamic
11175    engines, but that can be overridden at configure time through
11176    the usual use of --prefix and/or --openssldir, and at run
11177    time with the environment variable OPENSSL_ENGINES.
11178
11179    *Geoff Thorpe and Richard Levitte*
11180
11181  * Add Makefile.shared, a helper makefile to build shared
11182    libraries.  Adapt Makefile.org.
11183
11184    *Richard Levitte*
11185
11186  * Add version info to Win32 DLLs.
11187
11188    *Peter 'Luna' Runestig" <peter@runestig.com>*
11189
11190  * Add new 'medium level' PKCS#12 API. Certificates and keys
11191    can be added using this API to created arbitrary PKCS#12
11192    files while avoiding the low-level API.
11193
11194    New options to PKCS12_create(), key or cert can be NULL and
11195    will then be omitted from the output file. The encryption
11196    algorithm NIDs can be set to -1 for no encryption, the mac
11197    iteration count can be set to 0 to omit the mac.
11198
11199    Enhance pkcs12 utility by making the -nokeys and -nocerts
11200    options work when creating a PKCS#12 file. New option -nomac
11201    to omit the mac, NONE can be set for an encryption algorithm.
11202    New code is modified to use the enhanced PKCS12_create()
11203    instead of the low-level API.
11204
11205    *Steve Henson*
11206
11207  * Extend ASN1 encoder to support indefinite length constructed
11208    encoding. This can output sequences tags and octet strings in
11209    this form. Modify pk7_asn1.c to support indefinite length
11210    encoding. This is experimental and needs additional code to
11211    be useful, such as an ASN1 bio and some enhanced streaming
11212    PKCS#7 code.
11213
11214    Extend template encode functionality so that tagging is passed
11215    down to the template encoder.
11216
11217    *Steve Henson*
11218
11219  * Let 'openssl req' fail if an argument to '-newkey' is not
11220    recognized instead of using RSA as a default.
11221
11222    *Bodo Moeller*
11223
11224  * Add support for ECC-based ciphersuites from draft-ietf-tls-ecc-01.txt.
11225    As these are not official, they are not included in "ALL";
11226    the "ECCdraft" ciphersuite group alias can be used to select them.
11227
11228    *Vipul Gupta and Sumit Gupta (Sun Microsystems Laboratories)*
11229
11230  * Add ECDH engine support.
11231
11232    *Nils Gura and Douglas Stebila (Sun Microsystems Laboratories)*
11233
11234  * Add ECDH in new directory crypto/ecdh/.
11235
11236    *Douglas Stebila (Sun Microsystems Laboratories)*
11237
11238  * Let BN_rand_range() abort with an error after 100 iterations
11239    without success (which indicates a broken PRNG).
11240
11241    *Bodo Moeller*
11242
11243  * Change BN_mod_sqrt() so that it verifies that the input value
11244    is really the square of the return value.  (Previously,
11245    BN_mod_sqrt would show GIGO behaviour.)
11246
11247    *Bodo Moeller*
11248
11249  * Add named elliptic curves over binary fields from X9.62, SECG,
11250    and WAP/WTLS; add OIDs that were still missing.
11251
11252    *Sheueling Chang Shantz and Douglas Stebila (Sun Microsystems Laboratories)*
11253
11254  * Extend the EC library for elliptic curves over binary fields
11255    (new files ec2_smpl.c, ec2_smpt.c, ec2_mult.c in crypto/ec/).
11256    New EC_METHOD:
11257
11258            EC_GF2m_simple_method
11259
11260    New API functions:
11261
11262            EC_GROUP_new_curve_GF2m
11263            EC_GROUP_set_curve_GF2m
11264            EC_GROUP_get_curve_GF2m
11265            EC_POINT_set_affine_coordinates_GF2m
11266            EC_POINT_get_affine_coordinates_GF2m
11267            EC_POINT_set_compressed_coordinates_GF2m
11268
11269    Point compression for binary fields is disabled by default for
11270    patent reasons (compile with OPENSSL_EC_BIN_PT_COMP defined to
11271    enable it).
11272
11273    As binary polynomials are represented as BIGNUMs, various members
11274    of the EC_GROUP and EC_POINT data structures can be shared
11275    between the implementations for prime fields and binary fields;
11276    the above `..._GF2m functions` (except for EX_GROUP_new_curve_GF2m)
11277    are essentially identical to their `..._GFp` counterparts.
11278    (For simplicity, the `..._GFp` prefix has been dropped from
11279    various internal method names.)
11280
11281    An internal 'field_div' method (similar to 'field_mul' and
11282    'field_sqr') has been added; this is used only for binary fields.
11283
11284    *Sheueling Chang Shantz and Douglas Stebila (Sun Microsystems Laboratories)*
11285
11286  * Optionally dispatch EC_POINT_mul(), EC_POINT_precompute_mult()
11287    through methods ('mul', 'precompute_mult').
11288
11289    The generic implementations (now internally called 'ec_wNAF_mul'
11290    and 'ec_wNAF_precomputed_mult') remain the default if these
11291    methods are undefined.
11292
11293    *Sheueling Chang Shantz and Douglas Stebila (Sun Microsystems Laboratories)*
11294
11295  * New function EC_GROUP_get_degree, which is defined through
11296    EC_METHOD.  For curves over prime fields, this returns the bit
11297    length of the modulus.
11298
11299    *Sheueling Chang Shantz and Douglas Stebila (Sun Microsystems Laboratories)*
11300
11301  * New functions EC_GROUP_dup, EC_POINT_dup.
11302    (These simply call ..._new  and ..._copy).
11303
11304    *Sheueling Chang Shantz and Douglas Stebila (Sun Microsystems Laboratories)*
11305
11306  * Add binary polynomial arithmetic software in crypto/bn/bn_gf2m.c.
11307    Polynomials are represented as BIGNUMs (where the sign bit is not
11308    used) in the following functions [macros]:
11309
11310            BN_GF2m_add
11311            BN_GF2m_sub             [= BN_GF2m_add]
11312            BN_GF2m_mod             [wrapper for BN_GF2m_mod_arr]
11313            BN_GF2m_mod_mul         [wrapper for BN_GF2m_mod_mul_arr]
11314            BN_GF2m_mod_sqr         [wrapper for BN_GF2m_mod_sqr_arr]
11315            BN_GF2m_mod_inv
11316            BN_GF2m_mod_exp         [wrapper for BN_GF2m_mod_exp_arr]
11317            BN_GF2m_mod_sqrt        [wrapper for BN_GF2m_mod_sqrt_arr]
11318            BN_GF2m_mod_solve_quad  [wrapper for BN_GF2m_mod_solve_quad_arr]
11319            BN_GF2m_cmp             [= BN_ucmp]
11320
11321    (Note that only the 'mod' functions are actually for fields GF(2^m).
11322    BN_GF2m_add() is misnomer, but this is for the sake of consistency.)
11323
11324    For some functions, an the irreducible polynomial defining a
11325    field can be given as an 'unsigned int[]' with strictly
11326    decreasing elements giving the indices of those bits that are set;
11327    i.e., p[] represents the polynomial
11328            f(t) = t^p[0] + t^p[1] + ... + t^p[k]
11329    where
11330            p[0] > p[1] > ... > p[k] = 0.
11331    This applies to the following functions:
11332
11333            BN_GF2m_mod_arr
11334            BN_GF2m_mod_mul_arr
11335            BN_GF2m_mod_sqr_arr
11336            BN_GF2m_mod_inv_arr        [wrapper for BN_GF2m_mod_inv]
11337            BN_GF2m_mod_div_arr        [wrapper for BN_GF2m_mod_div]
11338            BN_GF2m_mod_exp_arr
11339            BN_GF2m_mod_sqrt_arr
11340            BN_GF2m_mod_solve_quad_arr
11341            BN_GF2m_poly2arr
11342            BN_GF2m_arr2poly
11343
11344    Conversion can be performed by the following functions:
11345
11346            BN_GF2m_poly2arr
11347            BN_GF2m_arr2poly
11348
11349    bntest.c has additional tests for binary polynomial arithmetic.
11350
11351    Two implementations for BN_GF2m_mod_div() are available.
11352    The default algorithm simply uses BN_GF2m_mod_inv() and
11353    BN_GF2m_mod_mul().  The alternative algorithm is compiled in only
11354    if OPENSSL_SUN_GF2M_DIV is defined (patent pending; read the
11355    copyright notice in crypto/bn/bn_gf2m.c before enabling it).
11356
11357    *Sheueling Chang Shantz and Douglas Stebila (Sun Microsystems Laboratories)*
11358
11359  * Add new error code 'ERR_R_DISABLED' that can be used when some
11360    functionality is disabled at compile-time.
11361
11362    *Douglas Stebila <douglas.stebila@sun.com>*
11363
11364  * Change default behaviour of 'openssl asn1parse' so that more
11365    information is visible when viewing, e.g., a certificate:
11366
11367    Modify asn1_parse2 (crypto/asn1/asn1_par.c) so that in non-'dump'
11368    mode the content of non-printable OCTET STRINGs is output in a
11369    style similar to INTEGERs, but with '[HEX DUMP]' prepended to
11370    avoid the appearance of a printable string.
11371
11372    *Nils Larsch <nla@trustcenter.de>*
11373
11374  * Add 'asn1_flag' and 'asn1_form' member to EC_GROUP with access
11375    functions
11376            EC_GROUP_set_asn1_flag()
11377            EC_GROUP_get_asn1_flag()
11378            EC_GROUP_set_point_conversion_form()
11379            EC_GROUP_get_point_conversion_form()
11380    These control ASN1 encoding details:
11381    - Curves (i.e., groups) are encoded explicitly unless asn1_flag
11382      has been set to OPENSSL_EC_NAMED_CURVE.
11383    - Points are encoded in uncompressed form by default; options for
11384      asn1_for are as for point2oct, namely
11385            POINT_CONVERSION_COMPRESSED
11386            POINT_CONVERSION_UNCOMPRESSED
11387            POINT_CONVERSION_HYBRID
11388
11389    Also add 'seed' and 'seed_len' members to EC_GROUP with access
11390    functions
11391            EC_GROUP_set_seed()
11392            EC_GROUP_get0_seed()
11393            EC_GROUP_get_seed_len()
11394    This is used only for ASN1 purposes (so far).
11395
11396    *Nils Larsch <nla@trustcenter.de>*
11397
11398  * Add 'field_type' member to EC_METHOD, which holds the NID
11399    of the appropriate field type OID.  The new function
11400    EC_METHOD_get_field_type() returns this value.
11401
11402    *Nils Larsch <nla@trustcenter.de>*
11403
11404  * Add functions
11405            EC_POINT_point2bn()
11406            EC_POINT_bn2point()
11407            EC_POINT_point2hex()
11408            EC_POINT_hex2point()
11409    providing useful interfaces to EC_POINT_point2oct() and
11410    EC_POINT_oct2point().
11411
11412    *Nils Larsch <nla@trustcenter.de>*
11413
11414  * Change internals of the EC library so that the functions
11415            EC_GROUP_set_generator()
11416            EC_GROUP_get_generator()
11417            EC_GROUP_get_order()
11418            EC_GROUP_get_cofactor()
11419    are implemented directly in crypto/ec/ec_lib.c and not dispatched
11420    to methods, which would lead to unnecessary code duplication when
11421    adding different types of curves.
11422
11423    *Nils Larsch <nla@trustcenter.de> with input by Bodo Moeller*
11424
11425  * Implement compute_wNAF (crypto/ec/ec_mult.c) without BIGNUM
11426    arithmetic, and such that modified wNAFs are generated
11427    (which avoid length expansion in many cases).
11428
11429    *Bodo Moeller*
11430
11431  * Add a function EC_GROUP_check_discriminant() (defined via
11432    EC_METHOD) that verifies that the curve discriminant is non-zero.
11433
11434    Add a function EC_GROUP_check() that makes some sanity tests
11435    on a EC_GROUP, its generator and order.  This includes
11436    EC_GROUP_check_discriminant().
11437
11438    *Nils Larsch <nla@trustcenter.de>*
11439
11440  * Add ECDSA in new directory crypto/ecdsa/.
11441
11442    Add applications 'openssl ecparam' and 'openssl ecdsa'
11443    (these are based on 'openssl dsaparam' and 'openssl dsa').
11444
11445    ECDSA support is also included in various other files across the
11446    library.  Most notably,
11447    - 'openssl req' now has a '-newkey ecdsa:file' option;
11448    - EVP_PKCS82PKEY (crypto/evp/evp_pkey.c) now can handle ECDSA;
11449    - X509_PUBKEY_get (crypto/asn1/x_pubkey.c) and
11450      d2i_PublicKey (crypto/asn1/d2i_pu.c) have been modified to make
11451      them suitable for ECDSA where domain parameters must be
11452      extracted before the specific public key;
11453    - ECDSA engine support has been added.
11454
11455    *Nils Larsch <nla@trustcenter.de>*
11456
11457  * Include some named elliptic curves, and add OIDs from X9.62,
11458    SECG, and WAP/WTLS.  Each curve can be obtained from the new
11459    function
11460            EC_GROUP_new_by_curve_name(),
11461    and the list of available named curves can be obtained with
11462            EC_get_builtin_curves().
11463    Also add a 'curve_name' member to EC_GROUP objects, which can be
11464    accessed via
11465            EC_GROUP_set_curve_name()
11466            EC_GROUP_get_curve_name()
11467
11468    *Nils Larsch <larsch@trustcenter.de, Bodo Moeller*
11469
11470  * Remove a few calls to bn_wexpand() in BN_sqr() (the one in there
11471    was actually never needed) and in BN_mul().  The removal in BN_mul()
11472    required a small change in bn_mul_part_recursive() and the addition
11473    of the functions bn_cmp_part_words(), bn_sub_part_words() and
11474    bn_add_part_words(), which do the same thing as bn_cmp_words(),
11475    bn_sub_words() and bn_add_words() except they take arrays with
11476    differing sizes.
11477
11478    *Richard Levitte*
11479
11480 ### Changes between 0.9.7l and 0.9.7m  [23 Feb 2007]
11481
11482  * Cleanse PEM buffers before freeing them since they may contain
11483    sensitive data.
11484
11485    *Benjamin Bennett <ben@psc.edu>*
11486
11487  * Include "!eNULL" in SSL_DEFAULT_CIPHER_LIST to make sure that
11488    a ciphersuite string such as "DEFAULT:RSA" cannot enable
11489    authentication-only ciphersuites.
11490
11491    *Bodo Moeller*
11492
11493  * Since AES128 and AES256 share a single mask bit in the logic of
11494    ssl/ssl_ciph.c, the code for masking out disabled ciphers needs a
11495    kludge to work properly if AES128 is available and AES256 isn't.
11496
11497    *Victor Duchovni*
11498
11499  * Expand security boundary to match 1.1.1 module.
11500
11501    *Steve Henson*
11502
11503  * Remove redundant features: hash file source, editing of test vectors
11504    modify fipsld to use external fips_premain.c signature.
11505
11506    *Steve Henson*
11507
11508  * New perl script mkfipsscr.pl to create shell scripts or batch files to
11509    run algorithm test programs.
11510
11511    *Steve Henson*
11512
11513  * Make algorithm test programs more tolerant of whitespace.
11514
11515    *Steve Henson*
11516
11517  * Have SSL/TLS server implementation tolerate "mismatched" record
11518    protocol version while receiving ClientHello even if the
11519    ClientHello is fragmented.  (The server can't insist on the
11520    particular protocol version it has chosen before the ServerHello
11521    message has informed the client about his choice.)
11522
11523    *Bodo Moeller*
11524
11525  * Load error codes if they are not already present instead of using a
11526    static variable. This allows them to be cleanly unloaded and reloaded.
11527
11528    *Steve Henson*
11529
11530 ### Changes between 0.9.7k and 0.9.7l  [28 Sep 2006]
11531
11532  * Introduce limits to prevent malicious keys being able to
11533    cause a denial of service.  ([CVE-2006-2940])
11534
11535    *Steve Henson, Bodo Moeller*
11536
11537  * Fix ASN.1 parsing of certain invalid structures that can result
11538    in a denial of service.  ([CVE-2006-2937])  [Steve Henson]
11539
11540  * Fix buffer overflow in SSL_get_shared_ciphers() function.
11541    ([CVE-2006-3738]) [Tavis Ormandy and Will Drewry, Google Security Team]
11542
11543  * Fix SSL client code which could crash if connecting to a
11544    malicious SSLv2 server.  ([CVE-2006-4343])
11545
11546    *Tavis Ormandy and Will Drewry, Google Security Team*
11547
11548  * Change ciphersuite string processing so that an explicit
11549    ciphersuite selects this one ciphersuite (so that "AES256-SHA"
11550    will no longer include "AES128-SHA"), and any other similar
11551    ciphersuite (same bitmap) from *other* protocol versions (so that
11552    "RC4-MD5" will still include both the SSL 2.0 ciphersuite and the
11553    SSL 3.0/TLS 1.0 ciphersuite).  This is a backport combining
11554    changes from 0.9.8b and 0.9.8d.
11555
11556    *Bodo Moeller*
11557
11558 ### Changes between 0.9.7j and 0.9.7k  [05 Sep 2006]
11559
11560  * Avoid PKCS #1 v1.5 signature attack discovered by Daniel Bleichenbacher
11561    ([CVE-2006-4339])  [Ben Laurie and Google Security Team]
11562
11563  * Change the Unix randomness entropy gathering to use poll() when
11564    possible instead of select(), since the latter has some
11565    undesirable limitations.
11566
11567    *Darryl Miles via Richard Levitte and Bodo Moeller*
11568
11569  * Disable rogue ciphersuites:
11570
11571    - SSLv2 0x08 0x00 0x80 ("RC4-64-MD5")
11572    - SSLv3/TLSv1 0x00 0x61 ("EXP1024-RC2-CBC-MD5")
11573    - SSLv3/TLSv1 0x00 0x60 ("EXP1024-RC4-MD5")
11574
11575    The latter two were purportedly from
11576    draft-ietf-tls-56-bit-ciphersuites-0[01].txt, but do not really
11577    appear there.
11578
11579    Also deactivate the remaining ciphersuites from
11580    draft-ietf-tls-56-bit-ciphersuites-01.txt.  These are just as
11581    unofficial, and the ID has long expired.
11582
11583    *Bodo Moeller*
11584
11585  * Fix RSA blinding Heisenbug (problems sometimes occurred on
11586    dual-core machines) and other potential thread-safety issues.
11587
11588    *Bodo Moeller*
11589
11590 ### Changes between 0.9.7i and 0.9.7j  [04 May 2006]
11591
11592  * Adapt fipsld and the build system to link against the validated FIPS
11593    module in FIPS mode.
11594
11595    *Steve Henson*
11596
11597  * Fixes for VC++ 2005 build under Windows.
11598
11599    *Steve Henson*
11600
11601  * Add new Windows build target VC-32-GMAKE for VC++. This uses GNU make
11602    from a Windows bash shell such as MSYS. It is autodetected from the
11603    "config" script when run from a VC++ environment. Modify standard VC++
11604    build to use fipscanister.o from the GNU make build.
11605
11606    *Steve Henson*
11607
11608 ### Changes between 0.9.7h and 0.9.7i  [14 Oct 2005]
11609
11610  * Wrapped the definition of EVP_MAX_MD_SIZE in a #ifdef OPENSSL_FIPS.
11611    The value now differs depending on if you build for FIPS or not.
11612    BEWARE!  A program linked with a shared FIPSed libcrypto can't be
11613    safely run with a non-FIPSed libcrypto, as it may crash because of
11614    the difference induced by this change.
11615
11616    *Andy Polyakov*
11617
11618 ### Changes between 0.9.7g and 0.9.7h  [11 Oct 2005]
11619
11620  * Remove the functionality of SSL_OP_MSIE_SSLV2_RSA_PADDING
11621    (part of SSL_OP_ALL).  This option used to disable the
11622    countermeasure against man-in-the-middle protocol-version
11623    rollback in the SSL 2.0 server implementation, which is a bad
11624    idea.  ([CVE-2005-2969])
11625
11626    *Bodo Moeller; problem pointed out by Yutaka Oiwa (Research Center
11627    for Information Security, National Institute of Advanced Industrial
11628    Science and Technology [AIST, Japan)]*
11629
11630  * Minimal support for X9.31 signatures and PSS padding modes. This is
11631    mainly for FIPS compliance and not fully integrated at this stage.
11632
11633    *Steve Henson*
11634
11635  * For DSA signing, unless DSA_FLAG_NO_EXP_CONSTTIME is set, perform
11636    the exponentiation using a fixed-length exponent.  (Otherwise,
11637    the information leaked through timing could expose the secret key
11638    after many signatures; cf. Bleichenbacher's attack on DSA with
11639    biased k.)
11640
11641    *Bodo Moeller*
11642
11643  * Make a new fixed-window mod_exp implementation the default for
11644    RSA, DSA, and DH private-key operations so that the sequence of
11645    squares and multiplies and the memory access pattern are
11646    independent of the particular secret key.  This will mitigate
11647    cache-timing and potential related attacks.
11648
11649    BN_mod_exp_mont_consttime() is the new exponentiation implementation,
11650    and this is automatically used by BN_mod_exp_mont() if the new flag
11651    BN_FLG_EXP_CONSTTIME is set for the exponent.  RSA, DSA, and DH
11652    will use this BN flag for private exponents unless the flag
11653    RSA_FLAG_NO_EXP_CONSTTIME, DSA_FLAG_NO_EXP_CONSTTIME, or
11654    DH_FLAG_NO_EXP_CONSTTIME, respectively, is set.
11655
11656    *Matthew D Wood (Intel Corp), with some changes by Bodo Moeller*
11657
11658  * Change the client implementation for SSLv23_method() and
11659    SSLv23_client_method() so that is uses the SSL 3.0/TLS 1.0
11660    Client Hello message format if the SSL_OP_NO_SSLv2 option is set.
11661    (Previously, the SSL 2.0 backwards compatible Client Hello
11662    message format would be used even with SSL_OP_NO_SSLv2.)
11663
11664    *Bodo Moeller*
11665
11666  * Add support for smime-type MIME parameter in S/MIME messages which some
11667    clients need.
11668
11669    *Steve Henson*
11670
11671  * New function BN_MONT_CTX_set_locked() to set montgomery parameters in
11672    a threadsafe manner. Modify rsa code to use new function and add calls
11673    to dsa and dh code (which had race conditions before).
11674
11675    *Steve Henson*
11676
11677  * Include the fixed error library code in the C error file definitions
11678    instead of fixing them up at runtime. This keeps the error code
11679    structures constant.
11680
11681    *Steve Henson*
11682
11683 ### Changes between 0.9.7f and 0.9.7g  [11 Apr 2005]
11684
11685 [NB: OpenSSL 0.9.7h and later 0.9.7 patch levels were released after
11686 OpenSSL 0.9.8.]
11687
11688  * Fixes for newer kerberos headers. NB: the casts are needed because
11689    the 'length' field is signed on one version and unsigned on another
11690    with no (?) obvious way to tell the difference, without these VC++
11691    complains. Also the "definition" of FAR (blank) is no longer included
11692    nor is the error ENOMEM. KRB5_PRIVATE has to be set to 1 to pick up
11693    some needed definitions.
11694
11695    *Steve Henson*
11696
11697  * Undo Cygwin change.
11698
11699    *Ulf Möller*
11700
11701  * Added support for proxy certificates according to RFC 3820.
11702    Because they may be a security thread to unaware applications,
11703    they must be explicitly allowed in run-time.  See
11704    docs/HOWTO/proxy_certificates.txt for further information.
11705
11706    *Richard Levitte*
11707
11708 ### Changes between 0.9.7e and 0.9.7f  [22 Mar 2005]
11709
11710  * Use (SSL_RANDOM_VALUE - 4) bytes of pseudo random data when generating
11711    server and client random values. Previously
11712    (SSL_RANDOM_VALUE - sizeof(time_t)) would be used which would result in
11713    less random data when sizeof(time_t) > 4 (some 64 bit platforms).
11714
11715    This change has negligible security impact because:
11716
11717    1. Server and client random values still have 24 bytes of pseudo random
11718       data.
11719
11720    2. Server and client random values are sent in the clear in the initial
11721       handshake.
11722
11723    3. The master secret is derived using the premaster secret (48 bytes in
11724       size for static RSA ciphersuites) as well as client server and random
11725       values.
11726
11727    The OpenSSL team would like to thank the UK NISCC for bringing this issue
11728    to our attention.
11729
11730    *Stephen Henson, reported by UK NISCC*
11731
11732  * Use Windows randomness collection on Cygwin.
11733
11734    *Ulf Möller*
11735
11736  * Fix hang in EGD/PRNGD query when communication socket is closed
11737    prematurely by EGD/PRNGD.
11738
11739    *Darren Tucker <dtucker@zip.com.au> via Lutz Jänicke, resolves #1014*
11740
11741  * Prompt for pass phrases when appropriate for PKCS12 input format.
11742
11743    *Steve Henson*
11744
11745  * Back-port of selected performance improvements from development
11746    branch, as well as improved support for PowerPC platforms.
11747
11748    *Andy Polyakov*
11749
11750  * Add lots of checks for memory allocation failure, error codes to indicate
11751    failure and freeing up memory if a failure occurs.
11752
11753    *Nauticus Networks SSL Team <openssl@nauticusnet.com>, Steve Henson*
11754
11755  * Add new -passin argument to dgst.
11756
11757    *Steve Henson*
11758
11759  * Perform some character comparisons of different types in X509_NAME_cmp:
11760    this is needed for some certificates that re-encode DNs into UTF8Strings
11761    (in violation of RFC3280) and can't or won't issue name rollover
11762    certificates.
11763
11764    *Steve Henson*
11765
11766  * Make an explicit check during certificate validation to see that
11767    the CA setting in each certificate on the chain is correct.  As a
11768    side effect always do the following basic checks on extensions,
11769    not just when there's an associated purpose to the check:
11770
11771    - if there is an unhandled critical extension (unless the user
11772      has chosen to ignore this fault)
11773    - if the path length has been exceeded (if one is set at all)
11774    - that certain extensions fit the associated purpose (if one has
11775      been given)
11776
11777    *Richard Levitte*
11778
11779 ### Changes between 0.9.7d and 0.9.7e  [25 Oct 2004]
11780
11781  * Avoid a race condition when CRLs are checked in a multi threaded
11782    environment. This would happen due to the reordering of the revoked
11783    entries during signature checking and serial number lookup. Now the
11784    encoding is cached and the serial number sort performed under a lock.
11785    Add new STACK function sk_is_sorted().
11786
11787    *Steve Henson*
11788
11789  * Add Delta CRL to the extension code.
11790
11791    *Steve Henson*
11792
11793  * Various fixes to s3_pkt.c so alerts are sent properly.
11794
11795    *David Holmes <d.holmes@f5.com>*
11796
11797  * Reduce the chances of duplicate issuer name and serial numbers (in
11798    violation of RFC3280) using the OpenSSL certificate creation utilities.
11799    This is done by creating a random 64 bit value for the initial serial
11800    number when a serial number file is created or when a self signed
11801    certificate is created using 'openssl req -x509'. The initial serial
11802    number file is created using 'openssl x509 -next_serial' in CA.pl
11803    rather than being initialized to 1.
11804
11805    *Steve Henson*
11806
11807 ### Changes between 0.9.7c and 0.9.7d  [17 Mar 2004]
11808
11809  * Fix null-pointer assignment in do_change_cipher_spec() revealed
11810    by using the Codenomicon TLS Test Tool ([CVE-2004-0079])
11811
11812    *Joe Orton, Steve Henson*
11813
11814  * Fix flaw in SSL/TLS handshaking when using Kerberos ciphersuites
11815    ([CVE-2004-0112])
11816
11817    *Joe Orton, Steve Henson*
11818
11819  * Make it possible to have multiple active certificates with the same
11820    subject in the CA index file.  This is done only if the keyword
11821    'unique_subject' is set to 'no' in the main CA section (default
11822    if 'CA_default') of the configuration file.  The value is saved
11823    with the database itself in a separate index attribute file,
11824    named like the index file with '.attr' appended to the name.
11825
11826    *Richard Levitte*
11827
11828  * X509 verify fixes. Disable broken certificate workarounds when
11829    X509_V_FLAGS_X509_STRICT is set. Check CRL issuer has cRLSign set if
11830    keyUsage extension present. Don't accept CRLs with unhandled critical
11831    extensions: since verify currently doesn't process CRL extensions this
11832    rejects a CRL with *any* critical extensions. Add new verify error codes
11833    for these cases.
11834
11835    *Steve Henson*
11836
11837  * When creating an OCSP nonce use an OCTET STRING inside the extnValue.
11838    A clarification of RFC2560 will require the use of OCTET STRINGs and
11839    some implementations cannot handle the current raw format. Since OpenSSL
11840    copies and compares OCSP nonces as opaque blobs without any attempt at
11841    parsing them this should not create any compatibility issues.
11842
11843    *Steve Henson*
11844
11845  * New md flag EVP_MD_CTX_FLAG_REUSE this allows md_data to be reused when
11846    calling EVP_MD_CTX_copy_ex() to avoid calling OPENSSL_malloc(). Without
11847    this HMAC (and other) operations are several times slower than OpenSSL
11848    < 0.9.7.
11849
11850    *Steve Henson*
11851
11852  * Print out GeneralizedTime and UTCTime in ASN1_STRING_print_ex().
11853
11854    *Peter Sylvester <Peter.Sylvester@EdelWeb.fr>*
11855
11856  * Use the correct content when signing type "other".
11857
11858    *Steve Henson*
11859
11860 ### Changes between 0.9.7b and 0.9.7c  [30 Sep 2003]
11861
11862  * Fix various bugs revealed by running the NISCC test suite:
11863
11864    Stop out of bounds reads in the ASN1 code when presented with
11865    invalid tags (CVE-2003-0543 and CVE-2003-0544).
11866
11867    Free up ASN1_TYPE correctly if ANY type is invalid ([CVE-2003-0545]).
11868
11869    If verify callback ignores invalid public key errors don't try to check
11870    certificate signature with the NULL public key.
11871
11872    *Steve Henson*
11873
11874  * New -ignore_err option in ocsp application to stop the server
11875    exiting on the first error in a request.
11876
11877    *Steve Henson*
11878
11879  * In ssl3_accept() (ssl/s3_srvr.c) only accept a client certificate
11880    if the server requested one: as stated in TLS 1.0 and SSL 3.0
11881    specifications.
11882
11883    *Steve Henson*
11884
11885  * In ssl3_get_client_hello() (ssl/s3_srvr.c), tolerate additional
11886    extra data after the compression methods not only for TLS 1.0
11887    but also for SSL 3.0 (as required by the specification).
11888
11889    *Bodo Moeller; problem pointed out by Matthias Loepfe*
11890
11891  * Change X509_certificate_type() to mark the key as exported/exportable
11892    when it's 512 *bits* long, not 512 bytes.
11893
11894    *Richard Levitte*
11895
11896  * Change AES_cbc_encrypt() so it outputs exact multiple of
11897    blocks during encryption.
11898
11899    *Richard Levitte*
11900
11901  * Various fixes to base64 BIO and non blocking I/O. On write
11902    flushes were not handled properly if the BIO retried. On read
11903    data was not being buffered properly and had various logic bugs.
11904    This also affects blocking I/O when the data being decoded is a
11905    certain size.
11906
11907    *Steve Henson*
11908
11909  * Various S/MIME bugfixes and compatibility changes:
11910    output correct application/pkcs7 MIME type if
11911    PKCS7_NOOLDMIMETYPE is set. Tolerate some broken signatures.
11912    Output CR+LF for EOL if PKCS7_CRLFEOL is set (this makes opening
11913    of files as .eml work). Correctly handle very long lines in MIME
11914    parser.
11915
11916    *Steve Henson*
11917
11918 ### Changes between 0.9.7a and 0.9.7b  [10 Apr 2003]
11919
11920  * Countermeasure against the Klima-Pokorny-Rosa extension of
11921    Bleichbacher's attack on PKCS #1 v1.5 padding: treat
11922    a protocol version number mismatch like a decryption error
11923    in ssl3_get_client_key_exchange (ssl/s3_srvr.c).
11924
11925    *Bodo Moeller*
11926
11927  * Turn on RSA blinding by default in the default implementation
11928    to avoid a timing attack. Applications that don't want it can call
11929    RSA_blinding_off() or use the new flag RSA_FLAG_NO_BLINDING.
11930    They would be ill-advised to do so in most cases.
11931
11932    *Ben Laurie, Steve Henson, Geoff Thorpe, Bodo Moeller*
11933
11934  * Change RSA blinding code so that it works when the PRNG is not
11935    seeded (in this case, the secret RSA exponent is abused as
11936    an unpredictable seed -- if it is not unpredictable, there
11937    is no point in blinding anyway).  Make RSA blinding thread-safe
11938    by remembering the creator's thread ID in rsa->blinding and
11939    having all other threads use local one-time blinding factors
11940    (this requires more computation than sharing rsa->blinding, but
11941    avoids excessive locking; and if an RSA object is not shared
11942    between threads, blinding will still be very fast).
11943
11944    *Bodo Moeller*
11945
11946  * Fixed a typo bug that would cause ENGINE_set_default() to set an
11947    ENGINE as defaults for all supported algorithms irrespective of
11948    the 'flags' parameter. 'flags' is now honoured, so applications
11949    should make sure they are passing it correctly.
11950
11951    *Geoff Thorpe*
11952
11953  * Target "mingw" now allows native Windows code to be generated in
11954    the Cygwin environment as well as with the MinGW compiler.
11955
11956    *Ulf Moeller*
11957
11958 ### Changes between 0.9.7 and 0.9.7a  [19 Feb 2003]
11959
11960  * In ssl3_get_record (ssl/s3_pkt.c), minimize information leaked
11961    via timing by performing a MAC computation even if incorrect
11962    block cipher padding has been found.  This is a countermeasure
11963    against active attacks where the attacker has to distinguish
11964    between bad padding and a MAC verification error. ([CVE-2003-0078])
11965
11966    *Bodo Moeller; problem pointed out by Brice Canvel (EPFL),
11967    Alain Hiltgen (UBS), Serge Vaudenay (EPFL), and
11968    Martin Vuagnoux (EPFL, Ilion)*
11969
11970  * Make the no-err option work as intended.  The intention with no-err
11971    is not to have the whole error stack handling routines removed from
11972    libcrypto, it's only intended to remove all the function name and
11973    reason texts, thereby removing some of the footprint that may not
11974    be interesting if those errors aren't displayed anyway.
11975
11976    NOTE: it's still possible for any application or module to have its
11977    own set of error texts inserted.  The routines are there, just not
11978    used by default when no-err is given.
11979
11980    *Richard Levitte*
11981
11982  * Add support for FreeBSD on IA64.
11983
11984    *dirk.meyer@dinoex.sub.org via Richard Levitte, resolves #454*
11985
11986  * Adjust DES_cbc_cksum() so it returns the same value as the MIT
11987    Kerberos function mit_des_cbc_cksum().  Before this change,
11988    the value returned by DES_cbc_cksum() was like the one from
11989    mit_des_cbc_cksum(), except the bytes were swapped.
11990
11991    *Kevin Greaney <Kevin.Greaney@hp.com> and Richard Levitte*
11992
11993  * Allow an application to disable the automatic SSL chain building.
11994    Before this a rather primitive chain build was always performed in
11995    ssl3_output_cert_chain(): an application had no way to send the
11996    correct chain if the automatic operation produced an incorrect result.
11997
11998    Now the chain builder is disabled if either:
11999
12000    1. Extra certificates are added via SSL_CTX_add_extra_chain_cert().
12001
12002    2. The mode flag SSL_MODE_NO_AUTO_CHAIN is set.
12003
12004    The reasoning behind this is that an application would not want the
12005    auto chain building to take place if extra chain certificates are
12006    present and it might also want a means of sending no additional
12007    certificates (for example the chain has two certificates and the
12008    root is omitted).
12009
12010    *Steve Henson*
12011
12012  * Add the possibility to build without the ENGINE framework.
12013
12014    *Steven Reddie <smr@essemer.com.au> via Richard Levitte*
12015
12016  * Under Win32 gmtime() can return NULL: check return value in
12017    OPENSSL_gmtime(). Add error code for case where gmtime() fails.
12018
12019    *Steve Henson*
12020
12021  * DSA routines: under certain error conditions uninitialized BN objects
12022    could be freed. Solution: make sure initialization is performed early
12023    enough. (Reported and fix supplied by Ivan D Nestlerode <nestler@MIT.EDU>,
12024    Nils Larsch <nla@trustcenter.de> via PR#459)
12025
12026    *Lutz Jaenicke*
12027
12028  * Another fix for SSLv2 session ID handling: the session ID was incorrectly
12029    checked on reconnect on the client side, therefore session resumption
12030    could still fail with a "ssl session id is different" error. This
12031    behaviour is masked when SSL_OP_ALL is used due to
12032    SSL_OP_MICROSOFT_SESS_ID_BUG being set.
12033    Behaviour observed by Crispin Flowerday <crispin@flowerday.cx> as
12034    followup to PR #377.
12035
12036    *Lutz Jaenicke*
12037
12038  * IA-32 assembler support enhancements: unified ELF targets, support
12039    for SCO/Caldera platforms, fix for Cygwin shared build.
12040
12041    *Andy Polyakov*
12042
12043  * Add support for FreeBSD on sparc64.  As a consequence, support for
12044    FreeBSD on non-x86 processors is separate from x86 processors on
12045    the config script, much like the NetBSD support.
12046
12047    *Richard Levitte & Kris Kennaway <kris@obsecurity.org>*
12048
12049 ### Changes between 0.9.6h and 0.9.7  [31 Dec 2002]
12050
12051 [NB: OpenSSL 0.9.6i and later 0.9.6 patch levels were released after
12052 OpenSSL 0.9.7.]
12053
12054  * Fix session ID handling in SSLv2 client code: the SERVER FINISHED
12055    code (06) was taken as the first octet of the session ID and the last
12056    octet was ignored consequently. As a result SSLv2 client side session
12057    caching could not have worked due to the session ID mismatch between
12058    client and server.
12059    Behaviour observed by Crispin Flowerday <crispin@flowerday.cx> as
12060    PR #377.
12061
12062    *Lutz Jaenicke*
12063
12064  * Change the declaration of needed Kerberos libraries to use EX_LIBS
12065    instead of the special (and badly supported) LIBKRB5.  LIBKRB5 is
12066    removed entirely.
12067
12068    *Richard Levitte*
12069
12070  * The hw_ncipher.c engine requires dynamic locks.  Unfortunately, it
12071    seems that in spite of existing for more than a year, many application
12072    author have done nothing to provide the necessary callbacks, which
12073    means that this particular engine will not work properly anywhere.
12074    This is a very unfortunate situation which forces us, in the name
12075    of usability, to give the hw_ncipher.c a static lock, which is part
12076    of libcrypto.
12077    NOTE: This is for the 0.9.7 series ONLY.  This hack will never
12078    appear in 0.9.8 or later.  We EXPECT application authors to have
12079    dealt properly with this when 0.9.8 is released (unless we actually
12080    make such changes in the libcrypto locking code that changes will
12081    have to be made anyway).
12082
12083    *Richard Levitte*
12084
12085  * In asn1_d2i_read_bio() repeatedly call BIO_read() until all content
12086    octets have been read, EOF or an error occurs. Without this change
12087    some truncated ASN1 structures will not produce an error.
12088
12089    *Steve Henson*
12090
12091  * Disable Heimdal support, since it hasn't been fully implemented.
12092    Still give the possibility to force the use of Heimdal, but with
12093    warnings and a request that patches get sent to openssl-dev.
12094
12095    *Richard Levitte*
12096
12097  * Add the VC-CE target, introduce the WINCE sysname, and add
12098    INSTALL.WCE and appropriate conditionals to make it build.
12099
12100    *Steven Reddie <smr@essemer.com.au> via Richard Levitte*
12101
12102  * Change the DLL names for Cygwin to cygcrypto-x.y.z.dll and
12103    cygssl-x.y.z.dll, where x, y and z are the major, minor and
12104    edit numbers of the version.
12105
12106    *Corinna Vinschen <vinschen@redhat.com> and Richard Levitte*
12107
12108  * Introduce safe string copy and catenation functions
12109    (BUF_strlcpy() and BUF_strlcat()).
12110
12111    *Ben Laurie (CHATS) and Richard Levitte*
12112
12113  * Avoid using fixed-size buffers for one-line DNs.
12114
12115    *Ben Laurie (CHATS)*
12116
12117  * Add BUF_MEM_grow_clean() to avoid information leakage when
12118    resizing buffers containing secrets, and use where appropriate.
12119
12120    *Ben Laurie (CHATS)*
12121
12122  * Avoid using fixed size buffers for configuration file location.
12123
12124    *Ben Laurie (CHATS)*
12125
12126  * Avoid filename truncation for various CA files.
12127
12128    *Ben Laurie (CHATS)*
12129
12130  * Use sizeof in preference to magic numbers.
12131
12132    *Ben Laurie (CHATS)*
12133
12134  * Avoid filename truncation in cert requests.
12135
12136    *Ben Laurie (CHATS)*
12137
12138  * Add assertions to check for (supposedly impossible) buffer
12139    overflows.
12140
12141    *Ben Laurie (CHATS)*
12142
12143  * Don't cache truncated DNS entries in the local cache (this could
12144    potentially lead to a spoofing attack).
12145
12146    *Ben Laurie (CHATS)*
12147
12148  * Fix various buffers to be large enough for hex/decimal
12149    representations in a platform independent manner.
12150
12151    *Ben Laurie (CHATS)*
12152
12153  * Add CRYPTO_realloc_clean() to avoid information leakage when
12154    resizing buffers containing secrets, and use where appropriate.
12155
12156    *Ben Laurie (CHATS)*
12157
12158  * Add BIO_indent() to avoid much slightly worrying code to do
12159    indents.
12160
12161    *Ben Laurie (CHATS)*
12162
12163  * Convert sprintf()/BIO_puts() to BIO_printf().
12164
12165    *Ben Laurie (CHATS)*
12166
12167  * buffer_gets() could terminate with the buffer only half
12168    full. Fixed.
12169
12170    *Ben Laurie (CHATS)*
12171
12172  * Add assertions to prevent user-supplied crypto functions from
12173    overflowing internal buffers by having large block sizes, etc.
12174
12175    *Ben Laurie (CHATS)*
12176
12177  * New OPENSSL_assert() macro (similar to assert(), but enabled
12178    unconditionally).
12179
12180    *Ben Laurie (CHATS)*
12181
12182  * Eliminate unused copy of key in RC4.
12183
12184    *Ben Laurie (CHATS)*
12185
12186  * Eliminate unused and incorrectly sized buffers for IV in pem.h.
12187
12188    *Ben Laurie (CHATS)*
12189
12190  * Fix off-by-one error in EGD path.
12191
12192    *Ben Laurie (CHATS)*
12193
12194  * If RANDFILE path is too long, ignore instead of truncating.
12195
12196    *Ben Laurie (CHATS)*
12197
12198  * Eliminate unused and incorrectly sized X.509 structure
12199    CBCParameter.
12200
12201    *Ben Laurie (CHATS)*
12202
12203  * Eliminate unused and dangerous function knumber().
12204
12205    *Ben Laurie (CHATS)*
12206
12207  * Eliminate unused and dangerous structure, KSSL_ERR.
12208
12209    *Ben Laurie (CHATS)*
12210
12211  * Protect against overlong session ID context length in an encoded
12212    session object. Since these are local, this does not appear to be
12213    exploitable.
12214
12215    *Ben Laurie (CHATS)*
12216
12217  * Change from security patch (see 0.9.6e below) that did not affect
12218    the 0.9.6 release series:
12219
12220    Remote buffer overflow in SSL3 protocol - an attacker could
12221    supply an oversized master key in Kerberos-enabled versions.
12222    ([CVE-2002-0657])
12223
12224    *Ben Laurie (CHATS)*
12225
12226  * Change the SSL kerb5 codes to match RFC 2712.
12227
12228    *Richard Levitte*
12229
12230  * Make -nameopt work fully for req and add -reqopt switch.
12231
12232    *Michael Bell <michael.bell@rz.hu-berlin.de>, Steve Henson*
12233
12234  * The "block size" for block ciphers in CFB and OFB mode should be 1.
12235
12236    *Steve Henson, reported by Yngve Nysaeter Pettersen <yngve@opera.com>*
12237
12238  * Make sure tests can be performed even if the corresponding algorithms
12239    have been removed entirely.  This was also the last step to make
12240    OpenSSL compilable with DJGPP under all reasonable conditions.
12241
12242    *Richard Levitte, Doug Kaufman <dkaufman@rahul.net>*
12243
12244  * Add cipher selection rules COMPLEMENTOFALL and COMPLEMENTOFDEFAULT
12245    to allow version independent disabling of normally unselected ciphers,
12246    which may be activated as a side-effect of selecting a single cipher.
12247
12248    (E.g., cipher list string "RSA" enables ciphersuites that are left
12249    out of "ALL" because they do not provide symmetric encryption.
12250    "RSA:!COMPLEMEMENTOFALL" avoids these unsafe ciphersuites.)
12251
12252    *Lutz Jaenicke, Bodo Moeller*
12253
12254  * Add appropriate support for separate platform-dependent build
12255    directories.  The recommended way to make a platform-dependent
12256    build directory is the following (tested on Linux), maybe with
12257    some local tweaks:
12258
12259            # Place yourself outside of the OpenSSL source tree.  In
12260            # this example, the environment variable OPENSSL_SOURCE
12261            # is assumed to contain the absolute OpenSSL source directory.
12262            mkdir -p objtree/"`uname -s`-`uname -r`-`uname -m`"
12263            cd objtree/"`uname -s`-`uname -r`-`uname -m`"
12264            (cd $OPENSSL_SOURCE; find . -type f) | while read F; do
12265                    mkdir -p `dirname $F`
12266                    ln -s $OPENSSL_SOURCE/$F $F
12267            done
12268
12269    To be absolutely sure not to disturb the source tree, a "make clean"
12270    is a good thing.  If it isn't successful, don't worry about it,
12271    it probably means the source directory is very clean.
12272
12273    *Richard Levitte*
12274
12275  * Make sure any ENGINE control commands make local copies of string
12276    pointers passed to them whenever necessary. Otherwise it is possible
12277    the caller may have overwritten (or deallocated) the original string
12278    data when a later ENGINE operation tries to use the stored values.
12279
12280    *Götz Babin-Ebell <babinebell@trustcenter.de>*
12281
12282  * Improve diagnostics in file reading and command-line digests.
12283
12284    *Ben Laurie aided and abetted by Solar Designer <solar@openwall.com>*
12285
12286  * Add AES modes CFB and OFB to the object database.  Correct an
12287    error in AES-CFB decryption.
12288
12289    *Richard Levitte*
12290
12291  * Remove most calls to EVP_CIPHER_CTX_cleanup() in evp_enc.c, this
12292    allows existing EVP_CIPHER_CTX structures to be reused after
12293    calling `EVP_*Final()`. This behaviour is used by encryption
12294    BIOs and some applications. This has the side effect that
12295    applications must explicitly clean up cipher contexts with
12296    EVP_CIPHER_CTX_cleanup() or they will leak memory.
12297
12298    *Steve Henson*
12299
12300  * Check the values of dna and dnb in bn_mul_recursive before calling
12301    bn_mul_comba (a non zero value means the a or b arrays do not contain
12302    n2 elements) and fallback to bn_mul_normal if either is not zero.
12303
12304    *Steve Henson*
12305
12306  * Fix escaping of non-ASCII characters when using the -subj option
12307    of the "openssl req" command line tool. (Robert Joop <joop@fokus.gmd.de>)
12308
12309    *Lutz Jaenicke*
12310
12311  * Make object definitions compliant to LDAP (RFC2256): SN is the short
12312    form for "surname", serialNumber has no short form.
12313    Use "mail" as the short name for "rfc822Mailbox" according to RFC2798;
12314    therefore remove "mail" short name for "internet 7".
12315    The OID for unique identifiers in X509 certificates is
12316    x500UniqueIdentifier, not uniqueIdentifier.
12317    Some more OID additions. (Michael Bell <michael.bell@rz.hu-berlin.de>)
12318
12319    *Lutz Jaenicke*
12320
12321  * Add an "init" command to the ENGINE config module and auto initialize
12322    ENGINEs. Without any "init" command the ENGINE will be initialized
12323    after all ctrl commands have been executed on it. If init=1 the
12324    ENGINE is initialized at that point (ctrls before that point are run
12325    on the uninitialized ENGINE and after on the initialized one). If
12326    init=0 then the ENGINE will not be initialized at all.
12327
12328    *Steve Henson*
12329
12330  * Fix the 'app_verify_callback' interface so that the user-defined
12331    argument is actually passed to the callback: In the
12332    SSL_CTX_set_cert_verify_callback() prototype, the callback
12333    declaration has been changed from
12334            int (*cb)()
12335    into
12336            int (*cb)(X509_STORE_CTX *,void *);
12337    in ssl_verify_cert_chain (ssl/ssl_cert.c), the call
12338            i=s->ctx->app_verify_callback(&ctx)
12339    has been changed into
12340            i=s->ctx->app_verify_callback(&ctx, s->ctx->app_verify_arg).
12341
12342    To update applications using SSL_CTX_set_cert_verify_callback(),
12343    a dummy argument can be added to their callback functions.
12344
12345    *D. K. Smetters <smetters@parc.xerox.com>*
12346
12347  * Added the '4758cca' ENGINE to support IBM 4758 cards.
12348
12349    *Maurice Gittens <maurice@gittens.nl>, touchups by Geoff Thorpe*
12350
12351  * Add and OPENSSL_LOAD_CONF define which will cause
12352    OpenSSL_add_all_algorithms() to load the openssl.cnf config file.
12353    This allows older applications to transparently support certain
12354    OpenSSL features: such as crypto acceleration and dynamic ENGINE loading.
12355    Two new functions OPENSSL_add_all_algorithms_noconf() which will never
12356    load the config file and OPENSSL_add_all_algorithms_conf() which will
12357    always load it have also been added.
12358
12359    *Steve Henson*
12360
12361  * Add the OFB, CFB and CTR (all with 128 bit feedback) to AES.
12362    Adjust NIDs and EVP layer.
12363
12364    *Stephen Sprunk <stephen@sprunk.org> and Richard Levitte*
12365
12366  * Config modules support in openssl utility.
12367
12368    Most commands now load modules from the config file,
12369    though in a few (such as version) this isn't done
12370    because it couldn't be used for anything.
12371
12372    In the case of ca and req the config file used is
12373    the same as the utility itself: that is the -config
12374    command line option can be used to specify an
12375    alternative file.
12376
12377    *Steve Henson*
12378
12379  * Move default behaviour from OPENSSL_config(). If appname is NULL
12380    use "openssl_conf" if filename is NULL use default openssl config file.
12381
12382    *Steve Henson*
12383
12384  * Add an argument to OPENSSL_config() to allow the use of an alternative
12385    config section name. Add a new flag to tolerate a missing config file
12386    and move code to CONF_modules_load_file().
12387
12388    *Steve Henson*
12389
12390  * Support for crypto accelerator cards from Accelerated Encryption
12391    Processing, www.aep.ie.  (Use engine 'aep')
12392    The support was copied from 0.9.6c [engine] and adapted/corrected
12393    to work with the new engine framework.
12394
12395    *AEP Inc. and Richard Levitte*
12396
12397  * Support for SureWare crypto accelerator cards from Baltimore
12398    Technologies.  (Use engine 'sureware')
12399    The support was copied from 0.9.6c [engine] and adapted
12400    to work with the new engine framework.
12401
12402    *Richard Levitte*
12403
12404  * Have the CHIL engine fork-safe (as defined by nCipher) and actually
12405    make the newer ENGINE framework commands for the CHIL engine work.
12406
12407    *Toomas Kiisk <vix@cyber.ee> and Richard Levitte*
12408
12409  * Make it possible to produce shared libraries on ReliantUNIX.
12410
12411    *Robert Dahlem <Robert.Dahlem@ffm2.siemens.de> via Richard Levitte*
12412
12413  * Add the configuration target debug-linux-ppro.
12414    Make 'openssl rsa' use the general key loading routines
12415    implemented in `apps.c`, and make those routines able to
12416    handle the key format FORMAT_NETSCAPE and the variant
12417    FORMAT_IISSGC.
12418
12419    *Toomas Kiisk <vix@cyber.ee> via Richard Levitte*
12420
12421  * Fix a crashbug and a logic bug in hwcrhk_load_pubkey().
12422
12423    *Toomas Kiisk <vix@cyber.ee> via Richard Levitte*
12424
12425  * Add -keyform to rsautl, and document -engine.
12426
12427    *Richard Levitte, inspired by Toomas Kiisk <vix@cyber.ee>*
12428
12429  * Change BIO_new_file (crypto/bio/bss_file.c) to use new
12430    BIO_R_NO_SUCH_FILE error code rather than the generic
12431    ERR_R_SYS_LIB error code if fopen() fails with ENOENT.
12432
12433    *Ben Laurie*
12434
12435  * Add new functions
12436            ERR_peek_last_error
12437            ERR_peek_last_error_line
12438            ERR_peek_last_error_line_data.
12439    These are similar to
12440            ERR_peek_error
12441            ERR_peek_error_line
12442            ERR_peek_error_line_data,
12443    but report on the latest error recorded rather than the first one
12444    still in the error queue.
12445
12446    *Ben Laurie, Bodo Moeller*
12447
12448  * default_algorithms option in ENGINE config module. This allows things
12449    like:
12450    default_algorithms = ALL
12451    default_algorithms = RSA, DSA, RAND, CIPHERS, DIGESTS
12452
12453    *Steve Henson*
12454
12455  * Preliminary ENGINE config module.
12456
12457    *Steve Henson*
12458
12459  * New experimental application configuration code.
12460
12461    *Steve Henson*
12462
12463  * Change the AES code to follow the same name structure as all other
12464    symmetric ciphers, and behave the same way.  Move everything to
12465    the directory crypto/aes, thereby obsoleting crypto/rijndael.
12466
12467    *Stephen Sprunk <stephen@sprunk.org> and Richard Levitte*
12468
12469  * SECURITY: remove unsafe setjmp/signal interaction from ui_openssl.c.
12470
12471    *Ben Laurie and Theo de Raadt*
12472
12473  * Add option to output public keys in req command.
12474
12475    *Massimiliano Pala madwolf@openca.org*
12476
12477  * Use wNAFs in EC_POINTs_mul() for improved efficiency
12478    (up to about 10% better than before for P-192 and P-224).
12479
12480    *Bodo Moeller*
12481
12482  * New functions/macros
12483
12484            SSL_CTX_set_msg_callback(ctx, cb)
12485            SSL_CTX_set_msg_callback_arg(ctx, arg)
12486            SSL_set_msg_callback(ssl, cb)
12487            SSL_set_msg_callback_arg(ssl, arg)
12488
12489    to request calling a callback function
12490
12491            void cb(int write_p, int version, int content_type,
12492                    const void *buf, size_t len, SSL *ssl, void *arg)
12493
12494    whenever a protocol message has been completely received
12495    (write_p == 0) or sent (write_p == 1).  Here 'version' is the
12496    protocol version  according to which the SSL library interprets
12497    the current protocol message (SSL2_VERSION, SSL3_VERSION, or
12498    TLS1_VERSION).  'content_type' is 0 in the case of SSL 2.0, or
12499    the content type as defined in the SSL 3.0/TLS 1.0 protocol
12500    specification (change_cipher_spec(20), alert(21), handshake(22)).
12501    'buf' and 'len' point to the actual message, 'ssl' to the
12502    SSL object, and 'arg' is the application-defined value set by
12503    SSL[_CTX]_set_msg_callback_arg().
12504
12505    'openssl s_client' and 'openssl s_server' have new '-msg' options
12506    to enable a callback that displays all protocol messages.
12507
12508    *Bodo Moeller*
12509
12510  * Change the shared library support so shared libraries are built as
12511    soon as the corresponding static library is finished, and thereby get
12512    openssl and the test programs linked against the shared library.
12513    This still only happens when the keyword "shard" has been given to
12514    the configuration scripts.
12515
12516    NOTE: shared library support is still an experimental thing, and
12517    backward binary compatibility is still not guaranteed.
12518
12519    *"Maciej W. Rozycki" <macro@ds2.pg.gda.pl> and Richard Levitte*
12520
12521  * Add support for Subject Information Access extension.
12522
12523    *Peter Sylvester <Peter.Sylvester@EdelWeb.fr>*
12524
12525  * Make BUF_MEM_grow() behaviour more consistent: Initialise to zero
12526    additional bytes when new memory had to be allocated, not just
12527    when reusing an existing buffer.
12528
12529    *Bodo Moeller*
12530
12531  * New command line and configuration option 'utf8' for the req command.
12532    This allows field values to be specified as UTF8 strings.
12533
12534    *Steve Henson*
12535
12536  * Add -multi and -mr options to "openssl speed" - giving multiple parallel
12537    runs for the former and machine-readable output for the latter.
12538
12539    *Ben Laurie*
12540
12541  * Add '-noemailDN' option to 'openssl ca'.  This prevents inclusion
12542    of the e-mail address in the DN (i.e., it will go into a certificate
12543    extension only).  The new configuration file option 'email_in_dn = no'
12544    has the same effect.
12545
12546    *Massimiliano Pala madwolf@openca.org*
12547
12548  * Change all functions with names starting with `des_` to be starting
12549    with `DES_` instead.  Add wrappers that are compatible with libdes,
12550    but are named `_ossl_old_des_*`.  Finally, add macros that map the
12551    `des_*` symbols to the corresponding `_ossl_old_des_*` if libdes
12552    compatibility is desired.  If OpenSSL 0.9.6c compatibility is
12553    desired, the `des_*` symbols will be mapped to `DES_*`, with one
12554    exception.
12555
12556    Since we provide two compatibility mappings, the user needs to
12557    define the macro OPENSSL_DES_LIBDES_COMPATIBILITY if libdes
12558    compatibility is desired.  The default (i.e., when that macro
12559    isn't defined) is OpenSSL 0.9.6c compatibility.
12560
12561    There are also macros that enable and disable the support of old
12562    des functions altogether.  Those are OPENSSL_ENABLE_OLD_DES_SUPPORT
12563    and OPENSSL_DISABLE_OLD_DES_SUPPORT.  If none or both of those
12564    are defined, the default will apply: to support the old des routines.
12565
12566    In either case, one must include openssl/des.h to get the correct
12567    definitions.  Do not try to just include openssl/des_old.h, that
12568    won't work.
12569
12570    NOTE: This is a major break of an old API into a new one.  Software
12571    authors are encouraged to switch to the `DES_` style functions.  Some
12572    time in the future, des_old.h and the libdes compatibility functions
12573    will be disable (i.e. OPENSSL_DISABLE_OLD_DES_SUPPORT will be the
12574    default), and then completely removed.
12575
12576    *Richard Levitte*
12577
12578  * Test for certificates which contain unsupported critical extensions.
12579    If such a certificate is found during a verify operation it is
12580    rejected by default: this behaviour can be overridden by either
12581    handling the new error X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION or
12582    by setting the verify flag X509_V_FLAG_IGNORE_CRITICAL. A new function
12583    X509_supported_extension() has also been added which returns 1 if a
12584    particular extension is supported.
12585
12586    *Steve Henson*
12587
12588  * Modify the behaviour of EVP cipher functions in similar way to digests
12589    to retain compatibility with existing code.
12590
12591    *Steve Henson*
12592
12593  * Modify the behaviour of EVP_DigestInit() and EVP_DigestFinal() to retain
12594    compatibility with existing code. In particular the 'ctx' parameter does
12595    not have to be to be initialized before the call to EVP_DigestInit() and
12596    it is tidied up after a call to EVP_DigestFinal(). New function
12597    EVP_DigestFinal_ex() which does not tidy up the ctx. Similarly function
12598    EVP_MD_CTX_copy() changed to not require the destination to be
12599    initialized valid and new function EVP_MD_CTX_copy_ex() added which
12600    requires the destination to be valid.
12601
12602    Modify all the OpenSSL digest calls to use EVP_DigestInit_ex(),
12603    EVP_DigestFinal_ex() and EVP_MD_CTX_copy_ex().
12604
12605    *Steve Henson*
12606
12607  * Change ssl3_get_message (ssl/s3_both.c) and the functions using it
12608    so that complete 'Handshake' protocol structures are kept in memory
12609    instead of overwriting 'msg_type' and 'length' with 'body' data.
12610
12611    *Bodo Moeller*
12612
12613  * Add an implementation of SSL_add_dir_cert_subjects_to_stack for Win32.
12614
12615    *Massimo Santin via Richard Levitte*
12616
12617  * Major restructuring to the underlying ENGINE code. This includes
12618    reduction of linker bloat, separation of pure "ENGINE" manipulation
12619    (initialisation, etc) from functionality dealing with implementations
12620    of specific crypto interfaces. This change also introduces integrated
12621    support for symmetric ciphers and digest implementations - so ENGINEs
12622    can now accelerate these by providing EVP_CIPHER and EVP_MD
12623    implementations of their own. This is detailed in
12624    [crypto/engine/README.md](crypto/engine/README.md)
12625    as it couldn't be adequately described here. However, there are a few
12626    API changes worth noting - some RSA, DSA, DH, and RAND functions that
12627    were changed in the original introduction of ENGINE code have now
12628    reverted back - the hooking from this code to ENGINE is now a good
12629    deal more passive and at run-time, operations deal directly with
12630    RSA_METHODs, DSA_METHODs (etc) as they did before, rather than
12631    dereferencing through an ENGINE pointer any more. Also, the ENGINE
12632    functions dealing with `BN_MOD_EXP[_CRT]` handlers have been removed -
12633    they were not being used by the framework as there is no concept of a
12634    BIGNUM_METHOD and they could not be generalised to the new
12635    'ENGINE_TABLE' mechanism that underlies the new code. Similarly,
12636    ENGINE_cpy() has been removed as it cannot be consistently defined in
12637    the new code.
12638
12639    *Geoff Thorpe*
12640
12641  * Change ASN1_GENERALIZEDTIME_check() to allow fractional seconds.
12642
12643    *Steve Henson*
12644
12645  * Change mkdef.pl to sort symbols that get the same entry number,
12646    and make sure the automatically generated functions `ERR_load_*`
12647    become part of libeay.num as well.
12648
12649    *Richard Levitte*
12650
12651  * New function SSL_renegotiate_pending().  This returns true once
12652    renegotiation has been requested (either SSL_renegotiate() call
12653    or HelloRequest/ClientHello received from the peer) and becomes
12654    false once a handshake has been completed.
12655    (For servers, SSL_renegotiate() followed by SSL_do_handshake()
12656    sends a HelloRequest, but does not ensure that a handshake takes
12657    place.  SSL_renegotiate_pending() is useful for checking if the
12658    client has followed the request.)
12659
12660    *Bodo Moeller*
12661
12662  * New SSL option SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION.
12663    By default, clients may request session resumption even during
12664    renegotiation (if session ID contexts permit); with this option,
12665    session resumption is possible only in the first handshake.
12666
12667    SSL_OP_ALL is now 0x00000FFFL instead of 0x000FFFFFL.  This makes
12668    more bits available for options that should not be part of
12669    SSL_OP_ALL (such as SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION).
12670
12671    *Bodo Moeller*
12672
12673  * Add some demos for certificate and certificate request creation.
12674
12675    *Steve Henson*
12676
12677  * Make maximum certificate chain size accepted from the peer application
12678    settable (`SSL*_get/set_max_cert_list()`), as proposed by
12679    "Douglas E. Engert" <deengert@anl.gov>.
12680
12681    *Lutz Jaenicke*
12682
12683  * Add support for shared libraries for Unixware-7
12684    (Boyd Lynn Gerber <gerberb@zenez.com>).
12685
12686    *Lutz Jaenicke*
12687
12688  * Add a "destroy" handler to ENGINEs that allows structural cleanup to
12689    be done prior to destruction. Use this to unload error strings from
12690    ENGINEs that load their own error strings. NB: This adds two new API
12691    functions to "get" and "set" this destroy handler in an ENGINE.
12692
12693    *Geoff Thorpe*
12694
12695  * Alter all existing ENGINE implementations (except "openssl" and
12696    "openbsd") to dynamically instantiate their own error strings. This
12697    makes them more flexible to be built both as statically-linked ENGINEs
12698    and self-contained shared-libraries loadable via the "dynamic" ENGINE.
12699    Also, add stub code to each that makes building them as self-contained
12700    shared-libraries easier (see [README-Engine.md](README-Engine.md)).
12701
12702    *Geoff Thorpe*
12703
12704  * Add a "dynamic" ENGINE that provides a mechanism for binding ENGINE
12705    implementations into applications that are completely implemented in
12706    self-contained shared-libraries. The "dynamic" ENGINE exposes control
12707    commands that can be used to configure what shared-library to load and
12708    to control aspects of the way it is handled. Also, made an update to
12709    the [README-Engine.md](README-Engine.md) file
12710    that brings its information up-to-date and
12711    provides some information and instructions on the "dynamic" ENGINE
12712    (ie. how to use it, how to build "dynamic"-loadable ENGINEs, etc).
12713
12714    *Geoff Thorpe*
12715
12716  * Make it possible to unload ranges of ERR strings with a new
12717    "ERR_unload_strings" function.
12718
12719    *Geoff Thorpe*
12720
12721  * Add a copy() function to EVP_MD.
12722
12723    *Ben Laurie*
12724
12725  * Make EVP_MD routines take a context pointer instead of just the
12726    md_data void pointer.
12727
12728    *Ben Laurie*
12729
12730  * Add flags to EVP_MD and EVP_MD_CTX. EVP_MD_FLAG_ONESHOT indicates
12731    that the digest can only process a single chunk of data
12732    (typically because it is provided by a piece of
12733    hardware). EVP_MD_CTX_FLAG_ONESHOT indicates that the application
12734    is only going to provide a single chunk of data, and hence the
12735    framework needn't accumulate the data for oneshot drivers.
12736
12737    *Ben Laurie*
12738
12739  * As with "ERR", make it possible to replace the underlying "ex_data"
12740    functions. This change also alters the storage and management of global
12741    ex_data state - it's now all inside ex_data.c and all "class" code (eg.
12742    RSA, BIO, SSL_CTX, etc) no longer stores its own STACKS and per-class
12743    index counters. The API functions that use this state have been changed
12744    to take a "class_index" rather than pointers to the class's local STACK
12745    and counter, and there is now an API function to dynamically create new
12746    classes. This centralisation allows us to (a) plug a lot of the
12747    thread-safety problems that existed, and (b) makes it possible to clean
12748    up all allocated state using "CRYPTO_cleanup_all_ex_data()". W.r.t. (b)
12749    such data would previously have always leaked in application code and
12750    workarounds were in place to make the memory debugging turn a blind eye
12751    to it. Application code that doesn't use this new function will still
12752    leak as before, but their memory debugging output will announce it now
12753    rather than letting it slide.
12754
12755    Besides the addition of CRYPTO_cleanup_all_ex_data(), another API change
12756    induced by the "ex_data" overhaul is that X509_STORE_CTX_init() now
12757    has a return value to indicate success or failure.
12758
12759    *Geoff Thorpe*
12760
12761  * Make it possible to replace the underlying "ERR" functions such that the
12762    global state (2 LHASH tables and 2 locks) is only used by the "default"
12763    implementation. This change also adds two functions to "get" and "set"
12764    the implementation prior to it being automatically set the first time
12765    any other ERR function takes place. Ie. an application can call "get",
12766    pass the return value to a module it has just loaded, and that module
12767    can call its own "set" function using that value. This means the
12768    module's "ERR" operations will use (and modify) the error state in the
12769    application and not in its own statically linked copy of OpenSSL code.
12770
12771    *Geoff Thorpe*
12772
12773  * Give DH, DSA, and RSA types their own `*_up_ref()` function to increment
12774    reference counts. This performs normal REF_PRINT/REF_CHECK macros on
12775    the operation, and provides a more encapsulated way for external code
12776    (crypto/evp/ and ssl/) to do this. Also changed the evp and ssl code
12777    to use these functions rather than manually incrementing the counts.
12778
12779    Also rename "DSO_up()" function to more descriptive "DSO_up_ref()".
12780
12781    *Geoff Thorpe*
12782
12783  * Add EVP test program.
12784
12785    *Ben Laurie*
12786
12787  * Add symmetric cipher support to ENGINE. Expect the API to change!
12788
12789    *Ben Laurie*
12790
12791  * New CRL functions: X509_CRL_set_version(), X509_CRL_set_issuer_name()
12792    X509_CRL_set_lastUpdate(), X509_CRL_set_nextUpdate(), X509_CRL_sort(),
12793    X509_REVOKED_set_serialNumber(), and X509_REVOKED_set_revocationDate().
12794    These allow a CRL to be built without having to access X509_CRL fields
12795    directly. Modify 'ca' application to use new functions.
12796
12797    *Steve Henson*
12798
12799  * Move SSL_OP_TLS_ROLLBACK_BUG out of the SSL_OP_ALL list of recommended
12800    bug workarounds. Rollback attack detection is a security feature.
12801    The problem will only arise on OpenSSL servers when TLSv1 is not
12802    available (sslv3_server_method() or SSL_OP_NO_TLSv1).
12803    Software authors not wanting to support TLSv1 will have special reasons
12804    for their choice and can explicitly enable this option.
12805
12806    *Bodo Moeller, Lutz Jaenicke*
12807
12808  * Rationalise EVP so it can be extended: don't include a union of
12809    cipher/digest structures, add init/cleanup functions for EVP_MD_CTX
12810    (similar to those existing for EVP_CIPHER_CTX).
12811    Usage example:
12812
12813            EVP_MD_CTX md;
12814
12815            EVP_MD_CTX_init(&md);             /* new function call */
12816            EVP_DigestInit(&md, EVP_sha1());
12817            EVP_DigestUpdate(&md, in, len);
12818            EVP_DigestFinal(&md, out, NULL);
12819            EVP_MD_CTX_cleanup(&md);          /* new function call */
12820
12821    *Ben Laurie*
12822
12823  * Make DES key schedule conform to the usual scheme, as well as
12824    correcting its structure. This means that calls to DES functions
12825    now have to pass a pointer to a des_key_schedule instead of a
12826    plain des_key_schedule (which was actually always a pointer
12827    anyway): E.g.,
12828
12829            des_key_schedule ks;
12830
12831            des_set_key_checked(..., &ks);
12832            des_ncbc_encrypt(..., &ks, ...);
12833
12834    (Note that a later change renames 'des_...' into 'DES_...'.)
12835
12836    *Ben Laurie*
12837
12838  * Initial reduction of linker bloat: the use of some functions, such as
12839    PEM causes large amounts of unused functions to be linked in due to
12840    poor organisation. For example pem_all.c contains every PEM function
12841    which has a knock on effect of linking in large amounts of (unused)
12842    ASN1 code. Grouping together similar functions and splitting unrelated
12843    functions prevents this.
12844
12845    *Steve Henson*
12846
12847  * Cleanup of EVP macros.
12848
12849    *Ben Laurie*
12850
12851  * Change historical references to `{NID,SN,LN}_des_ede` and ede3 to add the
12852    correct `_ecb suffix`.
12853
12854    *Ben Laurie*
12855
12856  * Add initial OCSP responder support to ocsp application. The
12857    revocation information is handled using the text based index
12858    use by the ca application. The responder can either handle
12859    requests generated internally, supplied in files (for example
12860    via a CGI script) or using an internal minimal server.
12861
12862    *Steve Henson*
12863
12864  * Add configuration choices to get zlib compression for TLS.
12865
12866    *Richard Levitte*
12867
12868  * Changes to Kerberos SSL for RFC 2712 compliance:
12869    1. Implemented real KerberosWrapper, instead of just using
12870       KRB5 AP_REQ message.  [Thanks to Simon Wilkinson <sxw@sxw.org.uk>]
12871    2. Implemented optional authenticator field of KerberosWrapper.
12872
12873    Added openssl-style ASN.1 macros for Kerberos ticket, ap_req,
12874    and authenticator structs; see crypto/krb5/.
12875
12876    Generalized Kerberos calls to support multiple Kerberos libraries.
12877    *Vern Staats <staatsvr@asc.hpc.mil>, Jeffrey Altman <jaltman@columbia.edu>
12878    via Richard Levitte*
12879
12880  * Cause 'openssl speed' to use fully hard-coded DSA keys as it
12881    already does with RSA. testdsa.h now has 'priv_key/pub_key'
12882    values for each of the key sizes rather than having just
12883    parameters (and 'speed' generating keys each time).
12884
12885    *Geoff Thorpe*
12886
12887  * Speed up EVP routines.
12888    Before:
12889 crypt
12890 pe              8 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
12891 s-cbc           4408.85k     5560.51k     5778.46k     5862.20k     5825.16k
12892 s-cbc           4389.55k     5571.17k     5792.23k     5846.91k     5832.11k
12893 s-cbc           4394.32k     5575.92k     5807.44k     5848.37k     5841.30k
12894 crypt
12895 s-cbc           3482.66k     5069.49k     5496.39k     5614.16k     5639.28k
12896 s-cbc           3480.74k     5068.76k     5510.34k     5609.87k     5635.52k
12897 s-cbc           3483.72k     5067.62k     5504.60k     5708.01k     5724.80k
12898    After:
12899 crypt
12900 s-cbc           4660.16k     5650.19k     5807.19k     5827.13k     5783.32k
12901 crypt
12902 s-cbc           3624.96k     5258.21k     5530.91k     5624.30k     5628.26k
12903
12904    *Ben Laurie*
12905
12906  * Added the OS2-EMX target.
12907
12908    *"Brian Havard" <brianh@kheldar.apana.org.au> and Richard Levitte*
12909
12910  * Rewrite commands to use `NCONF` routines instead of the old `CONF`.
12911    New functions to support `NCONF` routines in extension code.
12912    New function `CONF_set_nconf()`
12913    to allow functions which take an `NCONF` to also handle the old `LHASH`
12914    structure: this means that the old `CONF` compatible routines can be
12915    retained (in particular w.rt. extensions) without having to duplicate the
12916    code. New function `X509V3_add_ext_nconf_sk()` to add extensions to a stack.
12917
12918    *Steve Henson*
12919
12920  * Enhance the general user interface with mechanisms for inner control
12921    and with possibilities to have yes/no kind of prompts.
12922
12923    *Richard Levitte*
12924
12925  * Change all calls to low-level digest routines in the library and
12926    applications to use EVP. Add missing calls to HMAC_cleanup() and
12927    don't assume HMAC_CTX can be copied using memcpy().
12928
12929    *Verdon Walker <VWalker@novell.com>, Steve Henson*
12930
12931  * Add the possibility to control engines through control names but with
12932    arbitrary arguments instead of just a string.
12933    Change the key loaders to take a UI_METHOD instead of a callback
12934    function pointer.  NOTE: this breaks binary compatibility with earlier
12935    versions of OpenSSL [engine].
12936    Adapt the nCipher code for these new conditions and add a card insertion
12937    callback.
12938
12939    *Richard Levitte*
12940
12941  * Enhance the general user interface with mechanisms to better support
12942    dialog box interfaces, application-defined prompts, the possibility
12943    to use defaults (for example default passwords from somewhere else)
12944    and interrupts/cancellations.
12945
12946    *Richard Levitte*
12947
12948  * Tidy up PKCS#12 attribute handling. Add support for the CSP name
12949    attribute in PKCS#12 files, add new -CSP option to pkcs12 utility.
12950
12951    *Steve Henson*
12952
12953  * Fix a memory leak in 'sk_dup()' in the case reallocation fails. (Also
12954    tidy up some unnecessarily weird code in 'sk_new()').
12955
12956    *Geoff, reported by Diego Tartara <dtartara@novamens.com>*
12957
12958  * Change the key loading routines for ENGINEs to use the same kind
12959    callback (pem_password_cb) as all other routines that need this
12960    kind of callback.
12961
12962    *Richard Levitte*
12963
12964  * Increase ENTROPY_NEEDED to 32 bytes, as Rijndael can operate with
12965    256 bit (=32 byte) keys. Of course seeding with more entropy bytes
12966    than this minimum value is recommended.
12967
12968    *Lutz Jaenicke*
12969
12970  * New random seeder for OpenVMS, using the system process statistics
12971    that are easily reachable.
12972
12973    *Richard Levitte*
12974
12975  * Windows apparently can't transparently handle global
12976    variables defined in DLLs. Initialisations such as:
12977
12978            const ASN1_ITEM *it = &ASN1_INTEGER_it;
12979
12980    won't compile. This is used by the any applications that need to
12981    declare their own ASN1 modules. This was fixed by adding the option
12982    EXPORT_VAR_AS_FN to all Win32 platforms, although this isn't strictly
12983    needed for static libraries under Win32.
12984
12985    *Steve Henson*
12986
12987  * New functions X509_PURPOSE_set() and X509_TRUST_set() to handle
12988    setting of purpose and trust fields. New X509_STORE trust and
12989    purpose functions and tidy up setting in other SSL functions.
12990
12991    *Steve Henson*
12992
12993  * Add copies of X509_STORE_CTX fields and callbacks to X509_STORE
12994    structure. These are inherited by X509_STORE_CTX when it is
12995    initialised. This allows various defaults to be set in the
12996    X509_STORE structure (such as flags for CRL checking and custom
12997    purpose or trust settings) for functions which only use X509_STORE_CTX
12998    internally such as S/MIME.
12999
13000    Modify X509_STORE_CTX_purpose_inherit() so it only sets purposes and
13001    trust settings if they are not set in X509_STORE. This allows X509_STORE
13002    purposes and trust (in S/MIME for example) to override any set by default.
13003
13004    Add command line options for CRL checking to smime, s_client and s_server
13005    applications.
13006
13007    *Steve Henson*
13008
13009  * Initial CRL based revocation checking. If the CRL checking flag(s)
13010    are set then the CRL is looked up in the X509_STORE structure and
13011    its validity and signature checked, then if the certificate is found
13012    in the CRL the verify fails with a revoked error.
13013
13014    Various new CRL related callbacks added to X509_STORE_CTX structure.
13015
13016    Command line options added to 'verify' application to support this.
13017
13018    This needs some additional work, such as being able to handle multiple
13019    CRLs with different times, extension based lookup (rather than just
13020    by subject name) and ultimately more complete V2 CRL extension
13021    handling.
13022
13023    *Steve Henson*
13024
13025  * Add a general user interface API (crypto/ui/).  This is designed
13026    to replace things like des_read_password and friends (backward
13027    compatibility functions using this new API are provided).
13028    The purpose is to remove prompting functions from the DES code
13029    section as well as provide for prompting through dialog boxes in
13030    a window system and the like.
13031
13032    *Richard Levitte*
13033
13034  * Add "ex_data" support to ENGINE so implementations can add state at a
13035    per-structure level rather than having to store it globally.
13036
13037    *Geoff*
13038
13039  * Make it possible for ENGINE structures to be copied when retrieved by
13040    ENGINE_by_id() if the ENGINE specifies a new flag: ENGINE_FLAGS_BY_ID_COPY.
13041    This causes the "original" ENGINE structure to act like a template,
13042    analogous to the RSA vs. RSA_METHOD type of separation. Because of this
13043    operational state can be localised to each ENGINE structure, despite the
13044    fact they all share the same "methods". New ENGINE structures returned in
13045    this case have no functional references and the return value is the single
13046    structural reference. This matches the single structural reference returned
13047    by ENGINE_by_id() normally, when it is incremented on the pre-existing
13048    ENGINE structure.
13049
13050    *Geoff*
13051
13052  * Fix ASN1 decoder when decoding type ANY and V_ASN1_OTHER: since this
13053    needs to match any other type at all we need to manually clear the
13054    tag cache.
13055
13056    *Steve Henson*
13057
13058  * Changes to the "openssl engine" utility to include;
13059    - verbosity levels ('-v', '-vv', and '-vvv') that provide information
13060      about an ENGINE's available control commands.
13061    - executing control commands from command line arguments using the
13062      '-pre' and '-post' switches. '-post' is only used if '-t' is
13063      specified and the ENGINE is successfully initialised. The syntax for
13064      the individual commands are colon-separated, for example;
13065            openssl engine chil -pre FORK_CHECK:0 -pre SO_PATH:/lib/test.so
13066
13067    *Geoff*
13068
13069  * New dynamic control command support for ENGINEs. ENGINEs can now
13070    declare their own commands (numbers), names (strings), descriptions,
13071    and input types for run-time discovery by calling applications. A
13072    subset of these commands are implicitly classed as "executable"
13073    depending on their input type, and only these can be invoked through
13074    the new string-based API function ENGINE_ctrl_cmd_string(). (Eg. this
13075    can be based on user input, config files, etc). The distinction is
13076    that "executable" commands cannot return anything other than a boolean
13077    result and can only support numeric or string input, whereas some
13078    discoverable commands may only be for direct use through
13079    ENGINE_ctrl(), eg. supporting the exchange of binary data, function
13080    pointers, or other custom uses. The "executable" commands are to
13081    support parameterisations of ENGINE behaviour that can be
13082    unambiguously defined by ENGINEs and used consistently across any
13083    OpenSSL-based application. Commands have been added to all the
13084    existing hardware-supporting ENGINEs, noticeably "SO_PATH" to allow
13085    control over shared-library paths without source code alterations.
13086
13087    *Geoff*
13088
13089  * Changed all ENGINE implementations to dynamically allocate their
13090    ENGINEs rather than declaring them statically. Apart from this being
13091    necessary with the removal of the ENGINE_FLAGS_MALLOCED distinction,
13092    this also allows the implementations to compile without using the
13093    internal engine_int.h header.
13094
13095    *Geoff*
13096
13097  * Minor adjustment to "rand" code. RAND_get_rand_method() now returns a
13098    'const' value. Any code that should be able to modify a RAND_METHOD
13099    should already have non-const pointers to it (ie. they should only
13100    modify their own ones).
13101
13102    *Geoff*
13103
13104  * Made a variety of little tweaks to the ENGINE code.
13105    - "atalla" and "ubsec" string definitions were moved from header files
13106      to C code. "nuron" string definitions were placed in variables
13107      rather than hard-coded - allowing parameterisation of these values
13108      later on via ctrl() commands.
13109    - Removed unused "#if 0"'d code.
13110    - Fixed engine list iteration code so it uses ENGINE_free() to release
13111      structural references.
13112    - Constified the RAND_METHOD element of ENGINE structures.
13113    - Constified various get/set functions as appropriate and added
13114      missing functions (including a catch-all ENGINE_cpy that duplicates
13115      all ENGINE values onto a new ENGINE except reference counts/state).
13116    - Removed NULL parameter checks in get/set functions. Setting a method
13117      or function to NULL is a way of cancelling out a previously set
13118      value.  Passing a NULL ENGINE parameter is just plain stupid anyway
13119      and doesn't justify the extra error symbols and code.
13120    - Deprecate the ENGINE_FLAGS_MALLOCED define and move the area for
13121      flags from engine_int.h to engine.h.
13122    - Changed prototypes for ENGINE handler functions (init(), finish(),
13123      ctrl(), key-load functions, etc) to take an (ENGINE*) parameter.
13124
13125    *Geoff*
13126
13127  * Implement binary inversion algorithm for BN_mod_inverse in addition
13128    to the algorithm using long division.  The binary algorithm can be
13129    used only if the modulus is odd.  On 32-bit systems, it is faster
13130    only for relatively small moduli (roughly 20-30% for 128-bit moduli,
13131    roughly 5-15% for 256-bit moduli), so we use it only for moduli
13132    up to 450 bits.  In 64-bit environments, the binary algorithm
13133    appears to be advantageous for much longer moduli; here we use it
13134    for moduli up to 2048 bits.
13135
13136    *Bodo Moeller*
13137
13138  * Rewrite CHOICE field setting in ASN1_item_ex_d2i(). The old code
13139    could not support the combine flag in choice fields.
13140
13141    *Steve Henson*
13142
13143  * Add a 'copy_extensions' option to the 'ca' utility. This copies
13144    extensions from a certificate request to the certificate.
13145
13146    *Steve Henson*
13147
13148  * Allow multiple 'certopt' and 'nameopt' options to be separated
13149    by commas. Add 'namopt' and 'certopt' options to the 'ca' config
13150    file: this allows the display of the certificate about to be
13151    signed to be customised, to allow certain fields to be included
13152    or excluded and extension details. The old system didn't display
13153    multicharacter strings properly, omitted fields not in the policy
13154    and couldn't display additional details such as extensions.
13155
13156    *Steve Henson*
13157
13158  * Function EC_POINTs_mul for multiple scalar multiplication
13159    of an arbitrary number of elliptic curve points
13160            \sum scalars[i]*points[i],
13161    optionally including the generator defined for the EC_GROUP:
13162            scalar*generator +  \sum scalars[i]*points[i].
13163
13164    EC_POINT_mul is a simple wrapper function for the typical case
13165    that the point list has just one item (besides the optional
13166    generator).
13167
13168    *Bodo Moeller*
13169
13170  * First EC_METHODs for curves over GF(p):
13171
13172    EC_GFp_simple_method() uses the basic BN_mod_mul and BN_mod_sqr
13173    operations and provides various method functions that can also
13174    operate with faster implementations of modular arithmetic.
13175
13176    EC_GFp_mont_method() reuses most functions that are part of
13177    EC_GFp_simple_method, but uses Montgomery arithmetic.
13178
13179    *Bodo Moeller; point addition and point doubling
13180    implementation directly derived from source code provided by
13181    Lenka Fibikova <fibikova@exp-math.uni-essen.de>*
13182
13183  * Framework for elliptic curves (crypto/ec/ec.h, crypto/ec/ec_lcl.h,
13184    crypto/ec/ec_lib.c):
13185
13186    Curves are EC_GROUP objects (with an optional group generator)
13187    based on EC_METHODs that are built into the library.
13188
13189    Points are EC_POINT objects based on EC_GROUP objects.
13190
13191    Most of the framework would be able to handle curves over arbitrary
13192    finite fields, but as there are no obvious types for fields other
13193    than GF(p), some functions are limited to that for now.
13194
13195    *Bodo Moeller*
13196
13197  * Add the -HTTP option to s_server.  It is similar to -WWW, but requires
13198    that the file contains a complete HTTP response.
13199
13200    *Richard Levitte*
13201
13202  * Add the ec directory to mkdef.pl and mkfiles.pl. In mkdef.pl
13203    change the def and num file printf format specifier from "%-40sXXX"
13204    to "%-39s XXX". The latter will always guarantee a space after the
13205    field while the former will cause them to run together if the field
13206    is 40 of more characters long.
13207
13208    *Steve Henson*
13209
13210  * Constify the cipher and digest 'method' functions and structures
13211    and modify related functions to take constant EVP_MD and EVP_CIPHER
13212    pointers.
13213
13214    *Steve Henson*
13215
13216  * Hide BN_CTX structure details in bn_lcl.h instead of publishing them
13217    in <openssl/bn.h>.  Also further increase BN_CTX_NUM to 32.
13218
13219    *Bodo Moeller*
13220
13221  * Modify `EVP_Digest*()` routines so they now return values. Although the
13222    internal software routines can never fail additional hardware versions
13223    might.
13224
13225    *Steve Henson*
13226
13227  * Clean up crypto/err/err.h and change some error codes to avoid conflicts:
13228
13229    Previously ERR_R_FATAL was too small and coincided with ERR_LIB_PKCS7
13230    (= ERR_R_PKCS7_LIB); it is now 64 instead of 32.
13231
13232    ASN1 error codes
13233            ERR_R_NESTED_ASN1_ERROR
13234            ...
13235            ERR_R_MISSING_ASN1_EOS
13236    were 4 .. 9, conflicting with
13237            ERR_LIB_RSA (= ERR_R_RSA_LIB)
13238            ...
13239            ERR_LIB_PEM (= ERR_R_PEM_LIB).
13240    They are now 58 .. 63 (i.e., just below ERR_R_FATAL).
13241
13242    Add new error code 'ERR_R_INTERNAL_ERROR'.
13243
13244    *Bodo Moeller*
13245
13246  * Don't overuse locks in crypto/err/err.c: For data retrieval, CRYPTO_r_lock
13247    suffices.
13248
13249    *Bodo Moeller*
13250
13251  * New option '-subj arg' for 'openssl req' and 'openssl ca'.  This
13252    sets the subject name for a new request or supersedes the
13253    subject name in a given request. Formats that can be parsed are
13254            'CN=Some Name, OU=myOU, C=IT'
13255    and
13256            'CN=Some Name/OU=myOU/C=IT'.
13257
13258    Add options '-batch' and '-verbose' to 'openssl req'.
13259
13260    *Massimiliano Pala <madwolf@hackmasters.net>*
13261
13262  * Introduce the possibility to access global variables through
13263    functions on platform were that's the best way to handle exporting
13264    global variables in shared libraries.  To enable this functionality,
13265    one must configure with "EXPORT_VAR_AS_FN" or defined the C macro
13266    "OPENSSL_EXPORT_VAR_AS_FUNCTION" in crypto/opensslconf.h (the latter
13267    is normally done by Configure or something similar).
13268
13269    To implement a global variable, use the macro OPENSSL_IMPLEMENT_GLOBAL
13270    in the source file (foo.c) like this:
13271
13272            OPENSSL_IMPLEMENT_GLOBAL(int,foo)=1;
13273            OPENSSL_IMPLEMENT_GLOBAL(double,bar);
13274
13275    To declare a global variable, use the macros OPENSSL_DECLARE_GLOBAL
13276    and OPENSSL_GLOBAL_REF in the header file (foo.h) like this:
13277
13278            OPENSSL_DECLARE_GLOBAL(int,foo);
13279            #define foo OPENSSL_GLOBAL_REF(foo)
13280            OPENSSL_DECLARE_GLOBAL(double,bar);
13281            #define bar OPENSSL_GLOBAL_REF(bar)
13282
13283    The #defines are very important, and therefore so is including the
13284    header file everywhere where the defined globals are used.
13285
13286    The macro OPENSSL_EXPORT_VAR_AS_FUNCTION also affects the definition
13287    of ASN.1 items, but that structure is a bit different.
13288
13289    The largest change is in util/mkdef.pl which has been enhanced with
13290    better and easier to understand logic to choose which symbols should
13291    go into the Windows .def files as well as a number of fixes and code
13292    cleanup (among others, algorithm keywords are now sorted
13293    lexicographically to avoid constant rewrites).
13294
13295    *Richard Levitte*
13296
13297  * In BN_div() keep a copy of the sign of 'num' before writing the
13298    result to 'rm' because if rm==num the value will be overwritten
13299    and produce the wrong result if 'num' is negative: this caused
13300    problems with BN_mod() and BN_nnmod().
13301
13302    *Steve Henson*
13303
13304  * Function OCSP_request_verify(). This checks the signature on an
13305    OCSP request and verifies the signer certificate. The signer
13306    certificate is just checked for a generic purpose and OCSP request
13307    trust settings.
13308
13309    *Steve Henson*
13310
13311  * Add OCSP_check_validity() function to check the validity of OCSP
13312    responses. OCSP responses are prepared in real time and may only
13313    be a few seconds old. Simply checking that the current time lies
13314    between thisUpdate and nextUpdate max reject otherwise valid responses
13315    caused by either OCSP responder or client clock inaccuracy. Instead
13316    we allow thisUpdate and nextUpdate to fall within a certain period of
13317    the current time. The age of the response can also optionally be
13318    checked. Two new options -validity_period and -status_age added to
13319    ocsp utility.
13320
13321    *Steve Henson*
13322
13323  * If signature or public key algorithm is unrecognized print out its
13324    OID rather that just UNKNOWN.
13325
13326    *Steve Henson*
13327
13328  * Change OCSP_cert_to_id() to tolerate a NULL subject certificate and
13329    OCSP_cert_id_new() a NULL serialNumber. This allows a partial certificate
13330    ID to be generated from the issuer certificate alone which can then be
13331    passed to OCSP_id_issuer_cmp().
13332
13333    *Steve Henson*
13334
13335  * New compilation option ASN1_ITEM_FUNCTIONS. This causes the new
13336    ASN1 modules to export functions returning ASN1_ITEM pointers
13337    instead of the ASN1_ITEM structures themselves. This adds several
13338    new macros which allow the underlying ASN1 function/structure to
13339    be accessed transparently. As a result code should not use ASN1_ITEM
13340    references directly (such as &X509_it) but instead use the relevant
13341    macros (such as ASN1_ITEM_rptr(X509)). This option is to allow
13342    use of the new ASN1 code on platforms where exporting structures
13343    is problematical (for example in shared libraries) but exporting
13344    functions returning pointers to structures is not.
13345
13346    *Steve Henson*
13347
13348  * Add support for overriding the generation of SSL/TLS session IDs.
13349    These callbacks can be registered either in an SSL_CTX or per SSL.
13350    The purpose of this is to allow applications to control, if they wish,
13351    the arbitrary values chosen for use as session IDs, particularly as it
13352    can be useful for session caching in multiple-server environments. A
13353    command-line switch for testing this (and any client code that wishes
13354    to use such a feature) has been added to "s_server".
13355
13356    *Geoff Thorpe, Lutz Jaenicke*
13357
13358  * Modify mkdef.pl to recognise and parse preprocessor conditionals
13359    of the form `#if defined(...) || defined(...) || ...` and
13360    `#if !defined(...) && !defined(...) && ...`.  This also avoids
13361    the growing number of special cases it was previously handling.
13362
13363    *Richard Levitte*
13364
13365  * Make all configuration macros available for application by making
13366    sure they are available in opensslconf.h, by giving them names starting
13367    with `OPENSSL_` to avoid conflicts with other packages and by making
13368    sure e_os2.h will cover all platform-specific cases together with
13369    opensslconf.h.
13370    Additionally, it is now possible to define configuration/platform-
13371    specific names (called "system identities").  In the C code, these
13372    are prefixed with `OPENSSL_SYSNAME_`.  e_os2.h will create another
13373    macro with the name beginning with `OPENSSL_SYS_`, which is determined
13374    from `OPENSSL_SYSNAME_*` or compiler-specific macros depending on
13375    what is available.
13376
13377    *Richard Levitte*
13378
13379  * New option -set_serial to 'req' and 'x509' this allows the serial
13380    number to use to be specified on the command line. Previously self
13381    signed certificates were hard coded with serial number 0 and the
13382    CA options of 'x509' had to use a serial number in a file which was
13383    auto incremented.
13384
13385    *Steve Henson*
13386
13387  * New options to 'ca' utility to support V2 CRL entry extensions.
13388    Currently CRL reason, invalidity date and hold instruction are
13389    supported. Add new CRL extensions to V3 code and some new objects.
13390
13391    *Steve Henson*
13392
13393  * New function EVP_CIPHER_CTX_set_padding() this is used to
13394    disable standard block padding (aka PKCS#5 padding) in the EVP
13395    API, which was previously mandatory. This means that the data is
13396    not padded in any way and so the total length much be a multiple
13397    of the block size, otherwise an error occurs.
13398
13399    *Steve Henson*
13400
13401  * Initial (incomplete) OCSP SSL support.
13402
13403    *Steve Henson*
13404
13405  * New function OCSP_parse_url(). This splits up a URL into its host,
13406    port and path components: primarily to parse OCSP URLs. New -url
13407    option to ocsp utility.
13408
13409    *Steve Henson*
13410
13411  * New nonce behavior. The return value of OCSP_check_nonce() now
13412    reflects the various checks performed. Applications can decide
13413    whether to tolerate certain situations such as an absent nonce
13414    in a response when one was present in a request: the ocsp application
13415    just prints out a warning. New function OCSP_add1_basic_nonce()
13416    this is to allow responders to include a nonce in a response even if
13417    the request is nonce-less.
13418
13419    *Steve Henson*
13420
13421  * Disable stdin buffering in `load_cert()` (`apps/apps.c`) so that no certs are
13422    skipped when using openssl x509 multiple times on a single input file,
13423    e.g. `(openssl x509 -out cert1; openssl x509 -out cert2) <certs`.
13424
13425    *Bodo Moeller*
13426
13427  * Make ASN1_UTCTIME_set_string() and ASN1_GENERALIZEDTIME_set_string()
13428    set string type: to handle setting ASN1_TIME structures. Fix ca
13429    utility to correctly initialize revocation date of CRLs.
13430
13431    *Steve Henson*
13432
13433  * New option SSL_OP_CIPHER_SERVER_PREFERENCE allows the server to override
13434    the clients preferred ciphersuites and rather use its own preferences.
13435    Should help to work around M$ SGC (Server Gated Cryptography) bug in
13436    Internet Explorer by ensuring unchanged hash method during stepup.
13437    (Also replaces the broken/deactivated SSL_OP_NON_EXPORT_FIRST option.)
13438
13439    *Lutz Jaenicke*
13440
13441  * Make mkdef.pl recognise all DECLARE_ASN1 macros, change rijndael
13442    to aes and add a new 'exist' option to print out symbols that don't
13443    appear to exist.
13444
13445    *Steve Henson*
13446
13447  * Additional options to ocsp utility to allow flags to be set and
13448    additional certificates supplied.
13449
13450    *Steve Henson*
13451
13452  * Add the option -VAfile to 'openssl ocsp', so the user can give the
13453    OCSP client a number of certificate to only verify the response
13454    signature against.
13455
13456    *Richard Levitte*
13457
13458  * Update Rijndael code to version 3.0 and change EVP AES ciphers to
13459    handle the new API. Currently only ECB, CBC modes supported. Add new
13460    AES OIDs.
13461
13462    Add TLS AES ciphersuites as described in RFC3268, "Advanced
13463    Encryption Standard (AES) Ciphersuites for Transport Layer
13464    Security (TLS)".  (In beta versions of OpenSSL 0.9.7, these were
13465    not enabled by default and were not part of the "ALL" ciphersuite
13466    alias because they were not yet official; they could be
13467    explicitly requested by specifying the "AESdraft" ciphersuite
13468    group alias.  In the final release of OpenSSL 0.9.7, the group
13469    alias is called "AES" and is part of "ALL".)
13470
13471    *Ben Laurie, Steve  Henson, Bodo Moeller*
13472
13473  * New function OCSP_copy_nonce() to copy nonce value (if present) from
13474    request to response.
13475
13476    *Steve Henson*
13477
13478  * Functions for OCSP responders. OCSP_request_onereq_count(),
13479    OCSP_request_onereq_get0(), OCSP_onereq_get0_id() and OCSP_id_get0_info()
13480    extract information from a certificate request. OCSP_response_create()
13481    creates a response and optionally adds a basic response structure.
13482    OCSP_basic_add1_status() adds a complete single response to a basic
13483    response and returns the OCSP_SINGLERESP structure just added (to allow
13484    extensions to be included for example). OCSP_basic_add1_cert() adds a
13485    certificate to a basic response and OCSP_basic_sign() signs a basic
13486    response with various flags. New helper functions ASN1_TIME_check()
13487    (checks validity of ASN1_TIME structure) and ASN1_TIME_to_generalizedtime()
13488    (converts ASN1_TIME to GeneralizedTime).
13489
13490    *Steve Henson*
13491
13492  * Various new functions. EVP_Digest() combines EVP_Digest{Init,Update,Final}()
13493    in a single operation. X509_get0_pubkey_bitstr() extracts the public_key
13494    structure from a certificate. X509_pubkey_digest() digests the public_key
13495    contents: this is used in various key identifiers.
13496
13497    *Steve Henson*
13498
13499  * Make sk_sort() tolerate a NULL argument.
13500
13501    *Steve Henson reported by Massimiliano Pala <madwolf@comune.modena.it>*
13502
13503  * New OCSP verify flag OCSP_TRUSTOTHER. When set the "other" certificates
13504    passed by the function are trusted implicitly. If any of them signed the
13505    response then it is assumed to be valid and is not verified.
13506
13507    *Steve Henson*
13508
13509  * In PKCS7_set_type() initialise content_type in PKCS7_ENC_CONTENT
13510    to data. This was previously part of the PKCS7 ASN1 code. This
13511    was causing problems with OpenSSL created PKCS#12 and PKCS#7 structures.
13512    *Steve Henson, reported by Kenneth R. Robinette
13513                               <support@securenetterm.com>*
13514
13515  * Add CRYPTO_push_info() and CRYPTO_pop_info() calls to new ASN1
13516    routines: without these tracing memory leaks is very painful.
13517    Fix leaks in PKCS12 and PKCS7 routines.
13518
13519    *Steve Henson*
13520
13521  * Make X509_time_adj() cope with the new behaviour of ASN1_TIME_new().
13522    Previously it initialised the 'type' argument to V_ASN1_UTCTIME which
13523    effectively meant GeneralizedTime would never be used. Now it
13524    is initialised to -1 but X509_time_adj() now has to check the value
13525    and use ASN1_TIME_set() if the value is not V_ASN1_UTCTIME or
13526    V_ASN1_GENERALIZEDTIME, without this it always uses GeneralizedTime.
13527    *Steve Henson, reported by Kenneth R. Robinette
13528                               <support@securenetterm.com>*
13529
13530  * Fixes to BN_to_ASN1_INTEGER when bn is zero. This would previously
13531    result in a zero length in the ASN1_INTEGER structure which was
13532    not consistent with the structure when d2i_ASN1_INTEGER() was used
13533    and would cause ASN1_INTEGER_cmp() to fail. Enhance s2i_ASN1_INTEGER()
13534    to cope with hex and negative integers. Fix bug in i2a_ASN1_INTEGER()
13535    where it did not print out a minus for negative ASN1_INTEGER.
13536
13537    *Steve Henson*
13538
13539  * Add summary printout to ocsp utility. The various functions which
13540    convert status values to strings have been renamed to:
13541    OCSP_response_status_str(), OCSP_cert_status_str() and
13542    OCSP_crl_reason_str() and are no longer static. New options
13543    to verify nonce values and to disable verification. OCSP response
13544    printout format cleaned up.
13545
13546    *Steve Henson*
13547
13548  * Add additional OCSP certificate checks. These are those specified
13549    in RFC2560. This consists of two separate checks: the CA of the
13550    certificate being checked must either be the OCSP signer certificate
13551    or the issuer of the OCSP signer certificate. In the latter case the
13552    OCSP signer certificate must contain the OCSP signing extended key
13553    usage. This check is performed by attempting to match the OCSP
13554    signer or the OCSP signer CA to the issuerNameHash and issuerKeyHash
13555    in the OCSP_CERTID structures of the response.
13556
13557    *Steve Henson*
13558
13559  * Initial OCSP certificate verification added to OCSP_basic_verify()
13560    and related routines. This uses the standard OpenSSL certificate
13561    verify routines to perform initial checks (just CA validity) and
13562    to obtain the certificate chain. Then additional checks will be
13563    performed on the chain. Currently the root CA is checked to see
13564    if it is explicitly trusted for OCSP signing. This is used to set
13565    a root CA as a global signing root: that is any certificate that
13566    chains to that CA is an acceptable OCSP signing certificate.
13567
13568    *Steve Henson*
13569
13570  * New '-extfile ...' option to 'openssl ca' for reading X.509v3
13571    extensions from a separate configuration file.
13572    As when reading extensions from the main configuration file,
13573    the '-extensions ...' option may be used for specifying the
13574    section to use.
13575
13576    *Massimiliano Pala <madwolf@comune.modena.it>*
13577
13578  * New OCSP utility. Allows OCSP requests to be generated or
13579    read. The request can be sent to a responder and the output
13580    parsed, outputted or printed in text form. Not complete yet:
13581    still needs to check the OCSP response validity.
13582
13583    *Steve Henson*
13584
13585  * New subcommands for 'openssl ca':
13586    `openssl ca -status <serial>` prints the status of the cert with
13587    the given serial number (according to the index file).
13588    `openssl ca -updatedb` updates the expiry status of certificates
13589    in the index file.
13590
13591    *Massimiliano Pala <madwolf@comune.modena.it>*
13592
13593  * New '-newreq-nodes' command option to CA.pl.  This is like
13594    '-newreq', but calls 'openssl req' with the '-nodes' option
13595    so that the resulting key is not encrypted.
13596
13597    *Damien Miller <djm@mindrot.org>*
13598
13599  * New configuration for the GNU Hurd.
13600
13601    *Jonathan Bartlett <johnnyb@wolfram.com> via Richard Levitte*
13602
13603  * Initial code to implement OCSP basic response verify. This
13604    is currently incomplete. Currently just finds the signer's
13605    certificate and verifies the signature on the response.
13606
13607    *Steve Henson*
13608
13609  * New SSLeay_version code SSLEAY_DIR to determine the compiled-in
13610    value of OPENSSLDIR.  This is available via the new '-d' option
13611    to 'openssl version', and is also included in 'openssl version -a'.
13612
13613    *Bodo Moeller*
13614
13615  * Allowing defining memory allocation callbacks that will be given
13616    file name and line number information in additional arguments
13617    (a `const char*` and an int).  The basic functionality remains, as
13618    well as the original possibility to just replace malloc(),
13619    realloc() and free() by functions that do not know about these
13620    additional arguments.  To register and find out the current
13621    settings for extended allocation functions, the following
13622    functions are provided:
13623
13624            CRYPTO_set_mem_ex_functions
13625            CRYPTO_set_locked_mem_ex_functions
13626            CRYPTO_get_mem_ex_functions
13627            CRYPTO_get_locked_mem_ex_functions
13628
13629    These work the same way as CRYPTO_set_mem_functions and friends.
13630    `CRYPTO_get_[locked_]mem_functions` now writes 0 where such an
13631    extended allocation function is enabled.
13632    Similarly, `CRYPTO_get_[locked_]mem_ex_functions` writes 0 where
13633    a conventional allocation function is enabled.
13634
13635    *Richard Levitte, Bodo Moeller*
13636
13637  * Finish off removing the remaining LHASH function pointer casts.
13638    There should no longer be any prototype-casting required when using
13639    the LHASH abstraction, and any casts that remain are "bugs". See
13640    the callback types and macros at the head of lhash.h for details
13641    (and "OBJ_cleanup" in crypto/objects/obj_dat.c as an example).
13642
13643    *Geoff Thorpe*
13644
13645  * Add automatic query of EGD sockets in RAND_poll() for the unix variant.
13646    If /dev/[u]random devices are not available or do not return enough
13647    entropy, EGD style sockets (served by EGD or PRNGD) will automatically
13648    be queried.
13649    The locations /var/run/egd-pool, /dev/egd-pool, /etc/egd-pool, and
13650    /etc/entropy will be queried once each in this sequence, querying stops
13651    when enough entropy was collected without querying more sockets.
13652
13653    *Lutz Jaenicke*
13654
13655  * Change the Unix RAND_poll() variant to be able to poll several
13656    random devices, as specified by DEVRANDOM, until a sufficient amount
13657    of data has been collected.   We spend at most 10 ms on each file
13658    (select timeout) and read in non-blocking mode.  DEVRANDOM now
13659    defaults to the list "/dev/urandom", "/dev/random", "/dev/srandom"
13660    (previously it was just the string "/dev/urandom"), so on typical
13661    platforms the 10 ms delay will never occur.
13662    Also separate out the Unix variant to its own file, rand_unix.c.
13663    For VMS, there's a currently-empty rand_vms.c.
13664
13665    *Richard Levitte*
13666
13667  * Move OCSP client related routines to ocsp_cl.c. These
13668    provide utility functions which an application needing
13669    to issue a request to an OCSP responder and analyse the
13670    response will typically need: as opposed to those which an
13671    OCSP responder itself would need which will be added later.
13672
13673    OCSP_request_sign() signs an OCSP request with an API similar
13674    to PKCS7_sign(). OCSP_response_status() returns status of OCSP
13675    response. OCSP_response_get1_basic() extracts basic response
13676    from response. OCSP_resp_find_status(): finds and extracts status
13677    information from an OCSP_CERTID structure (which will be created
13678    when the request structure is built). These are built from lower
13679    level functions which work on OCSP_SINGLERESP structures but
13680    won't normally be used unless the application wishes to examine
13681    extensions in the OCSP response for example.
13682
13683    Replace nonce routines with a pair of functions.
13684    OCSP_request_add1_nonce() adds a nonce value and optionally
13685    generates a random value. OCSP_check_nonce() checks the
13686    validity of the nonce in an OCSP response.
13687
13688    *Steve Henson*
13689
13690  * Change function OCSP_request_add() to OCSP_request_add0_id().
13691    This doesn't copy the supplied OCSP_CERTID and avoids the
13692    need to free up the newly created id. Change return type
13693    to OCSP_ONEREQ to return the internal OCSP_ONEREQ structure.
13694    This can then be used to add extensions to the request.
13695    Deleted OCSP_request_new(), since most of its functionality
13696    is now in OCSP_REQUEST_new() (and the case insensitive name
13697    clash) apart from the ability to set the request name which
13698    will be added elsewhere.
13699
13700    *Steve Henson*
13701
13702  * Update OCSP API. Remove obsolete extensions argument from
13703    various functions. Extensions are now handled using the new
13704    OCSP extension code. New simple OCSP HTTP function which
13705    can be used to send requests and parse the response.
13706
13707    *Steve Henson*
13708
13709  * Fix the PKCS#7 (S/MIME) code to work with new ASN1. Two new
13710    ASN1_ITEM structures help with sign and verify. PKCS7_ATTR_SIGN
13711    uses the special reorder version of SET OF to sort the attributes
13712    and reorder them to match the encoded order. This resolves a long
13713    standing problem: a verify on a PKCS7 structure just after signing
13714    it used to fail because the attribute order did not match the
13715    encoded order. PKCS7_ATTR_VERIFY does not reorder the attributes:
13716    it uses the received order. This is necessary to tolerate some broken
13717    software that does not order SET OF. This is handled by encoding
13718    as a SEQUENCE OF but using implicit tagging (with UNIVERSAL class)
13719    to produce the required SET OF.
13720
13721    *Steve Henson*
13722
13723  * Have mk1mf.pl generate the macros OPENSSL_BUILD_SHLIBCRYPTO and
13724    OPENSSL_BUILD_SHLIBSSL and use them appropriately in the header
13725    files to get correct declarations of the ASN.1 item variables.
13726
13727    *Richard Levitte*
13728
13729  * Rewrite of PKCS#12 code to use new ASN1 functionality. Replace many
13730    PKCS#12 macros with real functions. Fix two unrelated ASN1 bugs:
13731    asn1_check_tlen() would sometimes attempt to use 'ctx' when it was
13732    NULL and ASN1_TYPE was not dereferenced properly in asn1_ex_c2i().
13733    New ASN1 macro: DECLARE_ASN1_ITEM() which just declares the relevant
13734    ASN1_ITEM and no wrapper functions.
13735
13736    *Steve Henson*
13737
13738  * New functions or ASN1_item_d2i_fp() and ASN1_item_d2i_bio(). These
13739    replace the old function pointer based I/O routines. Change most of
13740    the `*_d2i_bio()` and `*_d2i_fp()` functions to use these.
13741
13742    *Steve Henson*
13743
13744  * Enhance mkdef.pl to be more accepting about spacing in C preprocessor
13745    lines, recognize more "algorithms" that can be deselected, and make
13746    it complain about algorithm deselection that isn't recognised.
13747
13748    *Richard Levitte*
13749
13750  * New ASN1 functions to handle dup, sign, verify, digest, pack and
13751    unpack operations in terms of ASN1_ITEM. Modify existing wrappers
13752    to use new functions. Add NO_ASN1_OLD which can be set to remove
13753    some old style ASN1 functions: this can be used to determine if old
13754    code will still work when these eventually go away.
13755
13756    *Steve Henson*
13757
13758  * New extension functions for OCSP structures, these follow the
13759    same conventions as certificates and CRLs.
13760
13761    *Steve Henson*
13762
13763  * New function X509V3_add1_i2d(). This automatically encodes and
13764    adds an extension. Its behaviour can be customised with various
13765    flags to append, replace or delete. Various wrappers added for
13766    certificates and CRLs.
13767
13768    *Steve Henson*
13769
13770  * Fix to avoid calling the underlying ASN1 print routine when
13771    an extension cannot be parsed. Correct a typo in the
13772    OCSP_SERVICELOC extension. Tidy up print OCSP format.
13773
13774    *Steve Henson*
13775
13776  * Make mkdef.pl parse some of the ASN1 macros and add appropriate
13777    entries for variables.
13778
13779    *Steve Henson*
13780
13781  * Add functionality to `apps/openssl.c` for detecting locking
13782    problems: As the program is single-threaded, all we have
13783    to do is register a locking callback using an array for
13784    storing which locks are currently held by the program.
13785
13786    *Bodo Moeller*
13787
13788  * Use a lock around the call to CRYPTO_get_ex_new_index() in
13789    SSL_get_ex_data_X509_STORE_idx(), which is used in
13790    ssl_verify_cert_chain() and thus can be called at any time
13791    during TLS/SSL handshakes so that thread-safety is essential.
13792    Unfortunately, the ex_data design is not at all suited
13793    for multi-threaded use, so it probably should be abolished.
13794
13795    *Bodo Moeller*
13796
13797  * Added Broadcom "ubsec" ENGINE to OpenSSL.
13798
13799    *Broadcom, tweaked and integrated by Geoff Thorpe*
13800
13801  * Move common extension printing code to new function
13802    X509V3_print_extensions(). Reorganise OCSP print routines and
13803    implement some needed OCSP ASN1 functions. Add OCSP extensions.
13804
13805    *Steve Henson*
13806
13807  * New function X509_signature_print() to remove duplication in some
13808    print routines.
13809
13810    *Steve Henson*
13811
13812  * Add a special meaning when SET OF and SEQUENCE OF flags are both
13813    set (this was treated exactly the same as SET OF previously). This
13814    is used to reorder the STACK representing the structure to match the
13815    encoding. This will be used to get round a problem where a PKCS7
13816    structure which was signed could not be verified because the STACK
13817    order did not reflect the encoded order.
13818
13819    *Steve Henson*
13820
13821  * Reimplement the OCSP ASN1 module using the new code.
13822
13823    *Steve Henson*
13824
13825  * Update the X509V3 code to permit the use of an ASN1_ITEM structure
13826    for its ASN1 operations. The old style function pointers still exist
13827    for now but they will eventually go away.
13828
13829    *Steve Henson*
13830
13831  * Merge in replacement ASN1 code from the ASN1 branch. This almost
13832    completely replaces the old ASN1 functionality with a table driven
13833    encoder and decoder which interprets an ASN1_ITEM structure describing
13834    the ASN1 module. Compatibility with the existing ASN1 API (i2d,d2i) is
13835    largely maintained. Almost all of the old asn1_mac.h macro based ASN1
13836    has also been converted to the new form.
13837
13838    *Steve Henson*
13839
13840  * Change BN_mod_exp_recp so that negative moduli are tolerated
13841    (the sign is ignored).  Similarly, ignore the sign in BN_MONT_CTX_set
13842    so that BN_mod_exp_mont and BN_mod_exp_mont_word work
13843    for negative moduli.
13844
13845    *Bodo Moeller*
13846
13847  * Fix BN_uadd and BN_usub: Always return non-negative results instead
13848    of not touching the result's sign bit.
13849
13850    *Bodo Moeller*
13851
13852  * BN_div bugfix: If the result is 0, the sign (res->neg) must not be
13853    set.
13854
13855    *Bodo Moeller*
13856
13857  * Changed the LHASH code to use prototypes for callbacks, and created
13858    macros to declare and implement thin (optionally static) functions
13859    that provide type-safety and avoid function pointer casting for the
13860    type-specific callbacks.
13861
13862    *Geoff Thorpe*
13863
13864  * Added Kerberos Cipher Suites to be used with TLS, as written in
13865    RFC 2712.
13866    *Veers Staats <staatsvr@asc.hpc.mil>,
13867    Jeffrey Altman <jaltman@columbia.edu>, via Richard Levitte*
13868
13869  * Reformat the FAQ so the different questions and answers can be divided
13870    in sections depending on the subject.
13871
13872    *Richard Levitte*
13873
13874  * Have the zlib compression code load ZLIB.DLL dynamically under
13875    Windows.
13876
13877    *Richard Levitte*
13878
13879  * New function BN_mod_sqrt for computing square roots modulo a prime
13880    (using the probabilistic Tonelli-Shanks algorithm unless
13881    p == 3 (mod 4)  or  p == 5 (mod 8),  which are cases that can
13882    be handled deterministically).
13883
13884    *Lenka Fibikova <fibikova@exp-math.uni-essen.de>, Bodo Moeller*
13885
13886  * Make BN_mod_inverse faster by explicitly handling small quotients
13887    in the Euclid loop. (Speed gain about 20% for small moduli [256 or
13888    512 bits], about 30% for larger ones [1024 or 2048 bits].)
13889
13890    *Bodo Moeller*
13891
13892  * New function BN_kronecker.
13893
13894    *Bodo Moeller*
13895
13896  * Fix BN_gcd so that it works on negative inputs; the result is
13897    positive unless both parameters are zero.
13898    Previously something reasonably close to an infinite loop was
13899    possible because numbers could be growing instead of shrinking
13900    in the implementation of Euclid's algorithm.
13901
13902    *Bodo Moeller*
13903
13904  * Fix BN_is_word() and BN_is_one() macros to take into account the
13905    sign of the number in question.
13906
13907    Fix BN_is_word(a,w) to work correctly for w == 0.
13908
13909    The old BN_is_word(a,w) macro is now called BN_abs_is_word(a,w)
13910    because its test if the absolute value of 'a' equals 'w'.
13911    Note that BN_abs_is_word does *not* handle w == 0 reliably;
13912    it exists mostly for use in the implementations of BN_is_zero(),
13913    BN_is_one(), and BN_is_word().
13914
13915    *Bodo Moeller*
13916
13917  * New function BN_swap.
13918
13919    *Bodo Moeller*
13920
13921  * Use BN_nnmod instead of BN_mod in crypto/bn/bn_exp.c so that
13922    the exponentiation functions are more likely to produce reasonable
13923    results on negative inputs.
13924
13925    *Bodo Moeller*
13926
13927  * Change BN_mod_mul so that the result is always non-negative.
13928    Previously, it could be negative if one of the factors was negative;
13929    I don't think anyone really wanted that behaviour.
13930
13931    *Bodo Moeller*
13932
13933  * Move `BN_mod_...` functions into new file `crypto/bn/bn_mod.c`
13934    (except for exponentiation, which stays in `crypto/bn/bn_exp.c`,
13935    and `BN_mod_mul_reciprocal`, which stays in `crypto/bn/bn_recp.c`)
13936    and add new functions:
13937
13938            BN_nnmod
13939            BN_mod_sqr
13940            BN_mod_add
13941            BN_mod_add_quick
13942            BN_mod_sub
13943            BN_mod_sub_quick
13944            BN_mod_lshift1
13945            BN_mod_lshift1_quick
13946            BN_mod_lshift
13947            BN_mod_lshift_quick
13948
13949    These functions always generate non-negative results.
13950
13951    `BN_nnmod` otherwise is `like BN_mod` (if `BN_mod` computes a remainder `r`
13952    such that `|m| < r < 0`, `BN_nnmod` will output `rem + |m|` instead).
13953
13954    `BN_mod_XXX_quick(r, a, [b,] m)` generates the same result as
13955    `BN_mod_XXX(r, a, [b,] m, ctx)`, but requires that `a` [and  `b`]
13956    be reduced modulo `m`.
13957
13958    *Lenka Fibikova <fibikova@exp-math.uni-essen.de>, Bodo Moeller*
13959
13960 <!--
13961    The following entry accidentally appeared in the CHANGES file
13962    distributed with OpenSSL 0.9.7.  The modifications described in
13963    it do *not* apply to OpenSSL 0.9.7.
13964
13965  * Remove a few calls to bn_wexpand() in BN_sqr() (the one in there
13966    was actually never needed) and in BN_mul().  The removal in BN_mul()
13967    required a small change in bn_mul_part_recursive() and the addition
13968    of the functions bn_cmp_part_words(), bn_sub_part_words() and
13969    bn_add_part_words(), which do the same thing as bn_cmp_words(),
13970    bn_sub_words() and bn_add_words() except they take arrays with
13971    differing sizes.
13972
13973    *Richard Levitte*
13974 -->
13975
13976  * In 'openssl passwd', verify passwords read from the terminal
13977    unless the '-salt' option is used (which usually means that
13978    verification would just waste user's time since the resulting
13979    hash is going to be compared with some given password hash)
13980    or the new '-noverify' option is used.
13981
13982    This is an incompatible change, but it does not affect
13983    non-interactive use of 'openssl passwd' (passwords on the command
13984    line, '-stdin' option, '-in ...' option) and thus should not
13985    cause any problems.
13986
13987    *Bodo Moeller*
13988
13989  * Remove all references to RSAref, since there's no more need for it.
13990
13991    *Richard Levitte*
13992
13993  * Make DSO load along a path given through an environment variable
13994    (SHLIB_PATH) with shl_load().
13995
13996    *Richard Levitte*
13997
13998  * Constify the ENGINE code as a result of BIGNUM constification.
13999    Also constify the RSA code and most things related to it.  In a
14000    few places, most notable in the depth of the ASN.1 code, ugly
14001    casts back to non-const were required (to be solved at a later
14002    time)
14003
14004    *Richard Levitte*
14005
14006  * Make it so the openssl application has all engines loaded by default.
14007
14008    *Richard Levitte*
14009
14010  * Constify the BIGNUM routines a little more.
14011
14012    *Richard Levitte*
14013
14014  * Add the following functions:
14015
14016            ENGINE_load_cswift()
14017            ENGINE_load_chil()
14018            ENGINE_load_atalla()
14019            ENGINE_load_nuron()
14020            ENGINE_load_builtin_engines()
14021
14022    That way, an application can itself choose if external engines that
14023    are built-in in OpenSSL shall ever be used or not.  The benefit is
14024    that applications won't have to be linked with libdl or other dso
14025    libraries unless it's really needed.
14026
14027    Changed 'openssl engine' to load all engines on demand.
14028    Changed the engine header files to avoid the duplication of some
14029    declarations (they differed!).
14030
14031    *Richard Levitte*
14032
14033  * 'openssl engine' can now list capabilities.
14034
14035    *Richard Levitte*
14036
14037  * Better error reporting in 'openssl engine'.
14038
14039    *Richard Levitte*
14040
14041  * Never call load_dh_param(NULL) in s_server.
14042
14043    *Bodo Moeller*
14044
14045  * Add engine application.  It can currently list engines by name and
14046    identity, and test if they are actually available.
14047
14048    *Richard Levitte*
14049
14050  * Improve RPM specification file by forcing symbolic linking and making
14051    sure the installed documentation is also owned by root.root.
14052
14053    *Damien Miller <djm@mindrot.org>*
14054
14055  * Give the OpenSSL applications more possibilities to make use of
14056    keys (public as well as private) handled by engines.
14057
14058    *Richard Levitte*
14059
14060  * Add OCSP code that comes from CertCo.
14061
14062    *Richard Levitte*
14063
14064  * Add VMS support for the Rijndael code.
14065
14066    *Richard Levitte*
14067
14068  * Added untested support for Nuron crypto accelerator.
14069
14070    *Ben Laurie*
14071
14072  * Add support for external cryptographic devices.  This code was
14073    previously distributed separately as the "engine" branch.
14074
14075    *Geoff Thorpe, Richard Levitte*
14076
14077  * Rework the filename-translation in the DSO code. It is now possible to
14078    have far greater control over how a "name" is turned into a filename
14079    depending on the operating environment and any oddities about the
14080    different shared library filenames on each system.
14081
14082    *Geoff Thorpe*
14083
14084  * Support threads on FreeBSD-elf in Configure.
14085
14086    *Richard Levitte*
14087
14088  * Fix for SHA1 assembly problem with MASM: it produces
14089    warnings about corrupt line number information when assembling
14090    with debugging information. This is caused by the overlapping
14091    of two sections.
14092
14093    *Bernd Matthes <mainbug@celocom.de>, Steve Henson*
14094
14095  * NCONF changes.
14096    NCONF_get_number() has no error checking at all.  As a replacement,
14097    NCONF_get_number_e() is defined (`_e` for "error checking") and is
14098    promoted strongly.  The old NCONF_get_number is kept around for
14099    binary backward compatibility.
14100    Make it possible for methods to load from something other than a BIO,
14101    by providing a function pointer that is given a name instead of a BIO.
14102    For example, this could be used to load configuration data from an
14103    LDAP server.
14104
14105    *Richard Levitte*
14106
14107  * Fix for non blocking accept BIOs. Added new I/O special reason
14108    BIO_RR_ACCEPT to cover this case. Previously use of accept BIOs
14109    with non blocking I/O was not possible because no retry code was
14110    implemented. Also added new SSL code SSL_WANT_ACCEPT to cover
14111    this case.
14112
14113    *Steve Henson*
14114
14115  * Added the beginnings of Rijndael support.
14116
14117    *Ben Laurie*
14118
14119  * Fix for bug in DirectoryString mask setting. Add support for
14120    X509_NAME_print_ex() in 'req' and X509_print_ex() function
14121    to allow certificate printing to more controllable, additional
14122    'certopt' option to 'x509' to allow new printing options to be
14123    set.
14124
14125    *Steve Henson*
14126
14127  * Clean old EAY MD5 hack from e_os.h.
14128
14129    *Richard Levitte*
14130
14131 ### Changes between 0.9.6l and 0.9.6m  [17 Mar 2004]
14132
14133  * Fix null-pointer assignment in do_change_cipher_spec() revealed
14134    by using the Codenomicon TLS Test Tool ([CVE-2004-0079])
14135
14136    *Joe Orton, Steve Henson*
14137
14138 ### Changes between 0.9.6k and 0.9.6l  [04 Nov 2003]
14139
14140  * Fix additional bug revealed by the NISCC test suite:
14141
14142    Stop bug triggering large recursion when presented with
14143    certain ASN.1 tags ([CVE-2003-0851])
14144
14145    *Steve Henson*
14146
14147 ### Changes between 0.9.6j and 0.9.6k  [30 Sep 2003]
14148
14149  * Fix various bugs revealed by running the NISCC test suite:
14150
14151    Stop out of bounds reads in the ASN1 code when presented with
14152    invalid tags (CVE-2003-0543 and CVE-2003-0544).
14153
14154    If verify callback ignores invalid public key errors don't try to check
14155    certificate signature with the NULL public key.
14156
14157    *Steve Henson*
14158
14159  * In ssl3_accept() (ssl/s3_srvr.c) only accept a client certificate
14160    if the server requested one: as stated in TLS 1.0 and SSL 3.0
14161    specifications.
14162
14163    *Steve Henson*
14164
14165  * In ssl3_get_client_hello() (ssl/s3_srvr.c), tolerate additional
14166    extra data after the compression methods not only for TLS 1.0
14167    but also for SSL 3.0 (as required by the specification).
14168
14169    *Bodo Moeller; problem pointed out by Matthias Loepfe*
14170
14171  * Change X509_certificate_type() to mark the key as exported/exportable
14172    when it's 512 *bits* long, not 512 bytes.
14173
14174    *Richard Levitte*
14175
14176 ### Changes between 0.9.6i and 0.9.6j  [10 Apr 2003]
14177
14178  * Countermeasure against the Klima-Pokorny-Rosa extension of
14179    Bleichbacher's attack on PKCS #1 v1.5 padding: treat
14180    a protocol version number mismatch like a decryption error
14181    in ssl3_get_client_key_exchange (ssl/s3_srvr.c).
14182
14183    *Bodo Moeller*
14184
14185  * Turn on RSA blinding by default in the default implementation
14186    to avoid a timing attack. Applications that don't want it can call
14187    RSA_blinding_off() or use the new flag RSA_FLAG_NO_BLINDING.
14188    They would be ill-advised to do so in most cases.
14189
14190    *Ben Laurie, Steve Henson, Geoff Thorpe, Bodo Moeller*
14191
14192  * Change RSA blinding code so that it works when the PRNG is not
14193    seeded (in this case, the secret RSA exponent is abused as
14194    an unpredictable seed -- if it is not unpredictable, there
14195    is no point in blinding anyway).  Make RSA blinding thread-safe
14196    by remembering the creator's thread ID in rsa->blinding and
14197    having all other threads use local one-time blinding factors
14198    (this requires more computation than sharing rsa->blinding, but
14199    avoids excessive locking; and if an RSA object is not shared
14200    between threads, blinding will still be very fast).
14201
14202    *Bodo Moeller*
14203
14204 ### Changes between 0.9.6h and 0.9.6i  [19 Feb 2003]
14205
14206  * In ssl3_get_record (ssl/s3_pkt.c), minimize information leaked
14207    via timing by performing a MAC computation even if incorrect
14208    block cipher padding has been found.  This is a countermeasure
14209    against active attacks where the attacker has to distinguish
14210    between bad padding and a MAC verification error. ([CVE-2003-0078])
14211
14212    *Bodo Moeller; problem pointed out by Brice Canvel (EPFL),
14213    Alain Hiltgen (UBS), Serge Vaudenay (EPFL), and
14214    Martin Vuagnoux (EPFL, Ilion)*
14215
14216 ### Changes between 0.9.6g and 0.9.6h  [5 Dec 2002]
14217
14218  * New function OPENSSL_cleanse(), which is used to cleanse a section of
14219    memory from its contents.  This is done with a counter that will
14220    place alternating values in each byte.  This can be used to solve
14221    two issues: 1) the removal of calls to memset() by highly optimizing
14222    compilers, and 2) cleansing with other values than 0, since those can
14223    be read through on certain media, for example a swap space on disk.
14224
14225    *Geoff Thorpe*
14226
14227  * Bugfix: client side session caching did not work with external caching,
14228    because the session->cipher setting was not restored when reloading
14229    from the external cache. This problem was masked, when
14230    SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG (part of SSL_OP_ALL) was set.
14231    (Found by Steve Haslam <steve@araqnid.ddts.net>.)
14232
14233    *Lutz Jaenicke*
14234
14235  * Fix client_certificate (ssl/s2_clnt.c): The permissible total
14236    length of the REQUEST-CERTIFICATE message is 18 .. 34, not 17 .. 33.
14237
14238    *Zeev Lieber <zeev-l@yahoo.com>*
14239
14240  * Undo an undocumented change introduced in 0.9.6e which caused
14241    repeated calls to OpenSSL_add_all_ciphers() and
14242    OpenSSL_add_all_digests() to be ignored, even after calling
14243    EVP_cleanup().
14244
14245    *Richard Levitte*
14246
14247  * Change the default configuration reader to deal with last line not
14248    being properly terminated.
14249
14250    *Richard Levitte*
14251
14252  * Change X509_NAME_cmp() so it applies the special rules on handling
14253    DN values that are of type PrintableString, as well as RDNs of type
14254    emailAddress where the value has the type ia5String.
14255
14256    *stefank@valicert.com via Richard Levitte*
14257
14258  * Add a SSL_SESS_CACHE_NO_INTERNAL_STORE flag to take over half
14259    the job SSL_SESS_CACHE_NO_INTERNAL_LOOKUP was inconsistently
14260    doing, define a new flag (SSL_SESS_CACHE_NO_INTERNAL) to be
14261    the bitwise-OR of the two for use by the majority of applications
14262    wanting this behaviour, and update the docs. The documented
14263    behaviour and actual behaviour were inconsistent and had been
14264    changing anyway, so this is more a bug-fix than a behavioural
14265    change.
14266
14267    *Geoff Thorpe, diagnosed by Nadav Har'El*
14268
14269  * Don't impose a 16-byte length minimum on session IDs in ssl/s3_clnt.c
14270    (the SSL 3.0 and TLS 1.0 specifications allow any length up to 32 bytes).
14271
14272    *Bodo Moeller*
14273
14274  * Fix initialization code race conditions in
14275            SSLv23_method(),  SSLv23_client_method(),   SSLv23_server_method(),
14276            SSLv2_method(),   SSLv2_client_method(),    SSLv2_server_method(),
14277            SSLv3_method(),   SSLv3_client_method(),    SSLv3_server_method(),
14278            TLSv1_method(),   TLSv1_client_method(),    TLSv1_server_method(),
14279            ssl2_get_cipher_by_char(),
14280            ssl3_get_cipher_by_char().
14281
14282    *Patrick McCormick <patrick@tellme.com>, Bodo Moeller*
14283
14284  * Reorder cleanup sequence in SSL_CTX_free(): only remove the ex_data after
14285    the cached sessions are flushed, as the remove_cb() might use ex_data
14286    contents. Bug found by Sam Varshavchik <mrsam@courier-mta.com>
14287    (see [openssl.org #212]).
14288
14289    *Geoff Thorpe, Lutz Jaenicke*
14290
14291  * Fix typo in OBJ_txt2obj which incorrectly passed the content
14292    length, instead of the encoding length to d2i_ASN1_OBJECT.
14293
14294    *Steve Henson*
14295
14296 ### Changes between 0.9.6f and 0.9.6g  [9 Aug 2002]
14297
14298  * [In 0.9.6g-engine release:]
14299    Fix crypto/engine/vendor_defns/cswift.h for WIN32 (use `_stdcall`).
14300
14301    *Lynn Gazis <lgazis@rainbow.com>*
14302
14303 ### Changes between 0.9.6e and 0.9.6f  [8 Aug 2002]
14304
14305  * Fix ASN1 checks. Check for overflow by comparing with LONG_MAX
14306    and get fix the header length calculation.
14307    *Florian Weimer <Weimer@CERT.Uni-Stuttgart.DE>,
14308    Alon Kantor <alonk@checkpoint.com> (and others), Steve Henson*
14309
14310  * Use proper error handling instead of 'assertions' in buffer
14311    overflow checks added in 0.9.6e.  This prevents DoS (the
14312    assertions could call abort()).
14313
14314    *Arne Ansper <arne@ats.cyber.ee>, Bodo Moeller*
14315
14316 ### Changes between 0.9.6d and 0.9.6e  [30 Jul 2002]
14317
14318  * Add various sanity checks to asn1_get_length() to reject
14319    the ASN1 length bytes if they exceed sizeof(long), will appear
14320    negative or the content length exceeds the length of the
14321    supplied buffer.
14322
14323    *Steve Henson, Adi Stav <stav@mercury.co.il>, James Yonan <jim@ntlp.com>*
14324
14325  * Fix cipher selection routines: ciphers without encryption had no flags
14326    for the cipher strength set and where therefore not handled correctly
14327    by the selection routines (PR #130).
14328
14329    *Lutz Jaenicke*
14330
14331  * Fix EVP_dsa_sha macro.
14332
14333    *Nils Larsch*
14334
14335  * New option
14336         SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS
14337    for disabling the SSL 3.0/TLS 1.0 CBC vulnerability countermeasure
14338    that was added in OpenSSL 0.9.6d.
14339
14340    As the countermeasure turned out to be incompatible with some
14341    broken SSL implementations, the new option is part of SSL_OP_ALL.
14342    SSL_OP_ALL is usually employed when compatibility with weird SSL
14343    implementations is desired (e.g. '-bugs' option to 's_client' and
14344    's_server'), so the new option is automatically set in many
14345    applications.
14346
14347    *Bodo Moeller*
14348
14349  * Changes in security patch:
14350
14351    Changes marked "(CHATS)" were sponsored by the Defense Advanced
14352    Research Projects Agency (DARPA) and Air Force Research Laboratory,
14353    Air Force Materiel Command, USAF, under agreement number
14354    F30602-01-2-0537.
14355
14356  * Add various sanity checks to asn1_get_length() to reject
14357    the ASN1 length bytes if they exceed sizeof(long), will appear
14358    negative or the content length exceeds the length of the
14359    supplied buffer. ([CVE-2002-0659])
14360
14361    *Steve Henson, Adi Stav <stav@mercury.co.il>, James Yonan <jim@ntlp.com>*
14362
14363  * Assertions for various potential buffer overflows, not known to
14364    happen in practice.
14365
14366    *Ben Laurie (CHATS)*
14367
14368  * Various temporary buffers to hold ASCII versions of integers were
14369    too small for 64 bit platforms. ([CVE-2002-0655])
14370    *Matthew Byng-Maddick <mbm@aldigital.co.uk> and Ben Laurie (CHATS)>*
14371
14372  * Remote buffer overflow in SSL3 protocol - an attacker could
14373    supply an oversized session ID to a client. ([CVE-2002-0656])
14374
14375    *Ben Laurie (CHATS)*
14376
14377  * Remote buffer overflow in SSL2 protocol - an attacker could
14378    supply an oversized client master key. ([CVE-2002-0656])
14379
14380    *Ben Laurie (CHATS)*
14381
14382 ### Changes between 0.9.6c and 0.9.6d  [9 May 2002]
14383
14384  * Fix crypto/asn1/a_sign.c so that 'parameters' is omitted (not
14385    encoded as NULL) with id-dsa-with-sha1.
14386
14387    *Nils Larsch <nla@trustcenter.de>; problem pointed out by Bodo Moeller*
14388
14389  * Check various `X509_...()` return values in `apps/req.c`.
14390
14391    *Nils Larsch <nla@trustcenter.de>*
14392
14393  * Fix BASE64 decode (EVP_DecodeUpdate) for data with CR/LF ended lines:
14394    an end-of-file condition would erroneously be flagged, when the CRLF
14395    was just at the end of a processed block. The bug was discovered when
14396    processing data through a buffering memory BIO handing the data to a
14397    BASE64-decoding BIO. Bug fund and patch submitted by Pavel Tsekov
14398    <ptsekov@syntrex.com> and Nedelcho Stanev.
14399
14400    *Lutz Jaenicke*
14401
14402  * Implement a countermeasure against a vulnerability recently found
14403    in CBC ciphersuites in SSL 3.0/TLS 1.0: Send an empty fragment
14404    before application data chunks to avoid the use of known IVs
14405    with data potentially chosen by the attacker.
14406
14407    *Bodo Moeller*
14408
14409  * Fix length checks in ssl3_get_client_hello().
14410
14411    *Bodo Moeller*
14412
14413  * TLS/SSL library bugfix: use s->s3->in_read_app_data differently
14414    to prevent ssl3_read_internal() from incorrectly assuming that
14415    ssl3_read_bytes() found application data while handshake
14416    processing was enabled when in fact s->s3->in_read_app_data was
14417    merely automatically cleared during the initial handshake.
14418
14419    *Bodo Moeller; problem pointed out by Arne Ansper <arne@ats.cyber.ee>*
14420
14421  * Fix object definitions for Private and Enterprise: they were not
14422    recognized in their shortname (=lowercase) representation. Extend
14423    obj_dat.pl to issue an error when using undefined keywords instead
14424    of silently ignoring the problem (Svenning Sorensen
14425    <sss@sss.dnsalias.net>).
14426
14427    *Lutz Jaenicke*
14428
14429  * Fix DH_generate_parameters() so that it works for 'non-standard'
14430    generators, i.e. generators other than 2 and 5.  (Previously, the
14431    code did not properly initialise the 'add' and 'rem' values to
14432    BN_generate_prime().)
14433
14434    In the new general case, we do not insist that 'generator' is
14435    actually a primitive root: This requirement is rather pointless;
14436    a generator of the order-q subgroup is just as good, if not
14437    better.
14438
14439    *Bodo Moeller*
14440
14441  * Map new X509 verification errors to alerts. Discovered and submitted by
14442    Tom Wu <tom@arcot.com>.
14443
14444    *Lutz Jaenicke*
14445
14446  * Fix ssl3_pending() (ssl/s3_lib.c) to prevent SSL_pending() from
14447    returning non-zero before the data has been completely received
14448    when using non-blocking I/O.
14449
14450    *Bodo Moeller; problem pointed out by John Hughes*
14451
14452  * Some of the ciphers missed the strength entry (SSL_LOW etc).
14453
14454    *Ben Laurie, Lutz Jaenicke*
14455
14456  * Fix bug in SSL_clear(): bad sessions were not removed (found by
14457    Yoram Zahavi <YoramZ@gilian.com>).
14458
14459    *Lutz Jaenicke*
14460
14461  * Add information about CygWin 1.3 and on, and preserve proper
14462    configuration for the versions before that.
14463
14464    *Corinna Vinschen <vinschen@redhat.com> and Richard Levitte*
14465
14466  * Make removal from session cache (SSL_CTX_remove_session()) more robust:
14467    check whether we deal with a copy of a session and do not delete from
14468    the cache in this case. Problem reported by "Izhar Shoshani Levi"
14469    <izhar@checkpoint.com>.
14470
14471    *Lutz Jaenicke*
14472
14473  * Do not store session data into the internal session cache, if it
14474    is never intended to be looked up (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP
14475    flag is set). Proposed by Aslam <aslam@funk.com>.
14476
14477    *Lutz Jaenicke*
14478
14479  * Have ASN1_BIT_STRING_set_bit() really clear a bit when the requested
14480    value is 0.
14481
14482    *Richard Levitte*
14483
14484  * [In 0.9.6d-engine release:]
14485    Fix a crashbug and a logic bug in hwcrhk_load_pubkey().
14486
14487    *Toomas Kiisk <vix@cyber.ee> via Richard Levitte*
14488
14489  * Add the configuration target linux-s390x.
14490
14491    *Neale Ferguson <Neale.Ferguson@SoftwareAG-USA.com> via Richard Levitte*
14492
14493  * The earlier bugfix for the SSL3_ST_SW_HELLO_REQ_C case of
14494    ssl3_accept (ssl/s3_srvr.c) incorrectly used a local flag
14495    variable as an indication that a ClientHello message has been
14496    received.  As the flag value will be lost between multiple
14497    invocations of ssl3_accept when using non-blocking I/O, the
14498    function may not be aware that a handshake has actually taken
14499    place, thus preventing a new session from being added to the
14500    session cache.
14501
14502    To avoid this problem, we now set s->new_session to 2 instead of
14503    using a local variable.
14504
14505    *Lutz Jaenicke, Bodo Moeller*
14506
14507  * Bugfix: Return -1 from ssl3_get_server_done (ssl3/s3_clnt.c)
14508    if the SSL_R_LENGTH_MISMATCH error is detected.
14509
14510    *Geoff Thorpe, Bodo Moeller*
14511
14512  * New 'shared_ldflag' column in Configure platform table.
14513
14514    *Richard Levitte*
14515
14516  * Fix EVP_CIPHER_mode macro.
14517
14518    *"Dan S. Camper" <dan@bti.net>*
14519
14520  * Fix ssl3_read_bytes (ssl/s3_pkt.c): To ignore messages of unknown
14521    type, we must throw them away by setting rr->length to 0.
14522
14523    *D P Chang <dpc@qualys.com>*
14524
14525 ### Changes between 0.9.6b and 0.9.6c  [21 dec 2001]
14526
14527  * Fix BN_rand_range bug pointed out by Dominikus Scherkl
14528    <Dominikus.Scherkl@biodata.com>.  (The previous implementation
14529    worked incorrectly for those cases where range = `10..._2`  and
14530    `3*range`  is two bits longer than  range.)
14531
14532    *Bodo Moeller*
14533
14534  * Only add signing time to PKCS7 structures if it is not already
14535    present.
14536
14537    *Steve Henson*
14538
14539  * Fix crypto/objects/objects.h: "ld-ce" should be "id-ce",
14540    OBJ_ld_ce should be OBJ_id_ce.
14541    Also some ip-pda OIDs in crypto/objects/objects.txt were
14542    incorrect (cf. RFC 3039).
14543
14544    *Matt Cooper, Frederic Giudicelli, Bodo Moeller*
14545
14546  * Release CRYPTO_LOCK_DYNLOCK when CRYPTO_destroy_dynlockid()
14547    returns early because it has nothing to do.
14548
14549    *Andy Schneider <andy.schneider@bjss.co.uk>*
14550
14551  * [In 0.9.6c-engine release:]
14552    Fix mutex callback return values in crypto/engine/hw_ncipher.c.
14553
14554    *Andy Schneider <andy.schneider@bjss.co.uk>*
14555
14556  * [In 0.9.6c-engine release:]
14557    Add support for Cryptographic Appliance's keyserver technology.
14558    (Use engine 'keyclient')
14559
14560    *Cryptographic Appliances and Geoff Thorpe*
14561
14562  * Add a configuration entry for OS/390 Unix.  The C compiler 'c89'
14563    is called via tools/c89.sh because arguments have to be
14564    rearranged (all '-L' options must appear before the first object
14565    modules).
14566
14567    *Richard Shapiro <rshapiro@abinitio.com>*
14568
14569  * [In 0.9.6c-engine release:]
14570    Add support for Broadcom crypto accelerator cards, backported
14571    from 0.9.7.
14572
14573    *Broadcom, Nalin Dahyabhai <nalin@redhat.com>, Mark Cox*
14574
14575  * [In 0.9.6c-engine release:]
14576    Add support for SureWare crypto accelerator cards from
14577    Baltimore Technologies.  (Use engine 'sureware')
14578
14579    *Baltimore Technologies and Mark Cox*
14580
14581  * [In 0.9.6c-engine release:]
14582    Add support for crypto accelerator cards from Accelerated
14583    Encryption Processing, www.aep.ie.  (Use engine 'aep')
14584
14585    *AEP Inc. and Mark Cox*
14586
14587  * Add a configuration entry for gcc on UnixWare.
14588
14589    *Gary Benson <gbenson@redhat.com>*
14590
14591  * Change ssl/s2_clnt.c and ssl/s2_srvr.c so that received handshake
14592    messages are stored in a single piece (fixed-length part and
14593    variable-length part combined) and fix various bugs found on the way.
14594
14595    *Bodo Moeller*
14596
14597  * Disable caching in BIO_gethostbyname(), directly use gethostbyname()
14598    instead.  BIO_gethostbyname() does not know what timeouts are
14599    appropriate, so entries would stay in cache even when they have
14600    become invalid.
14601    *Bodo Moeller; problem pointed out by Rich Salz <rsalz@zolera.com>*
14602
14603  * Change ssl23_get_client_hello (ssl/s23_srvr.c) behaviour when
14604    faced with a pathologically small ClientHello fragment that does
14605    not contain client_version: Instead of aborting with an error,
14606    simply choose the highest available protocol version (i.e.,
14607    TLS 1.0 unless it is disabled).  In practice, ClientHello
14608    messages are never sent like this, but this change gives us
14609    strictly correct behaviour at least for TLS.
14610
14611    *Bodo Moeller*
14612
14613  * Fix SSL handshake functions and SSL_clear() such that SSL_clear()
14614    never resets s->method to s->ctx->method when called from within
14615    one of the SSL handshake functions.
14616
14617    *Bodo Moeller; problem pointed out by Niko Baric*
14618
14619  * In ssl3_get_client_hello (ssl/s3_srvr.c), generate a fatal alert
14620    (sent using the client's version number) if client_version is
14621    smaller than the protocol version in use.  Also change
14622    ssl23_get_client_hello (ssl/s23_srvr.c) to select TLS 1.0 if
14623    the client demanded SSL 3.0 but only TLS 1.0 is enabled; then
14624    the client will at least see that alert.
14625
14626    *Bodo Moeller*
14627
14628  * Fix ssl3_get_message (ssl/s3_both.c) to handle message fragmentation
14629    correctly.
14630
14631    *Bodo Moeller*
14632
14633  * Avoid infinite loop in ssl3_get_message (ssl/s3_both.c) if a
14634    client receives HelloRequest while in a handshake.
14635
14636    *Bodo Moeller; bug noticed by Andy Schneider <andy.schneider@bjss.co.uk>*
14637
14638  * Bugfix in ssl3_accept (ssl/s3_srvr.c): Case SSL3_ST_SW_HELLO_REQ_C
14639    should end in 'break', not 'goto end' which circumvents various
14640    cleanups done in state SSL_ST_OK.   But session related stuff
14641    must be disabled for SSL_ST_OK in the case that we just sent a
14642    HelloRequest.
14643
14644    Also avoid some overhead by not calling ssl_init_wbio_buffer()
14645    before just sending a HelloRequest.
14646
14647    *Bodo Moeller, Eric Rescorla <ekr@rtfm.com>*
14648
14649  * Fix ssl/s3_enc.c, ssl/t1_enc.c and ssl/s3_pkt.c so that we don't
14650    reveal whether illegal block cipher padding was found or a MAC
14651    verification error occurred.  (Neither SSLerr() codes nor alerts
14652    are directly visible to potential attackers, but the information
14653    may leak via logfiles.)
14654
14655    Similar changes are not required for the SSL 2.0 implementation
14656    because the number of padding bytes is sent in clear for SSL 2.0,
14657    and the extra bytes are just ignored.  However ssl/s2_pkt.c
14658    failed to verify that the purported number of padding bytes is in
14659    the legal range.
14660
14661    *Bodo Moeller*
14662
14663  * Add OpenUNIX-8 support including shared libraries
14664    (Boyd Lynn Gerber <gerberb@zenez.com>).
14665
14666    *Lutz Jaenicke*
14667
14668  * Improve RSA_padding_check_PKCS1_OAEP() check again to avoid
14669    'wristwatch attack' using huge encoding parameters (cf.
14670    James H. Manger's CRYPTO 2001 paper).  Note that the
14671    RSA_PKCS1_OAEP_PADDING case of RSA_private_decrypt() does not use
14672    encoding parameters and hence was not vulnerable.
14673
14674    *Bodo Moeller*
14675
14676  * BN_sqr() bug fix.
14677
14678    *Ulf Möller, reported by Jim Ellis <jim.ellis@cavium.com>*
14679
14680  * Rabin-Miller test analyses assume uniformly distributed witnesses,
14681    so use BN_pseudo_rand_range() instead of using BN_pseudo_rand()
14682    followed by modular reduction.
14683
14684    *Bodo Moeller; pointed out by Adam Young <AYoung1@NCSUS.JNJ.COM>*
14685
14686  * Add BN_pseudo_rand_range() with obvious functionality: BN_rand_range()
14687    equivalent based on BN_pseudo_rand() instead of BN_rand().
14688
14689    *Bodo Moeller*
14690
14691  * s3_srvr.c: allow sending of large client certificate lists (> 16 kB).
14692    This function was broken, as the check for a new client hello message
14693    to handle SGC did not allow these large messages.
14694    (Tracked down by "Douglas E. Engert" <deengert@anl.gov>.)
14695
14696    *Lutz Jaenicke*
14697
14698  * Add alert descriptions for TLSv1 to `SSL_alert_desc_string[_long]()`.
14699
14700    *Lutz Jaenicke*
14701
14702  * Fix buggy behaviour of BIO_get_num_renegotiates() and BIO_ctrl()
14703    for BIO_C_GET_WRITE_BUF_SIZE ("Stephen Hinton" <shinton@netopia.com>).
14704
14705    *Lutz Jaenicke*
14706
14707  * Rework the configuration and shared library support for Tru64 Unix.
14708    The configuration part makes use of modern compiler features and
14709    still retains old compiler behavior for those that run older versions
14710    of the OS.  The shared library support part includes a variant that
14711    uses the RPATH feature, and is available through the special
14712    configuration target "alpha-cc-rpath", which will never be selected
14713    automatically.
14714
14715    *Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu> via Richard Levitte*
14716
14717  * In ssl3_get_key_exchange (ssl/s3_clnt.c), call ssl3_get_message()
14718    with the same message size as in ssl3_get_certificate_request().
14719    Otherwise, if no ServerKeyExchange message occurs, CertificateRequest
14720    messages might inadvertently be reject as too long.
14721
14722    *Petr Lampa <lampa@fee.vutbr.cz>*
14723
14724  * Enhanced support for IA-64 Unix platforms (well, Linux and HP-UX).
14725
14726    *Andy Polyakov*
14727
14728  * Modified SSL library such that the verify_callback that has been set
14729    specifically for an SSL object with SSL_set_verify() is actually being
14730    used. Before the change, a verify_callback set with this function was
14731    ignored and the verify_callback() set in the SSL_CTX at the time of
14732    the call was used. New function X509_STORE_CTX_set_verify_cb() introduced
14733    to allow the necessary settings.
14734
14735    *Lutz Jaenicke*
14736
14737  * Initialize static variable in crypto/dsa/dsa_lib.c and crypto/dh/dh_lib.c
14738    explicitly to NULL, as at least on Solaris 8 this seems not always to be
14739    done automatically (in contradiction to the requirements of the C
14740    standard). This made problems when used from OpenSSH.
14741
14742    *Lutz Jaenicke*
14743
14744  * In OpenSSL 0.9.6a and 0.9.6b, crypto/dh/dh_key.c ignored
14745    dh->length and always used
14746
14747            BN_rand_range(priv_key, dh->p).
14748
14749    BN_rand_range() is not necessary for Diffie-Hellman, and this
14750    specific range makes Diffie-Hellman unnecessarily inefficient if
14751    dh->length (recommended exponent length) is much smaller than the
14752    length of dh->p.  We could use BN_rand_range() if the order of
14753    the subgroup was stored in the DH structure, but we only have
14754    dh->length.
14755
14756    So switch back to
14757
14758            BN_rand(priv_key, l, ...)
14759
14760    where 'l' is dh->length if this is defined, or BN_num_bits(dh->p)-1
14761    otherwise.
14762
14763    *Bodo Moeller*
14764
14765  * In
14766
14767            RSA_eay_public_encrypt
14768            RSA_eay_private_decrypt
14769            RSA_eay_private_encrypt (signing)
14770            RSA_eay_public_decrypt (signature verification)
14771
14772    (default implementations for RSA_public_encrypt,
14773    RSA_private_decrypt, RSA_private_encrypt, RSA_public_decrypt),
14774    always reject numbers >= n.
14775
14776    *Bodo Moeller*
14777
14778  * In crypto/rand/md_rand.c, use a new short-time lock CRYPTO_LOCK_RAND2
14779    to synchronize access to 'locking_thread'.  This is necessary on
14780    systems where access to 'locking_thread' (an 'unsigned long'
14781    variable) is not atomic.
14782
14783    *Bodo Moeller*
14784
14785  * In crypto/rand/md_rand.c, set 'locking_thread' to current thread's ID
14786    *before* setting the 'crypto_lock_rand' flag.  The previous code had
14787    a race condition if 0 is a valid thread ID.
14788
14789    *Travis Vitek <vitek@roguewave.com>*
14790
14791  * Add support for shared libraries under Irix.
14792
14793    *Albert Chin-A-Young <china@thewrittenword.com>*
14794
14795  * Add configuration option to build on Linux on both big-endian and
14796    little-endian MIPS.
14797
14798    *Ralf Baechle <ralf@uni-koblenz.de>*
14799
14800  * Add the possibility to create shared libraries on HP-UX.
14801
14802    *Richard Levitte*
14803
14804 ### Changes between 0.9.6a and 0.9.6b  [9 Jul 2001]
14805
14806  * Change ssleay_rand_bytes (crypto/rand/md_rand.c)
14807    to avoid a SSLeay/OpenSSL PRNG weakness pointed out by
14808    Markku-Juhani O. Saarinen <markku-juhani.saarinen@nokia.com>:
14809    PRNG state recovery was possible based on the output of
14810    one PRNG request appropriately sized to gain knowledge on
14811    'md' followed by enough consecutive 1-byte PRNG requests
14812    to traverse all of 'state'.
14813
14814    1. When updating 'md_local' (the current thread's copy of 'md')
14815       during PRNG output generation, hash all of the previous
14816       'md_local' value, not just the half used for PRNG output.
14817
14818    2. Make the number of bytes from 'state' included into the hash
14819       independent from the number of PRNG bytes requested.
14820
14821    The first measure alone would be sufficient to avoid
14822    Markku-Juhani's attack.  (Actually it had never occurred
14823    to me that the half of 'md_local' used for chaining was the
14824    half from which PRNG output bytes were taken -- I had always
14825    assumed that the secret half would be used.)  The second
14826    measure makes sure that additional data from 'state' is never
14827    mixed into 'md_local' in small portions; this heuristically
14828    further strengthens the PRNG.
14829
14830    *Bodo Moeller*
14831
14832  * Fix crypto/bn/asm/mips3.s.
14833
14834    *Andy Polyakov*
14835
14836  * When only the key is given to "enc", the IV is undefined. Print out
14837    an error message in this case.
14838
14839    *Lutz Jaenicke*
14840
14841  * Handle special case when X509_NAME is empty in X509 printing routines.
14842
14843    *Steve Henson*
14844
14845  * In dsa_do_verify (crypto/dsa/dsa_ossl.c), verify that r and s are
14846    positive and less than q.
14847
14848    *Bodo Moeller*
14849
14850  * Don't change `*pointer` in CRYPTO_add_lock() is add_lock_callback is
14851    used: it isn't thread safe and the add_lock_callback should handle
14852    that itself.
14853
14854    *Paul Rose <Paul.Rose@bridge.com>*
14855
14856  * Verify that incoming data obeys the block size in
14857    ssl3_enc (ssl/s3_enc.c) and tls1_enc (ssl/t1_enc.c).
14858
14859    *Bodo Moeller*
14860
14861  * Fix OAEP check.
14862
14863    *Ulf Möller, Bodo Möller*
14864
14865  * The countermeasure against Bleichbacher's attack on PKCS #1 v1.5
14866    RSA encryption was accidentally removed in s3_srvr.c in OpenSSL 0.9.5
14867    when fixing the server behaviour for backwards-compatible 'client
14868    hello' messages.  (Note that the attack is impractical against
14869    SSL 3.0 and TLS 1.0 anyway because length and version checking
14870    means that the probability of guessing a valid ciphertext is
14871    around 2^-40; see section 5 in Bleichenbacher's CRYPTO '98
14872    paper.)
14873
14874    Before 0.9.5, the countermeasure (hide the error by generating a
14875    random 'decryption result') did not work properly because
14876    ERR_clear_error() was missing, meaning that SSL_get_error() would
14877    detect the supposedly ignored error.
14878
14879    Both problems are now fixed.
14880
14881    *Bodo Moeller*
14882
14883  * In crypto/bio/bf_buff.c, increase DEFAULT_BUFFER_SIZE to 4096
14884    (previously it was 1024).
14885
14886    *Bodo Moeller*
14887
14888  * Fix for compatibility mode trust settings: ignore trust settings
14889    unless some valid trust or reject settings are present.
14890
14891    *Steve Henson*
14892
14893  * Fix for blowfish EVP: its a variable length cipher.
14894
14895    *Steve Henson*
14896
14897  * Fix various bugs related to DSA S/MIME verification. Handle missing
14898    parameters in DSA public key structures and return an error in the
14899    DSA routines if parameters are absent.
14900
14901    *Steve Henson*
14902
14903  * In versions up to 0.9.6, RAND_file_name() resorted to file ".rnd"
14904    in the current directory if neither $RANDFILE nor $HOME was set.
14905    RAND_file_name() in 0.9.6a returned NULL in this case.  This has
14906    caused some confusion to Windows users who haven't defined $HOME.
14907    Thus RAND_file_name() is changed again: e_os.h can define a
14908    DEFAULT_HOME, which will be used if $HOME is not set.
14909    For Windows, we use "C:"; on other platforms, we still require
14910    environment variables.
14911
14912  * Move 'if (!initialized) RAND_poll()' into regions protected by
14913    CRYPTO_LOCK_RAND.  This is not strictly necessary, but avoids
14914    having multiple threads call RAND_poll() concurrently.
14915
14916    *Bodo Moeller*
14917
14918  * In crypto/rand/md_rand.c, replace 'add_do_not_lock' flag by a
14919    combination of a flag and a thread ID variable.
14920    Otherwise while one thread is in ssleay_rand_bytes (which sets the
14921    flag), *other* threads can enter ssleay_add_bytes without obeying
14922    the CRYPTO_LOCK_RAND lock (and may even illegally release the lock
14923    that they do not hold after the first thread unsets add_do_not_lock).
14924
14925    *Bodo Moeller*
14926
14927  * Change bctest again: '-x' expressions are not available in all
14928    versions of 'test'.
14929
14930    *Bodo Moeller*
14931
14932 ### Changes between 0.9.6 and 0.9.6a  [5 Apr 2001]
14933
14934  * Fix a couple of memory leaks in PKCS7_dataDecode()
14935
14936    *Steve Henson, reported by Heyun Zheng <hzheng@atdsprint.com>*
14937
14938  * Change Configure and Makefiles to provide EXE_EXT, which will contain
14939    the default extension for executables, if any.  Also, make the perl
14940    scripts that use symlink() to test if it really exists and use "cp"
14941    if it doesn't.  All this made OpenSSL compilable and installable in
14942    CygWin.
14943
14944    *Richard Levitte*
14945
14946  * Fix for asn1_GetSequence() for indefinite length constructed data.
14947    If SEQUENCE is length is indefinite just set c->slen to the total
14948    amount of data available.
14949
14950    *Steve Henson, reported by shige@FreeBSD.org*
14951
14952    *This change does not apply to 0.9.7.*
14953
14954  * Change bctest to avoid here-documents inside command substitution
14955    (workaround for FreeBSD /bin/sh bug).
14956    For compatibility with Ultrix, avoid shell functions (introduced
14957    in the bctest version that searches along $PATH).
14958
14959    *Bodo Moeller*
14960
14961  * Rename 'des_encrypt' to 'des_encrypt1'.  This avoids the clashes
14962    with des_encrypt() defined on some operating systems, like Solaris
14963    and UnixWare.
14964
14965    *Richard Levitte*
14966
14967  * Check the result of RSA-CRT (see D. Boneh, R. DeMillo, R. Lipton:
14968    On the Importance of Eliminating Errors in Cryptographic
14969    Computations, J. Cryptology 14 (2001) 2, 101-119,
14970    <http://theory.stanford.edu/~dabo/papers/faults.ps.gz>).
14971
14972    *Ulf Moeller*
14973
14974  * MIPS assembler BIGNUM division bug fix.
14975
14976    *Andy Polyakov*
14977
14978  * Disabled incorrect Alpha assembler code.
14979
14980    *Richard Levitte*
14981
14982  * Fix PKCS#7 decode routines so they correctly update the length
14983    after reading an EOC for the EXPLICIT tag.
14984
14985    *Steve Henson*
14986
14987    *This change does not apply to 0.9.7.*
14988
14989  * Fix bug in PKCS#12 key generation routines. This was triggered
14990    if a 3DES key was generated with a 0 initial byte. Include
14991    PKCS12_BROKEN_KEYGEN compilation option to retain the old
14992    (but broken) behaviour.
14993
14994    *Steve Henson*
14995
14996  * Enhance bctest to search for a working bc along $PATH and print
14997    it when found.
14998
14999    *Tim Rice <tim@multitalents.net> via Richard Levitte*
15000
15001  * Fix memory leaks in err.c: free err_data string if necessary;
15002    don't write to the wrong index in ERR_set_error_data.
15003
15004    *Bodo Moeller*
15005
15006  * Implement ssl23_peek (analogous to ssl23_read), which previously
15007    did not exist.
15008
15009    *Bodo Moeller*
15010
15011  * Replace rdtsc with `_emit` statements for VC++ version 5.
15012
15013    *Jeremy Cooper <jeremy@baymoo.org>*
15014
15015  * Make it possible to reuse SSLv2 sessions.
15016
15017    *Richard Levitte*
15018
15019  * In copy_email() check for >= 0 as a return value for
15020    X509_NAME_get_index_by_NID() since 0 is a valid index.
15021
15022    *Steve Henson reported by Massimiliano Pala <madwolf@opensca.org>*
15023
15024  * Avoid coredump with unsupported or invalid public keys by checking if
15025    X509_get_pubkey() fails in PKCS7_verify(). Fix memory leak when
15026    PKCS7_verify() fails with non detached data.
15027
15028    *Steve Henson*
15029
15030  * Don't use getenv in library functions when run as setuid/setgid.
15031    New function OPENSSL_issetugid().
15032
15033    *Ulf Moeller*
15034
15035  * Avoid false positives in memory leak detection code (crypto/mem_dbg.c)
15036    due to incorrect handling of multi-threading:
15037
15038    1. Fix timing glitch in the MemCheck_off() portion of CRYPTO_mem_ctrl().
15039
15040    2. Fix logical glitch in is_MemCheck_on() aka CRYPTO_is_mem_check_on().
15041
15042    3. Count how many times MemCheck_off() has been called so that
15043       nested use can be treated correctly.  This also avoids
15044       inband-signalling in the previous code (which relied on the
15045       assumption that thread ID 0 is impossible).
15046
15047    *Bodo Moeller*
15048
15049  * Add "-rand" option also to s_client and s_server.
15050
15051    *Lutz Jaenicke*
15052
15053  * Fix CPU detection on Irix 6.x.
15054    *Kurt Hockenbury <khockenb@stevens-tech.edu> and
15055    "Bruce W. Forsberg" <bruce.forsberg@baesystems.com>*
15056
15057  * Fix X509_NAME bug which produced incorrect encoding if X509_NAME
15058    was empty.
15059
15060    *Steve Henson*
15061
15062    *This change does not apply to 0.9.7.*
15063
15064  * Use the cached encoding of an X509_NAME structure rather than
15065    copying it. This is apparently the reason for the libsafe "errors"
15066    but the code is actually correct.
15067
15068    *Steve Henson*
15069
15070  * Add new function BN_rand_range(), and fix DSA_sign_setup() to prevent
15071    Bleichenbacher's DSA attack.
15072    Extend BN_[pseudo_]rand: As before, top=1 forces the highest two bits
15073    to be set and top=0 forces the highest bit to be set; top=-1 is new
15074    and leaves the highest bit random.
15075
15076    *Ulf Moeller, Bodo Moeller*
15077
15078  * In the `NCONF_...`-based implementations for `CONF_...` queries
15079    (crypto/conf/conf_lib.c), if the input LHASH is NULL, avoid using
15080    a temporary CONF structure with the data component set to NULL
15081    (which gives segmentation faults in lh_retrieve).
15082    Instead, use NULL for the CONF pointer in CONF_get_string and
15083    CONF_get_number (which may use environment variables) and directly
15084    return NULL from CONF_get_section.
15085
15086    *Bodo Moeller*
15087
15088  * Fix potential buffer overrun for EBCDIC.
15089
15090    *Ulf Moeller*
15091
15092  * Tolerate nonRepudiation as being valid for S/MIME signing and certSign
15093    keyUsage if basicConstraints absent for a CA.
15094
15095    *Steve Henson*
15096
15097  * Make SMIME_write_PKCS7() write mail header values with a format that
15098    is more generally accepted (no spaces before the semicolon), since
15099    some programs can't parse those values properly otherwise.  Also make
15100    sure BIO's that break lines after each write do not create invalid
15101    headers.
15102
15103    *Richard Levitte*
15104
15105  * Make the CRL encoding routines work with empty SEQUENCE OF. The
15106    macros previously used would not encode an empty SEQUENCE OF
15107    and break the signature.
15108
15109    *Steve Henson*
15110
15111    *This change does not apply to 0.9.7.*
15112
15113  * Zero the premaster secret after deriving the master secret in
15114    DH ciphersuites.
15115
15116    *Steve Henson*
15117
15118  * Add some EVP_add_digest_alias registrations (as found in
15119    OpenSSL_add_all_digests()) to SSL_library_init()
15120    aka OpenSSL_add_ssl_algorithms().  This provides improved
15121    compatibility with peers using X.509 certificates
15122    with unconventional AlgorithmIdentifier OIDs.
15123
15124    *Bodo Moeller*
15125
15126  * Fix for Irix with NO_ASM.
15127
15128    *"Bruce W. Forsberg" <bruce.forsberg@baesystems.com>*
15129
15130  * ./config script fixes.
15131
15132    *Ulf Moeller, Richard Levitte*
15133
15134  * Fix 'openssl passwd -1'.
15135
15136    *Bodo Moeller*
15137
15138  * Change PKCS12_key_gen_asc() so it can cope with non null
15139    terminated strings whose length is passed in the passlen
15140    parameter, for example from PEM callbacks. This was done
15141    by adding an extra length parameter to asc2uni().
15142
15143    *Steve Henson, reported by <oddissey@samsung.co.kr>*
15144
15145  * Fix C code generated by 'openssl dsaparam -C': If a BN_bin2bn
15146    call failed, free the DSA structure.
15147
15148    *Bodo Moeller*
15149
15150  * Fix to uni2asc() to cope with zero length Unicode strings.
15151    These are present in some PKCS#12 files.
15152
15153    *Steve Henson*
15154
15155  * Increase s2->wbuf allocation by one byte in ssl2_new (ssl/s2_lib.c).
15156    Otherwise do_ssl_write (ssl/s2_pkt.c) will write beyond buffer limits
15157    when writing a 32767 byte record.
15158
15159    *Bodo Moeller; problem reported by Eric Day <eday@concentric.net>*
15160
15161  * In `RSA_eay_public_{en,ed}crypt` and RSA_eay_mod_exp (rsa_eay.c),
15162    obtain lock CRYPTO_LOCK_RSA before setting `rsa->_method_mod_{n,p,q}`.
15163
15164    (RSA objects have a reference count access to which is protected
15165    by CRYPTO_LOCK_RSA [see rsa_lib.c, s3_srvr.c, ssl_cert.c, ssl_rsa.c],
15166    so they are meant to be shared between threads.)
15167    *Bodo Moeller, Geoff Thorpe; original patch submitted by
15168    "Reddie, Steven" <Steven.Reddie@ca.com>*
15169
15170  * Fix a deadlock in CRYPTO_mem_leaks().
15171
15172    *Bodo Moeller*
15173
15174  * Use better test patterns in bntest.
15175
15176    *Ulf Möller*
15177
15178  * rand_win.c fix for Borland C.
15179
15180    *Ulf Möller*
15181
15182  * BN_rshift bugfix for n == 0.
15183
15184    *Bodo Moeller*
15185
15186  * Add a 'bctest' script that checks for some known 'bc' bugs
15187    so that 'make test' does not abort just because 'bc' is broken.
15188
15189    *Bodo Moeller*
15190
15191  * Store verify_result within SSL_SESSION also for client side to
15192    avoid potential security hole. (Re-used sessions on the client side
15193    always resulted in verify_result==X509_V_OK, not using the original
15194    result of the server certificate verification.)
15195
15196    *Lutz Jaenicke*
15197
15198  * Fix ssl3_pending: If the record in s->s3->rrec is not of type
15199    SSL3_RT_APPLICATION_DATA, return 0.
15200    Similarly, change ssl2_pending to return 0 if SSL_in_init(s) is true.
15201
15202    *Bodo Moeller*
15203
15204  * Fix SSL_peek:
15205    Both ssl2_peek and ssl3_peek, which were totally broken in earlier
15206    releases, have been re-implemented by renaming the previous
15207    implementations of ssl2_read and ssl3_read to ssl2_read_internal
15208    and ssl3_read_internal, respectively, and adding 'peek' parameters
15209    to them.  The new ssl[23]_{read,peek} functions are calls to
15210    ssl[23]_read_internal with the 'peek' flag set appropriately.
15211    A 'peek' parameter has also been added to ssl3_read_bytes, which
15212    does the actual work for ssl3_read_internal.
15213
15214    *Bodo Moeller*
15215
15216  * Initialise "ex_data" member of RSA/DSA/DH structures prior to calling
15217    the method-specific "init()" handler. Also clean up ex_data after
15218    calling the method-specific "finish()" handler. Previously, this was
15219    happening the other way round.
15220
15221    *Geoff Thorpe*
15222
15223  * Increase BN_CTX_NUM (the number of BIGNUMs in a BN_CTX) to 16.
15224    The previous value, 12, was not always sufficient for BN_mod_exp().
15225
15226    *Bodo Moeller*
15227
15228  * Make sure that shared libraries get the internal name engine with
15229    the full version number and not just 0.  This should mark the
15230    shared libraries as not backward compatible.  Of course, this should
15231    be changed again when we can guarantee backward binary compatibility.
15232
15233    *Richard Levitte*
15234
15235  * Fix typo in get_cert_by_subject() in by_dir.c
15236
15237    *Jean-Marc Desperrier <jean-marc.desperrier@certplus.com>*
15238
15239  * Rework the system to generate shared libraries:
15240
15241    - Make note of the expected extension for the shared libraries and
15242      if there is a need for symbolic links from for example libcrypto.so.0
15243      to libcrypto.so.0.9.7.  There is extended info in Configure for
15244      that.
15245
15246    - Make as few rebuilds of the shared libraries as possible.
15247
15248    - Still avoid linking the OpenSSL programs with the shared libraries.
15249
15250    - When installing, install the shared libraries separately from the
15251      static ones.
15252
15253    *Richard Levitte*
15254
15255  * Fix SSL_CTX_set_read_ahead macro to actually use its argument.
15256
15257    Copy SSL_CTX's read_ahead flag to SSL object directly in SSL_new
15258    and not in SSL_clear because the latter is also used by the
15259    accept/connect functions; previously, the settings made by
15260    SSL_set_read_ahead would be lost during the handshake.
15261
15262    *Bodo Moeller; problems reported by Anders Gertz <gertz@epact.se>*
15263
15264  * Correct util/mkdef.pl to be selective about disabled algorithms.
15265    Previously, it would create entries for disabled algorithms no
15266    matter what.
15267
15268    *Richard Levitte*
15269
15270  * Added several new manual pages for SSL_* function.
15271
15272    *Lutz Jaenicke*
15273
15274 ### Changes between 0.9.5a and 0.9.6  [24 Sep 2000]
15275
15276  * In ssl23_get_client_hello, generate an error message when faced
15277    with an initial SSL 3.0/TLS record that is too small to contain the
15278    first two bytes of the ClientHello message, i.e. client_version.
15279    (Note that this is a pathologic case that probably has never happened
15280    in real life.)  The previous approach was to use the version number
15281    from the record header as a substitute; but our protocol choice
15282    should not depend on that one because it is not authenticated
15283    by the Finished messages.
15284
15285    *Bodo Moeller*
15286
15287  * More robust randomness gathering functions for Windows.
15288
15289    *Jeffrey Altman <jaltman@columbia.edu>*
15290
15291  * For compatibility reasons if the flag X509_V_FLAG_ISSUER_CHECK is
15292    not set then we don't setup the error code for issuer check errors
15293    to avoid possibly overwriting other errors which the callback does
15294    handle. If an application does set the flag then we assume it knows
15295    what it is doing and can handle the new informational codes
15296    appropriately.
15297
15298    *Steve Henson*
15299
15300  * Fix for a nasty bug in ASN1_TYPE handling. ASN1_TYPE is used for
15301    a general "ANY" type, as such it should be able to decode anything
15302    including tagged types. However it didn't check the class so it would
15303    wrongly interpret tagged types in the same way as their universal
15304    counterpart and unknown types were just rejected. Changed so that the
15305    tagged and unknown types are handled in the same way as a SEQUENCE:
15306    that is the encoding is stored intact. There is also a new type
15307    "V_ASN1_OTHER" which is used when the class is not universal, in this
15308    case we have no idea what the actual type is so we just lump them all
15309    together.
15310
15311    *Steve Henson*
15312
15313  * On VMS, stdout may very well lead to a file that is written to
15314    in a record-oriented fashion.  That means that every write() will
15315    write a separate record, which will be read separately by the
15316    programs trying to read from it.  This can be very confusing.
15317
15318    The solution is to put a BIO filter in the way that will buffer
15319    text until a linefeed is reached, and then write everything a
15320    line at a time, so every record written will be an actual line,
15321    not chunks of lines and not (usually doesn't happen, but I've
15322    seen it once) several lines in one record.  BIO_f_linebuffer() is
15323    the answer.
15324
15325    Currently, it's a VMS-only method, because that's where it has
15326    been tested well enough.
15327
15328    *Richard Levitte*
15329
15330  * Remove 'optimized' squaring variant in BN_mod_mul_montgomery,
15331    it can return incorrect results.
15332    (Note: The buggy variant was not enabled in OpenSSL 0.9.5a,
15333    but it was in 0.9.6-beta[12].)
15334
15335    *Bodo Moeller*
15336
15337  * Disable the check for content being present when verifying detached
15338    signatures in pk7_smime.c. Some versions of Netscape (wrongly)
15339    include zero length content when signing messages.
15340
15341    *Steve Henson*
15342
15343  * New BIO_shutdown_wr macro, which invokes the BIO_C_SHUTDOWN_WR
15344    BIO_ctrl (for BIO pairs).
15345
15346    *Bodo Möller*
15347
15348  * Add DSO method for VMS.
15349
15350    *Richard Levitte*
15351
15352  * Bug fix: Montgomery multiplication could produce results with the
15353    wrong sign.
15354
15355    *Ulf Möller*
15356
15357  * Add RPM specification openssl.spec and modify it to build three
15358    packages.  The default package contains applications, application
15359    documentation and run-time libraries.  The devel package contains
15360    include files, static libraries and function documentation.  The
15361    doc package contains the contents of the doc directory.  The original
15362    openssl.spec was provided by Damien Miller <djm@mindrot.org>.
15363
15364    *Richard Levitte*
15365
15366  * Add a large number of documentation files for many SSL routines.
15367
15368    *Lutz Jaenicke <Lutz.Jaenicke@aet.TU-Cottbus.DE>*
15369
15370  * Add a configuration entry for Sony News 4.
15371
15372    *NAKAJI Hiroyuki <nakaji@tutrp.tut.ac.jp>*
15373
15374  * Don't set the two most significant bits to one when generating a
15375    random number < q in the DSA library.
15376
15377    *Ulf Möller*
15378
15379  * New SSL API mode 'SSL_MODE_AUTO_RETRY'.  This disables the default
15380    behaviour that SSL_read may result in SSL_ERROR_WANT_READ (even if
15381    the underlying transport is blocking) if a handshake took place.
15382    (The default behaviour is needed by applications such as s_client
15383    and s_server that use select() to determine when to use SSL_read;
15384    but for applications that know in advance when to expect data, it
15385    just makes things more complicated.)
15386
15387    *Bodo Moeller*
15388
15389  * Add RAND_egd_bytes(), which gives control over the number of bytes read
15390    from EGD.
15391
15392    *Ben Laurie*
15393
15394  * Add a few more EBCDIC conditionals that make `req` and `x509`
15395    work better on such systems.
15396
15397    *Martin Kraemer <Martin.Kraemer@MchP.Siemens.De>*
15398
15399  * Add two demo programs for PKCS12_parse() and PKCS12_create().
15400    Update PKCS12_parse() so it copies the friendlyName and the
15401    keyid to the certificates aux info.
15402
15403    *Steve Henson*
15404
15405  * Fix bug in PKCS7_verify() which caused an infinite loop
15406    if there was more than one signature.
15407
15408    *Sven Uszpelkat <su@celocom.de>*
15409
15410  * Major change in util/mkdef.pl to include extra information
15411    about each symbol, as well as presenting variables as well
15412    as functions.  This change means that there's n more need
15413    to rebuild the .num files when some algorithms are excluded.
15414
15415    *Richard Levitte*
15416
15417  * Allow the verify time to be set by an application,
15418    rather than always using the current time.
15419
15420    *Steve Henson*
15421
15422  * Phase 2 verify code reorganisation. The certificate
15423    verify code now looks up an issuer certificate by a
15424    number of criteria: subject name, authority key id
15425    and key usage. It also verifies self signed certificates
15426    by the same criteria. The main comparison function is
15427    X509_check_issued() which performs these checks.
15428
15429    Lot of changes were necessary in order to support this
15430    without completely rewriting the lookup code.
15431
15432    Authority and subject key identifier are now cached.
15433
15434    The LHASH 'certs' is X509_STORE has now been replaced
15435    by a STACK_OF(X509_OBJECT). This is mainly because an
15436    LHASH can't store or retrieve multiple objects with
15437    the same hash value.
15438
15439    As a result various functions (which were all internal
15440    use only) have changed to handle the new X509_STORE
15441    structure. This will break anything that messed round
15442    with X509_STORE internally.
15443
15444    The functions X509_STORE_add_cert() now checks for an
15445    exact match, rather than just subject name.
15446
15447    The X509_STORE API doesn't directly support the retrieval
15448    of multiple certificates matching a given criteria, however
15449    this can be worked round by performing a lookup first
15450    (which will fill the cache with candidate certificates)
15451    and then examining the cache for matches. This is probably
15452    the best we can do without throwing out X509_LOOKUP
15453    entirely (maybe later...).
15454
15455    The X509_VERIFY_CTX structure has been enhanced considerably.
15456
15457    All certificate lookup operations now go via a get_issuer()
15458    callback. Although this currently uses an X509_STORE it
15459    can be replaced by custom lookups. This is a simple way
15460    to bypass the X509_STORE hackery necessary to make this
15461    work and makes it possible to use more efficient techniques
15462    in future. A very simple version which uses a simple
15463    STACK for its trusted certificate store is also provided
15464    using X509_STORE_CTX_trusted_stack().
15465
15466    The verify_cb() and verify() callbacks now have equivalents
15467    in the X509_STORE_CTX structure.
15468
15469    X509_STORE_CTX also has a 'flags' field which can be used
15470    to customise the verify behaviour.
15471
15472    *Steve Henson*
15473
15474  * Add new PKCS#7 signing option PKCS7_NOSMIMECAP which
15475    excludes S/MIME capabilities.
15476
15477    *Steve Henson*
15478
15479  * When a certificate request is read in keep a copy of the
15480    original encoding of the signed data and use it when outputting
15481    again. Signatures then use the original encoding rather than
15482    a decoded, encoded version which may cause problems if the
15483    request is improperly encoded.
15484
15485    *Steve Henson*
15486
15487  * For consistency with other BIO_puts implementations, call
15488    buffer_write(b, ...) directly in buffer_puts instead of calling
15489    BIO_write(b, ...).
15490
15491    In BIO_puts, increment b->num_write as in BIO_write.
15492
15493    *Peter.Sylvester@EdelWeb.fr*
15494
15495  * Fix BN_mul_word for the case where the word is 0. (We have to use
15496    BN_zero, we may not return a BIGNUM with an array consisting of
15497    words set to zero.)
15498
15499    *Bodo Moeller*
15500
15501  * Avoid calling abort() from within the library when problems are
15502    detected, except if preprocessor symbols have been defined
15503    (such as REF_CHECK, BN_DEBUG etc.).
15504
15505    *Bodo Moeller*
15506
15507  * New openssl application 'rsautl'. This utility can be
15508    used for low-level RSA operations. DER public key
15509    BIO/fp routines also added.
15510
15511    *Steve Henson*
15512
15513  * New Configure entry and patches for compiling on QNX 4.
15514
15515    *Andreas Schneider <andreas@ds3.etech.fh-hamburg.de>*
15516
15517  * A demo state-machine implementation was sponsored by
15518    Nuron (<http://www.nuron.com/>) and is now available in
15519    demos/state_machine.
15520
15521    *Ben Laurie*
15522
15523  * New options added to the 'dgst' utility for signature
15524    generation and verification.
15525
15526    *Steve Henson*
15527
15528  * Unrecognized PKCS#7 content types are now handled via a
15529    catch all ASN1_TYPE structure. This allows unsupported
15530    types to be stored as a "blob" and an application can
15531    encode and decode it manually.
15532
15533    *Steve Henson*
15534
15535  * Fix various signed/unsigned issues to make a_strex.c
15536    compile under VC++.
15537
15538    *Oscar Jacobsson <oscar.jacobsson@celocom.com>*
15539
15540  * ASN1 fixes. i2d_ASN1_OBJECT was not returning the correct
15541    length if passed a buffer. ASN1_INTEGER_to_BN failed
15542    if passed a NULL BN and its argument was negative.
15543
15544    *Steve Henson, pointed out by Sven Heiberg <sven@tartu.cyber.ee>*
15545
15546  * Modification to PKCS#7 encoding routines to output definite
15547    length encoding. Since currently the whole structures are in
15548    memory there's not real point in using indefinite length
15549    constructed encoding. However if OpenSSL is compiled with
15550    the flag PKCS7_INDEFINITE_ENCODING the old form is used.
15551
15552    *Steve Henson*
15553
15554  * Added BIO_vprintf() and BIO_vsnprintf().
15555
15556    *Richard Levitte*
15557
15558  * Added more prefixes to parse for in the strings written
15559    through a logging bio, to cover all the levels that are available
15560    through syslog.  The prefixes are now:
15561
15562            PANIC, EMERG, EMR       =>      LOG_EMERG
15563            ALERT, ALR              =>      LOG_ALERT
15564            CRIT, CRI               =>      LOG_CRIT
15565            ERROR, ERR              =>      LOG_ERR
15566            WARNING, WARN, WAR      =>      LOG_WARNING
15567            NOTICE, NOTE, NOT       =>      LOG_NOTICE
15568            INFO, INF               =>      LOG_INFO
15569            DEBUG, DBG              =>      LOG_DEBUG
15570
15571    and as before, if none of those prefixes are present at the
15572    beginning of the string, LOG_ERR is chosen.
15573
15574    On Win32, the `LOG_*` levels are mapped according to this:
15575
15576            LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR => EVENTLOG_ERROR_TYPE
15577            LOG_WARNING                             => EVENTLOG_WARNING_TYPE
15578            LOG_NOTICE, LOG_INFO, LOG_DEBUG         => EVENTLOG_INFORMATION_TYPE
15579
15580    *Richard Levitte*
15581
15582  * Made it possible to reconfigure with just the configuration
15583    argument "reconf" or "reconfigure".  The command line arguments
15584    are stored in Makefile.ssl in the variable CONFIGURE_ARGS,
15585    and are retrieved from there when reconfiguring.
15586
15587    *Richard Levitte*
15588
15589  * MD4 implemented.
15590
15591    *Assar Westerlund <assar@sics.se>, Richard Levitte*
15592
15593  * Add the arguments -CAfile and -CApath to the pkcs12 utility.
15594
15595    *Richard Levitte*
15596
15597  * The obj_dat.pl script was messing up the sorting of object
15598    names. The reason was that it compared the quoted version
15599    of strings as a result "OCSP" > "OCSP Signing" because
15600    " > SPACE. Changed script to store unquoted versions of
15601    names and add quotes on output. It was also omitting some
15602    names from the lookup table if they were given a default
15603    value (that is if SN is missing it is given the same
15604    value as LN and vice versa), these are now added on the
15605    grounds that if an object has a name we should be able to
15606    look it up. Finally added warning output when duplicate
15607    short or long names are found.
15608
15609    *Steve Henson*
15610
15611  * Changes needed for Tandem NSK.
15612
15613    *Scott Uroff <scott@xypro.com>*
15614
15615  * Fix SSL 2.0 rollback checking: Due to an off-by-one error in
15616    RSA_padding_check_SSLv23(), special padding was never detected
15617    and thus the SSL 3.0/TLS 1.0 countermeasure against protocol
15618    version rollback attacks was not effective.
15619
15620    In s23_clnt.c, don't use special rollback-attack detection padding
15621    (RSA_SSLV23_PADDING) if SSL 2.0 is the only protocol enabled in the
15622    client; similarly, in s23_srvr.c, don't do the rollback check if
15623    SSL 2.0 is the only protocol enabled in the server.
15624
15625    *Bodo Moeller*
15626
15627  * Make it possible to get hexdumps of unprintable data with 'openssl
15628    asn1parse'.  By implication, the functions ASN1_parse_dump() and
15629    BIO_dump_indent() are added.
15630
15631    *Richard Levitte*
15632
15633  * New functions ASN1_STRING_print_ex() and X509_NAME_print_ex()
15634    these print out strings and name structures based on various
15635    flags including RFC2253 support and proper handling of
15636    multibyte characters. Added options to the 'x509' utility
15637    to allow the various flags to be set.
15638
15639    *Steve Henson*
15640
15641  * Various fixes to use ASN1_TIME instead of ASN1_UTCTIME.
15642    Also change the functions X509_cmp_current_time() and
15643    X509_gmtime_adj() work with an ASN1_TIME structure,
15644    this will enable certificates using GeneralizedTime in validity
15645    dates to be checked.
15646
15647    *Steve Henson*
15648
15649  * Make the NEG_PUBKEY_BUG code (which tolerates invalid
15650    negative public key encodings) on by default,
15651    NO_NEG_PUBKEY_BUG can be set to disable it.
15652
15653    *Steve Henson*
15654
15655  * New function c2i_ASN1_OBJECT() which acts on ASN1_OBJECT
15656    content octets. An i2c_ASN1_OBJECT is unnecessary because
15657    the encoding can be trivially obtained from the structure.
15658
15659    *Steve Henson*
15660
15661  * crypto/err.c locking bugfix: Use write locks (`CRYPTO_w_[un]lock`),
15662    not read locks (`CRYPTO_r_[un]lock`).
15663
15664    *Bodo Moeller*
15665
15666  * A first attempt at creating official support for shared
15667    libraries through configuration.  I've kept it so the
15668    default is static libraries only, and the OpenSSL programs
15669    are always statically linked for now, but there are
15670    preparations for dynamic linking in place.
15671    This has been tested on Linux and Tru64.
15672
15673    *Richard Levitte*
15674
15675  * Randomness polling function for Win9x, as described in:
15676    Peter Gutmann, Software Generation of Practically Strong
15677    Random Numbers.
15678
15679    *Ulf Möller*
15680
15681  * Fix so PRNG is seeded in req if using an already existing
15682    DSA key.
15683
15684    *Steve Henson*
15685
15686  * New options to smime application. -inform and -outform
15687    allow alternative formats for the S/MIME message including
15688    PEM and DER. The -content option allows the content to be
15689    specified separately. This should allow things like Netscape
15690    form signing output easier to verify.
15691
15692    *Steve Henson*
15693
15694  * Fix the ASN1 encoding of tags using the 'long form'.
15695
15696    *Steve Henson*
15697
15698  * New ASN1 functions, `i2c_*` and `c2i_*` for INTEGER and BIT
15699    STRING types. These convert content octets to and from the
15700    underlying type. The actual tag and length octets are
15701    already assumed to have been read in and checked. These
15702    are needed because all other string types have virtually
15703    identical handling apart from the tag. By having versions
15704    of the ASN1 functions that just operate on content octets
15705    IMPLICIT tagging can be handled properly. It also allows
15706    the ASN1_ENUMERATED code to be cut down because ASN1_ENUMERATED
15707    and ASN1_INTEGER are identical apart from the tag.
15708
15709    *Steve Henson*
15710
15711  * Change the handling of OID objects as follows:
15712
15713    - New object identifiers are inserted in objects.txt, following
15714      the syntax given in [crypto/objects/README.md](crypto/objects/README.md).
15715    - objects.pl is used to process obj_mac.num and create a new
15716      obj_mac.h.
15717    - obj_dat.pl is used to create a new obj_dat.h, using the data in
15718      obj_mac.h.
15719
15720    This is currently kind of a hack, and the perl code in objects.pl
15721    isn't very elegant, but it works as I intended.  The simplest way
15722    to check that it worked correctly is to look in obj_dat.h and
15723    check the array nid_objs and make sure the objects haven't moved
15724    around (this is important!).  Additions are OK, as well as
15725    consistent name changes.
15726
15727    *Richard Levitte*
15728
15729  * Add BSD-style MD5-based passwords to 'openssl passwd' (option '-1').
15730
15731    *Bodo Moeller*
15732
15733  * Addition of the command line parameter '-rand file' to 'openssl req'.
15734    The given file adds to whatever has already been seeded into the
15735    random pool through the RANDFILE configuration file option or
15736    environment variable, or the default random state file.
15737
15738    *Richard Levitte*
15739
15740  * mkstack.pl now sorts each macro group into lexical order.
15741    Previously the output order depended on the order the files
15742    appeared in the directory, resulting in needless rewriting
15743    of safestack.h .
15744
15745    *Steve Henson*
15746
15747  * Patches to make OpenSSL compile under Win32 again. Mostly
15748    work arounds for the VC++ problem that it treats func() as
15749    func(void). Also stripped out the parts of mkdef.pl that
15750    added extra typesafe functions: these no longer exist.
15751
15752    *Steve Henson*
15753
15754  * Reorganisation of the stack code. The macros are now all
15755    collected in safestack.h . Each macro is defined in terms of
15756    a "stack macro" of the form `SKM_<name>(type, a, b)`. The
15757    DEBUG_SAFESTACK is now handled in terms of function casts,
15758    this has the advantage of retaining type safety without the
15759    use of additional functions. If DEBUG_SAFESTACK is not defined
15760    then the non typesafe macros are used instead. Also modified the
15761    mkstack.pl script to handle the new form. Needs testing to see
15762    if which (if any) compilers it chokes and maybe make DEBUG_SAFESTACK
15763    the default if no major problems. Similar behaviour for ASN1_SET_OF
15764    and PKCS12_STACK_OF.
15765
15766    *Steve Henson*
15767
15768  * When some versions of IIS use the 'NET' form of private key the
15769    key derivation algorithm is different. Normally MD5(password) is
15770    used as a 128 bit RC4 key. In the modified case
15771    MD5(MD5(password) + "SGCKEYSALT")  is used instead. Added some
15772    new functions i2d_RSA_NET(), d2i_RSA_NET() etc which are the same
15773    as the old Netscape_RSA functions except they have an additional
15774    'sgckey' parameter which uses the modified algorithm. Also added
15775    an -sgckey command line option to the rsa utility. Thanks to
15776    Adrian Peck <bertie@ncipher.com> for posting details of the modified
15777    algorithm to openssl-dev.
15778
15779    *Steve Henson*
15780
15781  * The evp_local.h macros were using 'c.##kname' which resulted in
15782    invalid expansion on some systems (SCO 5.0.5 for example).
15783    Corrected to 'c.kname'.
15784
15785    *Phillip Porch <root@theporch.com>*
15786
15787  * New X509_get1_email() and X509_REQ_get1_email() functions that return
15788    a STACK of email addresses from a certificate or request, these look
15789    in the subject name and the subject alternative name extensions and
15790    omit any duplicate addresses.
15791
15792    *Steve Henson*
15793
15794  * Re-implement BN_mod_exp2_mont using independent (and larger) windows.
15795    This makes DSA verification about 2 % faster.
15796
15797    *Bodo Moeller*
15798
15799  * Increase maximum window size in `BN_mod_exp_...` to 6 bits instead of 5
15800    (meaning that now 2^5 values will be precomputed, which is only 4 KB
15801    plus overhead for 1024 bit moduli).
15802    This makes exponentiations about 0.5 % faster for 1024 bit
15803    exponents (as measured by "openssl speed rsa2048").
15804
15805    *Bodo Moeller*
15806
15807  * Rename memory handling macros to avoid conflicts with other
15808    software:
15809            Malloc         =>  OPENSSL_malloc
15810            Malloc_locked  =>  OPENSSL_malloc_locked
15811            Realloc        =>  OPENSSL_realloc
15812            Free           =>  OPENSSL_free
15813
15814    *Richard Levitte*
15815
15816  * New function BN_mod_exp_mont_word for small bases (roughly 15%
15817    faster than BN_mod_exp_mont, i.e. 7% for a full DH exchange).
15818
15819    *Bodo Moeller*
15820
15821  * CygWin32 support.
15822
15823    *John Jarvie <jjarvie@newsguy.com>*
15824
15825  * The type-safe stack code has been rejigged. It is now only compiled
15826    in when OpenSSL is configured with the DEBUG_SAFESTACK option and
15827    by default all type-specific stack functions are "#define"d back to
15828    standard stack functions. This results in more streamlined output
15829    but retains the type-safety checking possibilities of the original
15830    approach.
15831
15832    *Geoff Thorpe*
15833
15834  * The STACK code has been cleaned up, and certain type declarations
15835    that didn't make a lot of sense have been brought in line. This has
15836    also involved a cleanup of sorts in safestack.h to more correctly
15837    map type-safe stack functions onto their plain stack counterparts.
15838    This work has also resulted in a variety of "const"ifications of
15839    lots of the code, especially `_cmp` operations which should normally
15840    be prototyped with "const" parameters anyway.
15841
15842    *Geoff Thorpe*
15843
15844  * When generating bytes for the first time in md_rand.c, 'stir the pool'
15845    by seeding with STATE_SIZE dummy bytes (with zero entropy count).
15846    (The PRNG state consists of two parts, the large pool 'state' and 'md',
15847    where all of 'md' is used each time the PRNG is used, but 'state'
15848    is used only indexed by a cyclic counter. As entropy may not be
15849    well distributed from the beginning, 'md' is important as a
15850    chaining variable. However, the output function chains only half
15851    of 'md', i.e. 80 bits.  ssleay_rand_add, on the other hand, chains
15852    all of 'md', and seeding with STATE_SIZE dummy bytes will result
15853    in all of 'state' being rewritten, with the new values depending
15854    on virtually all of 'md'.  This overcomes the 80 bit limitation.)
15855
15856    *Bodo Moeller*
15857
15858  * In ssl/s2_clnt.c and ssl/s3_clnt.c, call ERR_clear_error() when
15859    the handshake is continued after ssl_verify_cert_chain();
15860    otherwise, if SSL_VERIFY_NONE is set, remaining error codes
15861    can lead to 'unexplainable' connection aborts later.
15862
15863    *Bodo Moeller; problem tracked down by Lutz Jaenicke*
15864
15865  * Major EVP API cipher revision.
15866    Add hooks for extra EVP features. This allows various cipher
15867    parameters to be set in the EVP interface. Support added for variable
15868    key length ciphers via the EVP_CIPHER_CTX_set_key_length() function and
15869    setting of RC2 and RC5 parameters.
15870
15871    Modify EVP_OpenInit() and EVP_SealInit() to cope with variable key length
15872    ciphers.
15873
15874    Remove lots of duplicated code from the EVP library. For example *every*
15875    cipher init() function handles the 'iv' in the same way according to the
15876    cipher mode. They also all do nothing if the 'key' parameter is NULL and
15877    for CFB and OFB modes they zero ctx->num.
15878
15879    New functionality allows removal of S/MIME code RC2 hack.
15880
15881    Most of the routines have the same form and so can be declared in terms
15882    of macros.
15883
15884    By shifting this to the top level EVP_CipherInit() it can be removed from
15885    all individual ciphers. If the cipher wants to handle IVs or keys
15886    differently it can set the EVP_CIPH_CUSTOM_IV or EVP_CIPH_ALWAYS_CALL_INIT
15887    flags.
15888
15889    Change lots of functions like EVP_EncryptUpdate() to now return a
15890    value: although software versions of the algorithms cannot fail
15891    any installed hardware versions can.
15892
15893    *Steve Henson*
15894
15895  * Implement SSL_OP_TLS_ROLLBACK_BUG: In ssl3_get_client_key_exchange, if
15896    this option is set, tolerate broken clients that send the negotiated
15897    protocol version number instead of the requested protocol version
15898    number.
15899
15900    *Bodo Moeller*
15901
15902  * Call dh_tmp_cb (set by `..._TMP_DH_CB`) with correct 'is_export' flag;
15903    i.e. non-zero for export ciphersuites, zero otherwise.
15904    Previous versions had this flag inverted, inconsistent with
15905    rsa_tmp_cb (..._TMP_RSA_CB).
15906
15907    *Bodo Moeller; problem reported by Amit Chopra*
15908
15909  * Add missing DSA library text string. Work around for some IIS
15910    key files with invalid SEQUENCE encoding.
15911
15912    *Steve Henson*
15913
15914  * Add a document (doc/standards.txt) that list all kinds of standards
15915    and so on that are implemented in OpenSSL.
15916
15917    *Richard Levitte*
15918
15919  * Enhance c_rehash script. Old version would mishandle certificates
15920    with the same subject name hash and wouldn't handle CRLs at all.
15921    Added -fingerprint option to crl utility, to support new c_rehash
15922    features.
15923
15924    *Steve Henson*
15925
15926  * Eliminate non-ANSI declarations in crypto.h and stack.h.
15927
15928    *Ulf Möller*
15929
15930  * Fix for SSL server purpose checking. Server checking was
15931    rejecting certificates which had extended key usage present
15932    but no ssl client purpose.
15933
15934    *Steve Henson, reported by Rene Grosser <grosser@hisolutions.com>*
15935
15936  * Make PKCS#12 code work with no password. The PKCS#12 spec
15937    is a little unclear about how a blank password is handled.
15938    Since the password in encoded as a BMPString with terminating
15939    double NULL a zero length password would end up as just the
15940    double NULL. However no password at all is different and is
15941    handled differently in the PKCS#12 key generation code. NS
15942    treats a blank password as zero length. MSIE treats it as no
15943    password on export: but it will try both on import. We now do
15944    the same: PKCS12_parse() tries zero length and no password if
15945    the password is set to "" or NULL (NULL is now a valid password:
15946    it wasn't before) as does the pkcs12 application.
15947
15948    *Steve Henson*
15949
15950  * Bugfixes in `apps/x509.c`: Avoid a memory leak; and don't use
15951    perror when PEM_read_bio_X509_REQ fails, the error message must
15952    be obtained from the error queue.
15953
15954    *Bodo Moeller*
15955
15956  * Avoid 'thread_hash' memory leak in crypto/err/err.c by freeing
15957    it in ERR_remove_state if appropriate, and change ERR_get_state
15958    accordingly to avoid race conditions (this is necessary because
15959    thread_hash is no longer constant once set).
15960
15961    *Bodo Moeller*
15962
15963  * Bugfix for linux-elf makefile.one.
15964
15965    *Ulf Möller*
15966
15967  * RSA_get_default_method() will now cause a default
15968    RSA_METHOD to be chosen if one doesn't exist already.
15969    Previously this was only set during a call to RSA_new()
15970    or RSA_new_method(NULL) meaning it was possible for
15971    RSA_get_default_method() to return NULL.
15972
15973    *Geoff Thorpe*
15974
15975  * Added native name translation to the existing DSO code
15976    that will convert (if the flag to do so is set) filenames
15977    that are sufficiently small and have no path information
15978    into a canonical native form. Eg. "blah" converted to
15979    "libblah.so" or "blah.dll" etc.
15980
15981    *Geoff Thorpe*
15982
15983  * New function ERR_error_string_n(e, buf, len) which is like
15984    ERR_error_string(e, buf), but writes at most 'len' bytes
15985    including the 0 terminator.  For ERR_error_string_n, 'buf'
15986    may not be NULL.
15987
15988    *Damien Miller <djm@mindrot.org>, Bodo Moeller*
15989
15990  * CONF library reworked to become more general.  A new CONF
15991    configuration file reader "class" is implemented as well as a
15992    new functions (`NCONF_*`, for "New CONF") to handle it.  The now
15993    old `CONF_*` functions are still there, but are reimplemented to
15994    work in terms of the new functions.  Also, a set of functions
15995    to handle the internal storage of the configuration data is
15996    provided to make it easier to write new configuration file
15997    reader "classes" (I can definitely see something reading a
15998    configuration file in XML format, for example), called `_CONF_*`,
15999    or "the configuration storage API"...
16000
16001    The new configuration file reading functions are:
16002
16003            NCONF_new, NCONF_free, NCONF_load, NCONF_load_fp, NCONF_load_bio,
16004            NCONF_get_section, NCONF_get_string, NCONF_get_numbre
16005
16006            NCONF_default, NCONF_WIN32
16007
16008            NCONF_dump_fp, NCONF_dump_bio
16009
16010    NCONF_default and NCONF_WIN32 are method (or "class") choosers,
16011    NCONF_new creates a new CONF object.  This works in the same way
16012    as other interfaces in OpenSSL, like the BIO interface.
16013    `NCONF_dump_*` dump the internal storage of the configuration file,
16014    which is useful for debugging.  All other functions take the same
16015    arguments as the old `CONF_*` functions with the exception of the
16016    first that must be a `CONF *` instead of a `LHASH *`.
16017
16018    To make it easier to use the new classes with the old `CONF_*` functions,
16019    the function CONF_set_default_method is provided.
16020
16021    *Richard Levitte*
16022
16023  * Add '-tls1' option to 'openssl ciphers', which was already
16024    mentioned in the documentation but had not been implemented.
16025    (This option is not yet really useful because even the additional
16026    experimental TLS 1.0 ciphers are currently treated as SSL 3.0 ciphers.)
16027
16028    *Bodo Moeller*
16029
16030  * Initial DSO code added into libcrypto for letting OpenSSL (and
16031    OpenSSL-based applications) load shared libraries and bind to
16032    them in a portable way.
16033
16034    *Geoff Thorpe, with contributions from Richard Levitte*
16035
16036 ### Changes between 0.9.5 and 0.9.5a  [1 Apr 2000]
16037
16038  * Make sure _lrotl and _lrotr are only used with MSVC.
16039
16040  * Use lock CRYPTO_LOCK_RAND correctly in ssleay_rand_status
16041    (the default implementation of RAND_status).
16042
16043  * Rename openssl x509 option '-crlext', which was added in 0.9.5,
16044    to '-clrext' (= clear extensions), as intended and documented.
16045    *Bodo Moeller; inconsistency pointed out by Michael Attili
16046    <attili@amaxo.com>*
16047
16048  * Fix for HMAC. It wasn't zeroing the rest of the block if the key length
16049    was larger than the MD block size.
16050
16051    *Steve Henson, pointed out by Yost William <YostW@tce.com>*
16052
16053  * Modernise PKCS12_parse() so it uses STACK_OF(X509) for its ca argument
16054    fix a leak when the ca argument was passed as NULL. Stop X509_PUBKEY_set()
16055    using the passed key: if the passed key was a private key the result
16056    of X509_print(), for example, would be to print out all the private key
16057    components.
16058
16059    *Steve Henson*
16060
16061  * des_quad_cksum() byte order bug fix.
16062    *Ulf Möller, using the problem description in krb4-0.9.7, where
16063    the solution is attributed to Derrick J Brashear <shadow@DEMENTIA.ORG>*
16064
16065  * Fix so V_ASN1_APP_CHOOSE works again: however its use is strongly
16066    discouraged.
16067
16068    *Steve Henson, pointed out by Brian Korver <briank@cs.stanford.edu>*
16069
16070  * For easily testing in shell scripts whether some command
16071    'openssl XXX' exists, the new pseudo-command 'openssl no-XXX'
16072    returns with exit code 0 iff no command of the given name is available.
16073    'no-XXX' is printed in this case, 'XXX' otherwise.  In both cases,
16074    the output goes to stdout and nothing is printed to stderr.
16075    Additional arguments are always ignored.
16076
16077    Since for each cipher there is a command of the same name,
16078    the 'no-cipher' compilation switches can be tested this way.
16079
16080    ('openssl no-XXX' is not able to detect pseudo-commands such
16081    as 'quit', 'list-XXX-commands', or 'no-XXX' itself.)
16082
16083    *Bodo Moeller*
16084
16085  * Update test suite so that 'make test' succeeds in 'no-rsa' configuration.
16086
16087    *Bodo Moeller*
16088
16089  * For SSL_[CTX_]set_tmp_dh, don't create a DH key if SSL_OP_SINGLE_DH_USE
16090    is set; it will be thrown away anyway because each handshake creates
16091    its own key.
16092    ssl_cert_dup, which is used by SSL_new, now copies DH keys in addition
16093    to parameters -- in previous versions (since OpenSSL 0.9.3) the
16094    'default key' from SSL_CTX_set_tmp_dh would always be lost, meaning
16095    you effectively got SSL_OP_SINGLE_DH_USE when using this macro.
16096
16097    *Bodo Moeller*
16098
16099  * New s_client option -ign_eof: EOF at stdin is ignored, and
16100    'Q' and 'R' lose their special meanings (quit/renegotiate).
16101    This is part of what -quiet does; unlike -quiet, -ign_eof
16102    does not suppress any output.
16103
16104    *Richard Levitte*
16105
16106  * Add compatibility options to the purpose and trust code. The
16107    purpose X509_PURPOSE_ANY is "any purpose" which automatically
16108    accepts a certificate or CA, this was the previous behaviour,
16109    with all the associated security issues.
16110
16111    X509_TRUST_COMPAT is the old trust behaviour: only and
16112    automatically trust self signed roots in certificate store. A
16113    new trust setting X509_TRUST_DEFAULT is used to specify that
16114    a purpose has no associated trust setting and it should instead
16115    use the value in the default purpose.
16116
16117    *Steve Henson*
16118
16119  * Fix the PKCS#8 DSA private key code so it decodes keys again
16120    and fix a memory leak.
16121
16122    *Steve Henson*
16123
16124  * In util/mkerr.pl (which implements 'make errors'), preserve
16125    reason strings from the previous version of the .c file, as
16126    the default to have only downcase letters (and digits) in
16127    automatically generated reasons codes is not always appropriate.
16128
16129    *Bodo Moeller*
16130
16131  * In ERR_load_ERR_strings(), build an ERR_LIB_SYS error reason table
16132    using strerror.  Previously, ERR_reason_error_string() returned
16133    library names as reason strings for SYSerr; but SYSerr is a special
16134    case where small numbers are errno values, not library numbers.
16135
16136    *Bodo Moeller*
16137
16138  * Add '-dsaparam' option to 'openssl dhparam' application.  This
16139    converts DSA parameters into DH parameters. (When creating parameters,
16140    DSA_generate_parameters is used.)
16141
16142    *Bodo Moeller*
16143
16144  * Include 'length' (recommended exponent length) in C code generated
16145    by 'openssl dhparam -C'.
16146
16147    *Bodo Moeller*
16148
16149  * The second argument to set_label in perlasm was already being used
16150    so couldn't be used as a "file scope" flag. Moved to third argument
16151    which was free.
16152
16153    *Steve Henson*
16154
16155  * In PEM_ASN1_write_bio and some other functions, use RAND_pseudo_bytes
16156    instead of RAND_bytes for encryption IVs and salts.
16157
16158    *Bodo Moeller*
16159
16160  * Include RAND_status() into RAND_METHOD instead of implementing
16161    it only for md_rand.c  Otherwise replacing the PRNG by calling
16162    RAND_set_rand_method would be impossible.
16163
16164    *Bodo Moeller*
16165
16166  * Don't let DSA_generate_key() enter an infinite loop if the random
16167    number generation fails.
16168
16169    *Bodo Moeller*
16170
16171  * New 'rand' application for creating pseudo-random output.
16172
16173    *Bodo Moeller*
16174
16175  * Added configuration support for Linux/IA64
16176
16177    *Rolf Haberrecker <rolf@suse.de>*
16178
16179  * Assembler module support for Mingw32.
16180
16181    *Ulf Möller*
16182
16183  * Shared library support for HPUX (in shlib/).
16184
16185    *Lutz Jaenicke <Lutz.Jaenicke@aet.TU-Cottbus.DE> and Anonymous*
16186
16187  * Shared library support for Solaris gcc.
16188
16189    *Lutz Behnke <behnke@trustcenter.de>*
16190
16191 ### Changes between 0.9.4 and 0.9.5  [28 Feb 2000]
16192
16193  * PKCS7_encrypt() was adding text MIME headers twice because they
16194    were added manually and by SMIME_crlf_copy().
16195
16196    *Steve Henson*
16197
16198  * In bntest.c don't call BN_rand with zero bits argument.
16199
16200    *Steve Henson, pointed out by Andrew W. Gray <agray@iconsinc.com>*
16201
16202  * BN_mul bugfix: In bn_mul_part_recursion() only the a>a[n] && b>b[n]
16203    case was implemented. This caused BN_div_recp() to fail occasionally.
16204
16205    *Ulf Möller*
16206
16207  * Add an optional second argument to the set_label() in the perl
16208    assembly language builder. If this argument exists and is set
16209    to 1 it signals that the assembler should use a symbol whose
16210    scope is the entire file, not just the current function. This
16211    is needed with MASM which uses the format label:: for this scope.
16212
16213    *Steve Henson, pointed out by Peter Runestig <peter@runestig.com>*
16214
16215  * Change the ASN1 types so they are typedefs by default. Before
16216    almost all types were #define'd to ASN1_STRING which was causing
16217    STACK_OF() problems: you couldn't declare STACK_OF(ASN1_UTF8STRING)
16218    for example.
16219
16220    *Steve Henson*
16221
16222  * Change names of new functions to the new get1/get0 naming
16223    convention: After 'get1', the caller owns a reference count
16224    and has to call `..._free`; 'get0' returns a pointer to some
16225    data structure without incrementing reference counters.
16226    (Some of the existing 'get' functions increment a reference
16227    counter, some don't.)
16228    Similarly, 'set1' and 'add1' functions increase reference
16229    counters or duplicate objects.
16230
16231    *Steve Henson*
16232
16233  * Allow for the possibility of temp RSA key generation failure:
16234    the code used to assume it always worked and crashed on failure.
16235
16236    *Steve Henson*
16237
16238  * Fix potential buffer overrun problem in BIO_printf().
16239    *Ulf Möller, using public domain code by Patrick Powell; problem
16240    pointed out by David Sacerdote <das33@cornell.edu>*
16241
16242  * Support EGD <http://www.lothar.com/tech/crypto/>.  New functions
16243    RAND_egd() and RAND_status().  In the command line application,
16244    the EGD socket can be specified like a seed file using RANDFILE
16245    or -rand.
16246
16247    *Ulf Möller*
16248
16249  * Allow the string CERTIFICATE to be tolerated in PKCS#7 structures.
16250    Some CAs (e.g. Verisign) distribute certificates in this form.
16251
16252    *Steve Henson*
16253
16254  * Remove the SSL_ALLOW_ADH compile option and set the default cipher
16255    list to exclude them. This means that no special compilation option
16256    is needed to use anonymous DH: it just needs to be included in the
16257    cipher list.
16258
16259    *Steve Henson*
16260
16261  * Change the EVP_MD_CTX_type macro so its meaning consistent with
16262    EVP_MD_type. The old functionality is available in a new macro called
16263    EVP_MD_md(). Change code that uses it and update docs.
16264
16265    *Steve Henson*
16266
16267  * `..._ctrl` functions now have corresponding `..._callback_ctrl` functions
16268    where the `void *` argument is replaced by a function pointer argument.
16269    Previously `void *` was abused to point to functions, which works on
16270    many platforms, but is not correct.  As these functions are usually
16271    called by macros defined in OpenSSL header files, most source code
16272    should work without changes.
16273
16274    *Richard Levitte*
16275
16276  * `<openssl/opensslconf.h>` (which is created by Configure) now contains
16277    sections with information on -D... compiler switches used for
16278    compiling the library so that applications can see them.  To enable
16279    one of these sections, a pre-processor symbol `OPENSSL_..._DEFINES`
16280    must be defined.  E.g.,
16281            #define OPENSSL_ALGORITHM_DEFINES
16282            #include <openssl/opensslconf.h>
16283    defines all pertinent `NO_<algo>` symbols, such as NO_IDEA, NO_RSA, etc.
16284
16285    *Richard Levitte, Ulf and Bodo Möller*
16286
16287  * Bugfix: Tolerate fragmentation and interleaving in the SSL 3/TLS
16288    record layer.
16289
16290    *Bodo Moeller*
16291
16292  * Change the 'other' type in certificate aux info to a STACK_OF
16293    X509_ALGOR. Although not an AlgorithmIdentifier as such it has
16294    the required ASN1 format: arbitrary types determined by an OID.
16295
16296    *Steve Henson*
16297
16298  * Add some PEM_write_X509_REQ_NEW() functions and a command line
16299    argument to 'req'. This is not because the function is newer or
16300    better than others it just uses the work 'NEW' in the certificate
16301    request header lines. Some software needs this.
16302
16303    *Steve Henson*
16304
16305  * Reorganise password command line arguments: now passwords can be
16306    obtained from various sources. Delete the PEM_cb function and make
16307    it the default behaviour: i.e. if the callback is NULL and the
16308    usrdata argument is not NULL interpret it as a null terminated pass
16309    phrase. If usrdata and the callback are NULL then the pass phrase
16310    is prompted for as usual.
16311
16312    *Steve Henson*
16313
16314  * Add support for the Compaq Atalla crypto accelerator. If it is installed,
16315    the support is automatically enabled. The resulting binaries will
16316    autodetect the card and use it if present.
16317
16318    *Ben Laurie and Compaq Inc.*
16319
16320  * Work around for Netscape hang bug. This sends certificate request
16321    and server done in one record. Since this is perfectly legal in the
16322    SSL/TLS protocol it isn't a "bug" option and is on by default. See
16323    the bugs/SSLv3 entry for more info.
16324
16325    *Steve Henson*
16326
16327  * HP-UX tune-up: new unified configs, HP C compiler bug workaround.
16328
16329    *Andy Polyakov*
16330
16331  * Add -rand argument to smime and pkcs12 applications and read/write
16332    of seed file.
16333
16334    *Steve Henson*
16335
16336  * New 'passwd' tool for crypt(3) and apr1 password hashes.
16337
16338    *Bodo Moeller*
16339
16340  * Add command line password options to the remaining applications.
16341
16342    *Steve Henson*
16343
16344  * Bug fix for BN_div_recp() for numerators with an even number of
16345    bits.
16346
16347    *Ulf Möller*
16348
16349  * More tests in bntest.c, and changed test_bn output.
16350
16351    *Ulf Möller*
16352
16353  * ./config recognizes MacOS X now.
16354
16355    *Andy Polyakov*
16356
16357  * Bug fix for BN_div() when the first words of num and divisor are
16358    equal (it gave wrong results if `(rem=(n1-q*d0)&BN_MASK2) < d0)`.
16359
16360    *Ulf Möller*
16361
16362  * Add support for various broken PKCS#8 formats, and command line
16363    options to produce them.
16364
16365    *Steve Henson*
16366
16367  * New functions BN_CTX_start(), BN_CTX_get() and BT_CTX_end() to
16368    get temporary BIGNUMs from a BN_CTX.
16369
16370    *Ulf Möller*
16371
16372  * Correct return values in BN_mod_exp_mont() and BN_mod_exp2_mont()
16373    for p == 0.
16374
16375    *Ulf Möller*
16376
16377  * Change the `SSLeay_add_all_*()` functions to `OpenSSL_add_all_*()` and
16378    include a #define from the old name to the new. The original intent
16379    was that statically linked binaries could for example just call
16380    SSLeay_add_all_ciphers() to just add ciphers to the table and not
16381    link with digests. This never worked because SSLeay_add_all_digests()
16382    and SSLeay_add_all_ciphers() were in the same source file so calling
16383    one would link with the other. They are now in separate source files.
16384
16385    *Steve Henson*
16386
16387  * Add a new -notext option to 'ca' and a -pubkey option to 'spkac'.
16388
16389    *Steve Henson*
16390
16391  * Use a less unusual form of the Miller-Rabin primality test (it used
16392    a binary algorithm for exponentiation integrated into the Miller-Rabin
16393    loop, our standard modexp algorithms are faster).
16394
16395    *Bodo Moeller*
16396
16397  * Support for the EBCDIC character set completed.
16398
16399    *Martin Kraemer <Martin.Kraemer@Mch.SNI.De>*
16400
16401  * Source code cleanups: use const where appropriate, eliminate casts,
16402    use `void *` instead of `char *` in lhash.
16403
16404    *Ulf Möller*
16405
16406  * Bugfix: ssl3_send_server_key_exchange was not restartable
16407    (the state was not changed to SSL3_ST_SW_KEY_EXCH_B, and because of
16408    this the server could overwrite ephemeral keys that the client
16409    has already seen).
16410
16411    *Bodo Moeller*
16412
16413  * Turn DSA_is_prime into a macro that calls BN_is_prime,
16414    using 50 iterations of the Rabin-Miller test.
16415
16416    DSA_generate_parameters now uses BN_is_prime_fasttest (with 50
16417    iterations of the Rabin-Miller test as required by the appendix
16418    to FIPS PUB 186[-1]) instead of DSA_is_prime.
16419    As BN_is_prime_fasttest includes trial division, DSA parameter
16420    generation becomes much faster.
16421
16422    This implies a change for the callback functions in DSA_is_prime
16423    and DSA_generate_parameters: The callback function is called once
16424    for each positive witness in the Rabin-Miller test, not just
16425    occasionally in the inner loop; and the parameters to the
16426    callback function now provide an iteration count for the outer
16427    loop rather than for the current invocation of the inner loop.
16428    DSA_generate_parameters additionally can call the callback
16429    function with an 'iteration count' of -1, meaning that a
16430    candidate has passed the trial division test (when q is generated
16431    from an application-provided seed, trial division is skipped).
16432
16433    *Bodo Moeller*
16434
16435  * New function BN_is_prime_fasttest that optionally does trial
16436    division before starting the Rabin-Miller test and has
16437    an additional BN_CTX * argument (whereas BN_is_prime always
16438    has to allocate at least one BN_CTX).
16439    'callback(1, -1, cb_arg)' is called when a number has passed the
16440    trial division stage.
16441
16442    *Bodo Moeller*
16443
16444  * Fix for bug in CRL encoding. The validity dates weren't being handled
16445    as ASN1_TIME.
16446
16447    *Steve Henson*
16448
16449  * New -pkcs12 option to CA.pl script to write out a PKCS#12 file.
16450
16451    *Steve Henson*
16452
16453  * New function BN_pseudo_rand().
16454
16455    *Ulf Möller*
16456
16457  * Clean up BN_mod_mul_montgomery(): replace the broken (and unreadable)
16458    bignum version of BN_from_montgomery() with the working code from
16459    SSLeay 0.9.0 (the word based version is faster anyway), and clean up
16460    the comments.
16461
16462    *Ulf Möller*
16463
16464  * Avoid a race condition in s2_clnt.c (function get_server_hello) that
16465    made it impossible to use the same SSL_SESSION data structure in
16466    SSL2 clients in multiple threads.
16467
16468    *Bodo Moeller*
16469
16470  * The return value of RAND_load_file() no longer counts bytes obtained
16471    by stat().  RAND_load_file(..., -1) is new and uses the complete file
16472    to seed the PRNG (previously an explicit byte count was required).
16473
16474    *Ulf Möller, Bodo Möller*
16475
16476  * Clean up CRYPTO_EX_DATA functions, some of these didn't have prototypes
16477    used `char *` instead of `void *` and had casts all over the place.
16478
16479    *Steve Henson*
16480
16481  * Make BN_generate_prime() return NULL on error if ret!=NULL.
16482
16483    *Ulf Möller*
16484
16485  * Retain source code compatibility for BN_prime_checks macro:
16486    BN_is_prime(..., BN_prime_checks, ...) now uses
16487    BN_prime_checks_for_size to determine the appropriate number of
16488    Rabin-Miller iterations.
16489
16490    *Ulf Möller*
16491
16492  * Diffie-Hellman uses "safe" primes: DH_check() return code renamed to
16493    DH_CHECK_P_NOT_SAFE_PRIME.
16494    (Check if this is true? OpenPGP calls them "strong".)
16495
16496    *Ulf Möller*
16497
16498  * Merge the functionality of "dh" and "gendh" programs into a new program
16499    "dhparam". The old programs are retained for now but will handle DH keys
16500    (instead of parameters) in future.
16501
16502    *Steve Henson*
16503
16504  * Make the ciphers, s_server and s_client programs check the return values
16505    when a new cipher list is set.
16506
16507    *Steve Henson*
16508
16509  * Enhance the SSL/TLS cipher mechanism to correctly handle the TLS 56bit
16510    ciphers. Before when the 56bit ciphers were enabled the sorting was
16511    wrong.
16512
16513    The syntax for the cipher sorting has been extended to support sorting by
16514    cipher-strength (using the strength_bits hard coded in the tables).
16515    The new command is `@STRENGTH` (see also `doc/apps/ciphers.pod`).
16516
16517    Fix a bug in the cipher-command parser: when supplying a cipher command
16518    string with an "undefined" symbol (neither command nor alphanumeric
16519    *A-Za-z0-9*, ssl_set_cipher_list used to hang in an endless loop. Now
16520    an error is flagged.
16521
16522    Due to the strength-sorting extension, the code of the
16523    ssl_create_cipher_list() function was completely rearranged. I hope that
16524    the readability was also increased :-)
16525
16526    *Lutz Jaenicke <Lutz.Jaenicke@aet.TU-Cottbus.DE>*
16527
16528  * Minor change to 'x509' utility. The -CAcreateserial option now uses 1
16529    for the first serial number and places 2 in the serial number file. This
16530    avoids problems when the root CA is created with serial number zero and
16531    the first user certificate has the same issuer name and serial number
16532    as the root CA.
16533
16534    *Steve Henson*
16535
16536  * Fixes to X509_ATTRIBUTE utilities, change the 'req' program so it uses
16537    the new code. Add documentation for this stuff.
16538
16539    *Steve Henson*
16540
16541  * Changes to X509_ATTRIBUTE utilities. These have been renamed from
16542    `X509_*()` to `X509at_*()` on the grounds that they don't handle X509
16543    structures and behave in an analogous way to the X509v3 functions:
16544    they shouldn't be called directly but wrapper functions should be used
16545    instead.
16546
16547    So we also now have some wrapper functions that call the X509at functions
16548    when passed certificate requests. (TO DO: similar things can be done with
16549    PKCS#7 signed and unsigned attributes, PKCS#12 attributes and a few other
16550    things. Some of these need some d2i or i2d and print functionality
16551    because they handle more complex structures.)
16552
16553    *Steve Henson*
16554
16555  * Add missing #ifndefs that caused missing symbols when building libssl
16556    as a shared library without RSA.  Use #ifndef NO_SSL2 instead of
16557    NO_RSA in `ssl/s2*.c`.
16558
16559    *Kris Kennaway <kris@hub.freebsd.org>, modified by Ulf Möller*
16560
16561  * Precautions against using the PRNG uninitialized: RAND_bytes() now
16562    has a return value which indicates the quality of the random data
16563    (1 = ok, 0 = not seeded).  Also an error is recorded on the thread's
16564    error queue. New function RAND_pseudo_bytes() generates output that is
16565    guaranteed to be unique but not unpredictable. RAND_add is like
16566    RAND_seed, but takes an extra argument for an entropy estimate
16567    (RAND_seed always assumes full entropy).
16568
16569    *Ulf Möller*
16570
16571  * Do more iterations of Rabin-Miller probable prime test (specifically,
16572    3 for 1024-bit primes, 6 for 512-bit primes, 12 for 256-bit primes
16573    instead of only 2 for all lengths; see BN_prime_checks_for_size definition
16574    in crypto/bn/bn_prime.c for the complete table).  This guarantees a
16575    false-positive rate of at most 2^-80 for random input.
16576
16577    *Bodo Moeller*
16578
16579  * Rewrite ssl3_read_n (ssl/s3_pkt.c) avoiding a couple of bugs.
16580
16581    *Bodo Moeller*
16582
16583  * New function X509_CTX_rget_chain() (renamed to X509_CTX_get1_chain
16584    in the 0.9.5 release), this returns the chain
16585    from an X509_CTX structure with a dup of the stack and all
16586    the X509 reference counts upped: so the stack will exist
16587    after X509_CTX_cleanup() has been called. Modify pkcs12.c
16588    to use this.
16589
16590    Also make SSL_SESSION_print() print out the verify return
16591    code.
16592
16593    *Steve Henson*
16594
16595  * Add manpage for the pkcs12 command. Also change the default
16596    behaviour so MAC iteration counts are used unless the new
16597    -nomaciter option is used. This improves file security and
16598    only older versions of MSIE (4.0 for example) need it.
16599
16600    *Steve Henson*
16601
16602  * Honor the no-xxx Configure options when creating .DEF files.
16603
16604    *Ulf Möller*
16605
16606  * Add PKCS#10 attributes to field table: challengePassword,
16607    unstructuredName and unstructuredAddress. These are taken from
16608    draft PKCS#9 v2.0 but are compatible with v1.2 provided no
16609    international characters are used.
16610
16611    More changes to X509_ATTRIBUTE code: allow the setting of types
16612    based on strings. Remove the 'loc' parameter when adding
16613    attributes because these will be a SET OF encoding which is sorted
16614    in ASN1 order.
16615
16616    *Steve Henson*
16617
16618  * Initial changes to the 'req' utility to allow request generation
16619    automation. This will allow an application to just generate a template
16620    file containing all the field values and have req construct the
16621    request.
16622
16623    Initial support for X509_ATTRIBUTE handling. Stacks of these are
16624    used all over the place including certificate requests and PKCS#7
16625    structures. They are currently handled manually where necessary with
16626    some primitive wrappers for PKCS#7. The new functions behave in a
16627    manner analogous to the X509 extension functions: they allow
16628    attributes to be looked up by NID and added.
16629
16630    Later something similar to the X509V3 code would be desirable to
16631    automatically handle the encoding, decoding and printing of the
16632    more complex types. The string types like challengePassword can
16633    be handled by the string table functions.
16634
16635    Also modified the multi byte string table handling. Now there is
16636    a 'global mask' which masks out certain types. The table itself
16637    can use the flag STABLE_NO_MASK to ignore the mask setting: this
16638    is useful when for example there is only one permissible type
16639    (as in countryName) and using the mask might result in no valid
16640    types at all.
16641
16642    *Steve Henson*
16643
16644  * Clean up 'Finished' handling, and add functions SSL_get_finished and
16645    SSL_get_peer_finished to allow applications to obtain the latest
16646    Finished messages sent to the peer or expected from the peer,
16647    respectively.  (SSL_get_peer_finished is usually the Finished message
16648    actually received from the peer, otherwise the protocol will be aborted.)
16649
16650    As the Finished message are message digests of the complete handshake
16651    (with a total of 192 bits for TLS 1.0 and more for SSL 3.0), they can
16652    be used for external authentication procedures when the authentication
16653    provided by SSL/TLS is not desired or is not enough.
16654
16655    *Bodo Moeller*
16656
16657  * Enhanced support for Alpha Linux is added. Now ./config checks if
16658    the host supports BWX extension and if Compaq C is present on the
16659    $PATH. Just exploiting of the BWX extension results in 20-30%
16660    performance kick for some algorithms, e.g. DES and RC4 to mention
16661    a couple. Compaq C in turn generates ~20% faster code for MD5 and
16662    SHA1.
16663
16664    *Andy Polyakov*
16665
16666  * Add support for MS "fast SGC". This is arguably a violation of the
16667    SSL3/TLS protocol. Netscape SGC does two handshakes: the first with
16668    weak crypto and after checking the certificate is SGC a second one
16669    with strong crypto. MS SGC stops the first handshake after receiving
16670    the server certificate message and sends a second client hello. Since
16671    a server will typically do all the time consuming operations before
16672    expecting any further messages from the client (server key exchange
16673    is the most expensive) there is little difference between the two.
16674
16675    To get OpenSSL to support MS SGC we have to permit a second client
16676    hello message after we have sent server done. In addition we have to
16677    reset the MAC if we do get this second client hello.
16678
16679    *Steve Henson*
16680
16681  * Add a function 'd2i_AutoPrivateKey()' this will automatically decide
16682    if a DER encoded private key is RSA or DSA traditional format. Changed
16683    d2i_PrivateKey_bio() to use it. This is only needed for the "traditional"
16684    format DER encoded private key. Newer code should use PKCS#8 format which
16685    has the key type encoded in the ASN1 structure. Added DER private key
16686    support to pkcs8 application.
16687
16688    *Steve Henson*
16689
16690  * SSL 3/TLS 1 servers now don't request certificates when an anonymous
16691    ciphersuites has been selected (as required by the SSL 3/TLS 1
16692    specifications).  Exception: When SSL_VERIFY_FAIL_IF_NO_PEER_CERT
16693    is set, we interpret this as a request to violate the specification
16694    (the worst that can happen is a handshake failure, and 'correct'
16695    behaviour would result in a handshake failure anyway).
16696
16697    *Bodo Moeller*
16698
16699  * In SSL_CTX_add_session, take into account that there might be multiple
16700    SSL_SESSION structures with the same session ID (e.g. when two threads
16701    concurrently obtain them from an external cache).
16702    The internal cache can handle only one SSL_SESSION with a given ID,
16703    so if there's a conflict, we now throw out the old one to achieve
16704    consistency.
16705
16706    *Bodo Moeller*
16707
16708  * Add OIDs for idea and blowfish in CBC mode. This will allow both
16709    to be used in PKCS#5 v2.0 and S/MIME.  Also add checking to
16710    some routines that use cipher OIDs: some ciphers do not have OIDs
16711    defined and so they cannot be used for S/MIME and PKCS#5 v2.0 for
16712    example.
16713
16714    *Steve Henson*
16715
16716  * Simplify the trust setting structure and code. Now we just have
16717    two sequences of OIDs for trusted and rejected settings. These will
16718    typically have values the same as the extended key usage extension
16719    and any application specific purposes.
16720
16721    The trust checking code now has a default behaviour: it will just
16722    check for an object with the same NID as the passed id. Functions can
16723    be provided to override either the default behaviour or the behaviour
16724    for a given id. SSL client, server and email already have functions
16725    in place for compatibility: they check the NID and also return "trusted"
16726    if the certificate is self signed.
16727
16728    *Steve Henson*
16729
16730  * Add d2i,i2d bio/fp functions for PrivateKey: these convert the
16731    traditional format into an EVP_PKEY structure.
16732
16733    *Steve Henson*
16734
16735  * Add a password callback function PEM_cb() which either prompts for
16736    a password if usr_data is NULL or otherwise assumes it is a null
16737    terminated password. Allow passwords to be passed on command line
16738    environment or config files in a few more utilities.
16739
16740    *Steve Henson*
16741
16742  * Add a bunch of DER and PEM functions to handle PKCS#8 format private
16743    keys. Add some short names for PKCS#8 PBE algorithms and allow them
16744    to be specified on the command line for the pkcs8 and pkcs12 utilities.
16745    Update documentation.
16746
16747    *Steve Henson*
16748
16749  * Support for ASN1 "NULL" type. This could be handled before by using
16750    ASN1_TYPE but there wasn't any function that would try to read a NULL
16751    and produce an error if it couldn't. For compatibility we also have
16752    ASN1_NULL_new() and ASN1_NULL_free() functions but these are faked and
16753    don't allocate anything because they don't need to.
16754
16755    *Steve Henson*
16756
16757  * Initial support for MacOS is now provided. Examine INSTALL.MacOS
16758    for details.
16759
16760    *Andy Polyakov, Roy Woods <roy@centicsystems.ca>*
16761
16762  * Rebuild of the memory allocation routines used by OpenSSL code and
16763    possibly others as well.  The purpose is to make an interface that
16764    provide hooks so anyone can build a separate set of allocation and
16765    deallocation routines to be used by OpenSSL, for example memory
16766    pool implementations, or something else, which was previously hard
16767    since Malloc(), Realloc() and Free() were defined as macros having
16768    the values malloc, realloc and free, respectively (except for Win32
16769    compilations).  The same is provided for memory debugging code.
16770    OpenSSL already comes with functionality to find memory leaks, but
16771    this gives people a chance to debug other memory problems.
16772
16773    With these changes, a new set of functions and macros have appeared:
16774
16775      CRYPTO_set_mem_debug_functions()         [F]
16776      CRYPTO_get_mem_debug_functions()         [F]
16777      CRYPTO_dbg_set_options()                 [F]
16778      CRYPTO_dbg_get_options()                 [F]
16779      CRYPTO_malloc_debug_init()               [M]
16780
16781    The memory debug functions are NULL by default, unless the library
16782    is compiled with CRYPTO_MDEBUG or friends is defined.  If someone
16783    wants to debug memory anyway, CRYPTO_malloc_debug_init() (which
16784    gives the standard debugging functions that come with OpenSSL) or
16785    CRYPTO_set_mem_debug_functions() (tells OpenSSL to use functions
16786    provided by the library user) must be used.  When the standard
16787    debugging functions are used, CRYPTO_dbg_set_options can be used to
16788    request additional information:
16789    CRYPTO_dbg_set_options(V_CYRPTO_MDEBUG_xxx) corresponds to setting
16790    the CRYPTO_MDEBUG_xxx macro when compiling the library.
16791
16792    Also, things like CRYPTO_set_mem_functions will always give the
16793    expected result (the new set of functions is used for allocation
16794    and deallocation) at all times, regardless of platform and compiler
16795    options.
16796
16797    To finish it up, some functions that were never use in any other
16798    way than through macros have a new API and new semantic:
16799
16800      CRYPTO_dbg_malloc()
16801      CRYPTO_dbg_realloc()
16802      CRYPTO_dbg_free()
16803
16804    All macros of value have retained their old syntax.
16805
16806    *Richard Levitte and Bodo Moeller*
16807
16808  * Some S/MIME fixes. The OID for SMIMECapabilities was wrong, the
16809    ordering of SMIMECapabilities wasn't in "strength order" and there
16810    was a missing NULL in the AlgorithmIdentifier for the SHA1 signature
16811    algorithm.
16812
16813    *Steve Henson*
16814
16815  * Some ASN1 types with illegal zero length encoding (INTEGER,
16816    ENUMERATED and OBJECT IDENTIFIER) choked the ASN1 routines.
16817
16818    *Frans Heymans <fheymans@isaserver.be>, modified by Steve Henson*
16819
16820  * Merge in my S/MIME library for OpenSSL. This provides a simple
16821    S/MIME API on top of the PKCS#7 code, a MIME parser (with enough
16822    functionality to handle multipart/signed properly) and a utility
16823    called 'smime' to call all this stuff. This is based on code I
16824    originally wrote for Celo who have kindly allowed it to be
16825    included in OpenSSL.
16826
16827    *Steve Henson*
16828
16829  * Add variants des_set_key_checked and des_set_key_unchecked of
16830    des_set_key (aka des_key_sched).  Global variable des_check_key
16831    decides which of these is called by des_set_key; this way
16832    des_check_key behaves as it always did, but applications and
16833    the library itself, which was buggy for des_check_key == 1,
16834    have a cleaner way to pick the version they need.
16835
16836    *Bodo Moeller*
16837
16838  * New function PKCS12_newpass() which changes the password of a
16839    PKCS12 structure.
16840
16841    *Steve Henson*
16842
16843  * Modify X509_TRUST and X509_PURPOSE so it also uses a static and
16844    dynamic mix. In both cases the ids can be used as an index into the
16845    table. Also modified the X509_TRUST_add() and X509_PURPOSE_add()
16846    functions so they accept a list of the field values and the
16847    application doesn't need to directly manipulate the X509_TRUST
16848    structure.
16849
16850    *Steve Henson*
16851
16852  * Modify the ASN1_STRING_TABLE stuff so it also uses bsearch and doesn't
16853    need initialising.
16854
16855    *Steve Henson*
16856
16857  * Modify the way the V3 extension code looks up extensions. This now
16858    works in a similar way to the object code: we have some "standard"
16859    extensions in a static table which is searched with OBJ_bsearch()
16860    and the application can add dynamic ones if needed. The file
16861    crypto/x509v3/ext_dat.h now has the info: this file needs to be
16862    updated whenever a new extension is added to the core code and kept
16863    in ext_nid order. There is a simple program 'tabtest.c' which checks
16864    this. New extensions are not added too often so this file can readily
16865    be maintained manually.
16866
16867    There are two big advantages in doing things this way. The extensions
16868    can be looked up immediately and no longer need to be "added" using
16869    X509V3_add_standard_extensions(): this function now does nothing.
16870    Side note: I get *lots* of email saying the extension code doesn't
16871    work because people forget to call this function.
16872    Also no dynamic allocation is done unless new extensions are added:
16873    so if we don't add custom extensions there is no need to call
16874    X509V3_EXT_cleanup().
16875
16876    *Steve Henson*
16877
16878  * Modify enc utility's salting as follows: make salting the default. Add a
16879    magic header, so unsalted files fail gracefully instead of just decrypting
16880    to garbage. This is because not salting is a big security hole, so people
16881    should be discouraged from doing it.
16882
16883    *Ben Laurie*
16884
16885  * Fixes and enhancements to the 'x509' utility. It allowed a message
16886    digest to be passed on the command line but it only used this
16887    parameter when signing a certificate. Modified so all relevant
16888    operations are affected by the digest parameter including the
16889    -fingerprint and -x509toreq options. Also -x509toreq choked if a
16890    DSA key was used because it didn't fix the digest.
16891
16892    *Steve Henson*
16893
16894  * Initial certificate chain verify code. Currently tests the untrusted
16895    certificates for consistency with the verify purpose (which is set
16896    when the X509_STORE_CTX structure is set up) and checks the pathlength.
16897
16898    There is a NO_CHAIN_VERIFY compilation option to keep the old behaviour:
16899    this is because it will reject chains with invalid extensions whereas
16900    every previous version of OpenSSL and SSLeay made no checks at all.
16901
16902    Trust code: checks the root CA for the relevant trust settings. Trust
16903    settings have an initial value consistent with the verify purpose: e.g.
16904    if the verify purpose is for SSL client use it expects the CA to be
16905    trusted for SSL client use. However the default value can be changed to
16906    permit custom trust settings: one example of this would be to only trust
16907    certificates from a specific "secure" set of CAs.
16908
16909    Also added X509_STORE_CTX_new() and X509_STORE_CTX_free() functions
16910    which should be used for version portability: especially since the
16911    verify structure is likely to change more often now.
16912
16913    SSL integration. Add purpose and trust to SSL_CTX and SSL and functions
16914    to set them. If not set then assume SSL clients will verify SSL servers
16915    and vice versa.
16916
16917    Two new options to the verify program: -untrusted allows a set of
16918    untrusted certificates to be passed in and -purpose which sets the
16919    intended purpose of the certificate. If a purpose is set then the
16920    new chain verify code is used to check extension consistency.
16921
16922    *Steve Henson*
16923
16924  * Support for the authority information access extension.
16925
16926    *Steve Henson*
16927
16928  * Modify RSA and DSA PEM read routines to transparently handle
16929    PKCS#8 format private keys. New *_PUBKEY_* functions that handle
16930    public keys in a format compatible with certificate
16931    SubjectPublicKeyInfo structures. Unfortunately there were already
16932    functions called *_PublicKey_* which used various odd formats so
16933    these are retained for compatibility: however the DSA variants were
16934    never in a public release so they have been deleted. Changed dsa/rsa
16935    utilities to handle the new format: note no releases ever handled public
16936    keys so we should be OK.
16937
16938    The primary motivation for this change is to avoid the same fiasco
16939    that dogs private keys: there are several incompatible private key
16940    formats some of which are standard and some OpenSSL specific and
16941    require various evil hacks to allow partial transparent handling and
16942    even then it doesn't work with DER formats. Given the option anything
16943    other than PKCS#8 should be dumped: but the other formats have to
16944    stay in the name of compatibility.
16945
16946    With public keys and the benefit of hindsight one standard format
16947    is used which works with EVP_PKEY, RSA or DSA structures: though
16948    it clearly returns an error if you try to read the wrong kind of key.
16949
16950    Added a -pubkey option to the 'x509' utility to output the public key.
16951    Also rename the `EVP_PKEY_get_*()` to `EVP_PKEY_rget_*()`
16952    (renamed to `EVP_PKEY_get1_*()` in the OpenSSL 0.9.5 release) and add
16953    `EVP_PKEY_rset_*()` functions (renamed to `EVP_PKEY_set1_*()`)
16954    that do the same as the `EVP_PKEY_assign_*()` except they up the
16955    reference count of the added key (they don't "swallow" the
16956    supplied key).
16957
16958    *Steve Henson*
16959
16960  * Fixes to crypto/x509/by_file.c the code to read in certificates and
16961    CRLs would fail if the file contained no certificates or no CRLs:
16962    added a new function to read in both types and return the number
16963    read: this means that if none are read it will be an error. The
16964    DER versions of the certificate and CRL reader would always fail
16965    because it isn't possible to mix certificates and CRLs in DER format
16966    without choking one or the other routine. Changed this to just read
16967    a certificate: this is the best we can do. Also modified the code
16968    in `apps/verify.c` to take notice of return codes: it was previously
16969    attempting to read in certificates from NULL pointers and ignoring
16970    any errors: this is one reason why the cert and CRL reader seemed
16971    to work. It doesn't check return codes from the default certificate
16972    routines: these may well fail if the certificates aren't installed.
16973
16974    *Steve Henson*
16975
16976  * Code to support otherName option in GeneralName.
16977
16978    *Steve Henson*
16979
16980  * First update to verify code. Change the verify utility
16981    so it warns if it is passed a self signed certificate:
16982    for consistency with the normal behaviour. X509_verify
16983    has been modified to it will now verify a self signed
16984    certificate if *exactly* the same certificate appears
16985    in the store: it was previously impossible to trust a
16986    single self signed certificate. This means that:
16987    openssl verify ss.pem
16988    now gives a warning about a self signed certificate but
16989    openssl verify -CAfile ss.pem ss.pem
16990    is OK.
16991
16992    *Steve Henson*
16993
16994  * For servers, store verify_result in SSL_SESSION data structure
16995    (and add it to external session representation).
16996    This is needed when client certificate verifications fails,
16997    but an application-provided verification callback (set by
16998    SSL_CTX_set_cert_verify_callback) allows accepting the session
16999    anyway (i.e. leaves x509_store_ctx->error != X509_V_OK
17000    but returns 1): When the session is reused, we have to set
17001    ssl->verify_result to the appropriate error code to avoid
17002    security holes.
17003
17004    *Bodo Moeller, problem pointed out by Lutz Jaenicke*
17005
17006  * Fix a bug in the new PKCS#7 code: it didn't consider the
17007    case in PKCS7_dataInit() where the signed PKCS7 structure
17008    didn't contain any existing data because it was being created.
17009
17010    *Po-Cheng Chen <pocheng@nst.com.tw>, slightly modified by Steve Henson*
17011
17012  * Add a salt to the key derivation routines in enc.c. This
17013    forms the first 8 bytes of the encrypted file. Also add a
17014    -S option to allow a salt to be input on the command line.
17015
17016    *Steve Henson*
17017
17018  * New function X509_cmp(). Oddly enough there wasn't a function
17019    to compare two certificates. We do this by working out the SHA1
17020    hash and comparing that. X509_cmp() will be needed by the trust
17021    code.
17022
17023    *Steve Henson*
17024
17025  * SSL_get1_session() is like SSL_get_session(), but increments
17026    the reference count in the SSL_SESSION returned.
17027
17028    *Geoff Thorpe <geoff@eu.c2.net>*
17029
17030  * Fix for 'req': it was adding a null to request attributes.
17031    Also change the X509_LOOKUP and X509_INFO code to handle
17032    certificate auxiliary information.
17033
17034    *Steve Henson*
17035
17036  * Add support for 40 and 64 bit RC2 and RC4 algorithms: document
17037    the 'enc' command.
17038
17039    *Steve Henson*
17040
17041  * Add the possibility to add extra information to the memory leak
17042    detecting output, to form tracebacks, showing from where each
17043    allocation was originated: CRYPTO_push_info("constant string") adds
17044    the string plus current file name and line number to a per-thread
17045    stack, CRYPTO_pop_info() does the obvious, CRYPTO_remove_all_info()
17046    is like calling CYRPTO_pop_info() until the stack is empty.
17047    Also updated memory leak detection code to be multi-thread-safe.
17048
17049    *Richard Levitte*
17050
17051  * Add options -text and -noout to pkcs7 utility and delete the
17052    encryption options which never did anything. Update docs.
17053
17054    *Steve Henson*
17055
17056  * Add options to some of the utilities to allow the pass phrase
17057    to be included on either the command line (not recommended on
17058    OSes like Unix) or read from the environment. Update the
17059    manpages and fix a few bugs.
17060
17061    *Steve Henson*
17062
17063  * Add a few manpages for some of the openssl commands.
17064
17065    *Steve Henson*
17066
17067  * Fix the -revoke option in ca. It was freeing up memory twice,
17068    leaking and not finding already revoked certificates.
17069
17070    *Steve Henson*
17071
17072  * Extensive changes to support certificate auxiliary information.
17073    This involves the use of X509_CERT_AUX structure and X509_AUX
17074    functions. An X509_AUX function such as PEM_read_X509_AUX()
17075    can still read in a certificate file in the usual way but it
17076    will also read in any additional "auxiliary information". By
17077    doing things this way a fair degree of compatibility can be
17078    retained: existing certificates can have this information added
17079    using the new 'x509' options.
17080
17081    Current auxiliary information includes an "alias" and some trust
17082    settings. The trust settings will ultimately be used in enhanced
17083    certificate chain verification routines: currently a certificate
17084    can only be trusted if it is self signed and then it is trusted
17085    for all purposes.
17086
17087    *Steve Henson*
17088
17089  * Fix assembler for Alpha (tested only on DEC OSF not Linux or `*BSD`).
17090    The problem was that one of the replacement routines had not been working
17091    since SSLeay releases.  For now the offending routine has been replaced
17092    with non-optimised assembler.  Even so, this now gives around 95%
17093    performance improvement for 1024 bit RSA signs.
17094
17095    *Mark Cox*
17096
17097  * Hack to fix PKCS#7 decryption when used with some unorthodox RC2
17098    handling. Most clients have the effective key size in bits equal to
17099    the key length in bits: so a 40 bit RC2 key uses a 40 bit (5 byte) key.
17100    A few however don't do this and instead use the size of the decrypted key
17101    to determine the RC2 key length and the AlgorithmIdentifier to determine
17102    the effective key length. In this case the effective key length can still
17103    be 40 bits but the key length can be 168 bits for example. This is fixed
17104    by manually forcing an RC2 key into the EVP_PKEY structure because the
17105    EVP code can't currently handle unusual RC2 key sizes: it always assumes
17106    the key length and effective key length are equal.
17107
17108    *Steve Henson*
17109
17110  * Add a bunch of functions that should simplify the creation of
17111    X509_NAME structures. Now you should be able to do:
17112    X509_NAME_add_entry_by_txt(nm, "CN", MBSTRING_ASC, "Steve", -1, -1, 0);
17113    and have it automatically work out the correct field type and fill in
17114    the structures. The more adventurous can try:
17115    X509_NAME_add_entry_by_txt(nm, field, MBSTRING_UTF8, str, -1, -1, 0);
17116    and it will (hopefully) work out the correct multibyte encoding.
17117
17118    *Steve Henson*
17119
17120  * Change the 'req' utility to use the new field handling and multibyte
17121    copy routines. Before the DN field creation was handled in an ad hoc
17122    way in req, ca, and x509 which was rather broken and didn't support
17123    BMPStrings or UTF8Strings. Since some software doesn't implement
17124    BMPStrings or UTF8Strings yet, they can be enabled using the config file
17125    using the dirstring_type option. See the new comment in the default
17126    openssl.cnf for more info.
17127
17128    *Steve Henson*
17129
17130  * Make crypto/rand/md_rand.c more robust:
17131    - Assure unique random numbers after fork().
17132    - Make sure that concurrent threads access the global counter and
17133      md serializably so that we never lose entropy in them
17134      or use exactly the same state in multiple threads.
17135      Access to the large state is not always serializable because
17136      the additional locking could be a performance killer, and
17137      md should be large enough anyway.
17138
17139    *Bodo Moeller*
17140
17141  * New file `apps/app_rand.c` with commonly needed functionality
17142    for handling the random seed file.
17143
17144    Use the random seed file in some applications that previously did not:
17145            ca,
17146            dsaparam -genkey (which also ignored its '-rand' option),
17147            s_client,
17148            s_server,
17149            x509 (when signing).
17150    Except on systems with /dev/urandom, it is crucial to have a random
17151    seed file at least for key creation, DSA signing, and for DH exchanges;
17152    for RSA signatures we could do without one.
17153
17154    gendh and gendsa (unlike genrsa) used to read only the first byte
17155    of each file listed in the '-rand' option.  The function as previously
17156    found in genrsa is now in app_rand.c and is used by all programs
17157    that support '-rand'.
17158
17159    *Bodo Moeller*
17160
17161  * In RAND_write_file, use mode 0600 for creating files;
17162    don't just chmod when it may be too late.
17163
17164    *Bodo Moeller*
17165
17166  * Report an error from X509_STORE_load_locations
17167    when X509_LOOKUP_load_file or X509_LOOKUP_add_dir failed.
17168
17169    *Bill Perry*
17170
17171  * New function ASN1_mbstring_copy() this copies a string in either
17172    ASCII, Unicode, Universal (4 bytes per character) or UTF8 format
17173    into an ASN1_STRING type. A mask of permissible types is passed
17174    and it chooses the "minimal" type to use or an error if not type
17175    is suitable.
17176
17177    *Steve Henson*
17178
17179  * Add function equivalents to the various macros in asn1.h. The old
17180    macros are retained with an `M_` prefix. Code inside the library can
17181    use the `M_` macros. External code (including the openssl utility)
17182    should *NOT* in order to be "shared library friendly".
17183
17184    *Steve Henson*
17185
17186  * Add various functions that can check a certificate's extensions
17187    to see if it usable for various purposes such as SSL client,
17188    server or S/MIME and CAs of these types. This is currently
17189    VERY EXPERIMENTAL but will ultimately be used for certificate chain
17190    verification. Also added a -purpose flag to x509 utility to
17191    print out all the purposes.
17192
17193    *Steve Henson*
17194
17195  * Add a CRYPTO_EX_DATA to X509 certificate structure and associated
17196    functions.
17197
17198    *Steve Henson*
17199
17200  * New `X509V3_{X509,CRL,REVOKED}_get_d2i()` functions. These will search
17201    for, obtain and decode and extension and obtain its critical flag.
17202    This allows all the necessary extension code to be handled in a
17203    single function call.
17204
17205    *Steve Henson*
17206
17207  * RC4 tune-up featuring 30-40% performance improvement on most RISC
17208    platforms. See crypto/rc4/rc4_enc.c for further details.
17209
17210    *Andy Polyakov*
17211
17212  * New -noout option to asn1parse. This causes no output to be produced
17213    its main use is when combined with -strparse and -out to extract data
17214    from a file (which may not be in ASN.1 format).
17215
17216    *Steve Henson*
17217
17218  * Fix for pkcs12 program. It was hashing an invalid certificate pointer
17219    when producing the local key id.
17220
17221    *Richard Levitte <levitte@stacken.kth.se>*
17222
17223  * New option -dhparam in s_server. This allows a DH parameter file to be
17224    stated explicitly. If it is not stated then it tries the first server
17225    certificate file. The previous behaviour hard coded the filename
17226    "server.pem".
17227
17228    *Steve Henson*
17229
17230  * Add -pubin and -pubout options to the rsa and dsa commands. These allow
17231    a public key to be input or output. For example:
17232    openssl rsa -in key.pem -pubout -out pubkey.pem
17233    Also added necessary DSA public key functions to handle this.
17234
17235    *Steve Henson*
17236
17237  * Fix so PKCS7_dataVerify() doesn't crash if no certificates are contained
17238    in the message. This was handled by allowing
17239    X509_find_by_issuer_and_serial() to tolerate a NULL passed to it.
17240
17241    *Steve Henson, reported by Sampo Kellomaki <sampo@mail.neuronio.pt>*
17242
17243  * Fix for bug in d2i_ASN1_bytes(): other ASN1 functions add an extra null
17244    to the end of the strings whereas this didn't. This would cause problems
17245    if strings read with d2i_ASN1_bytes() were later modified.
17246
17247    *Steve Henson, reported by Arne Ansper <arne@ats.cyber.ee>*
17248
17249  * Fix for base64 decode bug. When a base64 bio reads only one line of
17250    data and it contains EOF it will end up returning an error. This is
17251    caused by input 46 bytes long. The cause is due to the way base64
17252    BIOs find the start of base64 encoded data. They do this by trying a
17253    trial decode on each line until they find one that works. When they
17254    do a flag is set and it starts again knowing it can pass all the
17255    data directly through the decoder. Unfortunately it doesn't reset
17256    the context it uses. This means that if EOF is reached an attempt
17257    is made to pass two EOFs through the context and this causes the
17258    resulting error. This can also cause other problems as well. As is
17259    usual with these problems it takes *ages* to find and the fix is
17260    trivial: move one line.
17261
17262    *Steve Henson, reported by ian@uns.ns.ac.yu (Ivan Nejgebauer)*
17263
17264  * Ugly workaround to get s_client and s_server working under Windows. The
17265    old code wouldn't work because it needed to select() on sockets and the
17266    tty (for keypresses and to see if data could be written). Win32 only
17267    supports select() on sockets so we select() with a 1s timeout on the
17268    sockets and then see if any characters are waiting to be read, if none
17269    are present then we retry, we also assume we can always write data to
17270    the tty. This isn't nice because the code then blocks until we've
17271    received a complete line of data and it is effectively polling the
17272    keyboard at 1s intervals: however it's quite a bit better than not
17273    working at all :-) A dedicated Windows application might handle this
17274    with an event loop for example.
17275
17276    *Steve Henson*
17277
17278  * Enhance RSA_METHOD structure. Now there are two extra methods, rsa_sign
17279    and rsa_verify. When the RSA_FLAGS_SIGN_VER option is set these functions
17280    will be called when RSA_sign() and RSA_verify() are used. This is useful
17281    if rsa_pub_dec() and rsa_priv_enc() equivalents are not available.
17282    For this to work properly RSA_public_decrypt() and RSA_private_encrypt()
17283    should *not* be used: RSA_sign() and RSA_verify() must be used instead.
17284    This necessitated the support of an extra signature type NID_md5_sha1
17285    for SSL signatures and modifications to the SSL library to use it instead
17286    of calling RSA_public_decrypt() and RSA_private_encrypt().
17287
17288    *Steve Henson*
17289
17290  * Add new -verify -CAfile and -CApath options to the crl program, these
17291    will lookup a CRL issuers certificate and verify the signature in a
17292    similar way to the verify program. Tidy up the crl program so it
17293    no longer accesses structures directly. Make the ASN1 CRL parsing a bit
17294    less strict. It will now permit CRL extensions even if it is not
17295    a V2 CRL: this will allow it to tolerate some broken CRLs.
17296
17297    *Steve Henson*
17298
17299  * Initialize all non-automatic variables each time one of the openssl
17300    sub-programs is started (this is necessary as they may be started
17301    multiple times from the "OpenSSL>" prompt).
17302
17303    *Lennart Bang, Bodo Moeller*
17304
17305  * Preliminary compilation option RSA_NULL which disables RSA crypto without
17306    removing all other RSA functionality (this is what NO_RSA does). This
17307    is so (for example) those in the US can disable those operations covered
17308    by the RSA patent while allowing storage and parsing of RSA keys and RSA
17309    key generation.
17310
17311    *Steve Henson*
17312
17313  * Non-copying interface to BIO pairs.
17314    (still largely untested)
17315
17316    *Bodo Moeller*
17317
17318  * New function ASN1_tag2str() to convert an ASN1 tag to a descriptive
17319    ASCII string. This was handled independently in various places before.
17320
17321    *Steve Henson*
17322
17323  * New functions UTF8_getc() and UTF8_putc() that parse and generate
17324    UTF8 strings a character at a time.
17325
17326    *Steve Henson*
17327
17328  * Use client_version from client hello to select the protocol
17329    (s23_srvr.c) and for RSA client key exchange verification
17330    (s3_srvr.c), as required by the SSL 3.0/TLS 1.0 specifications.
17331
17332    *Bodo Moeller*
17333
17334  * Add various utility functions to handle SPKACs, these were previously
17335    handled by poking round in the structure internals. Added new function
17336    NETSCAPE_SPKI_print() to print out SPKAC and a new utility 'spkac' to
17337    print, verify and generate SPKACs. Based on an original idea from
17338    Massimiliano Pala <madwolf@comune.modena.it> but extensively modified.
17339
17340    *Steve Henson*
17341
17342  * RIPEMD160 is operational on all platforms and is back in 'make test'.
17343
17344    *Andy Polyakov*
17345
17346  * Allow the config file extension section to be overwritten on the
17347    command line. Based on an original idea from Massimiliano Pala
17348    <madwolf@comune.modena.it>. The new option is called -extensions
17349    and can be applied to ca, req and x509. Also -reqexts to override
17350    the request extensions in req and -crlexts to override the crl extensions
17351    in ca.
17352
17353    *Steve Henson*
17354
17355  * Add new feature to the SPKAC handling in ca.  Now you can include
17356    the same field multiple times by preceding it by "XXXX." for example:
17357    1.OU="Unit name 1"
17358    2.OU="Unit name 2"
17359    this is the same syntax as used in the req config file.
17360
17361    *Steve Henson*
17362
17363  * Allow certificate extensions to be added to certificate requests. These
17364    are specified in a 'req_extensions' option of the req section of the
17365    config file. They can be printed out with the -text option to req but
17366    are otherwise ignored at present.
17367
17368    *Steve Henson*
17369
17370  * Fix a horrible bug in enc_read() in crypto/evp/bio_enc.c: if the first
17371    data read consists of only the final block it would not decrypted because
17372    EVP_CipherUpdate() would correctly report zero bytes had been decrypted.
17373    A misplaced 'break' also meant the decrypted final block might not be
17374    copied until the next read.
17375
17376    *Steve Henson*
17377
17378  * Initial support for DH_METHOD. Again based on RSA_METHOD. Also added
17379    a few extra parameters to the DH structure: these will be useful if
17380    for example we want the value of 'q' or implement X9.42 DH.
17381
17382    *Steve Henson*
17383
17384  * Initial support for DSA_METHOD. This is based on the RSA_METHOD and
17385    provides hooks that allow the default DSA functions or functions on a
17386    "per key" basis to be replaced. This allows hardware acceleration and
17387    hardware key storage to be handled without major modification to the
17388    library. Also added low-level modexp hooks and CRYPTO_EX structure and
17389    associated functions.
17390
17391    *Steve Henson*
17392
17393  * Add a new flag to memory BIOs, BIO_FLAG_MEM_RDONLY. This marks the BIO
17394    as "read only": it can't be written to and the buffer it points to will
17395    not be freed. Reading from a read only BIO is much more efficient than
17396    a normal memory BIO. This was added because there are several times when
17397    an area of memory needs to be read from a BIO. The previous method was
17398    to create a memory BIO and write the data to it, this results in two
17399    copies of the data and an O(n^2) reading algorithm. There is a new
17400    function BIO_new_mem_buf() which creates a read only memory BIO from
17401    an area of memory. Also modified the PKCS#7 routines to use read only
17402    memory BIOs.
17403
17404    *Steve Henson*
17405
17406  * Bugfix: ssl23_get_client_hello did not work properly when called in
17407    state SSL23_ST_SR_CLNT_HELLO_B, i.e. when the first 7 bytes of
17408    a SSLv2-compatible client hello for SSLv3 or TLSv1 could be read,
17409    but a retry condition occurred while trying to read the rest.
17410
17411    *Bodo Moeller*
17412
17413  * The PKCS7_ENC_CONTENT_new() function was setting the content type as
17414    NID_pkcs7_encrypted by default: this was wrong since this should almost
17415    always be NID_pkcs7_data. Also modified the PKCS7_set_type() to handle
17416    the encrypted data type: this is a more sensible place to put it and it
17417    allows the PKCS#12 code to be tidied up that duplicated this
17418    functionality.
17419
17420    *Steve Henson*
17421
17422  * Changed obj_dat.pl script so it takes its input and output files on
17423    the command line. This should avoid shell escape redirection problems
17424    under Win32.
17425
17426    *Steve Henson*
17427
17428  * Initial support for certificate extension requests, these are included
17429    in things like Xenroll certificate requests. Included functions to allow
17430    extensions to be obtained and added.
17431
17432    *Steve Henson*
17433
17434  * -crlf option to s_client and s_server for sending newlines as
17435    CRLF (as required by many protocols).
17436
17437    *Bodo Moeller*
17438
17439 ### Changes between 0.9.3a and 0.9.4  [09 Aug 1999]
17440
17441  * Install libRSAglue.a when OpenSSL is built with RSAref.
17442
17443    *Ralf S. Engelschall*
17444
17445  * A few more `#ifndef NO_FP_API / #endif` pairs for consistency.
17446
17447    *Andrija Antonijevic <TheAntony2@bigfoot.com>*
17448
17449  * Fix -startdate and -enddate (which was missing) arguments to 'ca'
17450    program.
17451
17452    *Steve Henson*
17453
17454  * New function DSA_dup_DH, which duplicates DSA parameters/keys as
17455    DH parameters/keys (q is lost during that conversion, but the resulting
17456    DH parameters contain its length).
17457
17458    For 1024-bit p, DSA_generate_parameters followed by DSA_dup_DH is
17459    much faster than DH_generate_parameters (which creates parameters
17460    where `p = 2*q + 1`), and also the smaller q makes DH computations
17461    much more efficient (160-bit exponentiation instead of 1024-bit
17462    exponentiation); so this provides a convenient way to support DHE
17463    ciphersuites in SSL/TLS servers (see ssl/ssltest.c).  It is of
17464    utter importance to use
17465            SSL_CTX_set_options(s_ctx, SSL_OP_SINGLE_DH_USE);
17466    or
17467            SSL_set_options(s_ctx, SSL_OP_SINGLE_DH_USE);
17468    when such DH parameters are used, because otherwise small subgroup
17469    attacks may become possible!
17470
17471    *Bodo Moeller*
17472
17473  * Avoid memory leak in i2d_DHparams.
17474
17475    *Bodo Moeller*
17476
17477  * Allow the -k option to be used more than once in the enc program:
17478    this allows the same encrypted message to be read by multiple recipients.
17479
17480    *Steve Henson*
17481
17482  * New function OBJ_obj2txt(buf, buf_len, a, no_name), this converts
17483    an ASN1_OBJECT to a text string. If the "no_name" parameter is set then
17484    it will always use the numerical form of the OID, even if it has a short
17485    or long name.
17486
17487    *Steve Henson*
17488
17489  * Added an extra RSA flag: RSA_FLAG_EXT_PKEY. Previously the rsa_mod_exp
17490    method only got called if p,q,dmp1,dmq1,iqmp components were present,
17491    otherwise bn_mod_exp was called. In the case of hardware keys for example
17492    no private key components need be present and it might store extra data
17493    in the RSA structure, which cannot be accessed from bn_mod_exp.
17494    By setting RSA_FLAG_EXT_PKEY rsa_mod_exp will always be called for
17495    private key operations.
17496
17497    *Steve Henson*
17498
17499  * Added support for SPARC Linux.
17500
17501    *Andy Polyakov*
17502
17503  * pem_password_cb function type incompatibly changed from
17504            typedef int pem_password_cb(char *buf, int size, int rwflag);
17505    to
17506            ....(char *buf, int size, int rwflag, void *userdata);
17507    so that applications can pass data to their callbacks:
17508    The `PEM[_ASN1]_{read,write}...` functions and macros now take an
17509    additional void * argument, which is just handed through whenever
17510    the password callback is called.
17511
17512    *Damien Miller <dmiller@ilogic.com.au>; tiny changes by Bodo Moeller*
17513
17514    New function SSL_CTX_set_default_passwd_cb_userdata.
17515
17516    Compatibility note: As many C implementations push function arguments
17517    onto the stack in reverse order, the new library version is likely to
17518    interoperate with programs that have been compiled with the old
17519    pem_password_cb definition (PEM_whatever takes some data that
17520    happens to be on the stack as its last argument, and the callback
17521    just ignores this garbage); but there is no guarantee whatsoever that
17522    this will work.
17523
17524  * The -DPLATFORM="\"$(PLATFORM)\"" definition and the similar -DCFLAGS=...
17525    (both in crypto/Makefile.ssl for use by crypto/cversion.c) caused
17526    problems not only on Windows, but also on some Unix platforms.
17527    To avoid problematic command lines, these definitions are now in an
17528    auto-generated file crypto/buildinf.h (created by crypto/Makefile.ssl
17529    for standard "make" builds, by util/mk1mf.pl for "mk1mf" builds).
17530
17531    *Bodo Moeller*
17532
17533  * MIPS III/IV assembler module is reimplemented.
17534
17535    *Andy Polyakov*
17536
17537  * More DES library cleanups: remove references to srand/rand and
17538    delete an unused file.
17539
17540    *Ulf Möller*
17541
17542  * Add support for the free Netwide assembler (NASM) under Win32,
17543    since not many people have MASM (ml) and it can be hard to obtain.
17544    This is currently experimental but it seems to work OK and pass all
17545    the tests. Check out INSTALL.W32 for info.
17546
17547    *Steve Henson*
17548
17549  * Fix memory leaks in s3_clnt.c: All non-anonymous SSL3/TLS1 connections
17550    without temporary keys kept an extra copy of the server key,
17551    and connections with temporary keys did not free everything in case
17552    of an error.
17553
17554    *Bodo Moeller*
17555
17556  * New function RSA_check_key and new openssl rsa option -check
17557    for verifying the consistency of RSA keys.
17558
17559    *Ulf Moeller, Bodo Moeller*
17560
17561  * Various changes to make Win32 compile work:
17562    1. Casts to avoid "loss of data" warnings in p5_crpt2.c
17563    2. Change unsigned int to int in b_dump.c to avoid "signed/unsigned
17564       comparison" warnings.
17565    3. Add `sk_<TYPE>_sort` to DEF file generator and do make update.
17566
17567    *Steve Henson*
17568
17569  * Add a debugging option to PKCS#5 v2 key generation function: when
17570    you #define DEBUG_PKCS5V2 passwords, salts, iteration counts and
17571    derived keys are printed to stderr.
17572
17573    *Steve Henson*
17574
17575  * Copy the flags in ASN1_STRING_dup().
17576
17577    *Roman E. Pavlov <pre@mo.msk.ru>*
17578
17579  * The x509 application mishandled signing requests containing DSA
17580    keys when the signing key was also DSA and the parameters didn't match.
17581
17582    It was supposed to omit the parameters when they matched the signing key:
17583    the verifying software was then supposed to automatically use the CA's
17584    parameters if they were absent from the end user certificate.
17585
17586    Omitting parameters is no longer recommended. The test was also
17587    the wrong way round! This was probably due to unusual behaviour in
17588    EVP_cmp_parameters() which returns 1 if the parameters match.
17589    This meant that parameters were omitted when they *didn't* match and
17590    the certificate was useless. Certificates signed with 'ca' didn't have
17591    this bug.
17592
17593    *Steve Henson, reported by Doug Erickson <Doug.Erickson@Part.NET>*
17594
17595  * Memory leak checking (-DCRYPTO_MDEBUG) had some problems.
17596    The interface is as follows:
17597    Applications can use
17598            CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON) aka MemCheck_start(),
17599            CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_OFF) aka MemCheck_stop();
17600    "off" is now the default.
17601    The library internally uses
17602            CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_DISABLE) aka MemCheck_off(),
17603            CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ENABLE) aka MemCheck_on()
17604    to disable memory-checking temporarily.
17605
17606    Some inconsistent states that previously were possible (and were
17607    even the default) are now avoided.
17608
17609    -DCRYPTO_MDEBUG_TIME is new and additionally stores the current time
17610    with each memory chunk allocated; this is occasionally more helpful
17611    than just having a counter.
17612
17613    -DCRYPTO_MDEBUG_THREAD is also new and adds the thread ID.
17614
17615    -DCRYPTO_MDEBUG_ALL enables all of the above, plus any future
17616    extensions.
17617
17618    *Bodo Moeller*
17619
17620  * Introduce "mode" for SSL structures (with defaults in SSL_CTX),
17621    which largely parallels "options", but is for changing API behaviour,
17622    whereas "options" are about protocol behaviour.
17623    Initial "mode" flags are:
17624
17625    SSL_MODE_ENABLE_PARTIAL_WRITE   Allow SSL_write to report success when
17626                                    a single record has been written.
17627    SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER  Don't insist that SSL_write
17628                                    retries use the same buffer location.
17629                                    (But all of the contents must be
17630                                    copied!)
17631
17632    *Bodo Moeller*
17633
17634  * Bugfix: SSL_set_options ignored its parameter, only SSL_CTX_set_options
17635    worked.
17636
17637  * Fix problems with no-hmac etc.
17638
17639    *Ulf Möller, pointed out by Brian Wellington <bwelling@tislabs.com>*
17640
17641  * New functions RSA_get_default_method(), RSA_set_method() and
17642    RSA_get_method(). These allows replacement of RSA_METHODs without having
17643    to mess around with the internals of an RSA structure.
17644
17645    *Steve Henson*
17646
17647  * Fix memory leaks in DSA_do_sign and DSA_is_prime.
17648    Also really enable memory leak checks in openssl.c and in some
17649    test programs.
17650
17651    *Chad C. Mulligan, Bodo Moeller*
17652
17653  * Fix a bug in d2i_ASN1_INTEGER() and i2d_ASN1_INTEGER() which can mess
17654    up the length of negative integers. This has now been simplified to just
17655    store the length when it is first determined and use it later, rather
17656    than trying to keep track of where data is copied and updating it to
17657    point to the end.
17658    *Steve Henson, reported by Brien Wheeler <bwheeler@authentica-security.com>*
17659
17660  * Add a new function PKCS7_signatureVerify. This allows the verification
17661    of a PKCS#7 signature but with the signing certificate passed to the
17662    function itself. This contrasts with PKCS7_dataVerify which assumes the
17663    certificate is present in the PKCS#7 structure. This isn't always the
17664    case: certificates can be omitted from a PKCS#7 structure and be
17665    distributed by "out of band" means (such as a certificate database).
17666
17667    *Steve Henson*
17668
17669  * Complete the `PEM_*` macros with DECLARE_PEM versions to replace the
17670    function prototypes in pem.h, also change util/mkdef.pl to add the
17671    necessary function names.
17672
17673    *Steve Henson*
17674
17675  * mk1mf.pl (used by Windows builds) did not properly read the
17676    options set by Configure in the top level Makefile, and Configure
17677    was not even able to write more than one option correctly.
17678    Fixed, now "no-idea no-rc5 -DCRYPTO_MDEBUG" etc. works as intended.
17679
17680    *Bodo Moeller*
17681
17682  * New functions CONF_load_bio() and CONF_load_fp() to allow a config
17683    file to be loaded from a BIO or FILE pointer. The BIO version will
17684    for example allow memory BIOs to contain config info.
17685
17686    *Steve Henson*
17687
17688  * New function "CRYPTO_num_locks" that returns CRYPTO_NUM_LOCKS.
17689    Whoever hopes to achieve shared-library compatibility across versions
17690    must use this, not the compile-time macro.
17691    (Exercise 0.9.4: Which is the minimum library version required by
17692    such programs?)
17693    Note: All this applies only to multi-threaded programs, others don't
17694    need locks.
17695
17696    *Bodo Moeller*
17697
17698  * Add missing case to s3_clnt.c state machine -- one of the new SSL tests
17699    through a BIO pair triggered the default case, i.e.
17700    SSLerr(...,SSL_R_UNKNOWN_STATE).
17701
17702    *Bodo Moeller*
17703
17704  * New "BIO pair" concept (crypto/bio/bss_bio.c) so that applications
17705    can use the SSL library even if none of the specific BIOs is
17706    appropriate.
17707
17708    *Bodo Moeller*
17709
17710  * Fix a bug in i2d_DSAPublicKey() which meant it returned the wrong value
17711    for the encoded length.
17712
17713    *Jeon KyoungHo <khjeon@sds.samsung.co.kr>*
17714
17715  * Add initial documentation of the X509V3 functions.
17716
17717    *Steve Henson*
17718
17719  * Add a new pair of functions PEM_write_PKCS8PrivateKey() and
17720    PEM_write_bio_PKCS8PrivateKey() that are equivalent to
17721    PEM_write_PrivateKey() and PEM_write_bio_PrivateKey() but use the more
17722    secure PKCS#8 private key format with a high iteration count.
17723
17724    *Steve Henson*
17725
17726  * Fix determination of Perl interpreter: A perl or perl5
17727    *directory* in $PATH was also accepted as the interpreter.
17728
17729    *Ralf S. Engelschall*
17730
17731  * Fix demos/sign/sign.c: well there wasn't anything strictly speaking
17732    wrong with it but it was very old and did things like calling
17733    PEM_ASN1_read() directly and used MD5 for the hash not to mention some
17734    unusual formatting.
17735
17736    *Steve Henson*
17737
17738  * Fix demos/selfsign.c: it used obsolete and deleted functions, changed
17739    to use the new extension code.
17740
17741    *Steve Henson*
17742
17743  * Implement the PEM_read/PEM_write functions in crypto/pem/pem_all.c
17744    with macros. This should make it easier to change their form, add extra
17745    arguments etc. Fix a few PEM prototypes which didn't have cipher as a
17746    constant.
17747
17748    *Steve Henson*
17749
17750  * Add to configuration table a new entry that can specify an alternative
17751    name for unistd.h (for pre-POSIX systems); we need this for NeXTstep,
17752    according to Mark Crispin <MRC@Panda.COM>.
17753
17754    *Bodo Moeller*
17755
17756  * DES CBC did not update the IV. Weird.
17757
17758    *Ben Laurie*
17759 lse
17760    des_cbc_encrypt does not update the IV, but des_ncbc_encrypt does.
17761    Changing the behaviour of the former might break existing programs --
17762    where IV updating is needed, des_ncbc_encrypt can be used.
17763 ndif
17764
17765  * When bntest is run from "make test" it drives bc to check its
17766    calculations, as well as internally checking them. If an internal check
17767    fails, it needs to cause bc to give a non-zero result or make test carries
17768    on without noticing the failure. Fixed.
17769
17770    *Ben Laurie*
17771
17772  * DES library cleanups.
17773
17774    *Ulf Möller*
17775
17776  * Add support for PKCS#5 v2.0 PBE algorithms. This will permit PKCS#8 to be
17777    used with any cipher unlike PKCS#5 v1.5 which can at most handle 64 bit
17778    ciphers. NOTE: although the key derivation function has been verified
17779    against some published test vectors it has not been extensively tested
17780    yet. Added a -v2 "cipher" option to pkcs8 application to allow the use
17781    of v2.0.
17782
17783    *Steve Henson*
17784
17785  * Instead of "mkdir -p", which is not fully portable, use new
17786    Perl script "util/mkdir-p.pl".
17787
17788    *Bodo Moeller*
17789
17790  * Rewrite the way password based encryption (PBE) is handled. It used to
17791    assume that the ASN1 AlgorithmIdentifier parameter was a PBEParameter
17792    structure. This was true for the PKCS#5 v1.5 and PKCS#12 PBE algorithms
17793    but doesn't apply to PKCS#5 v2.0 where it can be something else. Now
17794    the 'parameter' field of the AlgorithmIdentifier is passed to the
17795    underlying key generation function so it must do its own ASN1 parsing.
17796    This has also changed the EVP_PBE_CipherInit() function which now has a
17797    'parameter' argument instead of literal salt and iteration count values
17798    and the function EVP_PBE_ALGOR_CipherInit() has been deleted.
17799
17800    *Steve Henson*
17801
17802  * Support for PKCS#5 v1.5 compatible password based encryption algorithms
17803    and PKCS#8 functionality. New 'pkcs8' application linked to openssl.
17804    Needed to change the PEM_STRING_EVP_PKEY value which was just "PRIVATE
17805    KEY" because this clashed with PKCS#8 unencrypted string. Since this
17806    value was just used as a "magic string" and not used directly its
17807    value doesn't matter.
17808
17809    *Steve Henson*
17810
17811  * Introduce some semblance of const correctness to BN. Shame C doesn't
17812    support mutable.
17813
17814    *Ben Laurie*
17815
17816  * "linux-sparc64" configuration (ultrapenguin).
17817
17818    *Ray Miller <ray.miller@oucs.ox.ac.uk>*
17819    "linux-sparc" configuration.
17820
17821    *Christian Forster <fo@hawo.stw.uni-erlangen.de>*
17822
17823  * config now generates no-xxx options for missing ciphers.
17824
17825    *Ulf Möller*
17826
17827  * Support the EBCDIC character set (work in progress).
17828    File ebcdic.c not yet included because it has a different license.
17829
17830    *Martin Kraemer <Martin.Kraemer@MchP.Siemens.De>*
17831
17832  * Support BS2000/OSD-POSIX.
17833
17834    *Martin Kraemer <Martin.Kraemer@MchP.Siemens.De>*
17835
17836  * Make callbacks for key generation use `void *` instead of `char *`.
17837
17838    *Ben Laurie*
17839
17840  * Make S/MIME samples compile (not yet tested).
17841
17842    *Ben Laurie*
17843
17844  * Additional typesafe stacks.
17845
17846    *Ben Laurie*
17847
17848  * New configuration variants "bsdi-elf-gcc" (BSD/OS 4.x).
17849
17850    *Bodo Moeller*
17851
17852 ### Changes between 0.9.3 and 0.9.3a  [29 May 1999]
17853
17854  * New configuration variant "sco5-gcc".
17855
17856  * Updated some demos.
17857
17858    *Sean O Riordain, Wade Scholine*
17859
17860  * Add missing BIO_free at exit of pkcs12 application.
17861
17862    *Wu Zhigang*
17863
17864  * Fix memory leak in conf.c.
17865
17866    *Steve Henson*
17867
17868  * Updates for Win32 to assembler version of MD5.
17869
17870    *Steve Henson*
17871
17872  * Set #! path to perl in `apps/der_chop` to where we found it
17873    instead of using a fixed path.
17874
17875    *Bodo Moeller*
17876
17877  * SHA library changes for irix64-mips4-cc.
17878
17879    *Andy Polyakov*
17880
17881  * Improvements for VMS support.
17882
17883    *Richard Levitte*
17884
17885 ### Changes between 0.9.2b and 0.9.3  [24 May 1999]
17886
17887  * Bignum library bug fix. IRIX 6 passes "make test" now!
17888    This also avoids the problems with SC4.2 and unpatched SC5.
17889
17890    *Andy Polyakov <appro@fy.chalmers.se>*
17891
17892  * New functions sk_num, sk_value and sk_set to replace the previous macros.
17893    These are required because of the typesafe stack would otherwise break
17894    existing code. If old code used a structure member which used to be STACK
17895    and is now STACK_OF (for example cert in a PKCS7_SIGNED structure) with
17896    sk_num or sk_value it would produce an error because the num, data members
17897    are not present in STACK_OF. Now it just produces a warning. sk_set
17898    replaces the old method of assigning a value to sk_value
17899    (e.g. sk_value(x, i) = y) which the library used in a few cases. Any code
17900    that does this will no longer work (and should use sk_set instead) but
17901    this could be regarded as a "questionable" behaviour anyway.
17902
17903    *Steve Henson*
17904
17905  * Fix most of the other PKCS#7 bugs. The "experimental" code can now
17906    correctly handle encrypted S/MIME data.
17907
17908    *Steve Henson*
17909
17910  * Change type of various DES function arguments from des_cblock
17911    (which means, in function argument declarations, pointer to char)
17912    to des_cblock * (meaning pointer to array with 8 char elements),
17913    which allows the compiler to do more typechecking; it was like
17914    that back in SSLeay, but with lots of ugly casts.
17915
17916    Introduce new type const_des_cblock.
17917
17918    *Bodo Moeller*
17919
17920  * Reorganise the PKCS#7 library and get rid of some of the more obvious
17921    problems: find RecipientInfo structure that matches recipient certificate
17922    and initialise the ASN1 structures properly based on passed cipher.
17923
17924    *Steve Henson*
17925
17926  * Belatedly make the BN tests actually check the results.
17927
17928    *Ben Laurie*
17929
17930  * Fix the encoding and decoding of negative ASN1 INTEGERS and conversion
17931    to and from BNs: it was completely broken. New compilation option
17932    NEG_PUBKEY_BUG to allow for some broken certificates that encode public
17933    key elements as negative integers.
17934
17935    *Steve Henson*
17936
17937  * Reorganize and speed up MD5.
17938
17939    *Andy Polyakov <appro@fy.chalmers.se>*
17940
17941  * VMS support.
17942
17943    *Richard Levitte <richard@levitte.org>*
17944
17945  * New option -out to asn1parse to allow the parsed structure to be
17946    output to a file. This is most useful when combined with the -strparse
17947    option to examine the output of things like OCTET STRINGS.
17948
17949    *Steve Henson*
17950
17951  * Make SSL library a little more fool-proof by not requiring any longer
17952    that `SSL_set_{accept,connect}_state` be called before
17953    `SSL_{accept,connect}` may be used (`SSL_set_..._state` is omitted
17954    in many applications because usually everything *appeared* to work as
17955    intended anyway -- now it really works as intended).
17956
17957    *Bodo Moeller*
17958
17959  * Move openssl.cnf out of lib/.
17960
17961    *Ulf Möller*
17962
17963  * Fix various things to let OpenSSL even pass "egcc -pipe -O2 -Wall
17964    -Wshadow -Wpointer-arith -Wcast-align -Wmissing-prototypes
17965    -Wmissing-declarations -Wnested-externs -Winline" with EGCS 1.1.2+
17966
17967    *Ralf S. Engelschall*
17968
17969  * Various fixes to the EVP and PKCS#7 code. It may now be able to
17970    handle PKCS#7 enveloped data properly.
17971
17972    *Sebastian Akerman <sak@parallelconsulting.com>, modified by Steve*
17973
17974  * Create a duplicate of the SSL_CTX's CERT in SSL_new instead of
17975    copying pointers.  The cert_st handling is changed by this in
17976    various ways (and thus what used to be known as ctx->default_cert
17977    is now called ctx->cert, since we don't resort to `s->ctx->[default_]cert`
17978    any longer when s->cert does not give us what we need).
17979    ssl_cert_instantiate becomes obsolete by this change.
17980    As soon as we've got the new code right (possibly it already is?),
17981    we have solved a couple of bugs of the earlier code where s->cert
17982    was used as if it could not have been shared with other SSL structures.
17983
17984    Note that using the SSL API in certain dirty ways now will result
17985    in different behaviour than observed with earlier library versions:
17986    Changing settings for an `SSL_CTX *ctx` after having done s = SSL_new(ctx)
17987    does not influence s as it used to.
17988
17989    In order to clean up things more thoroughly, inside SSL_SESSION
17990    we don't use CERT any longer, but a new structure SESS_CERT
17991    that holds per-session data (if available); currently, this is
17992    the peer's certificate chain and, for clients, the server's certificate
17993    and temporary key.  CERT holds only those values that can have
17994    meaningful defaults in an SSL_CTX.
17995
17996    *Bodo Moeller*
17997
17998  * New function X509V3_EXT_i2d() to create an X509_EXTENSION structure
17999    from the internal representation. Various PKCS#7 fixes: remove some
18000    evil casts and set the enc_dig_alg field properly based on the signing
18001    key type.
18002
18003    *Steve Henson*
18004
18005  * Allow PKCS#12 password to be set from the command line or the
18006    environment. Let 'ca' get its config file name from the environment
18007    variables "OPENSSL_CONF" or "SSLEAY_CONF" (for consistency with 'req'
18008    and 'x509').
18009
18010    *Steve Henson*
18011
18012  * Allow certificate policies extension to use an IA5STRING for the
18013    organization field. This is contrary to the PKIX definition but
18014    VeriSign uses it and IE5 only recognises this form. Document 'x509'
18015    extension option.
18016
18017    *Steve Henson*
18018
18019  * Add PEDANTIC compiler flag to allow compilation with gcc -pedantic,
18020    without disallowing inline assembler and the like for non-pedantic builds.
18021
18022    *Ben Laurie*
18023
18024  * Support Borland C++ builder.
18025
18026    *Janez Jere <jj@void.si>, modified by Ulf Möller*
18027
18028  * Support Mingw32.
18029
18030    *Ulf Möller*
18031
18032  * SHA-1 cleanups and performance enhancements.
18033
18034    *Andy Polyakov <appro@fy.chalmers.se>*
18035
18036  * Sparc v8plus assembler for the bignum library.
18037
18038    *Andy Polyakov <appro@fy.chalmers.se>*
18039
18040  * Accept any -xxx and +xxx compiler options in Configure.
18041
18042    *Ulf Möller*
18043
18044  * Update HPUX configuration.
18045
18046    *Anonymous*
18047
18048  * Add missing `sk_<type>_unshift()` function to safestack.h
18049
18050    *Ralf S. Engelschall*
18051
18052  * New function SSL_CTX_use_certificate_chain_file that sets the
18053    "extra_cert"s in addition to the certificate.  (This makes sense
18054    only for "PEM" format files, as chains as a whole are not
18055    DER-encoded.)
18056
18057    *Bodo Moeller*
18058
18059  * Support verify_depth from the SSL API.
18060    x509_vfy.c had what can be considered an off-by-one-error:
18061    Its depth (which was not part of the external interface)
18062    was actually counting the number of certificates in a chain;
18063    now it really counts the depth.
18064
18065    *Bodo Moeller*
18066
18067  * Bugfix in crypto/x509/x509_cmp.c: The SSLerr macro was used
18068    instead of X509err, which often resulted in confusing error
18069    messages since the error codes are not globally unique
18070    (e.g. an alleged error in ssl3_accept when a certificate
18071    didn't match the private key).
18072
18073  * New function SSL_CTX_set_session_id_context that allows to set a default
18074    value (so that you don't need SSL_set_session_id_context for each
18075    connection using the SSL_CTX).
18076
18077    *Bodo Moeller*
18078
18079  * OAEP decoding bug fix.
18080
18081    *Ulf Möller*
18082
18083  * Support INSTALL_PREFIX for package builders, as proposed by
18084    David Harris.
18085
18086    *Bodo Moeller*
18087
18088  * New Configure options "threads" and "no-threads".  For systems
18089    where the proper compiler options are known (currently Solaris
18090    and Linux), "threads" is the default.
18091
18092    *Bodo Moeller*
18093
18094  * New script util/mklink.pl as a faster substitute for util/mklink.sh.
18095
18096    *Bodo Moeller*
18097
18098  * Install various scripts to $(OPENSSLDIR)/misc, not to
18099    $(INSTALLTOP)/bin -- they shouldn't clutter directories
18100    such as /usr/local/bin.
18101
18102    *Bodo Moeller*
18103
18104  * "make linux-shared" to build shared libraries.
18105
18106    *Niels Poppe <niels@netbox.org>*
18107
18108  * New Configure option `no-<cipher>` (rsa, idea, rc5, ...).
18109
18110    *Ulf Möller*
18111
18112  * Add the PKCS#12 API documentation to openssl.txt. Preliminary support for
18113    extension adding in x509 utility.
18114
18115    *Steve Henson*
18116
18117  * Remove NOPROTO sections and error code comments.
18118
18119    *Ulf Möller*
18120
18121  * Partial rewrite of the DEF file generator to now parse the ANSI
18122    prototypes.
18123
18124    *Steve Henson*
18125
18126  * New Configure options --prefix=DIR and --openssldir=DIR.
18127
18128    *Ulf Möller*
18129
18130  * Complete rewrite of the error code script(s). It is all now handled
18131    by one script at the top level which handles error code gathering,
18132    header rewriting and C source file generation. It should be much better
18133    than the old method: it now uses a modified version of Ulf's parser to
18134    read the ANSI prototypes in all header files (thus the old K&R definitions
18135    aren't needed for error creation any more) and do a better job of
18136    translating function codes into names. The old 'ASN1 error code embedded
18137    in a comment' is no longer necessary and it doesn't use .err files which
18138    have now been deleted. Also the error code call doesn't have to appear all
18139    on one line (which resulted in some large lines...).
18140
18141    *Steve Henson*
18142
18143  * Change #include filenames from `<foo.h>` to `<openssl/foo.h>`.
18144
18145    *Bodo Moeller*
18146
18147  * Change behaviour of ssl2_read when facing length-0 packets: Don't return
18148    0 (which usually indicates a closed connection), but continue reading.
18149
18150    *Bodo Moeller*
18151
18152  * Fix some race conditions.
18153
18154    *Bodo Moeller*
18155
18156  * Add support for CRL distribution points extension. Add Certificate
18157    Policies and CRL distribution points documentation.
18158
18159    *Steve Henson*
18160
18161  * Move the autogenerated header file parts to crypto/opensslconf.h.
18162
18163    *Ulf Möller*
18164
18165  * Fix new 56-bit DES export ciphersuites: they were using 7 bytes instead of
18166    8 of keying material. Merlin has also confirmed interop with this fix
18167    between OpenSSL and Baltimore C/SSL 2.0 and J/SSL 2.0.
18168
18169    *Merlin Hughes <merlin@baltimore.ie>*
18170
18171  * Fix lots of warnings.
18172
18173    *Richard Levitte <levitte@stacken.kth.se>*
18174
18175  * In add_cert_dir() in crypto/x509/by_dir.c, break out of the loop if
18176    the directory spec didn't end with a LIST_SEPARATOR_CHAR.
18177
18178    *Richard Levitte <levitte@stacken.kth.se>*
18179
18180  * Fix problems with sizeof(long) == 8.
18181
18182    *Andy Polyakov <appro@fy.chalmers.se>*
18183
18184  * Change functions to ANSI C.
18185
18186    *Ulf Möller*
18187
18188  * Fix typos in error codes.
18189
18190    *Martin Kraemer <Martin.Kraemer@MchP.Siemens.De>, Ulf Möller*
18191
18192  * Remove defunct assembler files from Configure.
18193
18194    *Ulf Möller*
18195
18196  * SPARC v8 assembler BIGNUM implementation.
18197
18198    *Andy Polyakov <appro@fy.chalmers.se>*
18199
18200  * Support for Certificate Policies extension: both print and set.
18201    Various additions to support the r2i method this uses.
18202
18203    *Steve Henson*
18204
18205  * A lot of constification, and fix a bug in X509_NAME_oneline() that could
18206    return a const string when you are expecting an allocated buffer.
18207
18208    *Ben Laurie*
18209
18210  * Add support for ASN1 types UTF8String and VISIBLESTRING, also the CHOICE
18211    types DirectoryString and DisplayText.
18212
18213    *Steve Henson*
18214
18215  * Add code to allow r2i extensions to access the configuration database,
18216    add an LHASH database driver and add several ctx helper functions.
18217
18218    *Steve Henson*
18219
18220  * Fix an evil bug in bn_expand2() which caused various BN functions to
18221    fail when they extended the size of a BIGNUM.
18222
18223    *Steve Henson*
18224
18225  * Various utility functions to handle SXNet extension. Modify mkdef.pl to
18226    support typesafe stack.
18227
18228    *Steve Henson*
18229
18230  * Fix typo in SSL_[gs]et_options().
18231
18232    *Nils Frostberg <nils@medcom.se>*
18233
18234  * Delete various functions and files that belonged to the (now obsolete)
18235    old X509V3 handling code.
18236
18237    *Steve Henson*
18238
18239  * New Configure option "rsaref".
18240
18241    *Ulf Möller*
18242
18243  * Don't auto-generate pem.h.
18244
18245    *Bodo Moeller*
18246
18247  * Introduce type-safe ASN.1 SETs.
18248
18249    *Ben Laurie*
18250
18251  * Convert various additional casted stacks to type-safe STACK_OF() variants.
18252
18253    *Ben Laurie, Ralf S. Engelschall, Steve Henson*
18254
18255  * Introduce type-safe STACKs. This will almost certainly break lots of code
18256    that links with OpenSSL (well at least cause lots of warnings), but fear
18257    not: the conversion is trivial, and it eliminates loads of evil casts. A
18258    few STACKed things have been converted already. Feel free to convert more.
18259    In the fullness of time, I'll do away with the STACK type altogether.
18260
18261    *Ben Laurie*
18262
18263  * Add `openssl ca -revoke <certfile>` facility which revokes a certificate
18264    specified in `<certfile>` by updating the entry in the index.txt file.
18265    This way one no longer has to edit the index.txt file manually for
18266    revoking a certificate. The -revoke option does the gory details now.
18267
18268    *Massimiliano Pala <madwolf@openca.org>, Ralf S. Engelschall*
18269
18270  * Fix `openssl crl -noout -text` combination where `-noout` killed the
18271    `-text` option at all and this way the `-noout -text` combination was
18272    inconsistent in `openssl crl` with the friends in `openssl x509|rsa|dsa`.
18273
18274    *Ralf S. Engelschall*
18275
18276  * Make sure a corresponding plain text error message exists for the
18277    X509_V_ERR_CERT_REVOKED/23 error number which can occur when a
18278    verify callback function determined that a certificate was revoked.
18279
18280    *Ralf S. Engelschall*
18281
18282  * Bugfix: In test/testenc, don't test `openssl <cipher>` for
18283    ciphers that were excluded, e.g. by -DNO_IDEA.  Also, test
18284    all available ciphers including rc5, which was forgotten until now.
18285    In order to let the testing shell script know which algorithms
18286    are available, a new (up to now undocumented) command
18287    `openssl list-cipher-commands` is used.
18288
18289    *Bodo Moeller*
18290
18291  * Bugfix: s_client occasionally would sleep in select() when
18292    it should have checked SSL_pending() first.
18293
18294    *Bodo Moeller*
18295
18296  * New functions DSA_do_sign and DSA_do_verify to provide access to
18297    the raw DSA values prior to ASN.1 encoding.
18298
18299    *Ulf Möller*
18300
18301  * Tweaks to Configure
18302
18303    *Niels Poppe <niels@netbox.org>*
18304
18305  * Add support for PKCS#5 v2.0 ASN1 PBES2 structures. No other support,
18306    yet...
18307
18308    *Steve Henson*
18309
18310  * New variables $(RANLIB) and $(PERL) in the Makefiles.
18311
18312    *Ulf Möller*
18313
18314  * New config option to avoid instructions that are illegal on the 80386.
18315    The default code is faster, but requires at least a 486.
18316
18317    *Ulf Möller*
18318
18319  * Got rid of old SSL2_CLIENT_VERSION (inconsistently used) and
18320    SSL2_SERVER_VERSION (not used at all) macros, which are now the
18321    same as SSL2_VERSION anyway.
18322
18323    *Bodo Moeller*
18324
18325  * New "-showcerts" option for s_client.
18326
18327    *Bodo Moeller*
18328
18329  * Still more PKCS#12 integration. Add pkcs12 application to openssl
18330    application. Various cleanups and fixes.
18331
18332    *Steve Henson*
18333
18334  * More PKCS#12 integration. Add new pkcs12 directory with Makefile.ssl and
18335    modify error routines to work internally. Add error codes and PBE init
18336    to library startup routines.
18337
18338    *Steve Henson*
18339
18340  * Further PKCS#12 integration. Added password based encryption, PKCS#8 and
18341    packing functions to asn1 and evp. Changed function names and error
18342    codes along the way.
18343
18344    *Steve Henson*
18345
18346  * PKCS12 integration: and so it begins... First of several patches to
18347    slowly integrate PKCS#12 functionality into OpenSSL. Add PKCS#12
18348    objects to objects.h
18349
18350    *Steve Henson*
18351
18352  * Add a new 'indent' option to some X509V3 extension code. Initial ASN1
18353    and display support for Thawte strong extranet extension.
18354
18355    *Steve Henson*
18356
18357  * Add LinuxPPC support.
18358
18359    *Jeff Dubrule <igor@pobox.org>*
18360
18361  * Get rid of redundant BN file bn_mulw.c, and rename bn_div64 to
18362    bn_div_words in alpha.s.
18363
18364    *Hannes Reinecke <H.Reinecke@hw.ac.uk> and Ben Laurie*
18365
18366  * Make sure the RSA OAEP test is skipped under -DRSAref because
18367    OAEP isn't supported when OpenSSL is built with RSAref.
18368
18369    *Ulf Moeller <ulf@fitug.de>*
18370
18371  * Move definitions of IS_SET/IS_SEQUENCE inside crypto/asn1/asn1.h
18372    so they no longer are missing under -DNOPROTO.
18373
18374    *Soren S. Jorvang <soren@t.dk>*
18375
18376 ### Changes between 0.9.1c and 0.9.2b  [22 Mar 1999]
18377
18378  * Make SSL_get_peer_cert_chain() work in servers. Unfortunately, it still
18379    doesn't work when the session is reused. Coming soon!
18380
18381    *Ben Laurie*
18382
18383  * Fix a security hole, that allows sessions to be reused in the wrong
18384    context thus bypassing client cert protection! All software that uses
18385    client certs and session caches in multiple contexts NEEDS PATCHING to
18386    allow session reuse! A fuller solution is in the works.
18387
18388    *Ben Laurie, problem pointed out by Holger Reif, Bodo Moeller (and ???)*
18389
18390  * Some more source tree cleanups (removed obsolete files
18391    crypto/bf/asm/bf586.pl, test/test.txt and crypto/sha/asm/f.s; changed
18392    permission on "config" script to be executable) and a fix for the INSTALL
18393    document.
18394
18395    *Ulf Moeller <ulf@fitug.de>*
18396
18397  * Remove some legacy and erroneous uses of malloc, free instead of
18398    Malloc, Free.
18399
18400    *Lennart Bang <lob@netstream.se>, with minor changes by Steve*
18401
18402  * Make rsa_oaep_test return non-zero on error.
18403
18404    *Ulf Moeller <ulf@fitug.de>*
18405
18406  * Add support for native Solaris shared libraries. Configure
18407    solaris-sparc-sc4-pic, make, then run shlib/solaris-sc4.sh. It'd be nice
18408    if someone would make that last step automatic.
18409
18410    *Matthias Loepfe <Matthias.Loepfe@AdNovum.CH>*
18411
18412  * ctx_size was not built with the right compiler during "make links". Fixed.
18413
18414    *Ben Laurie*
18415
18416  * Change the meaning of 'ALL' in the cipher list. It now means "everything
18417    except NULL ciphers". This means the default cipher list will no longer
18418    enable NULL ciphers. They need to be specifically enabled e.g. with
18419    the string "DEFAULT:eNULL".
18420
18421    *Steve Henson*
18422
18423  * Fix to RSA private encryption routines: if p < q then it would
18424    occasionally produce an invalid result. This will only happen with
18425    externally generated keys because OpenSSL (and SSLeay) ensure p > q.
18426
18427    *Steve Henson*
18428
18429  * Be less restrictive and allow also `perl util/perlpath.pl
18430    /path/to/bin/perl` in addition to `perl util/perlpath.pl /path/to/bin`,
18431    because this way one can also use an interpreter named `perl5` (which is
18432    usually the name of Perl 5.xxx on platforms where an Perl 4.x is still
18433    installed as `perl`).
18434
18435    *Matthias Loepfe <Matthias.Loepfe@adnovum.ch>*
18436
18437  * Let util/clean-depend.pl work also with older Perl 5.00x versions.
18438
18439    *Matthias Loepfe <Matthias.Loepfe@adnovum.ch>*
18440
18441  * Fix Makefile.org so CC,CFLAG etc are passed to 'make links' add
18442    advapi32.lib to Win32 build and change the pem test comparison
18443    to fc.exe (thanks to Ulrich Kroener <kroneru@yahoo.com> for the
18444    suggestion). Fix misplaced ASNI prototypes and declarations in evp.h
18445    and crypto/des/ede_cbcm_enc.c.
18446
18447    *Steve Henson*
18448
18449  * DES quad checksum was broken on big-endian architectures. Fixed.
18450
18451    *Ben Laurie*
18452
18453  * Comment out two functions in bio.h that aren't implemented. Fix up the
18454    Win32 test batch file so it (might) work again. The Win32 test batch file
18455    is horrible: I feel ill....
18456
18457    *Steve Henson*
18458
18459  * Move various #ifdefs around so NO_SYSLOG, NO_DIRENT etc are now selected
18460    in e_os.h. Audit of header files to check ANSI and non ANSI
18461    sections: 10 functions were absent from non ANSI section and not exported
18462    from Windows DLLs. Fixed up libeay.num for new functions.
18463
18464    *Steve Henson*
18465
18466  * Make `openssl version` output lines consistent.
18467
18468    *Ralf S. Engelschall*
18469
18470  * Fix Win32 symbol export lists for BIO functions: Added
18471    BIO_get_ex_new_index, BIO_get_ex_num, BIO_get_ex_data and BIO_set_ex_data
18472    to ms/libeay{16,32}.def.
18473
18474    *Ralf S. Engelschall*
18475
18476  * Second round of fixing the OpenSSL perl/ stuff. It now at least compiled
18477    fine under Unix and passes some trivial tests I've now added. But the
18478    whole stuff is horribly incomplete, so a README.1ST with a disclaimer was
18479    added to make sure no one expects that this stuff really works in the
18480    OpenSSL 0.9.2 release.  Additionally I've started to clean the XS sources
18481    up and fixed a few little bugs and inconsistencies in OpenSSL.{pm,xs} and
18482    openssl_bio.xs.
18483
18484    *Ralf S. Engelschall*
18485
18486  * Fix the generation of two part addresses in perl.
18487
18488    *Kenji Miyake <kenji@miyake.org>, integrated by Ben Laurie*
18489
18490  * Add config entry for Linux on MIPS.
18491
18492    *John Tobey <jtobey@channel1.com>*
18493
18494  * Make links whenever Configure is run, unless we are on Windoze.
18495
18496    *Ben Laurie*
18497
18498  * Permit extensions to be added to CRLs using crl_section in openssl.cnf.
18499    Currently only issuerAltName and AuthorityKeyIdentifier make any sense
18500    in CRLs.
18501
18502    *Steve Henson*
18503
18504  * Add a useful kludge to allow package maintainers to specify compiler and
18505    other platforms details on the command line without having to patch the
18506    Configure script every time: One now can use
18507    `perl Configure <id>:<details>`,
18508    i.e. platform ids are allowed to have details appended
18509    to them (separated by colons). This is treated as there would be a static
18510    pre-configured entry in Configure's %table under key `<id>` with value
18511    `<details>` and `perl Configure <id>` is called.  So, when you want to
18512    perform a quick test-compile under FreeBSD 3.1 with pgcc and without
18513    assembler stuff you can use `perl Configure "FreeBSD-elf:pgcc:-O6:::"`
18514    now, which overrides the FreeBSD-elf entry on-the-fly.
18515
18516    *Ralf S. Engelschall*
18517
18518  * Disable new TLS1 ciphersuites by default: they aren't official yet.
18519
18520    *Ben Laurie*
18521
18522  * Allow DSO flags like -fpic, -fPIC, -KPIC etc. to be specified
18523    on the `perl Configure ...` command line. This way one can compile
18524    OpenSSL libraries with Position Independent Code (PIC) which is needed
18525    for linking it into DSOs.
18526
18527    *Ralf S. Engelschall*
18528
18529  * Remarkably, export ciphers were totally broken and no-one had noticed!
18530    Fixed.
18531
18532    *Ben Laurie*
18533
18534  * Cleaned up the LICENSE document: The official contact for any license
18535    questions now is the OpenSSL core team under openssl-core@openssl.org.
18536    And add a paragraph about the dual-license situation to make sure people
18537    recognize that _BOTH_ the OpenSSL license _AND_ the SSLeay license apply
18538    to the OpenSSL toolkit.
18539
18540    *Ralf S. Engelschall*
18541
18542  * General source tree makefile cleanups: Made `making xxx in yyy...`
18543    display consistent in the source tree and replaced `/bin/rm` by `rm`.
18544    Additionally cleaned up the `make links` target: Remove unnecessary
18545    semicolons, subsequent redundant removes, inline point.sh into mklink.sh
18546    to speed processing and no longer clutter the display with confusing
18547    stuff. Instead only the actually done links are displayed.
18548
18549    *Ralf S. Engelschall*
18550
18551  * Permit null encryption ciphersuites, used for authentication only. It used
18552    to be necessary to set the preprocessor define SSL_ALLOW_ENULL to do this.
18553    It is now necessary to set SSL_FORBID_ENULL to prevent the use of null
18554    encryption.
18555
18556    *Ben Laurie*
18557
18558  * Add a bunch of fixes to the PKCS#7 stuff. It used to sometimes reorder
18559    signed attributes when verifying signatures (this would break them),
18560    the detached data encoding was wrong and public keys obtained using
18561    X509_get_pubkey() weren't freed.
18562
18563    *Steve Henson*
18564
18565  * Add text documentation for the BUFFER functions. Also added a work around
18566    to a Win95 console bug. This was triggered by the password read stuff: the
18567    last character typed gets carried over to the next fread(). If you were
18568    generating a new cert request using 'req' for example then the last
18569    character of the passphrase would be CR which would then enter the first
18570    field as blank.
18571
18572    *Steve Henson*
18573
18574  * Added the new 'Includes OpenSSL Cryptography Software' button as
18575    doc/openssl_button.{gif,html} which is similar in style to the old SSLeay
18576    button and can be used by applications based on OpenSSL to show the
18577    relationship to the OpenSSL project.
18578
18579    *Ralf S. Engelschall*
18580
18581  * Remove confusing variables in function signatures in files
18582    ssl/ssl_lib.c and ssl/ssl.h.
18583
18584    *Lennart Bong <lob@kulthea.stacken.kth.se>*
18585
18586  * Don't install bss_file.c under PREFIX/include/
18587
18588    *Lennart Bong <lob@kulthea.stacken.kth.se>*
18589
18590  * Get the Win32 compile working again. Modify mkdef.pl so it can handle
18591    functions that return function pointers and has support for NT specific
18592    stuff. Fix mk1mf.pl and VC-32.pl to support NT differences also. Various
18593    #ifdef WIN32 and WINNTs sprinkled about the place and some changes from
18594    unsigned to signed types: this was killing the Win32 compile.
18595
18596    *Steve Henson*
18597
18598  * Add new certificate file to stack functions,
18599    SSL_add_dir_cert_subjects_to_stack() and
18600    SSL_add_file_cert_subjects_to_stack().  These largely supplant
18601    SSL_load_client_CA_file(), and can be used to add multiple certs easily
18602    to a stack (usually this is then handed to SSL_CTX_set_client_CA_list()).
18603    This means that Apache-SSL and similar packages don't have to mess around
18604    to add as many CAs as they want to the preferred list.
18605
18606    *Ben Laurie*
18607
18608  * Experiment with doxygen documentation. Currently only partially applied to
18609    ssl/ssl_lib.c.
18610    See <http://www.stack.nl/~dimitri/doxygen/index.html>, and run doxygen with
18611    openssl.doxy as the configuration file.
18612
18613    *Ben Laurie*
18614
18615  * Get rid of remaining C++-style comments which strict C compilers hate.
18616
18617    *Ralf S. Engelschall, pointed out by Carlos Amengual*
18618
18619  * Changed BN_RECURSION in bn_mont.c to BN_RECURSION_MONT so it is not
18620    compiled in by default: it has problems with large keys.
18621
18622    *Steve Henson*
18623
18624  * Add a bunch of SSL_xxx() functions for configuring the temporary RSA and
18625    DH private keys and/or callback functions which directly correspond to
18626    their SSL_CTX_xxx() counterparts but work on a per-connection basis. This
18627    is needed for applications which have to configure certificates on a
18628    per-connection basis (e.g. Apache+mod_ssl) instead of a per-context basis
18629    (e.g. s_server).
18630       For the RSA certificate situation is makes no difference, but
18631    for the DSA certificate situation this fixes the "no shared cipher"
18632    problem where the OpenSSL cipher selection procedure failed because the
18633    temporary keys were not overtaken from the context and the API provided
18634    no way to reconfigure them.
18635       The new functions now let applications reconfigure the stuff and they
18636    are in detail: SSL_need_tmp_RSA, SSL_set_tmp_rsa, SSL_set_tmp_dh,
18637    SSL_set_tmp_rsa_callback and SSL_set_tmp_dh_callback.  Additionally a new
18638    non-public-API function ssl_cert_instantiate() is used as a helper
18639    function and also to reduce code redundancy inside ssl_rsa.c.
18640
18641    *Ralf S. Engelschall*
18642
18643  * Move s_server -dcert and -dkey options out of the undocumented feature
18644    area because they are useful for the DSA situation and should be
18645    recognized by the users.
18646
18647    *Ralf S. Engelschall*
18648
18649  * Fix the cipher decision scheme for export ciphers: the export bits are
18650    *not* within SSL_MKEY_MASK or SSL_AUTH_MASK, they are within
18651    SSL_EXP_MASK.  So, the original variable has to be used instead of the
18652    already masked variable.
18653
18654    *Richard Levitte <levitte@stacken.kth.se>*
18655
18656  * Fix `port` variable from `int` to `unsigned int` in crypto/bio/b_sock.c
18657
18658    *Richard Levitte <levitte@stacken.kth.se>*
18659
18660  * Change type of another md_len variable in pk7_doit.c:PKCS7_dataFinal()
18661    from `int` to `unsigned int` because it is a length and initialized by
18662    EVP_DigestFinal() which expects an `unsigned int *`.
18663
18664    *Richard Levitte <levitte@stacken.kth.se>*
18665
18666  * Don't hard-code path to Perl interpreter on shebang line of Configure
18667    script. Instead use the usual Shell->Perl transition trick.
18668
18669    *Ralf S. Engelschall*
18670
18671  * Make `openssl x509 -noout -modulus`' functional also for DSA certificates
18672    (in addition to RSA certificates) to match the behaviour of `openssl dsa
18673    -noout -modulus` as it's already the case for `openssl rsa -noout
18674    -modulus`.  For RSA the -modulus is the real "modulus" while for DSA
18675    currently the public key is printed (a decision which was already done by
18676    `openssl dsa -modulus` in the past) which serves a similar purpose.
18677    Additionally the NO_RSA no longer completely removes the whole -modulus
18678    option; it now only avoids using the RSA stuff. Same applies to NO_DSA
18679    now, too.
18680
18681    *Ralf S.  Engelschall*
18682
18683  * Add Arne Ansper's reliable BIO - this is an encrypted, block-digested
18684    BIO. See the source (crypto/evp/bio_ok.c) for more info.
18685
18686    *Arne Ansper <arne@ats.cyber.ee>*
18687
18688  * Dump the old yucky req code that tried (and failed) to allow raw OIDs
18689    to be added. Now both 'req' and 'ca' can use new objects defined in the
18690    config file.
18691
18692    *Steve Henson*
18693
18694  * Add cool BIO that does syslog (or event log on NT).
18695
18696    *Arne Ansper <arne@ats.cyber.ee>, integrated by Ben Laurie*
18697
18698  * Add support for new TLS ciphersuites, TLS_RSA_EXPORT56_WITH_RC4_56_MD5,
18699    TLS_RSA_EXPORT56_WITH_RC2_CBC_56_MD5 and
18700    TLS_RSA_EXPORT56_WITH_DES_CBC_SHA, as specified in "56-bit Export Cipher
18701    Suites For TLS", draft-ietf-tls-56-bit-ciphersuites-00.txt.
18702
18703    *Ben Laurie*
18704
18705  * Add preliminary config info for new extension code.
18706
18707    *Steve Henson*
18708
18709  * Make RSA_NO_PADDING really use no padding.
18710
18711    *Ulf Moeller <ulf@fitug.de>*
18712
18713  * Generate errors when private/public key check is done.
18714
18715    *Ben Laurie*
18716
18717  * Overhaul for 'crl' utility. New function X509_CRL_print. Partial support
18718    for some CRL extensions and new objects added.
18719
18720    *Steve Henson*
18721
18722  * Really fix the ASN1 IMPLICIT bug this time... Partial support for private
18723    key usage extension and fuller support for authority key id.
18724
18725    *Steve Henson*
18726
18727  * Add OAEP encryption for the OpenSSL crypto library. OAEP is the improved
18728    padding method for RSA, which is recommended for new applications in PKCS
18729    #1 v2.0 (RFC 2437, October 1998).
18730    OAEP (Optimal Asymmetric Encryption Padding) has better theoretical
18731    foundations than the ad-hoc padding used in PKCS #1 v1.5. It is secure
18732    against Bleichbacher's attack on RSA.
18733    *Ulf Moeller <ulf@fitug.de>, reformatted, corrected and integrated by
18734    Ben Laurie*
18735
18736  * Updates to the new SSL compression code
18737
18738    *Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)*
18739
18740  * Fix so that the version number in the master secret, when passed
18741    via RSA, checks that if TLS was proposed, but we roll back to SSLv3
18742    (because the server will not accept higher), that the version number
18743    is 0x03,0x01, not 0x03,0x00
18744
18745    *Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)*
18746
18747  * Run extensive memory leak checks on SSL commands. Fixed *lots* of memory
18748    leaks in `ssl/` relating to new `X509_get_pubkey()` behaviour. Also fixes
18749    in `apps/` and an unrelated leak in `crypto/dsa/dsa_vrf.c`.
18750
18751    *Steve Henson*
18752
18753  * Support for RAW extensions where an arbitrary extension can be
18754    created by including its DER encoding. See `apps/openssl.cnf` for
18755    an example.
18756
18757    *Steve Henson*
18758
18759  * Make sure latest Perl versions don't interpret some generated C array
18760    code as Perl array code in the crypto/err/err_genc.pl script.
18761
18762    *Lars Weber <3weber@informatik.uni-hamburg.de>*
18763
18764  * Modify ms/do_ms.bat to not generate assembly language makefiles since
18765    not many people have the assembler. Various Win32 compilation fixes and
18766    update to the INSTALL.W32 file with (hopefully) more accurate Win32
18767    build instructions.
18768
18769    *Steve Henson*
18770
18771  * Modify configure script 'Configure' to automatically create crypto/date.h
18772    file under Win32 and also build pem.h from pem.org. New script
18773    util/mkfiles.pl to create the MINFO file on environments that can't do a
18774    'make files': perl util/mkfiles.pl >MINFO should work.
18775
18776    *Steve Henson*
18777
18778  * Major rework of DES function declarations, in the pursuit of correctness
18779    and purity. As a result, many evil casts evaporated, and some weirdness,
18780    too. You may find this causes warnings in your code. Zapping your evil
18781    casts will probably fix them. Mostly.
18782
18783    *Ben Laurie*
18784
18785  * Fix for a typo in asn1.h. Bug fix to object creation script
18786    obj_dat.pl. It considered a zero in an object definition to mean
18787    "end of object": none of the objects in objects.h have any zeros
18788    so it wasn't spotted.
18789
18790    *Steve Henson, reported by Erwann ABALEA <eabalea@certplus.com>*
18791
18792  * Add support for Triple DES Cipher Block Chaining with Output Feedback
18793    Masking (CBCM). In the absence of test vectors, the best I have been able
18794    to do is check that the decrypt undoes the encrypt, so far. Send me test
18795    vectors if you have them.
18796
18797    *Ben Laurie*
18798
18799  * Correct calculation of key length for export ciphers (too much space was
18800    allocated for null ciphers). This has not been tested!
18801
18802    *Ben Laurie*
18803
18804  * Modifications to the mkdef.pl for Win32 DEF file creation. The usage
18805    message is now correct (it understands "crypto" and "ssl" on its
18806    command line). There is also now an "update" option. This will update
18807    the util/ssleay.num and util/libeay.num files with any new functions.
18808    If you do a:
18809    perl util/mkdef.pl crypto ssl update
18810    it will update them.
18811
18812    *Steve Henson*
18813
18814  * Overhauled the Perl interface:
18815    - ported BN stuff to OpenSSL's different BN library
18816    - made the perl/ source tree CVS-aware
18817    - renamed the package from SSLeay to OpenSSL (the files still contain
18818      their history because I've copied them in the repository)
18819    - removed obsolete files (the test scripts will be replaced
18820      by better Test::Harness variants in the future)
18821
18822    *Ralf S. Engelschall*
18823
18824  * First cut for a very conservative source tree cleanup:
18825    1. merge various obsolete readme texts into doc/ssleay.txt
18826    where we collect the old documents and readme texts.
18827    2. remove the first part of files where I'm already sure that we no
18828    longer need them because of three reasons: either they are just temporary
18829    files which were left by Eric or they are preserved original files where
18830    I've verified that the diff is also available in the CVS via "cvs diff
18831    -rSSLeay_0_8_1b" or they were renamed (as it was definitely the case for
18832    the crypto/md/ stuff).
18833
18834    *Ralf S. Engelschall*
18835
18836  * More extension code. Incomplete support for subject and issuer alt
18837    name, issuer and authority key id. Change the i2v function parameters
18838    and add an extra 'crl' parameter in the X509V3_CTX structure: guess
18839    what that's for :-) Fix to ASN1 macro which messed up
18840    IMPLICIT tag and add f_enum.c which adds a2i, i2a for ENUMERATED.
18841
18842    *Steve Henson*
18843
18844  * Preliminary support for ENUMERATED type. This is largely copied from the
18845    INTEGER code.
18846
18847    *Steve Henson*
18848
18849  * Add new function, EVP_MD_CTX_copy() to replace frequent use of memcpy.
18850
18851    *Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)*
18852
18853  * Make sure `make rehash` target really finds the `openssl` program.
18854
18855    *Ralf S. Engelschall, Matthias Loepfe <Matthias.Loepfe@adnovum.ch>*
18856
18857  * Squeeze another 7% of speed out of MD5 assembler, at least on a P2. I'd
18858    like to hear about it if this slows down other processors.
18859
18860    *Ben Laurie*
18861
18862  * Add CygWin32 platform information to Configure script.
18863
18864    *Alan Batie <batie@aahz.jf.intel.com>*
18865
18866  * Fixed ms/32all.bat script: `no_asm` -> `no-asm`
18867
18868    *Rainer W. Gerling <gerling@mpg-gv.mpg.de>*
18869
18870  * New program nseq to manipulate netscape certificate sequences
18871
18872    *Steve Henson*
18873
18874  * Modify crl2pkcs7 so it supports multiple -certfile arguments. Fix a
18875    few typos.
18876
18877    *Steve Henson*
18878
18879  * Fixes to BN code.  Previously the default was to define BN_RECURSION
18880    but the BN code had some problems that would cause failures when
18881    doing certificate verification and some other functions.
18882
18883    *Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)*
18884
18885  * Add ASN1 and PEM code to support netscape certificate sequences.
18886
18887    *Steve Henson*
18888
18889  * Add ASN1 and PEM code to support netscape certificate sequences.
18890
18891    *Steve Henson*
18892
18893  * Add several PKIX and private extended key usage OIDs.
18894
18895    *Steve Henson*
18896
18897  * Modify the 'ca' program to handle the new extension code. Modify
18898    openssl.cnf for new extension format, add comments.
18899
18900    *Steve Henson*
18901
18902  * More X509 V3 changes. Fix typo in v3_bitstr.c. Add support to 'req'
18903    and add a sample to openssl.cnf so req -x509 now adds appropriate
18904    CA extensions.
18905
18906    *Steve Henson*
18907
18908  * Continued X509 V3 changes. Add to other makefiles, integrate with the
18909    error code, add initial support to X509_print() and x509 application.
18910
18911    *Steve Henson*
18912
18913  * Takes a deep breath and start adding X509 V3 extension support code. Add
18914    files in crypto/x509v3. Move original stuff to crypto/x509v3/old. All this
18915    stuff is currently isolated and isn't even compiled yet.
18916
18917    *Steve Henson*
18918
18919  * Continuing patches for GeneralizedTime. Fix up certificate and CRL
18920    ASN1 to use ASN1_TIME and modify print routines to use ASN1_TIME_print.
18921    Removed the versions check from X509 routines when loading extensions:
18922    this allows certain broken certificates that don't set the version
18923    properly to be processed.
18924
18925    *Steve Henson*
18926
18927  * Deal with irritating shit to do with dependencies, in YAAHW (Yet Another
18928    Ad Hoc Way) - Makefile.ssls now all contain local dependencies, which
18929    can still be regenerated with "make depend".
18930
18931    *Ben Laurie*
18932
18933  * Spelling mistake in C version of CAST-128.
18934
18935    *Ben Laurie, reported by Jeremy Hylton <jeremy@cnri.reston.va.us>*
18936
18937  * Changes to the error generation code. The perl script err-code.pl
18938    now reads in the old error codes and retains the old numbers, only
18939    adding new ones if necessary. It also only changes the .err files if new
18940    codes are added. The makefiles have been modified to only insert errors
18941    when needed (to avoid needlessly modifying header files). This is done
18942    by only inserting errors if the .err file is newer than the auto generated
18943    C file. To rebuild all the error codes from scratch (the old behaviour)
18944    either modify crypto/Makefile.ssl to pass the -regen flag to err_code.pl
18945    or delete all the .err files.
18946
18947    *Steve Henson*
18948
18949  * CAST-128 was incorrectly implemented for short keys. The C version has
18950    been fixed, but is untested. The assembler versions are also fixed, but
18951    new assembler HAS NOT BEEN GENERATED FOR WIN32 - the Makefile needs fixing
18952    to regenerate it if needed.
18953    *Ben Laurie, reported (with fix for C version) by Jun-ichiro itojun
18954     Hagino <itojun@kame.net>*
18955
18956  * File was opened incorrectly in randfile.c.
18957
18958    *Ulf Möller <ulf@fitug.de>*
18959
18960  * Beginning of support for GeneralizedTime. d2i, i2d, check and print
18961    functions. Also ASN1_TIME suite which is a CHOICE of UTCTime or
18962    GeneralizedTime. ASN1_TIME is the proper type used in certificates et
18963    al: it's just almost always a UTCTime. Note this patch adds new error
18964    codes so do a "make errors" if there are problems.
18965
18966    *Steve Henson*
18967
18968  * Correct Linux 1 recognition in config.
18969
18970    *Ulf Möller <ulf@fitug.de>*
18971
18972  * Remove pointless MD5 hash when using DSA keys in ca.
18973
18974    *Anonymous <nobody@replay.com>*
18975
18976  * Generate an error if given an empty string as a cert directory. Also
18977    generate an error if handed NULL (previously returned 0 to indicate an
18978    error, but didn't set one).
18979
18980    *Ben Laurie, reported by Anonymous <nobody@replay.com>*
18981
18982  * Add prototypes to SSL methods. Make SSL_write's buffer const, at last.
18983
18984    *Ben Laurie*
18985
18986  * Fix the dummy function BN_ref_mod_exp() in rsaref.c to have the correct
18987    parameters. This was causing a warning which killed off the Win32 compile.
18988
18989    *Steve Henson*
18990
18991  * Remove C++ style comments from crypto/bn/bn_local.h.
18992
18993    *Neil Costigan <neil.costigan@celocom.com>*
18994
18995  * The function OBJ_txt2nid was broken. It was supposed to return a nid
18996    based on a text string, looking up short and long names and finally
18997    "dot" format. The "dot" format stuff didn't work. Added new function
18998    OBJ_txt2obj to do the same but return an ASN1_OBJECT and rewrote
18999    OBJ_txt2nid to use it. OBJ_txt2obj can also return objects even if the
19000    OID is not part of the table.
19001
19002    *Steve Henson*
19003
19004  * Add prototypes to X509 lookup/verify methods, fixing a bug in
19005    X509_LOOKUP_by_alias().
19006
19007    *Ben Laurie*
19008
19009  * Sort openssl functions by name.
19010
19011    *Ben Laurie*
19012
19013  * Get the `gendsa` command working and add it to the `list` command. Remove
19014    encryption from sample DSA keys (in case anyone is interested the password
19015    was "1234").
19016
19017    *Steve Henson*
19018
19019  * Make *all* `*_free` functions accept a NULL pointer.
19020
19021    *Frans Heymans <fheymans@isaserver.be>*
19022
19023  * If a DH key is generated in s3_srvr.c, don't blow it by trying to use
19024    NULL pointers.
19025
19026    *Anonymous <nobody@replay.com>*
19027
19028  * s_server should send the CAfile as acceptable CAs, not its own cert.
19029
19030    *Bodo Moeller <3moeller@informatik.uni-hamburg.de>*
19031
19032  * Don't blow it for numeric `-newkey` arguments to `apps/req`.
19033
19034    *Bodo Moeller <3moeller@informatik.uni-hamburg.de>*
19035
19036  * Temp key "for export" tests were wrong in s3_srvr.c.
19037
19038    *Anonymous <nobody@replay.com>*
19039
19040  * Add prototype for temp key callback functions
19041    SSL_CTX_set_tmp_{rsa,dh}_callback().
19042
19043    *Ben Laurie*
19044
19045  * Make DH_free() tolerate being passed a NULL pointer (like RSA_free() and
19046    DSA_free()). Make X509_PUBKEY_set() check for errors in d2i_PublicKey().
19047
19048    *Steve Henson*
19049
19050  * X509_name_add_entry() freed the wrong thing after an error.
19051
19052    *Arne Ansper <arne@ats.cyber.ee>*
19053
19054  * rsa_eay.c would attempt to free a NULL context.
19055
19056    *Arne Ansper <arne@ats.cyber.ee>*
19057
19058  * BIO_s_socket() had a broken should_retry() on Windoze.
19059
19060    *Arne Ansper <arne@ats.cyber.ee>*
19061
19062  * BIO_f_buffer() didn't pass on BIO_CTRL_FLUSH.
19063
19064    *Arne Ansper <arne@ats.cyber.ee>*
19065
19066  * Make sure the already existing X509_STORE->depth variable is initialized
19067    in X509_STORE_new(), but document the fact that this variable is still
19068    unused in the certificate verification process.
19069
19070    *Ralf S. Engelschall*
19071
19072  * Fix the various library and `apps/` files to free up pkeys obtained from
19073    X509_PUBKEY_get() et al. Also allow x509.c to handle netscape extensions.
19074
19075    *Steve Henson*
19076
19077  * Fix reference counting in X509_PUBKEY_get(). This makes
19078    demos/maurice/example2.c work, amongst others, probably.
19079
19080    *Steve Henson and Ben Laurie*
19081
19082  * First cut of a cleanup for `apps/`. First the `ssleay` program is now named
19083    `openssl` and second, the shortcut symlinks for the `openssl <command>`
19084    are no longer created. This way we have a single and consistent command
19085    line interface `openssl <command>`, similar to `cvs <command>`.
19086
19087    *Ralf S. Engelschall, Paul Sutton and Ben Laurie*
19088
19089  * ca.c: move test for DSA keys inside #ifndef NO_DSA. Make pubkey
19090    BIT STRING wrapper always have zero unused bits.
19091
19092    *Steve Henson*
19093
19094  * Add CA.pl, perl version of CA.sh, add extended key usage OID.
19095
19096    *Steve Henson*
19097
19098  * Make the top-level INSTALL documentation easier to understand.
19099
19100    *Paul Sutton*
19101
19102  * Makefiles updated to exit if an error occurs in a sub-directory
19103    make (including if user presses ^C) [Paul Sutton]
19104
19105  * Make Montgomery context stuff explicit in RSA data structure.
19106
19107    *Ben Laurie*
19108
19109  * Fix build order of pem and err to allow for generated pem.h.
19110
19111    *Ben Laurie*
19112
19113  * Fix renumbering bug in X509_NAME_delete_entry().
19114
19115    *Ben Laurie*
19116
19117  * Enhanced the err-ins.pl script so it makes the error library number
19118    global and can add a library name. This is needed for external ASN1 and
19119    other error libraries.
19120
19121    *Steve Henson*
19122
19123  * Fixed sk_insert which never worked properly.
19124
19125    *Steve Henson*
19126
19127  * Fix ASN1 macros so they can handle indefinite length constructed
19128    EXPLICIT tags. Some non standard certificates use these: they can now
19129    be read in.
19130
19131    *Steve Henson*
19132
19133  * Merged the various old/obsolete SSLeay documentation files (doc/xxx.doc)
19134    into a single doc/ssleay.txt bundle. This way the information is still
19135    preserved but no longer messes up this directory. Now it's new room for
19136    the new set of documentation files.
19137
19138    *Ralf S. Engelschall*
19139
19140  * SETs were incorrectly DER encoded. This was a major pain, because they
19141    shared code with SEQUENCEs, which aren't coded the same. This means that
19142    almost everything to do with SETs or SEQUENCEs has either changed name or
19143    number of arguments.
19144
19145    *Ben Laurie, based on a partial fix by GP Jayan <gp@nsj.co.jp>*
19146
19147  * Fix test data to work with the above.
19148
19149    *Ben Laurie*
19150
19151  * Fix the RSA header declarations that hid a bug I fixed in 0.9.0b but
19152    was already fixed by Eric for 0.9.1 it seems.
19153
19154    *Ben Laurie - pointed out by Ulf Möller <ulf@fitug.de>*
19155
19156  * Autodetect FreeBSD3.
19157
19158    *Ben Laurie*
19159
19160  * Fix various bugs in Configure. This affects the following platforms:
19161    nextstep
19162    ncr-scde
19163    unixware-2.0
19164    unixware-2.0-pentium
19165    sco5-cc.
19166
19167    *Ben Laurie*
19168
19169  * Eliminate generated files from CVS. Reorder tests to regenerate files
19170    before they are needed.
19171
19172    *Ben Laurie*
19173
19174  * Generate Makefile.ssl from Makefile.org (to keep CVS happy).
19175
19176    *Ben Laurie*
19177
19178 ### Changes between 0.9.1b and 0.9.1c  [23-Dec-1998]
19179
19180  * Added OPENSSL_VERSION_NUMBER to crypto/crypto.h and
19181    changed SSLeay to OpenSSL in version strings.
19182
19183    *Ralf S. Engelschall*
19184
19185  * Some fixups to the top-level documents.
19186
19187    *Paul Sutton*
19188
19189  * Fixed the nasty bug where rsaref.h was not found under compile-time
19190    because the symlink to include/ was missing.
19191
19192    *Ralf S. Engelschall*
19193
19194  * Incorporated the popular no-RSA/DSA-only patches
19195    which allow to compile a RSA-free SSLeay.
19196
19197    *Andrew Cooke / Interrader Ldt., Ralf S. Engelschall*
19198
19199  * Fixed nasty rehash problem under `make -f Makefile.ssl links`
19200    when "ssleay" is still not found.
19201
19202    *Ralf S. Engelschall*
19203
19204  * Added more platforms to Configure: Cray T3E, HPUX 11,
19205
19206    *Ralf S. Engelschall, Beckmann <beckman@acl.lanl.gov>*
19207
19208  * Updated the README file.
19209
19210    *Ralf S. Engelschall*
19211
19212  * Added various .cvsignore files in the CVS repository subdirs
19213    to make a "cvs update" really silent.
19214
19215    *Ralf S. Engelschall*
19216
19217  * Recompiled the error-definition header files and added
19218    missing symbols to the Win32 linker tables.
19219
19220    *Ralf S. Engelschall*
19221
19222  * Cleaned up the top-level documents;
19223    o new files: CHANGES and LICENSE
19224    o merged VERSION, HISTORY* and README* files a CHANGES.SSLeay
19225    o merged COPYRIGHT into LICENSE
19226    o removed obsolete TODO file
19227    o renamed MICROSOFT to INSTALL.W32
19228
19229    *Ralf S. Engelschall*
19230
19231  * Removed dummy files from the 0.9.1b source tree:
19232    crypto/asn1/x crypto/bio/cd crypto/bio/fg crypto/bio/grep crypto/bio/vi
19233    crypto/bn/asm/......add.c crypto/bn/asm/a.out crypto/dsa/f crypto/md5/f
19234    crypto/pem/gmon.out crypto/perlasm/f crypto/pkcs7/build crypto/rsa/f
19235    crypto/sha/asm/f crypto/threads/f ms/zzz ssl/f ssl/f.mak test/f
19236    util/f.mak util/pl/f util/pl/f.mak crypto/bf/bf_locl.old apps/f
19237
19238    *Ralf S. Engelschall*
19239
19240  * Added various platform portability fixes.
19241
19242    *Mark J. Cox*
19243
19244  * The Genesis of the OpenSSL rpject:
19245    We start with the latest (unreleased) SSLeay version 0.9.1b which Eric A.
19246    Young and Tim J. Hudson created while they were working for C2Net until
19247    summer 1998.
19248
19249    *The OpenSSL Project*
19250
19251 ### Changes between 0.9.0b and 0.9.1b  [not released]
19252
19253  * Updated a few CA certificates under certs/
19254
19255    *Eric A. Young*
19256
19257  * Changed some BIGNUM api stuff.
19258
19259    *Eric A. Young*
19260
19261  * Various platform ports: OpenBSD, Ultrix, IRIX 64bit, NetBSD,
19262    DGUX x86, Linux Alpha, etc.
19263
19264    *Eric A. Young*
19265
19266  * New COMP library [crypto/comp/] for SSL Record Layer Compression:
19267    RLE (dummy implemented) and ZLIB (really implemented when ZLIB is
19268    available).
19269
19270    *Eric A. Young*
19271
19272  * Add -strparse option to asn1pars program which parses nested
19273    binary structures
19274
19275    *Dr Stephen Henson <shenson@bigfoot.com>*
19276
19277  * Added "oid_file" to ssleay.cnf for "ca" and "req" programs.
19278
19279    *Eric A. Young*
19280
19281  * DSA fix for "ca" program.
19282
19283    *Eric A. Young*
19284
19285  * Added "-genkey" option to "dsaparam" program.
19286
19287    *Eric A. Young*
19288
19289  * Added RIPE MD160 (rmd160) message digest.
19290
19291    *Eric A. Young*
19292
19293  * Added -a (all) option to "ssleay version" command.
19294
19295    *Eric A. Young*
19296
19297  * Added PLATFORM define which is the id given to Configure.
19298
19299    *Eric A. Young*
19300
19301  * Added MemCheck_XXXX functions to crypto/mem.c for memory checking.
19302
19303    *Eric A. Young*
19304
19305  * Extended the ASN.1 parser routines.
19306
19307    *Eric A. Young*
19308
19309  * Extended BIO routines to support REUSEADDR, seek, tell, etc.
19310
19311    *Eric A. Young*
19312
19313  * Added a BN_CTX to the BN library.
19314
19315    *Eric A. Young*
19316
19317  * Fixed the weak key values in DES library
19318
19319    *Eric A. Young*
19320
19321  * Changed API in EVP library for cipher aliases.
19322
19323    *Eric A. Young*
19324
19325  * Added support for RC2/64bit cipher.
19326
19327    *Eric A. Young*
19328
19329  * Converted the lhash library to the crypto/mem.c functions.
19330
19331    *Eric A. Young*
19332
19333  * Added more recognized ASN.1 object ids.
19334
19335    *Eric A. Young*
19336
19337  * Added more RSA padding checks for SSL/TLS.
19338
19339    *Eric A. Young*
19340
19341  * Added BIO proxy/filter functionality.
19342
19343    *Eric A. Young*
19344
19345  * Added extra_certs to SSL_CTX which can be used
19346    send extra CA certificates to the client in the CA cert chain sending
19347    process. It can be configured with SSL_CTX_add_extra_chain_cert().
19348
19349    *Eric A. Young*
19350
19351  * Now Fortezza is denied in the authentication phase because
19352    this is key exchange mechanism is not supported by SSLeay at all.
19353
19354    *Eric A. Young*
19355
19356  * Additional PKCS1 checks.
19357
19358    *Eric A. Young*
19359
19360  * Support the string "TLSv1" for all TLS v1 ciphers.
19361
19362    *Eric A. Young*
19363
19364  * Added function SSL_get_ex_data_X509_STORE_CTX_idx() which gives the
19365    ex_data index of the SSL context in the X509_STORE_CTX ex_data.
19366
19367    *Eric A. Young*
19368
19369  * Fixed a few memory leaks.
19370
19371    *Eric A. Young*
19372
19373  * Fixed various code and comment typos.
19374
19375    *Eric A. Young*
19376
19377  * A minor bug in ssl/s3_clnt.c where there would always be 4 0
19378    bytes sent in the client random.
19379
19380    *Edward Bishop <ebishop@spyglass.com>*
19381
19382 <!-- Links -->
19383
19384 [CVE-2022-2274]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-2274
19385 [CVE-2022-2097]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-2274
19386 [CVE-2020-1971]: https://www.openssl.org/news/vulnerabilities.html#CVE-2020-1971
19387 [CVE-2020-1967]: https://www.openssl.org/news/vulnerabilities.html#CVE-2020-1967
19388 [CVE-2019-1563]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1563
19389 [CVE-2019-1559]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1559
19390 [CVE-2019-1552]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1552
19391 [CVE-2019-1551]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1551
19392 [CVE-2019-1549]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1549
19393 [CVE-2019-1547]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1547
19394 [CVE-2019-1543]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1543
19395 [CVE-2018-5407]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-5407
19396 [CVE-2018-0739]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0739
19397 [CVE-2018-0737]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0737
19398 [CVE-2018-0735]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0735
19399 [CVE-2018-0734]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0734
19400 [CVE-2018-0733]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0733
19401 [CVE-2018-0732]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0732
19402 [CVE-2017-3738]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3738
19403 [CVE-2017-3737]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3737
19404 [CVE-2017-3736]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3736
19405 [CVE-2017-3735]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3735
19406 [CVE-2017-3733]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3733
19407 [CVE-2017-3732]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3732
19408 [CVE-2017-3731]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3731
19409 [CVE-2017-3730]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3730
19410 [CVE-2016-7055]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-7055
19411 [CVE-2016-7054]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-7054
19412 [CVE-2016-7053]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-7053
19413 [CVE-2016-7052]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-7052
19414 [CVE-2016-6309]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6309
19415 [CVE-2016-6308]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6308
19416 [CVE-2016-6307]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6307
19417 [CVE-2016-6306]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6306
19418 [CVE-2016-6305]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6305
19419 [CVE-2016-6304]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6304
19420 [CVE-2016-6303]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6303
19421 [CVE-2016-6302]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6302
19422 [CVE-2016-2183]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2183
19423 [CVE-2016-2182]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2182
19424 [CVE-2016-2181]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2181
19425 [CVE-2016-2180]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2180
19426 [CVE-2016-2179]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2179
19427 [CVE-2016-2178]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2178
19428 [CVE-2016-2177]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2177
19429 [CVE-2016-2176]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2176
19430 [CVE-2016-2109]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2109
19431 [CVE-2016-2107]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2107
19432 [CVE-2016-2106]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2106
19433 [CVE-2016-2105]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2105
19434 [CVE-2016-0800]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0800
19435 [CVE-2016-0799]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0799
19436 [CVE-2016-0798]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0798
19437 [CVE-2016-0797]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0797
19438 [CVE-2016-0705]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0705
19439 [CVE-2016-0702]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0702
19440 [CVE-2016-0701]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0701
19441 [CVE-2015-3197]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-3197
19442 [CVE-2015-3196]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-3196
19443 [CVE-2015-3195]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-3195
19444 [CVE-2015-3194]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-3194
19445 [CVE-2015-3193]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-3193
19446 [CVE-2015-1793]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1793
19447 [CVE-2015-1792]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1792
19448 [CVE-2015-1791]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1791
19449 [CVE-2015-1790]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1790
19450 [CVE-2015-1789]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1789
19451 [CVE-2015-1788]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1788
19452 [CVE-2015-1787]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1787
19453 [CVE-2015-0293]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0293
19454 [CVE-2015-0291]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0291
19455 [CVE-2015-0290]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0290
19456 [CVE-2015-0289]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0289
19457 [CVE-2015-0288]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0288
19458 [CVE-2015-0287]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0287
19459 [CVE-2015-0286]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0286
19460 [CVE-2015-0285]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0285
19461 [CVE-2015-0209]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0209
19462 [CVE-2015-0208]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0208
19463 [CVE-2015-0207]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0207
19464 [CVE-2015-0206]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0206
19465 [CVE-2015-0205]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0205
19466 [CVE-2015-0204]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0204
19467 [CVE-2014-8275]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-8275
19468 [CVE-2014-5139]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-5139
19469 [CVE-2014-3572]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3572
19470 [CVE-2014-3571]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3571
19471 [CVE-2014-3570]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3570
19472 [CVE-2014-3569]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3569
19473 [CVE-2014-3568]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3568
19474 [CVE-2014-3567]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3567
19475 [CVE-2014-3566]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3566
19476 [CVE-2014-3513]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3513
19477 [CVE-2014-3512]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3512
19478 [CVE-2014-3511]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3511
19479 [CVE-2014-3510]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3510
19480 [CVE-2014-3509]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3509
19481 [CVE-2014-3508]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3508
19482 [CVE-2014-3507]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3507
19483 [CVE-2014-3506]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3506
19484 [CVE-2014-3505]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3505
19485 [CVE-2014-3470]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3470
19486 [CVE-2014-0224]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0224
19487 [CVE-2014-0221]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0221
19488 [CVE-2014-0195]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0195
19489 [CVE-2014-0160]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0160
19490 [CVE-2014-0076]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0076
19491 [CVE-2013-6450]: https://www.openssl.org/news/vulnerabilities.html#CVE-2013-6450
19492 [CVE-2013-4353]: https://www.openssl.org/news/vulnerabilities.html#CVE-2013-4353
19493 [CVE-2013-0169]: https://www.openssl.org/news/vulnerabilities.html#CVE-2013-0169
19494 [CVE-2013-0166]: https://www.openssl.org/news/vulnerabilities.html#CVE-2013-0166
19495 [CVE-2012-2686]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-2686
19496 [CVE-2012-2333]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-2333
19497 [CVE-2012-2110]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-2110
19498 [CVE-2012-0884]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-0884
19499 [CVE-2012-0050]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-0050
19500 [CVE-2012-0027]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-0027
19501 [CVE-2011-4619]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-4619
19502 [CVE-2011-4577]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-4577
19503 [CVE-2011-4576]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-4576
19504 [CVE-2011-4109]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-4109
19505 [CVE-2011-4108]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-4108
19506 [CVE-2011-3210]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-3210
19507 [CVE-2011-3207]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-3207
19508 [CVE-2011-0014]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-0014
19509 [CVE-2010-4252]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-4252
19510 [CVE-2010-4180]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-4180
19511 [CVE-2010-3864]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-3864
19512 [CVE-2010-1633]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-1633
19513 [CVE-2010-0740]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-0740
19514 [CVE-2010-0433]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-0433
19515 [CVE-2009-4355]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-4355
19516 [CVE-2009-3555]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-3555
19517 [CVE-2009-3245]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-3245
19518 [CVE-2009-1386]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-1386
19519 [CVE-2009-1379]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-1379
19520 [CVE-2009-1378]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-1378
19521 [CVE-2009-1377]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-1377
19522 [CVE-2009-0789]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-0789
19523 [CVE-2009-0591]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-0591
19524 [CVE-2009-0590]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-0590
19525 [CVE-2008-5077]: https://www.openssl.org/news/vulnerabilities.html#CVE-2008-5077
19526 [CVE-2008-1678]: https://www.openssl.org/news/vulnerabilities.html#CVE-2008-1678
19527 [CVE-2008-1672]: https://www.openssl.org/news/vulnerabilities.html#CVE-2008-1672
19528 [CVE-2008-0891]: https://www.openssl.org/news/vulnerabilities.html#CVE-2008-0891
19529 [CVE-2007-5135]: https://www.openssl.org/news/vulnerabilities.html#CVE-2007-5135
19530 [CVE-2007-4995]: https://www.openssl.org/news/vulnerabilities.html#CVE-2007-4995
19531 [CVE-2006-4343]: https://www.openssl.org/news/vulnerabilities.html#CVE-2006-4343
19532 [CVE-2006-4339]: https://www.openssl.org/news/vulnerabilities.html#CVE-2006-4339
19533 [CVE-2006-3738]: https://www.openssl.org/news/vulnerabilities.html#CVE-2006-3738
19534 [CVE-2006-2940]: https://www.openssl.org/news/vulnerabilities.html#CVE-2006-2940
19535 [CVE-2006-2937]: https://www.openssl.org/news/vulnerabilities.html#CVE-2006-2937
19536 [CVE-2005-2969]: https://www.openssl.org/news/vulnerabilities.html#CVE-2005-2969
19537 [CVE-2004-0112]: https://www.openssl.org/news/vulnerabilities.html#CVE-2004-0112
19538 [CVE-2004-0079]: https://www.openssl.org/news/vulnerabilities.html#CVE-2004-0079
19539 [CVE-2003-0851]: https://www.openssl.org/news/vulnerabilities.html#CVE-2003-0851
19540 [CVE-2003-0545]: https://www.openssl.org/news/vulnerabilities.html#CVE-2003-0545
19541 [CVE-2003-0544]: https://www.openssl.org/news/vulnerabilities.html#CVE-2003-0544
19542 [CVE-2003-0543]: https://www.openssl.org/news/vulnerabilities.html#CVE-2003-0543
19543 [CVE-2003-0078]: https://www.openssl.org/news/vulnerabilities.html#CVE-2003-0078
19544 [CVE-2002-0659]: https://www.openssl.org/news/vulnerabilities.html#CVE-2002-0659
19545 [CVE-2002-0657]: https://www.openssl.org/news/vulnerabilities.html#CVE-2002-0657
19546 [CVE-2002-0656]: https://www.openssl.org/news/vulnerabilities.html#CVE-2002-0656
19547 [CVE-2002-0655]: https://www.openssl.org/news/vulnerabilities.html#CVE-2002-0655