Fix indentation
[openssl.git] / CHANGES
1
2  OpenSSL CHANGES
3  _______________
4
5  Changes between 1.0.2d and 1.0.2e [xx XXX xxxx]
6
7   *) Rewrite EVP_DecodeUpdate (base64 decoding) to fix several bugs.
8      This changes the decoding behaviour for some invalid messages,
9      though the change is mostly in the more lenient direction, and
10      legacy behaviour is preserved as much as possible.
11      [Emilia Käsper]
12
13   *) In DSA_generate_parameters_ex, if the provided seed is too short,
14      return an error
15      [Rich Salz and Ismo Puustinen <ismo.puustinen@intel.com>]
16
17  Changes between 1.0.2c and 1.0.2d [9 Jul 2015]
18
19   *) Alternate chains certificate forgery
20
21      During certificate verfification, OpenSSL will attempt to find an
22      alternative certificate chain if the first attempt to build such a chain
23      fails. An error in the implementation of this logic can mean that an
24      attacker could cause certain checks on untrusted certificates to be
25      bypassed, such as the CA flag, enabling them to use a valid leaf
26      certificate to act as a CA and "issue" an invalid certificate.
27
28      This issue was reported to OpenSSL by Adam Langley/David Benjamin
29      (Google/BoringSSL).
30      [Matt Caswell]
31
32  Changes between 1.0.2b and 1.0.2c [12 Jun 2015]
33
34   *) Fix HMAC ABI incompatibility. The previous version introduced an ABI
35      incompatibility in the handling of HMAC. The previous ABI has now been
36      restored.
37
38  Changes between 1.0.2a and 1.0.2b [11 Jun 2015]
39
40   *) Malformed ECParameters causes infinite loop
41
42      When processing an ECParameters structure OpenSSL enters an infinite loop
43      if the curve specified is over a specially malformed binary polynomial
44      field.
45
46      This can be used to perform denial of service against any
47      system which processes public keys, certificate requests or
48      certificates.  This includes TLS clients and TLS servers with
49      client authentication enabled.
50
51      This issue was reported to OpenSSL by Joseph Barr-Pixton.
52      (CVE-2015-1788)
53      [Andy Polyakov]
54
55   *) Exploitable out-of-bounds read in X509_cmp_time
56
57      X509_cmp_time does not properly check the length of the ASN1_TIME
58      string and can read a few bytes out of bounds. In addition,
59      X509_cmp_time accepts an arbitrary number of fractional seconds in the
60      time string.
61
62      An attacker can use this to craft malformed certificates and CRLs of
63      various sizes and potentially cause a segmentation fault, resulting in
64      a DoS on applications that verify certificates or CRLs. TLS clients
65      that verify CRLs are affected. TLS clients and servers with client
66      authentication enabled may be affected if they use custom verification
67      callbacks.
68
69      This issue was reported to OpenSSL by Robert Swiecki (Google), and
70      independently by Hanno Böck.
71      (CVE-2015-1789)
72      [Emilia Käsper]
73
74   *) PKCS7 crash with missing EnvelopedContent
75
76      The PKCS#7 parsing code does not handle missing inner EncryptedContent
77      correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs
78      with missing content and trigger a NULL pointer dereference on parsing.
79
80      Applications that decrypt PKCS#7 data or otherwise parse PKCS#7
81      structures from untrusted sources are affected. OpenSSL clients and
82      servers are not affected.
83
84      This issue was reported to OpenSSL by Michal Zalewski (Google).
85      (CVE-2015-1790)
86      [Emilia Käsper]
87
88   *) CMS verify infinite loop with unknown hash function
89
90      When verifying a signedData message the CMS code can enter an infinite loop
91      if presented with an unknown hash function OID. This can be used to perform
92      denial of service against any system which verifies signedData messages using
93      the CMS code.
94      This issue was reported to OpenSSL by Johannes Bauer.
95      (CVE-2015-1792)
96      [Stephen Henson]
97
98   *) Race condition handling NewSessionTicket
99
100      If a NewSessionTicket is received by a multi-threaded client when attempting to
101      reuse a previous ticket then a race condition can occur potentially leading to
102      a double free of the ticket data.
103      (CVE-2015-1791)
104      [Matt Caswell]
105
106   *) Removed support for the two export grade static DH ciphersuites
107      EXP-DH-RSA-DES-CBC-SHA and EXP-DH-DSS-DES-CBC-SHA. These two ciphersuites
108      were newly added (along with a number of other static DH ciphersuites) to
109      1.0.2. However the two export ones have *never* worked since they were
110      introduced. It seems strange in any case to be adding new export
111      ciphersuites, and given "logjam" it also does not seem correct to fix them.
112      [Matt Caswell]
113
114   *) Only support 256-bit or stronger elliptic curves with the
115      'ecdh_auto' setting (server) or by default (client). Of supported
116      curves, prefer P-256 (both).
117      [Emilia Kasper]
118
119   *) Reject DH handshakes with parameters shorter than 768 bits.
120      [Kurt Roeckx and Emilia Kasper]
121
122  Changes between 1.0.2 and 1.0.2a [19 Mar 2015]
123
124   *) ClientHello sigalgs DoS fix
125
126      If a client connects to an OpenSSL 1.0.2 server and renegotiates with an
127      invalid signature algorithms extension a NULL pointer dereference will
128      occur. This can be exploited in a DoS attack against the server.
129
130      This issue was was reported to OpenSSL by David Ramos of Stanford
131      University.
132      (CVE-2015-0291)
133      [Stephen Henson and Matt Caswell]
134
135   *) Multiblock corrupted pointer fix
136
137      OpenSSL 1.0.2 introduced the "multiblock" performance improvement. This
138      feature only applies on 64 bit x86 architecture platforms that support AES
139      NI instructions. A defect in the implementation of "multiblock" can cause
140      OpenSSL's internal write buffer to become incorrectly set to NULL when
141      using non-blocking IO. Typically, when the user application is using a
142      socket BIO for writing, this will only result in a failed connection.
143      However if some other BIO is used then it is likely that a segmentation
144      fault will be triggered, thus enabling a potential DoS attack.
145
146      This issue was reported to OpenSSL by Daniel Danner and Rainer Mueller.
147      (CVE-2015-0290)
148      [Matt Caswell]
149
150   *) Segmentation fault in DTLSv1_listen fix
151
152      The DTLSv1_listen function is intended to be stateless and processes the
153      initial ClientHello from many peers. It is common for user code to loop
154      over the call to DTLSv1_listen until a valid ClientHello is received with
155      an associated cookie. A defect in the implementation of DTLSv1_listen means
156      that state is preserved in the SSL object from one invocation to the next
157      that can lead to a segmentation fault. Errors processing the initial
158      ClientHello can trigger this scenario. An example of such an error could be
159      that a DTLS1.0 only client is attempting to connect to a DTLS1.2 only
160      server.
161
162      This issue was reported to OpenSSL by Per Allansson.
163      (CVE-2015-0207)
164      [Matt Caswell]
165
166   *) Segmentation fault in ASN1_TYPE_cmp fix
167
168      The function ASN1_TYPE_cmp will crash with an invalid read if an attempt is
169      made to compare ASN.1 boolean types. Since ASN1_TYPE_cmp is used to check
170      certificate signature algorithm consistency this can be used to crash any
171      certificate verification operation and exploited in a DoS attack. Any
172      application which performs certificate verification is vulnerable including
173      OpenSSL clients and servers which enable client authentication.
174      (CVE-2015-0286)
175      [Stephen Henson]
176
177   *) Segmentation fault for invalid PSS parameters fix
178
179      The signature verification routines will crash with a NULL pointer
180      dereference if presented with an ASN.1 signature using the RSA PSS
181      algorithm and invalid parameters. Since these routines are used to verify
182      certificate signature algorithms this can be used to crash any
183      certificate verification operation and exploited in a DoS attack. Any
184      application which performs certificate verification is vulnerable including
185      OpenSSL clients and servers which enable client authentication.
186
187      This issue was was reported to OpenSSL by Brian Carpenter.
188      (CVE-2015-0208)
189      [Stephen Henson]
190
191   *) ASN.1 structure reuse memory corruption fix
192
193      Reusing a structure in ASN.1 parsing may allow an attacker to cause
194      memory corruption via an invalid write. Such reuse is and has been
195      strongly discouraged and is believed to be rare.
196
197      Applications that parse structures containing CHOICE or ANY DEFINED BY
198      components may be affected. Certificate parsing (d2i_X509 and related
199      functions) are however not affected. OpenSSL clients and servers are
200      not affected.
201      (CVE-2015-0287)
202      [Stephen Henson]
203
204   *) PKCS7 NULL pointer dereferences fix
205
206      The PKCS#7 parsing code does not handle missing outer ContentInfo
207      correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs with
208      missing content and trigger a NULL pointer dereference on parsing.
209
210      Applications that verify PKCS#7 signatures, decrypt PKCS#7 data or
211      otherwise parse PKCS#7 structures from untrusted sources are
212      affected. OpenSSL clients and servers are not affected.
213
214      This issue was reported to OpenSSL by Michal Zalewski (Google).
215      (CVE-2015-0289)
216      [Emilia Käsper]
217
218   *) DoS via reachable assert in SSLv2 servers fix
219
220      A malicious client can trigger an OPENSSL_assert (i.e., an abort) in
221      servers that both support SSLv2 and enable export cipher suites by sending
222      a specially crafted SSLv2 CLIENT-MASTER-KEY message.
223
224      This issue was discovered by Sean Burford (Google) and Emilia Käsper
225      (OpenSSL development team).
226      (CVE-2015-0293)
227      [Emilia Käsper]
228
229   *) Empty CKE with client auth and DHE fix
230
231      If client auth is used then a server can seg fault in the event of a DHE
232      ciphersuite being selected and a zero length ClientKeyExchange message
233      being sent by the client. This could be exploited in a DoS attack.
234      (CVE-2015-1787)
235      [Matt Caswell]
236
237   *) Handshake with unseeded PRNG fix
238
239      Under certain conditions an OpenSSL 1.0.2 client can complete a handshake
240      with an unseeded PRNG. The conditions are:
241      - The client is on a platform where the PRNG has not been seeded
242      automatically, and the user has not seeded manually
243      - A protocol specific client method version has been used (i.e. not
244      SSL_client_methodv23)
245      - A ciphersuite is used that does not require additional random data from
246      the PRNG beyond the initial ClientHello client random (e.g. PSK-RC4-SHA).
247
248      If the handshake succeeds then the client random that has been used will
249      have been generated from a PRNG with insufficient entropy and therefore the
250      output may be predictable.
251
252      For example using the following command with an unseeded openssl will
253      succeed on an unpatched platform:
254
255      openssl s_client -psk 1a2b3c4d -tls1_2 -cipher PSK-RC4-SHA
256      (CVE-2015-0285)
257      [Matt Caswell]
258
259   *) Use After Free following d2i_ECPrivatekey error fix
260
261      A malformed EC private key file consumed via the d2i_ECPrivateKey function
262      could cause a use after free condition. This, in turn, could cause a double
263      free in several private key parsing functions (such as d2i_PrivateKey
264      or EVP_PKCS82PKEY) and could lead to a DoS attack or memory corruption
265      for applications that receive EC private keys from untrusted
266      sources. This scenario is considered rare.
267
268      This issue was discovered by the BoringSSL project and fixed in their
269      commit 517073cd4b.
270      (CVE-2015-0209)
271      [Matt Caswell]
272
273   *) X509_to_X509_REQ NULL pointer deref fix
274
275      The function X509_to_X509_REQ will crash with a NULL pointer dereference if
276      the certificate key is invalid. This function is rarely used in practice.
277
278      This issue was discovered by Brian Carpenter.
279      (CVE-2015-0288)
280      [Stephen Henson]
281
282   *) Removed the export ciphers from the DEFAULT ciphers
283      [Kurt Roeckx]
284
285  Changes between 1.0.1l and 1.0.2 [22 Jan 2015]
286
287   *) Change RSA and DH/DSA key generation apps to generate 2048-bit
288      keys by default.
289      [Kurt Roeckx]
290
291   *) Facilitate "universal" ARM builds targeting range of ARM ISAs, e.g.
292      ARMv5 through ARMv8, as opposite to "locking" it to single one.
293      So far those who have to target multiple plaforms would compromise
294      and argue that binary targeting say ARMv5 would still execute on
295      ARMv8. "Universal" build resolves this compromise by providing
296      near-optimal performance even on newer platforms.
297      [Andy Polyakov]
298
299   *) Accelerated NIST P-256 elliptic curve implementation for x86_64
300      (other platforms pending).
301      [Shay Gueron & Vlad Krasnov (Intel Corp), Andy Polyakov]
302
303   *) Add support for the SignedCertificateTimestampList certificate and
304      OCSP response extensions from RFC6962.
305      [Rob Stradling]
306
307   *) Fix ec_GFp_simple_points_make_affine (thus, EC_POINTs_mul etc.)
308      for corner cases. (Certain input points at infinity could lead to
309      bogus results, with non-infinity inputs mapped to infinity too.)
310      [Bodo Moeller]
311
312   *) Initial support for PowerISA 2.0.7, first implemented in POWER8.
313      This covers AES, SHA256/512 and GHASH. "Initial" means that most
314      common cases are optimized and there still is room for further
315      improvements. Vector Permutation AES for Altivec is also added.
316      [Andy Polyakov]
317
318   *) Add support for little-endian ppc64 Linux target.
319      [Marcelo Cerri (IBM)]
320
321   *) Initial support for AMRv8 ISA crypto extensions. This covers AES,
322      SHA1, SHA256 and GHASH. "Initial" means that most common cases
323      are optimized and there still is room for further improvements.
324      Both 32- and 64-bit modes are supported.
325      [Andy Polyakov, Ard Biesheuvel (Linaro)]
326
327   *) Improved ARMv7 NEON support.
328      [Andy Polyakov]
329
330   *) Support for SPARC Architecture 2011 crypto extensions, first
331      implemented in SPARC T4. This covers AES, DES, Camellia, SHA1,
332      SHA256/512, MD5, GHASH and modular exponentiation.
333      [Andy Polyakov, David Miller]
334
335   *) Accelerated modular exponentiation for Intel processors, a.k.a.
336      RSAZ.
337      [Shay Gueron & Vlad Krasnov (Intel Corp)]
338
339   *) Support for new and upcoming Intel processors, including AVX2,
340      BMI and SHA ISA extensions. This includes additional "stitched"
341      implementations, AESNI-SHA256 and GCM, and multi-buffer support
342      for TLS encrypt.
343
344      This work was sponsored by Intel Corp.
345      [Andy Polyakov]
346
347   *) Support for DTLS 1.2. This adds two sets of DTLS methods: DTLS_*_method()
348      supports both DTLS 1.2 and 1.0 and should use whatever version the peer
349      supports and DTLSv1_2_*_method() which supports DTLS 1.2 only.
350      [Steve Henson]
351
352   *) Use algorithm specific chains in SSL_CTX_use_certificate_chain_file():
353      this fixes a limiation in previous versions of OpenSSL.
354      [Steve Henson]
355
356   *) Extended RSA OAEP support via EVP_PKEY API. Options to specify digest,
357      MGF1 digest and OAEP label.
358      [Steve Henson]
359
360   *) Add EVP support for key wrapping algorithms, to avoid problems with
361      existing code the flag EVP_CIPHER_CTX_WRAP_ALLOW has to be set in
362      the EVP_CIPHER_CTX or an error is returned. Add AES and DES3 wrap
363      algorithms and include tests cases.
364      [Steve Henson]
365
366   *) Add functions to allocate and set the fields of an ECDSA_METHOD
367      structure.
368      [Douglas E. Engert, Steve Henson]
369
370   *) New functions OPENSSL_gmtime_diff and ASN1_TIME_diff to find the
371      difference in days and seconds between two tm or ASN1_TIME structures.
372      [Steve Henson]
373
374   *) Add -rev test option to s_server to just reverse order of characters
375      received by client and send back to server. Also prints an abbreviated
376      summary of the connection parameters.
377      [Steve Henson]
378
379   *) New option -brief for s_client and s_server to print out a brief summary
380      of connection parameters.
381      [Steve Henson]
382
383   *) Add callbacks for arbitrary TLS extensions.
384      [Trevor Perrin <trevp@trevp.net> and Ben Laurie]
385
386   *) New option -crl_download in several openssl utilities to download CRLs
387      from CRLDP extension in certificates.
388      [Steve Henson]
389
390   *) New options -CRL and -CRLform for s_client and s_server for CRLs.
391      [Steve Henson]
392
393   *) New function X509_CRL_diff to generate a delta CRL from the difference
394      of two full CRLs. Add support to "crl" utility.
395      [Steve Henson]
396
397   *) New functions to set lookup_crls function and to retrieve
398      X509_STORE from X509_STORE_CTX.
399      [Steve Henson]
400
401   *) Print out deprecated issuer and subject unique ID fields in
402      certificates.
403      [Steve Henson]
404
405   *) Extend OCSP I/O functions so they can be used for simple general purpose
406      HTTP as well as OCSP. New wrapper function which can be used to download
407      CRLs using the OCSP API.
408      [Steve Henson]
409
410   *) Delegate command line handling in s_client/s_server to SSL_CONF APIs.
411      [Steve Henson]
412
413   *) SSL_CONF* functions. These provide a common framework for application
414      configuration using configuration files or command lines.
415      [Steve Henson]
416
417   *) SSL/TLS tracing code. This parses out SSL/TLS records using the
418      message callback and prints the results. Needs compile time option
419      "enable-ssl-trace". New options to s_client and s_server to enable
420      tracing.
421      [Steve Henson]
422
423   *) New ctrl and macro to retrieve supported points extensions.
424      Print out extension in s_server and s_client.
425      [Steve Henson]
426
427   *) New functions to retrieve certificate signature and signature
428      OID NID.
429      [Steve Henson]
430
431   *) Add functions to retrieve and manipulate the raw cipherlist sent by a
432      client to OpenSSL.
433      [Steve Henson]
434
435   *) New Suite B modes for TLS code. These use and enforce the requirements
436      of RFC6460: restrict ciphersuites, only permit Suite B algorithms and
437      only use Suite B curves. The Suite B modes can be set by using the
438      strings "SUITEB128", "SUITEB192" or "SUITEB128ONLY" for the cipherstring.
439      [Steve Henson]
440
441   *) New chain verification flags for Suite B levels of security. Check
442      algorithms are acceptable when flags are set in X509_verify_cert.
443      [Steve Henson]
444
445   *) Make tls1_check_chain return a set of flags indicating checks passed
446      by a certificate chain. Add additional tests to handle client
447      certificates: checks for matching certificate type and issuer name
448      comparison.
449      [Steve Henson]
450
451   *) If an attempt is made to use a signature algorithm not in the peer
452      preference list abort the handshake. If client has no suitable
453      signature algorithms in response to a certificate request do not
454      use the certificate.
455      [Steve Henson]
456
457   *) If server EC tmp key is not in client preference list abort handshake.
458      [Steve Henson]
459
460   *) Add support for certificate stores in CERT structure. This makes it
461      possible to have different stores per SSL structure or one store in
462      the parent SSL_CTX. Include distint stores for certificate chain
463      verification and chain building. New ctrl SSL_CTRL_BUILD_CERT_CHAIN
464      to build and store a certificate chain in CERT structure: returing
465      an error if the chain cannot be built: this will allow applications
466      to test if a chain is correctly configured.
467
468      Note: if the CERT based stores are not set then the parent SSL_CTX
469      store is used to retain compatibility with existing behaviour.
470
471      [Steve Henson]
472
473   *) New function ssl_set_client_disabled to set a ciphersuite disabled
474      mask based on the current session, check mask when sending client
475      hello and checking the requested ciphersuite.
476      [Steve Henson]
477
478   *) New ctrls to retrieve and set certificate types in a certificate
479      request message. Print out received values in s_client. If certificate
480      types is not set with custom values set sensible values based on
481      supported signature algorithms.
482      [Steve Henson]
483
484   *) Support for distinct client and server supported signature algorithms.
485      [Steve Henson]
486
487   *) Add certificate callback. If set this is called whenever a certificate
488      is required by client or server. An application can decide which
489      certificate chain to present based on arbitrary criteria: for example
490      supported signature algorithms. Add very simple example to s_server.
491      This fixes many of the problems and restrictions of the existing client
492      certificate callback: for example you can now clear an existing
493      certificate and specify the whole chain.
494      [Steve Henson]
495
496   *) Add new "valid_flags" field to CERT_PKEY structure which determines what
497      the certificate can be used for (if anything). Set valid_flags field 
498      in new tls1_check_chain function. Simplify ssl_set_cert_masks which used
499      to have similar checks in it.
500
501      Add new "cert_flags" field to CERT structure and include a "strict mode".
502      This enforces some TLS certificate requirements (such as only permitting
503      certificate signature algorithms contained in the supported algorithms
504      extension) which some implementations ignore: this option should be used
505      with caution as it could cause interoperability issues.
506      [Steve Henson]
507
508   *) Update and tidy signature algorithm extension processing. Work out
509      shared signature algorithms based on preferences and peer algorithms
510      and print them out in s_client and s_server. Abort handshake if no
511      shared signature algorithms.
512      [Steve Henson]
513
514   *) Add new functions to allow customised supported signature algorithms
515      for SSL and SSL_CTX structures. Add options to s_client and s_server
516      to support them.
517      [Steve Henson]
518
519   *) New function SSL_certs_clear() to delete all references to certificates
520      from an SSL structure. Before this once a certificate had been added
521      it couldn't be removed.
522      [Steve Henson]
523
524   *) Integrate hostname, email address and IP address checking with certificate
525      verification. New verify options supporting checking in opensl utility.
526      [Steve Henson]
527
528   *) Fixes and wildcard matching support to hostname and email checking
529      functions. Add manual page.
530      [Florian Weimer (Red Hat Product Security Team)]
531
532   *) New functions to check a hostname email or IP address against a
533      certificate. Add options x509 utility to print results of checks against
534      a certificate.
535      [Steve Henson]
536
537   *) Fix OCSP checking.
538      [Rob Stradling <rob.stradling@comodo.com> and Ben Laurie]
539
540   *) Initial experimental support for explicitly trusted non-root CAs. 
541      OpenSSL still tries to build a complete chain to a root but if an
542      intermediate CA has a trust setting included that is used. The first
543      setting is used: whether to trust (e.g., -addtrust option to the x509
544      utility) or reject.
545      [Steve Henson]
546
547   *) Add -trusted_first option which attempts to find certificates in the
548      trusted store even if an untrusted chain is also supplied.
549      [Steve Henson]
550
551   *) MIPS assembly pack updates: support for MIPS32r2 and SmartMIPS ASE,
552      platform support for Linux and Android.
553      [Andy Polyakov]
554
555   *) Support for linux-x32, ILP32 environment in x86_64 framework.
556      [Andy Polyakov]
557
558   *) Experimental multi-implementation support for FIPS capable OpenSSL.
559      When in FIPS mode the approved implementations are used as normal,
560      when not in FIPS mode the internal unapproved versions are used instead.
561      This means that the FIPS capable OpenSSL isn't forced to use the
562      (often lower perfomance) FIPS implementations outside FIPS mode.
563      [Steve Henson]
564
565   *) Transparently support X9.42 DH parameters when calling
566      PEM_read_bio_DHparameters. This means existing applications can handle
567      the new parameter format automatically.
568      [Steve Henson]
569
570   *) Initial experimental support for X9.42 DH parameter format: mainly
571      to support use of 'q' parameter for RFC5114 parameters.
572      [Steve Henson]
573
574   *) Add DH parameters from RFC5114 including test data to dhtest.
575      [Steve Henson]
576
577   *) Support for automatic EC temporary key parameter selection. If enabled
578      the most preferred EC parameters are automatically used instead of
579      hardcoded fixed parameters. Now a server just has to call:
580      SSL_CTX_set_ecdh_auto(ctx, 1) and the server will automatically
581      support ECDH and use the most appropriate parameters.
582      [Steve Henson]
583
584   *) Enhance and tidy EC curve and point format TLS extension code. Use
585      static structures instead of allocation if default values are used.
586      New ctrls to set curves we wish to support and to retrieve shared curves.
587      Print out shared curves in s_server. New options to s_server and s_client
588      to set list of supported curves.
589      [Steve Henson]
590
591   *) New ctrls to retrieve supported signature algorithms and 
592      supported curve values as an array of NIDs. Extend openssl utility
593      to print out received values.
594      [Steve Henson]
595
596   *) Add new APIs EC_curve_nist2nid and EC_curve_nid2nist which convert
597      between NIDs and the more common NIST names such as "P-256". Enhance
598      ecparam utility and ECC method to recognise the NIST names for curves.
599      [Steve Henson]
600
601   *) Enhance SSL/TLS certificate chain handling to support different
602      chains for each certificate instead of one chain in the parent SSL_CTX.
603      [Steve Henson]
604
605   *) Support for fixed DH ciphersuite client authentication: where both
606      server and client use DH certificates with common parameters.
607      [Steve Henson]
608
609   *) Support for fixed DH ciphersuites: those requiring DH server
610      certificates.
611      [Steve Henson]
612
613   *) New function i2d_re_X509_tbs for re-encoding the TBS portion of
614      the certificate.
615      Note: Related 1.0.2-beta specific macros X509_get_cert_info,
616      X509_CINF_set_modified, X509_CINF_get_issuer, X509_CINF_get_extensions and
617      X509_CINF_get_signature were reverted post internal team review.
618
619  Changes between 1.0.1k and 1.0.1l [15 Jan 2015]
620
621   *) Build fixes for the Windows and OpenVMS platforms
622      [Matt Caswell and Richard Levitte]
623
624  Changes between 1.0.1j and 1.0.1k [8 Jan 2015]
625
626   *) Fix DTLS segmentation fault in dtls1_get_record. A carefully crafted DTLS
627      message can cause a segmentation fault in OpenSSL due to a NULL pointer
628      dereference. This could lead to a Denial Of Service attack. Thanks to
629      Markus Stenberg of Cisco Systems, Inc. for reporting this issue.
630      (CVE-2014-3571)
631      [Steve Henson]
632
633   *) Fix DTLS memory leak in dtls1_buffer_record. A memory leak can occur in the
634      dtls1_buffer_record function under certain conditions. In particular this
635      could occur if an attacker sent repeated DTLS records with the same
636      sequence number but for the next epoch. The memory leak could be exploited
637      by an attacker in a Denial of Service attack through memory exhaustion.
638      Thanks to Chris Mueller for reporting this issue.
639      (CVE-2015-0206)
640      [Matt Caswell]
641
642   *) Fix issue where no-ssl3 configuration sets method to NULL. When openssl is
643      built with the no-ssl3 option and a SSL v3 ClientHello is received the ssl
644      method would be set to NULL which could later result in a NULL pointer
645      dereference. Thanks to Frank Schmirler for reporting this issue.
646      (CVE-2014-3569)
647      [Kurt Roeckx]
648
649   *) Abort handshake if server key exchange message is omitted for ephemeral
650      ECDH ciphersuites.
651
652      Thanks to Karthikeyan Bhargavan of the PROSECCO team at INRIA for
653      reporting this issue.
654      (CVE-2014-3572)
655      [Steve Henson]
656
657   *) Remove non-export ephemeral RSA code on client and server. This code
658      violated the TLS standard by allowing the use of temporary RSA keys in
659      non-export ciphersuites and could be used by a server to effectively
660      downgrade the RSA key length used to a value smaller than the server
661      certificate. Thanks for Karthikeyan Bhargavan of the PROSECCO team at
662      INRIA or reporting this issue.
663      (CVE-2015-0204)
664      [Steve Henson]
665
666   *) Fixed issue where DH client certificates are accepted without verification.
667      An OpenSSL server will accept a DH certificate for client authentication
668      without the certificate verify message. This effectively allows a client to
669      authenticate without the use of a private key. This only affects servers
670      which trust a client certificate authority which issues certificates
671      containing DH keys: these are extremely rare and hardly ever encountered.
672      Thanks for Karthikeyan Bhargavan of the PROSECCO team at INRIA or reporting
673      this issue.
674      (CVE-2015-0205)
675      [Steve Henson]
676
677   *) Ensure that the session ID context of an SSL is updated when its
678      SSL_CTX is updated via SSL_set_SSL_CTX.
679
680      The session ID context is typically set from the parent SSL_CTX,
681      and can vary with the CTX.
682      [Adam Langley]
683
684   *) Fix various certificate fingerprint issues.
685
686      By using non-DER or invalid encodings outside the signed portion of a
687      certificate the fingerprint can be changed without breaking the signature.
688      Although no details of the signed portion of the certificate can be changed
689      this can cause problems with some applications: e.g. those using the
690      certificate fingerprint for blacklists.
691
692      1. Reject signatures with non zero unused bits.
693
694      If the BIT STRING containing the signature has non zero unused bits reject
695      the signature. All current signature algorithms require zero unused bits.
696
697      2. Check certificate algorithm consistency.
698
699      Check the AlgorithmIdentifier inside TBS matches the one in the
700      certificate signature. NB: this will result in signature failure
701      errors for some broken certificates.
702
703      Thanks to Konrad Kraszewski from Google for reporting this issue.
704
705      3. Check DSA/ECDSA signatures use DER.
706
707      Reencode DSA/ECDSA signatures and compare with the original received
708      signature. Return an error if there is a mismatch.
709
710      This will reject various cases including garbage after signature
711      (thanks to Antti Karjalainen and Tuomo Untinen from the Codenomicon CROSS
712      program for discovering this case) and use of BER or invalid ASN.1 INTEGERs
713      (negative or with leading zeroes).
714
715      Further analysis was conducted and fixes were developed by Stephen Henson
716      of the OpenSSL core team.
717
718      (CVE-2014-8275)
719      [Steve Henson]
720
721    *) Correct Bignum squaring. Bignum squaring (BN_sqr) may produce incorrect
722       results on some platforms, including x86_64. This bug occurs at random
723       with a very low probability, and is not known to be exploitable in any
724       way, though its exact impact is difficult to determine. Thanks to Pieter
725       Wuille (Blockstream) who reported this issue and also suggested an initial
726       fix. Further analysis was conducted by the OpenSSL development team and
727       Adam Langley of Google. The final fix was developed by Andy Polyakov of
728       the OpenSSL core team.
729       (CVE-2014-3570)
730       [Andy Polyakov]
731
732    *) Do not resume sessions on the server if the negotiated protocol
733       version does not match the session's version. Resuming with a different
734       version, while not strictly forbidden by the RFC, is of questionable
735       sanity and breaks all known clients.
736       [David Benjamin, Emilia Käsper]
737
738    *) Tighten handling of the ChangeCipherSpec (CCS) message: reject
739       early CCS messages during renegotiation. (Note that because
740       renegotiation is encrypted, this early CCS was not exploitable.)
741       [Emilia Käsper]
742
743    *) Tighten client-side session ticket handling during renegotiation:
744       ensure that the client only accepts a session ticket if the server sends
745       the extension anew in the ServerHello. Previously, a TLS client would
746       reuse the old extension state and thus accept a session ticket if one was
747       announced in the initial ServerHello.
748
749       Similarly, ensure that the client requires a session ticket if one
750       was advertised in the ServerHello. Previously, a TLS client would
751       ignore a missing NewSessionTicket message.
752       [Emilia Käsper]
753
754  Changes between 1.0.1i and 1.0.1j [15 Oct 2014]
755
756   *) SRTP Memory Leak.
757
758      A flaw in the DTLS SRTP extension parsing code allows an attacker, who
759      sends a carefully crafted handshake message, to cause OpenSSL to fail
760      to free up to 64k of memory causing a memory leak. This could be
761      exploited in a Denial Of Service attack. This issue affects OpenSSL
762      1.0.1 server implementations for both SSL/TLS and DTLS regardless of
763      whether SRTP is used or configured. Implementations of OpenSSL that
764      have been compiled with OPENSSL_NO_SRTP defined are not affected.
765
766      The fix was developed by the OpenSSL team.
767      (CVE-2014-3513)
768      [OpenSSL team]
769
770   *) Session Ticket Memory Leak.
771
772      When an OpenSSL SSL/TLS/DTLS server receives a session ticket the
773      integrity of that ticket is first verified. In the event of a session
774      ticket integrity check failing, OpenSSL will fail to free memory
775      causing a memory leak. By sending a large number of invalid session
776      tickets an attacker could exploit this issue in a Denial Of Service
777      attack.
778      (CVE-2014-3567)
779      [Steve Henson]
780
781   *) Build option no-ssl3 is incomplete.
782
783      When OpenSSL is configured with "no-ssl3" as a build option, servers
784      could accept and complete a SSL 3.0 handshake, and clients could be
785      configured to send them.
786      (CVE-2014-3568)
787      [Akamai and the OpenSSL team]
788
789   *) Add support for TLS_FALLBACK_SCSV.
790      Client applications doing fallback retries should call
791      SSL_set_mode(s, SSL_MODE_SEND_FALLBACK_SCSV).
792      (CVE-2014-3566)
793      [Adam Langley, Bodo Moeller]
794
795   *) Add additional DigestInfo checks.
796  
797      Reencode DigestInto in DER and check against the original when
798      verifying RSA signature: this will reject any improperly encoded
799      DigestInfo structures.
800
801      Note: this is a precautionary measure and no attacks are currently known.
802
803      [Steve Henson]
804
805  Changes between 1.0.1h and 1.0.1i [6 Aug 2014]
806
807   *) Fix SRP buffer overrun vulnerability. Invalid parameters passed to the
808      SRP code can be overrun an internal buffer. Add sanity check that
809      g, A, B < N to SRP code.
810
811      Thanks to Sean Devlin and Watson Ladd of Cryptography Services, NCC
812      Group for discovering this issue.
813      (CVE-2014-3512)
814      [Steve Henson]
815
816   *) A flaw in the OpenSSL SSL/TLS server code causes the server to negotiate
817      TLS 1.0 instead of higher protocol versions when the ClientHello message
818      is badly fragmented. This allows a man-in-the-middle attacker to force a
819      downgrade to TLS 1.0 even if both the server and the client support a
820      higher protocol version, by modifying the client's TLS records.
821
822      Thanks to David Benjamin and Adam Langley (Google) for discovering and
823      researching this issue.
824      (CVE-2014-3511)
825      [David Benjamin]
826
827   *) OpenSSL DTLS clients enabling anonymous (EC)DH ciphersuites are subject
828      to a denial of service attack. A malicious server can crash the client
829      with a null pointer dereference (read) by specifying an anonymous (EC)DH
830      ciphersuite and sending carefully crafted handshake messages.
831
832      Thanks to Felix Gröbert (Google) for discovering and researching this
833      issue.
834      (CVE-2014-3510)
835      [Emilia Käsper]
836
837   *) By sending carefully crafted DTLS packets an attacker could cause openssl
838      to leak memory. This can be exploited through a Denial of Service attack.
839      Thanks to Adam Langley for discovering and researching this issue.
840      (CVE-2014-3507)
841      [Adam Langley]
842
843   *) An attacker can force openssl to consume large amounts of memory whilst
844      processing DTLS handshake messages. This can be exploited through a
845      Denial of Service attack.
846      Thanks to Adam Langley for discovering and researching this issue.
847      (CVE-2014-3506)
848      [Adam Langley]
849
850   *) An attacker can force an error condition which causes openssl to crash
851      whilst processing DTLS packets due to memory being freed twice. This
852      can be exploited through a Denial of Service attack.
853      Thanks to Adam Langley and Wan-Teh Chang for discovering and researching
854      this issue.
855      (CVE-2014-3505)
856      [Adam Langley]
857
858   *) If a multithreaded client connects to a malicious server using a resumed
859      session and the server sends an ec point format extension it could write
860      up to 255 bytes to freed memory.
861
862      Thanks to Gabor Tyukasz (LogMeIn Inc) for discovering and researching this
863      issue.
864      (CVE-2014-3509)
865      [Gabor Tyukasz]
866
867   *) A malicious server can crash an OpenSSL client with a null pointer
868      dereference (read) by specifying an SRP ciphersuite even though it was not
869      properly negotiated with the client. This can be exploited through a
870      Denial of Service attack.
871
872      Thanks to Joonas Kuorilehto and Riku Hietamäki (Codenomicon) for
873      discovering and researching this issue.
874      (CVE-2014-5139)
875      [Steve Henson]
876
877   *) A flaw in OBJ_obj2txt may cause pretty printing functions such as
878      X509_name_oneline, X509_name_print_ex et al. to leak some information
879      from the stack. Applications may be affected if they echo pretty printing
880      output to the attacker.
881
882      Thanks to Ivan Fratric (Google) for discovering this issue.
883      (CVE-2014-3508)
884      [Emilia Käsper, and Steve Henson]
885
886   *) Fix ec_GFp_simple_points_make_affine (thus, EC_POINTs_mul etc.)
887      for corner cases. (Certain input points at infinity could lead to
888      bogus results, with non-infinity inputs mapped to infinity too.)
889      [Bodo Moeller]
890
891  Changes between 1.0.1g and 1.0.1h [5 Jun 2014]
892
893   *) Fix for SSL/TLS MITM flaw. An attacker using a carefully crafted
894      handshake can force the use of weak keying material in OpenSSL
895      SSL/TLS clients and servers.
896
897      Thanks to KIKUCHI Masashi (Lepidum Co. Ltd.) for discovering and
898      researching this issue. (CVE-2014-0224)
899      [KIKUCHI Masashi, Steve Henson]
900
901   *) Fix DTLS recursion flaw. By sending an invalid DTLS handshake to an
902      OpenSSL DTLS client the code can be made to recurse eventually crashing
903      in a DoS attack.
904
905      Thanks to Imre Rad (Search-Lab Ltd.) for discovering this issue.
906      (CVE-2014-0221)
907      [Imre Rad, Steve Henson]
908
909   *) Fix DTLS invalid fragment vulnerability. A buffer overrun attack can
910      be triggered by sending invalid DTLS fragments to an OpenSSL DTLS
911      client or server. This is potentially exploitable to run arbitrary
912      code on a vulnerable client or server.
913
914      Thanks to Jüri Aedla for reporting this issue. (CVE-2014-0195)
915      [Jüri Aedla, Steve Henson]
916
917   *) Fix bug in TLS code where clients enable anonymous ECDH ciphersuites
918      are subject to a denial of service attack.
919
920      Thanks to Felix Gröbert and Ivan Fratric at Google for discovering
921      this issue. (CVE-2014-3470)
922      [Felix Gröbert, Ivan Fratric, Steve Henson]
923
924   *) Harmonize version and its documentation. -f flag is used to display
925      compilation flags.
926      [mancha <mancha1@zoho.com>]
927
928   *) Fix eckey_priv_encode so it immediately returns an error upon a failure
929      in i2d_ECPrivateKey.  Thanks to Ted Unangst for feedback on this issue.
930      [mancha <mancha1@zoho.com>]
931
932   *) Fix some double frees. These are not thought to be exploitable.
933      [mancha <mancha1@zoho.com>]
934
935  Changes between 1.0.1f and 1.0.1g [7 Apr 2014]
936
937   *) A missing bounds check in the handling of the TLS heartbeat extension
938      can be used to reveal up to 64k of memory to a connected client or
939      server.
940
941      Thanks for Neel Mehta of Google Security for discovering this bug and to
942      Adam Langley <agl@chromium.org> and Bodo Moeller <bmoeller@acm.org> for
943      preparing the fix (CVE-2014-0160)
944      [Adam Langley, Bodo Moeller]
945
946   *) Fix for the attack described in the paper "Recovering OpenSSL
947      ECDSA Nonces Using the FLUSH+RELOAD Cache Side-channel Attack"
948      by Yuval Yarom and Naomi Benger. Details can be obtained from:
949      http://eprint.iacr.org/2014/140
950
951      Thanks to Yuval Yarom and Naomi Benger for discovering this
952      flaw and to Yuval Yarom for supplying a fix (CVE-2014-0076)
953      [Yuval Yarom and Naomi Benger]
954
955   *) TLS pad extension: draft-agl-tls-padding-03
956
957      Workaround for the "TLS hang bug" (see FAQ and PR#2771): if the
958      TLS client Hello record length value would otherwise be > 255 and
959      less that 512 pad with a dummy extension containing zeroes so it
960      is at least 512 bytes long.
961
962      [Adam Langley, Steve Henson]
963
964  Changes between 1.0.1e and 1.0.1f [6 Jan 2014]
965
966   *) Fix for TLS record tampering bug. A carefully crafted invalid 
967      handshake could crash OpenSSL with a NULL pointer exception.
968      Thanks to Anton Johansson for reporting this issues.
969      (CVE-2013-4353)
970
971   *) Keep original DTLS digest and encryption contexts in retransmission
972      structures so we can use the previous session parameters if they need
973      to be resent. (CVE-2013-6450)
974      [Steve Henson]
975
976   *) Add option SSL_OP_SAFARI_ECDHE_ECDSA_BUG (part of SSL_OP_ALL) which
977      avoids preferring ECDHE-ECDSA ciphers when the client appears to be
978      Safari on OS X.  Safari on OS X 10.8..10.8.3 advertises support for
979      several ECDHE-ECDSA ciphers, but fails to negotiate them.  The bug
980      is fixed in OS X 10.8.4, but Apple have ruled out both hot fixing
981      10.8..10.8.3 and forcing users to upgrade to 10.8.4 or newer.
982      [Rob Stradling, Adam Langley]
983
984  Changes between 1.0.1d and 1.0.1e [11 Feb 2013]
985
986   *) Correct fix for CVE-2013-0169. The original didn't work on AES-NI
987      supporting platforms or when small records were transferred.
988      [Andy Polyakov, Steve Henson]
989
990  Changes between 1.0.1c and 1.0.1d [5 Feb 2013]
991
992   *) Make the decoding of SSLv3, TLS and DTLS CBC records constant time.
993
994      This addresses the flaw in CBC record processing discovered by 
995      Nadhem Alfardan and Kenny Paterson. Details of this attack can be found
996      at: http://www.isg.rhul.ac.uk/tls/     
997
998      Thanks go to Nadhem Alfardan and Kenny Paterson of the Information
999      Security Group at Royal Holloway, University of London
1000      (www.isg.rhul.ac.uk) for discovering this flaw and Adam Langley and
1001      Emilia Käsper for the initial patch.
1002      (CVE-2013-0169)
1003      [Emilia Käsper, Adam Langley, Ben Laurie, Andy Polyakov, Steve Henson]
1004
1005   *) Fix flaw in AESNI handling of TLS 1.2 and 1.1 records for CBC mode
1006      ciphersuites which can be exploited in a denial of service attack.
1007      Thanks go to and to Adam Langley <agl@chromium.org> for discovering
1008      and detecting this bug and to Wolfgang Ettlinger
1009      <wolfgang.ettlinger@gmail.com> for independently discovering this issue.
1010      (CVE-2012-2686)
1011      [Adam Langley]
1012
1013   *) Return an error when checking OCSP signatures when key is NULL.
1014      This fixes a DoS attack. (CVE-2013-0166)
1015      [Steve Henson]
1016
1017   *) Make openssl verify return errors.
1018      [Chris Palmer <palmer@google.com> and Ben Laurie]
1019
1020   *) Call OCSP Stapling callback after ciphersuite has been chosen, so
1021      the right response is stapled. Also change SSL_get_certificate()
1022      so it returns the certificate actually sent.
1023      See http://rt.openssl.org/Ticket/Display.html?id=2836.
1024      [Rob Stradling <rob.stradling@comodo.com>]
1025
1026   *) Fix possible deadlock when decoding public keys.
1027      [Steve Henson]
1028
1029   *) Don't use TLS 1.0 record version number in initial client hello
1030      if renegotiating.
1031      [Steve Henson]
1032
1033  Changes between 1.0.1b and 1.0.1c [10 May 2012]
1034
1035   *) Sanity check record length before skipping explicit IV in TLS
1036      1.2, 1.1 and DTLS to fix DoS attack.
1037
1038      Thanks to Codenomicon for discovering this issue using Fuzz-o-Matic
1039      fuzzing as a service testing platform.
1040      (CVE-2012-2333)
1041      [Steve Henson]
1042
1043   *) Initialise tkeylen properly when encrypting CMS messages.
1044      Thanks to Solar Designer of Openwall for reporting this issue.
1045      [Steve Henson]
1046
1047   *) In FIPS mode don't try to use composite ciphers as they are not
1048      approved.
1049      [Steve Henson]
1050
1051  Changes between 1.0.1a and 1.0.1b [26 Apr 2012]
1052
1053   *) OpenSSL 1.0.0 sets SSL_OP_ALL to 0x80000FFFL and OpenSSL 1.0.1 and
1054      1.0.1a set SSL_OP_NO_TLSv1_1 to 0x00000400L which would unfortunately
1055      mean any application compiled against OpenSSL 1.0.0 headers setting
1056      SSL_OP_ALL would also set SSL_OP_NO_TLSv1_1, unintentionally disablng
1057      TLS 1.1 also. Fix this by changing the value of SSL_OP_NO_TLSv1_1 to
1058      0x10000000L Any application which was previously compiled against
1059      OpenSSL 1.0.1 or 1.0.1a headers and which cares about SSL_OP_NO_TLSv1_1
1060      will need to be recompiled as a result. Letting be results in
1061      inability to disable specifically TLS 1.1 and in client context,
1062      in unlike event, limit maximum offered version to TLS 1.0 [see below].
1063      [Steve Henson]
1064
1065   *) In order to ensure interoperabilty SSL_OP_NO_protocolX does not
1066      disable just protocol X, but all protocols above X *if* there are
1067      protocols *below* X still enabled. In more practical terms it means
1068      that if application wants to disable TLS1.0 in favor of TLS1.1 and
1069      above, it's not sufficient to pass SSL_OP_NO_TLSv1, one has to pass
1070      SSL_OP_NO_TLSv1|SSL_OP_NO_SSLv3|SSL_OP_NO_SSLv2. This applies to
1071      client side.
1072      [Andy Polyakov]
1073
1074  Changes between 1.0.1 and 1.0.1a [19 Apr 2012]
1075
1076   *) Check for potentially exploitable overflows in asn1_d2i_read_bio
1077      BUF_mem_grow and BUF_mem_grow_clean. Refuse attempts to shrink buffer
1078      in CRYPTO_realloc_clean.
1079
1080      Thanks to Tavis Ormandy, Google Security Team, for discovering this
1081      issue and to Adam Langley <agl@chromium.org> for fixing it.
1082      (CVE-2012-2110)
1083      [Adam Langley (Google), Tavis Ormandy, Google Security Team]
1084
1085   *) Don't allow TLS 1.2 SHA-256 ciphersuites in TLS 1.0, 1.1 connections.
1086      [Adam Langley]
1087
1088   *) Workarounds for some broken servers that "hang" if a client hello
1089      record length exceeds 255 bytes.
1090
1091      1. Do not use record version number > TLS 1.0 in initial client
1092         hello: some (but not all) hanging servers will now work.
1093      2. If we set OPENSSL_MAX_TLS1_2_CIPHER_LENGTH this will truncate
1094         the number of ciphers sent in the client hello. This should be
1095         set to an even number, such as 50, for example by passing:
1096         -DOPENSSL_MAX_TLS1_2_CIPHER_LENGTH=50 to config or Configure.
1097         Most broken servers should now work.
1098      3. If all else fails setting OPENSSL_NO_TLS1_2_CLIENT will disable
1099         TLS 1.2 client support entirely.
1100      [Steve Henson]
1101
1102   *) Fix SEGV in Vector Permutation AES module observed in OpenSSH.
1103      [Andy Polyakov]
1104
1105  Changes between 1.0.0h and 1.0.1  [14 Mar 2012]
1106
1107   *) Add compatibility with old MDC2 signatures which use an ASN1 OCTET
1108      STRING form instead of a DigestInfo.
1109      [Steve Henson]
1110
1111   *) The format used for MDC2 RSA signatures is inconsistent between EVP
1112      and the RSA_sign/RSA_verify functions. This was made more apparent when
1113      OpenSSL used RSA_sign/RSA_verify for some RSA signatures in particular
1114      those which went through EVP_PKEY_METHOD in 1.0.0 and later. Detect 
1115      the correct format in RSA_verify so both forms transparently work.
1116      [Steve Henson]
1117
1118   *) Some servers which support TLS 1.0 can choke if we initially indicate
1119      support for TLS 1.2 and later renegotiate using TLS 1.0 in the RSA
1120      encrypted premaster secret. As a workaround use the maximum pemitted
1121      client version in client hello, this should keep such servers happy
1122      and still work with previous versions of OpenSSL.
1123      [Steve Henson]
1124
1125   *) Add support for TLS/DTLS heartbeats.
1126      [Robin Seggelmann <seggelmann@fh-muenster.de>]
1127
1128   *) Add support for SCTP.
1129      [Robin Seggelmann <seggelmann@fh-muenster.de>]
1130
1131   *) Improved PRNG seeding for VOS.
1132      [Paul Green <Paul.Green@stratus.com>]
1133
1134   *) Extensive assembler packs updates, most notably:
1135
1136         - x86[_64]:     AES-NI, PCLMULQDQ, RDRAND support;
1137         - x86[_64]:     SSSE3 support (SHA1, vector-permutation AES);
1138         - x86_64:       bit-sliced AES implementation;
1139         - ARM:          NEON support, contemporary platforms optimizations;
1140         - s390x:        z196 support;
1141         - *:            GHASH and GF(2^m) multiplication implementations;
1142
1143      [Andy Polyakov]
1144
1145   *) Make TLS-SRP code conformant with RFC 5054 API cleanup
1146      (removal of unnecessary code)
1147      [Peter Sylvester <peter.sylvester@edelweb.fr>]
1148
1149   *) Add TLS key material exporter from RFC 5705.
1150      [Eric Rescorla]
1151
1152   *) Add DTLS-SRTP negotiation from RFC 5764.
1153      [Eric Rescorla]
1154
1155   *) Add Next Protocol Negotiation,
1156      http://tools.ietf.org/html/draft-agl-tls-nextprotoneg-00. Can be
1157      disabled with a no-npn flag to config or Configure. Code donated
1158      by Google.
1159      [Adam Langley <agl@google.com> and Ben Laurie]
1160
1161   *) Add optional 64-bit optimized implementations of elliptic curves NIST-P224,
1162      NIST-P256, NIST-P521, with constant-time single point multiplication on
1163      typical inputs. Compiler support for the nonstandard type __uint128_t is
1164      required to use this (present in gcc 4.4 and later, for 64-bit builds).
1165      Code made available under Apache License version 2.0.
1166
1167      Specify "enable-ec_nistp_64_gcc_128" on the Configure (or config) command
1168      line to include this in your build of OpenSSL, and run "make depend" (or
1169      "make update"). This enables the following EC_METHODs:
1170
1171          EC_GFp_nistp224_method()
1172          EC_GFp_nistp256_method()
1173          EC_GFp_nistp521_method()
1174
1175      EC_GROUP_new_by_curve_name() will automatically use these (while
1176      EC_GROUP_new_curve_GFp() currently prefers the more flexible
1177      implementations).
1178      [Emilia Käsper, Adam Langley, Bodo Moeller (Google)]
1179
1180   *) Use type ossl_ssize_t instad of ssize_t which isn't available on
1181      all platforms. Move ssize_t definition from e_os.h to the public
1182      header file e_os2.h as it now appears in public header file cms.h
1183      [Steve Henson]
1184
1185   *) New -sigopt option to the ca, req and x509 utilities. Additional
1186      signature parameters can be passed using this option and in
1187      particular PSS. 
1188      [Steve Henson]
1189
1190   *) Add RSA PSS signing function. This will generate and set the
1191      appropriate AlgorithmIdentifiers for PSS based on those in the
1192      corresponding EVP_MD_CTX structure. No application support yet.
1193      [Steve Henson]
1194
1195   *) Support for companion algorithm specific ASN1 signing routines.
1196      New function ASN1_item_sign_ctx() signs a pre-initialised
1197      EVP_MD_CTX structure and sets AlgorithmIdentifiers based on
1198      the appropriate parameters.
1199      [Steve Henson]
1200
1201   *) Add new algorithm specific ASN1 verification initialisation function
1202      to EVP_PKEY_ASN1_METHOD: this is not in EVP_PKEY_METHOD since the ASN1
1203      handling will be the same no matter what EVP_PKEY_METHOD is used.
1204      Add a PSS handler to support verification of PSS signatures: checked
1205      against a number of sample certificates.
1206      [Steve Henson]
1207
1208   *) Add signature printing for PSS. Add PSS OIDs.
1209      [Steve Henson, Martin Kaiser <lists@kaiser.cx>]
1210
1211   *) Add algorithm specific signature printing. An individual ASN1 method
1212      can now print out signatures instead of the standard hex dump. 
1213
1214      More complex signatures (e.g. PSS) can print out more meaningful
1215      information. Include DSA version that prints out the signature
1216      parameters r, s.
1217      [Steve Henson]
1218
1219   *) Password based recipient info support for CMS library: implementing
1220      RFC3211.
1221      [Steve Henson]
1222
1223   *) Split password based encryption into PBES2 and PBKDF2 functions. This
1224      neatly separates the code into cipher and PBE sections and is required
1225      for some algorithms that split PBES2 into separate pieces (such as
1226      password based CMS).
1227      [Steve Henson]
1228
1229   *) Session-handling fixes:
1230      - Fix handling of connections that are resuming with a session ID,
1231        but also support Session Tickets.
1232      - Fix a bug that suppressed issuing of a new ticket if the client
1233        presented a ticket with an expired session.
1234      - Try to set the ticket lifetime hint to something reasonable.
1235      - Make tickets shorter by excluding irrelevant information.
1236      - On the client side, don't ignore renewed tickets.
1237      [Adam Langley, Bodo Moeller (Google)]
1238
1239   *) Fix PSK session representation.
1240      [Bodo Moeller]
1241
1242   *) Add RC4-MD5 and AESNI-SHA1 "stitched" implementations.
1243
1244      This work was sponsored by Intel.
1245      [Andy Polyakov]
1246
1247   *) Add GCM support to TLS library. Some custom code is needed to split
1248      the IV between the fixed (from PRF) and explicit (from TLS record)
1249      portions. This adds all GCM ciphersuites supported by RFC5288 and 
1250      RFC5289. Generalise some AES* cipherstrings to inlclude GCM and
1251      add a special AESGCM string for GCM only.
1252      [Steve Henson]
1253
1254   *) Expand range of ctrls for AES GCM. Permit setting invocation
1255      field on decrypt and retrieval of invocation field only on encrypt.
1256      [Steve Henson]
1257
1258   *) Add HMAC ECC ciphersuites from RFC5289. Include SHA384 PRF support.
1259      As required by RFC5289 these ciphersuites cannot be used if for
1260      versions of TLS earlier than 1.2.
1261      [Steve Henson]
1262
1263   *) For FIPS capable OpenSSL interpret a NULL default public key method
1264      as unset and return the appopriate default but do *not* set the default.
1265      This means we can return the appopriate method in applications that
1266      swicth between FIPS and non-FIPS modes.
1267      [Steve Henson]
1268
1269   *) Redirect HMAC and CMAC operations to FIPS module in FIPS mode. If an
1270      ENGINE is used then we cannot handle that in the FIPS module so we
1271      keep original code iff non-FIPS operations are allowed.
1272      [Steve Henson]
1273
1274   *) Add -attime option to openssl utilities.
1275      [Peter Eckersley <pde@eff.org>, Ben Laurie and Steve Henson]
1276
1277   *) Redirect DSA and DH operations to FIPS module in FIPS mode.
1278      [Steve Henson]
1279
1280   *) Redirect ECDSA and ECDH operations to FIPS module in FIPS mode. Also use
1281      FIPS EC methods unconditionally for now.
1282      [Steve Henson]
1283
1284   *) New build option no-ec2m to disable characteristic 2 code.
1285      [Steve Henson]
1286
1287   *) Backport libcrypto audit of return value checking from 1.1.0-dev; not
1288      all cases can be covered as some introduce binary incompatibilities.
1289      [Steve Henson]
1290
1291   *) Redirect RSA operations to FIPS module including keygen,
1292      encrypt, decrypt, sign and verify. Block use of non FIPS RSA methods.
1293      [Steve Henson]
1294
1295   *) Add similar low level API blocking to ciphers.
1296      [Steve Henson]
1297
1298   *) Low level digest APIs are not approved in FIPS mode: any attempt
1299      to use these will cause a fatal error. Applications that *really* want
1300      to use them can use the private_* version instead.
1301      [Steve Henson]
1302
1303   *) Redirect cipher operations to FIPS module for FIPS builds. 
1304      [Steve Henson]
1305
1306   *) Redirect digest operations to FIPS module for FIPS builds. 
1307      [Steve Henson]
1308
1309   *) Update build system to add "fips" flag which will link in fipscanister.o
1310      for static and shared library builds embedding a signature if needed.
1311      [Steve Henson]
1312
1313   *) Output TLS supported curves in preference order instead of numerical
1314      order. This is currently hardcoded for the highest order curves first.
1315      This should be configurable so applications can judge speed vs strength.
1316      [Steve Henson]
1317
1318   *) Add TLS v1.2 server support for client authentication. 
1319      [Steve Henson]
1320
1321   *) Add support for FIPS mode in ssl library: disable SSLv3, non-FIPS ciphers
1322      and enable MD5.
1323      [Steve Henson]
1324
1325   *) Functions FIPS_mode_set() and FIPS_mode() which call the underlying
1326      FIPS modules versions.
1327      [Steve Henson]
1328
1329   *) Add TLS v1.2 client side support for client authentication. Keep cache
1330      of handshake records longer as we don't know the hash algorithm to use
1331      until after the certificate request message is received.
1332      [Steve Henson]
1333
1334   *) Initial TLS v1.2 client support. Add a default signature algorithms
1335      extension including all the algorithms we support. Parse new signature
1336      format in client key exchange. Relax some ECC signing restrictions for
1337      TLS v1.2 as indicated in RFC5246.
1338      [Steve Henson]
1339
1340   *) Add server support for TLS v1.2 signature algorithms extension. Switch
1341      to new signature format when needed using client digest preference.
1342      All server ciphersuites should now work correctly in TLS v1.2. No client
1343      support yet and no support for client certificates.
1344      [Steve Henson]
1345
1346   *) Initial TLS v1.2 support. Add new SHA256 digest to ssl code, switch
1347      to SHA256 for PRF when using TLS v1.2 and later. Add new SHA256 based
1348      ciphersuites. At present only RSA key exchange ciphersuites work with
1349      TLS v1.2. Add new option for TLS v1.2 replacing the old and obsolete
1350      SSL_OP_PKCS1_CHECK flags with SSL_OP_NO_TLSv1_2. New TLSv1.2 methods
1351      and version checking.
1352      [Steve Henson]
1353
1354   *) New option OPENSSL_NO_SSL_INTERN. If an application can be compiled
1355      with this defined it will not be affected by any changes to ssl internal
1356      structures. Add several utility functions to allow openssl application
1357      to work with OPENSSL_NO_SSL_INTERN defined.
1358      [Steve Henson]
1359
1360   *) Add SRP support.
1361      [Tom Wu <tjw@cs.stanford.edu> and Ben Laurie]
1362
1363   *) Add functions to copy EVP_PKEY_METHOD and retrieve flags and id.
1364      [Steve Henson]
1365
1366   *) Permit abbreviated handshakes when renegotiating using the function
1367      SSL_renegotiate_abbreviated().
1368      [Robin Seggelmann <seggelmann@fh-muenster.de>]
1369
1370   *) Add call to ENGINE_register_all_complete() to
1371      ENGINE_load_builtin_engines(), so some implementations get used
1372      automatically instead of needing explicit application support.
1373      [Steve Henson]
1374
1375   *) Add support for TLS key exporter as described in RFC5705.
1376      [Robin Seggelmann <seggelmann@fh-muenster.de>, Steve Henson]
1377
1378   *) Initial TLSv1.1 support. Since TLSv1.1 is very similar to TLS v1.0 only
1379      a few changes are required:
1380
1381        Add SSL_OP_NO_TLSv1_1 flag.
1382        Add TLSv1_1 methods.
1383        Update version checking logic to handle version 1.1.
1384        Add explicit IV handling (ported from DTLS code).
1385        Add command line options to s_client/s_server.
1386      [Steve Henson]
1387
1388  Changes between 1.0.0g and 1.0.0h [12 Mar 2012]
1389
1390   *) Fix MMA (Bleichenbacher's attack on PKCS #1 v1.5 RSA padding) weakness
1391      in CMS and PKCS7 code. When RSA decryption fails use a random key for
1392      content decryption and always return the same error. Note: this attack
1393      needs on average 2^20 messages so it only affects automated senders. The
1394      old behaviour can be reenabled in the CMS code by setting the
1395      CMS_DEBUG_DECRYPT flag: this is useful for debugging and testing where
1396      an MMA defence is not necessary.
1397      Thanks to Ivan Nestlerode <inestlerode@us.ibm.com> for discovering
1398      this issue. (CVE-2012-0884)
1399      [Steve Henson]
1400
1401   *) Fix CVE-2011-4619: make sure we really are receiving a 
1402      client hello before rejecting multiple SGC restarts. Thanks to
1403      Ivan Nestlerode <inestlerode@us.ibm.com> for discovering this bug.
1404      [Steve Henson]
1405
1406  Changes between 1.0.0f and 1.0.0g [18 Jan 2012]
1407
1408   *) Fix for DTLS DoS issue introduced by fix for CVE-2011-4109.
1409      Thanks to Antonio Martin, Enterprise Secure Access Research and
1410      Development, Cisco Systems, Inc. for discovering this bug and
1411      preparing a fix. (CVE-2012-0050)
1412      [Antonio Martin]
1413
1414  Changes between 1.0.0e and 1.0.0f [4 Jan 2012]
1415
1416   *) Nadhem Alfardan and Kenny Paterson have discovered an extension
1417      of the Vaudenay padding oracle attack on CBC mode encryption
1418      which enables an efficient plaintext recovery attack against
1419      the OpenSSL implementation of DTLS. Their attack exploits timing
1420      differences arising during decryption processing. A research
1421      paper describing this attack can be found at:
1422                   http://www.isg.rhul.ac.uk/~kp/dtls.pdf
1423      Thanks go to Nadhem Alfardan and Kenny Paterson of the Information
1424      Security Group at Royal Holloway, University of London
1425      (www.isg.rhul.ac.uk) for discovering this flaw and to Robin Seggelmann
1426      <seggelmann@fh-muenster.de> and Michael Tuexen <tuexen@fh-muenster.de>
1427      for preparing the fix. (CVE-2011-4108)
1428      [Robin Seggelmann, Michael Tuexen]
1429
1430   *) Clear bytes used for block padding of SSL 3.0 records.
1431      (CVE-2011-4576)
1432      [Adam Langley (Google)]
1433
1434   *) Only allow one SGC handshake restart for SSL/TLS. Thanks to George
1435      Kadianakis <desnacked@gmail.com> for discovering this issue and
1436      Adam Langley for preparing the fix. (CVE-2011-4619)
1437      [Adam Langley (Google)]
1438
1439   *) Check parameters are not NULL in GOST ENGINE. (CVE-2012-0027)
1440      [Andrey Kulikov <amdeich@gmail.com>]
1441
1442   *) Prevent malformed RFC3779 data triggering an assertion failure.
1443      Thanks to Andrew Chi, BBN Technologies, for discovering the flaw
1444      and Rob Austein <sra@hactrn.net> for fixing it. (CVE-2011-4577)
1445      [Rob Austein <sra@hactrn.net>]
1446
1447   *) Improved PRNG seeding for VOS.
1448      [Paul Green <Paul.Green@stratus.com>]
1449
1450   *) Fix ssl_ciph.c set-up race.
1451      [Adam Langley (Google)]
1452
1453   *) Fix spurious failures in ecdsatest.c.
1454      [Emilia Käsper (Google)]
1455
1456   *) Fix the BIO_f_buffer() implementation (which was mixing different
1457      interpretations of the '..._len' fields).
1458      [Adam Langley (Google)]
1459
1460   *) Fix handling of BN_BLINDING: now BN_BLINDING_invert_ex (rather than
1461      BN_BLINDING_invert_ex) calls BN_BLINDING_update, ensuring that concurrent
1462      threads won't reuse the same blinding coefficients.
1463
1464      This also avoids the need to obtain the CRYPTO_LOCK_RSA_BLINDING
1465      lock to call BN_BLINDING_invert_ex, and avoids one use of
1466      BN_BLINDING_update for each BN_BLINDING structure (previously,
1467      the last update always remained unused).
1468      [Emilia Käsper (Google)]
1469
1470   *) In ssl3_clear, preserve s3->init_extra along with s3->rbuf.
1471      [Bob Buckholz (Google)]
1472
1473  Changes between 1.0.0d and 1.0.0e [6 Sep 2011]
1474
1475   *) Fix bug where CRLs with nextUpdate in the past are sometimes accepted
1476      by initialising X509_STORE_CTX properly. (CVE-2011-3207)
1477      [Kaspar Brand <ossl@velox.ch>]
1478
1479   *) Fix SSL memory handling for (EC)DH ciphersuites, in particular
1480      for multi-threaded use of ECDH. (CVE-2011-3210)
1481      [Adam Langley (Google)]
1482
1483   *) Fix x509_name_ex_d2i memory leak on bad inputs.
1484      [Bodo Moeller]
1485
1486   *) Remove hard coded ecdsaWithSHA1 signature tests in ssl code and check
1487      signature public key algorithm by using OID xref utilities instead.
1488      Before this you could only use some ECC ciphersuites with SHA1 only.
1489      [Steve Henson]
1490
1491   *) Add protection against ECDSA timing attacks as mentioned in the paper
1492      by Billy Bob Brumley and Nicola Tuveri, see:
1493
1494         http://eprint.iacr.org/2011/232.pdf
1495
1496      [Billy Bob Brumley and Nicola Tuveri]
1497
1498  Changes between 1.0.0c and 1.0.0d [8 Feb 2011]
1499
1500   *) Fix parsing of OCSP stapling ClientHello extension. CVE-2011-0014
1501      [Neel Mehta, Adam Langley, Bodo Moeller (Google)]
1502
1503   *) Fix bug in string printing code: if *any* escaping is enabled we must
1504      escape the escape character (backslash) or the resulting string is
1505      ambiguous.
1506      [Steve Henson]
1507
1508  Changes between 1.0.0b and 1.0.0c  [2 Dec 2010]
1509
1510   *) Disable code workaround for ancient and obsolete Netscape browsers
1511      and servers: an attacker can use it in a ciphersuite downgrade attack.
1512      Thanks to Martin Rex for discovering this bug. CVE-2010-4180
1513      [Steve Henson]
1514
1515   *) Fixed J-PAKE implementation error, originally discovered by
1516      Sebastien Martini, further info and confirmation from Stefan
1517      Arentz and Feng Hao. Note that this fix is a security fix. CVE-2010-4252
1518      [Ben Laurie]
1519
1520  Changes between 1.0.0a and 1.0.0b  [16 Nov 2010]
1521
1522   *) Fix extension code to avoid race conditions which can result in a buffer
1523      overrun vulnerability: resumed sessions must not be modified as they can
1524      be shared by multiple threads. CVE-2010-3864
1525      [Steve Henson]
1526
1527   *) Fix WIN32 build system to correctly link an ENGINE directory into
1528      a DLL. 
1529      [Steve Henson]
1530
1531  Changes between 1.0.0 and 1.0.0a  [01 Jun 2010]
1532
1533   *) Check return value of int_rsa_verify in pkey_rsa_verifyrecover 
1534      (CVE-2010-1633)
1535      [Steve Henson, Peter-Michael Hager <hager@dortmund.net>]
1536
1537  Changes between 0.9.8n and 1.0.0  [29 Mar 2010]
1538
1539   *) Add "missing" function EVP_CIPHER_CTX_copy(). This copies a cipher
1540      context. The operation can be customised via the ctrl mechanism in
1541      case ENGINEs want to include additional functionality.
1542      [Steve Henson]
1543
1544   *) Tolerate yet another broken PKCS#8 key format: private key value negative.
1545      [Steve Henson]
1546
1547   *) Add new -subject_hash_old and -issuer_hash_old options to x509 utility to
1548      output hashes compatible with older versions of OpenSSL.
1549      [Willy Weisz <weisz@vcpc.univie.ac.at>]
1550
1551   *) Fix compression algorithm handling: if resuming a session use the
1552      compression algorithm of the resumed session instead of determining
1553      it from client hello again. Don't allow server to change algorithm.
1554      [Steve Henson]
1555
1556   *) Add load_crls() function to apps tidying load_certs() too. Add option
1557      to verify utility to allow additional CRLs to be included.
1558      [Steve Henson]
1559
1560   *) Update OCSP request code to permit adding custom headers to the request:
1561      some responders need this.
1562      [Steve Henson]
1563
1564   *) The function EVP_PKEY_sign() returns <=0 on error: check return code
1565      correctly.
1566      [Julia Lawall <julia@diku.dk>]
1567
1568   *) Update verify callback code in apps/s_cb.c and apps/verify.c, it
1569      needlessly dereferenced structures, used obsolete functions and
1570      didn't handle all updated verify codes correctly.
1571      [Steve Henson]
1572
1573   *) Disable MD2 in the default configuration.
1574      [Steve Henson]
1575
1576   *) In BIO_pop() and BIO_push() use the ctrl argument (which was NULL) to
1577      indicate the initial BIO being pushed or popped. This makes it possible
1578      to determine whether the BIO is the one explicitly called or as a result
1579      of the ctrl being passed down the chain. Fix BIO_pop() and SSL BIOs so
1580      it handles reference counts correctly and doesn't zero out the I/O bio
1581      when it is not being explicitly popped. WARNING: applications which
1582      included workarounds for the old buggy behaviour will need to be modified
1583      or they could free up already freed BIOs.
1584      [Steve Henson]
1585
1586   *) Extend the uni2asc/asc2uni => OPENSSL_uni2asc/OPENSSL_asc2uni
1587      renaming to all platforms (within the 0.9.8 branch, this was
1588      done conditionally on Netware platforms to avoid a name clash).
1589      [Guenter <lists@gknw.net>]
1590
1591   *) Add ECDHE and PSK support to DTLS.
1592      [Michael Tuexen <tuexen@fh-muenster.de>]
1593
1594   *) Add CHECKED_STACK_OF macro to safestack.h, otherwise safestack can't
1595      be used on C++.
1596      [Steve Henson]
1597
1598   *) Add "missing" function EVP_MD_flags() (without this the only way to
1599      retrieve a digest flags is by accessing the structure directly. Update
1600      EVP_MD_do_all*() and EVP_CIPHER_do_all*() to include the name a digest
1601      or cipher is registered as in the "from" argument. Print out all
1602      registered digests in the dgst usage message instead of manually 
1603      attempting to work them out.
1604      [Steve Henson]
1605
1606   *) If no SSLv2 ciphers are used don't use an SSLv2 compatible client hello:
1607      this allows the use of compression and extensions. Change default cipher
1608      string to remove SSLv2 ciphersuites. This effectively avoids ancient SSLv2
1609      by default unless an application cipher string requests it.
1610      [Steve Henson]
1611
1612   *) Alter match criteria in PKCS12_parse(). It used to try to use local
1613      key ids to find matching certificates and keys but some PKCS#12 files
1614      don't follow the (somewhat unwritten) rules and this strategy fails.
1615      Now just gather all certificates together and the first private key
1616      then look for the first certificate that matches the key.
1617      [Steve Henson]
1618
1619   *) Support use of registered digest and cipher names for dgst and cipher
1620      commands instead of having to add each one as a special case. So now
1621      you can do:
1622
1623         openssl sha256 foo
1624
1625      as well as:
1626
1627         openssl dgst -sha256 foo
1628
1629      and this works for ENGINE based algorithms too.
1630
1631      [Steve Henson]
1632
1633   *) Update Gost ENGINE to support parameter files.
1634      [Victor B. Wagner <vitus@cryptocom.ru>]
1635
1636   *) Support GeneralizedTime in ca utility. 
1637      [Oliver Martin <oliver@volatilevoid.net>, Steve Henson]
1638
1639   *) Enhance the hash format used for certificate directory links. The new
1640      form uses the canonical encoding (meaning equivalent names will work
1641      even if they aren't identical) and uses SHA1 instead of MD5. This form
1642      is incompatible with the older format and as a result c_rehash should
1643      be used to rebuild symbolic links.
1644      [Steve Henson]
1645
1646   *) Make PKCS#8 the default write format for private keys, replacing the
1647      traditional format. This form is standardised, more secure and doesn't
1648      include an implicit MD5 dependency.
1649      [Steve Henson]
1650
1651   *) Add a $gcc_devteam_warn option to Configure. The idea is that any code
1652      committed to OpenSSL should pass this lot as a minimum.
1653      [Steve Henson]
1654
1655   *) Add session ticket override functionality for use by EAP-FAST.
1656      [Jouni Malinen <j@w1.fi>]
1657
1658   *) Modify HMAC functions to return a value. Since these can be implemented
1659      in an ENGINE errors can occur.
1660      [Steve Henson]
1661
1662   *) Type-checked OBJ_bsearch_ex.
1663      [Ben Laurie]
1664
1665   *) Type-checked OBJ_bsearch. Also some constification necessitated
1666      by type-checking.  Still to come: TXT_DB, bsearch(?),
1667      OBJ_bsearch_ex, qsort, CRYPTO_EX_DATA, ASN1_VALUE, ASN1_STRING,
1668      CONF_VALUE.
1669      [Ben Laurie]
1670
1671   *) New function OPENSSL_gmtime_adj() to add a specific number of days and
1672      seconds to a tm structure directly, instead of going through OS
1673      specific date routines. This avoids any issues with OS routines such
1674      as the year 2038 bug. New *_adj() functions for ASN1 time structures
1675      and X509_time_adj_ex() to cover the extended range. The existing
1676      X509_time_adj() is still usable and will no longer have any date issues.
1677      [Steve Henson]
1678
1679   *) Delta CRL support. New use deltas option which will attempt to locate
1680      and search any appropriate delta CRLs available.
1681
1682      This work was sponsored by Google.
1683      [Steve Henson]
1684
1685   *) Support for CRLs partitioned by reason code. Reorganise CRL processing
1686      code and add additional score elements. Validate alternate CRL paths
1687      as part of the CRL checking and indicate a new error "CRL path validation
1688      error" in this case. Applications wanting additional details can use
1689      the verify callback and check the new "parent" field. If this is not
1690      NULL CRL path validation is taking place. Existing applications wont
1691      see this because it requires extended CRL support which is off by
1692      default.
1693
1694      This work was sponsored by Google.
1695      [Steve Henson]
1696
1697   *) Support for freshest CRL extension.
1698
1699      This work was sponsored by Google.
1700      [Steve Henson]
1701
1702   *) Initial indirect CRL support. Currently only supported in the CRLs
1703      passed directly and not via lookup. Process certificate issuer
1704      CRL entry extension and lookup CRL entries by bother issuer name
1705      and serial number. Check and process CRL issuer entry in IDP extension.
1706
1707      This work was sponsored by Google.
1708      [Steve Henson]
1709
1710   *) Add support for distinct certificate and CRL paths. The CRL issuer
1711      certificate is validated separately in this case. Only enabled if
1712      an extended CRL support flag is set: this flag will enable additional
1713      CRL functionality in future.
1714
1715      This work was sponsored by Google.
1716      [Steve Henson]
1717
1718   *) Add support for policy mappings extension.
1719
1720      This work was sponsored by Google.
1721      [Steve Henson]
1722
1723   *) Fixes to pathlength constraint, self issued certificate handling,
1724      policy processing to align with RFC3280 and PKITS tests.
1725
1726      This work was sponsored by Google.
1727      [Steve Henson]
1728
1729   *) Support for name constraints certificate extension. DN, email, DNS
1730      and URI types are currently supported.
1731
1732      This work was sponsored by Google.
1733      [Steve Henson]
1734
1735   *) To cater for systems that provide a pointer-based thread ID rather
1736      than numeric, deprecate the current numeric thread ID mechanism and
1737      replace it with a structure and associated callback type. This
1738      mechanism allows a numeric "hash" to be extracted from a thread ID in
1739      either case, and on platforms where pointers are larger than 'long',
1740      mixing is done to help ensure the numeric 'hash' is usable even if it
1741      can't be guaranteed unique. The default mechanism is to use "&errno"
1742      as a pointer-based thread ID to distinguish between threads.
1743
1744      Applications that want to provide their own thread IDs should now use
1745      CRYPTO_THREADID_set_callback() to register a callback that will call
1746      either CRYPTO_THREADID_set_numeric() or CRYPTO_THREADID_set_pointer().
1747
1748      Note that ERR_remove_state() is now deprecated, because it is tied
1749      to the assumption that thread IDs are numeric.  ERR_remove_state(0)
1750      to free the current thread's error state should be replaced by
1751      ERR_remove_thread_state(NULL).
1752
1753      (This new approach replaces the functions CRYPTO_set_idptr_callback(),
1754      CRYPTO_get_idptr_callback(), and CRYPTO_thread_idptr() that existed in
1755      OpenSSL 0.9.9-dev between June 2006 and August 2008. Also, if an
1756      application was previously providing a numeric thread callback that
1757      was inappropriate for distinguishing threads, then uniqueness might
1758      have been obtained with &errno that happened immediately in the
1759      intermediate development versions of OpenSSL; this is no longer the
1760      case, the numeric thread callback will now override the automatic use
1761      of &errno.)
1762      [Geoff Thorpe, with help from Bodo Moeller]
1763
1764   *) Initial support for different CRL issuing certificates. This covers a
1765      simple case where the self issued certificates in the chain exist and
1766      the real CRL issuer is higher in the existing chain.
1767
1768      This work was sponsored by Google.
1769      [Steve Henson]
1770
1771   *) Removed effectively defunct crypto/store from the build.
1772      [Ben Laurie]
1773
1774   *) Revamp of STACK to provide stronger type-checking. Still to come:
1775      TXT_DB, bsearch(?), OBJ_bsearch, qsort, CRYPTO_EX_DATA, ASN1_VALUE,
1776      ASN1_STRING, CONF_VALUE.
1777      [Ben Laurie]
1778
1779   *) Add a new SSL_MODE_RELEASE_BUFFERS mode flag to release unused buffer
1780      RAM on SSL connections.  This option can save about 34k per idle SSL.
1781      [Nick Mathewson]
1782
1783   *) Revamp of LHASH to provide stronger type-checking. Still to come:
1784      STACK, TXT_DB, bsearch, qsort.
1785      [Ben Laurie]
1786
1787   *) Initial support for Cryptographic Message Syntax (aka CMS) based
1788      on RFC3850, RFC3851 and RFC3852. New cms directory and cms utility,
1789      support for data, signedData, compressedData, digestedData and
1790      encryptedData, envelopedData types included. Scripts to check against
1791      RFC4134 examples draft and interop and consistency checks of many
1792      content types and variants.
1793      [Steve Henson]
1794
1795   *) Add options to enc utility to support use of zlib compression BIO.
1796      [Steve Henson]
1797
1798   *) Extend mk1mf to support importing of options and assembly language
1799      files from Configure script, currently only included in VC-WIN32.
1800      The assembly language rules can now optionally generate the source
1801      files from the associated perl scripts.
1802      [Steve Henson]
1803
1804   *) Implement remaining functionality needed to support GOST ciphersuites.
1805      Interop testing has been performed using CryptoPro implementations.
1806      [Victor B. Wagner <vitus@cryptocom.ru>]
1807
1808   *) s390x assembler pack.
1809      [Andy Polyakov]
1810
1811   *) ARMv4 assembler pack. ARMv4 refers to v4 and later ISA, not CPU
1812      "family."
1813      [Andy Polyakov]
1814
1815   *) Implement Opaque PRF Input TLS extension as specified in
1816      draft-rescorla-tls-opaque-prf-input-00.txt.  Since this is not an
1817      official specification yet and no extension type assignment by
1818      IANA exists, this extension (for now) will have to be explicitly
1819      enabled when building OpenSSL by providing the extension number
1820      to use.  For example, specify an option
1821
1822          -DTLSEXT_TYPE_opaque_prf_input=0x9527
1823
1824      to the "config" or "Configure" script to enable the extension,
1825      assuming extension number 0x9527 (which is a completely arbitrary
1826      and unofficial assignment based on the MD5 hash of the Internet
1827      Draft).  Note that by doing so, you potentially lose
1828      interoperability with other TLS implementations since these might
1829      be using the same extension number for other purposes.
1830
1831      SSL_set_tlsext_opaque_prf_input(ssl, src, len) is used to set the
1832      opaque PRF input value to use in the handshake.  This will create
1833      an interal copy of the length-'len' string at 'src', and will
1834      return non-zero for success.
1835
1836      To get more control and flexibility, provide a callback function
1837      by using
1838
1839           SSL_CTX_set_tlsext_opaque_prf_input_callback(ctx, cb)
1840           SSL_CTX_set_tlsext_opaque_prf_input_callback_arg(ctx, arg)
1841
1842      where
1843
1844           int (*cb)(SSL *, void *peerinput, size_t len, void *arg);
1845           void *arg;
1846
1847      Callback function 'cb' will be called in handshakes, and is
1848      expected to use SSL_set_tlsext_opaque_prf_input() as appropriate.
1849      Argument 'arg' is for application purposes (the value as given to
1850      SSL_CTX_set_tlsext_opaque_prf_input_callback_arg() will directly
1851      be provided to the callback function).  The callback function
1852      has to return non-zero to report success: usually 1 to use opaque
1853      PRF input just if possible, or 2 to enforce use of the opaque PRF
1854      input.  In the latter case, the library will abort the handshake
1855      if opaque PRF input is not successfully negotiated.
1856
1857      Arguments 'peerinput' and 'len' given to the callback function
1858      will always be NULL and 0 in the case of a client.  A server will
1859      see the client's opaque PRF input through these variables if
1860      available (NULL and 0 otherwise).  Note that if the server
1861      provides an opaque PRF input, the length must be the same as the
1862      length of the client's opaque PRF input.
1863
1864      Note that the callback function will only be called when creating
1865      a new session (session resumption can resume whatever was
1866      previously negotiated), and will not be called in SSL 2.0
1867      handshakes; thus, SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2) or
1868      SSL_set_options(ssl, SSL_OP_NO_SSLv2) is especially recommended
1869      for applications that need to enforce opaque PRF input.
1870
1871      [Bodo Moeller]
1872
1873   *) Update ssl code to support digests other than SHA1+MD5 for handshake
1874      MAC. 
1875
1876      [Victor B. Wagner <vitus@cryptocom.ru>]
1877
1878   *) Add RFC4507 support to OpenSSL. This includes the corrections in
1879      RFC4507bis. The encrypted ticket format is an encrypted encoded
1880      SSL_SESSION structure, that way new session features are automatically
1881      supported.
1882
1883      If a client application caches session in an SSL_SESSION structure
1884      support is transparent because tickets are now stored in the encoded
1885      SSL_SESSION.
1886      
1887      The SSL_CTX structure automatically generates keys for ticket
1888      protection in servers so again support should be possible
1889      with no application modification.
1890
1891      If a client or server wishes to disable RFC4507 support then the option
1892      SSL_OP_NO_TICKET can be set.
1893
1894      Add a TLS extension debugging callback to allow the contents of any client
1895      or server extensions to be examined.
1896
1897      This work was sponsored by Google.
1898      [Steve Henson]
1899
1900   *) Final changes to avoid use of pointer pointer casts in OpenSSL.
1901      OpenSSL should now compile cleanly on gcc 4.2
1902      [Peter Hartley <pdh@utter.chaos.org.uk>, Steve Henson]
1903
1904   *) Update SSL library to use new EVP_PKEY MAC API. Include generic MAC
1905      support including streaming MAC support: this is required for GOST
1906      ciphersuite support.
1907      [Victor B. Wagner <vitus@cryptocom.ru>, Steve Henson]
1908
1909   *) Add option -stream to use PKCS#7 streaming in smime utility. New
1910      function i2d_PKCS7_bio_stream() and PEM_write_PKCS7_bio_stream()
1911      to output in BER and PEM format.
1912      [Steve Henson]
1913
1914   *) Experimental support for use of HMAC via EVP_PKEY interface. This
1915      allows HMAC to be handled via the EVP_DigestSign*() interface. The
1916      EVP_PKEY "key" in this case is the HMAC key, potentially allowing
1917      ENGINE support for HMAC keys which are unextractable. New -mac and
1918      -macopt options to dgst utility.
1919      [Steve Henson]
1920
1921   *) New option -sigopt to dgst utility. Update dgst to use
1922      EVP_Digest{Sign,Verify}*. These two changes make it possible to use
1923      alternative signing paramaters such as X9.31 or PSS in the dgst 
1924      utility.
1925      [Steve Henson]
1926
1927   *) Change ssl_cipher_apply_rule(), the internal function that does
1928      the work each time a ciphersuite string requests enabling
1929      ("foo+bar"), moving ("+foo+bar"), disabling ("-foo+bar", or
1930      removing ("!foo+bar") a class of ciphersuites: Now it maintains
1931      the order of disabled ciphersuites such that those ciphersuites
1932      that most recently went from enabled to disabled not only stay
1933      in order with respect to each other, but also have higher priority
1934      than other disabled ciphersuites the next time ciphersuites are
1935      enabled again.
1936
1937      This means that you can now say, e.g., "PSK:-PSK:HIGH" to enable
1938      the same ciphersuites as with "HIGH" alone, but in a specific
1939      order where the PSK ciphersuites come first (since they are the
1940      most recently disabled ciphersuites when "HIGH" is parsed).
1941
1942      Also, change ssl_create_cipher_list() (using this new
1943      funcionality) such that between otherwise identical
1944      cihpersuites, ephemeral ECDH is preferred over ephemeral DH in
1945      the default order.
1946      [Bodo Moeller]
1947
1948   *) Change ssl_create_cipher_list() so that it automatically
1949      arranges the ciphersuites in reasonable order before starting
1950      to process the rule string.  Thus, the definition for "DEFAULT"
1951      (SSL_DEFAULT_CIPHER_LIST) now is just "ALL:!aNULL:!eNULL", but
1952      remains equivalent to "AES:ALL:!aNULL:!eNULL:+aECDH:+kRSA:+RC4:@STRENGTH".
1953      This makes it much easier to arrive at a reasonable default order
1954      in applications for which anonymous ciphers are OK (meaning
1955      that you can't actually use DEFAULT).
1956      [Bodo Moeller; suggested by Victor Duchovni]
1957
1958   *) Split the SSL/TLS algorithm mask (as used for ciphersuite string
1959      processing) into multiple integers instead of setting
1960      "SSL_MKEY_MASK" bits, "SSL_AUTH_MASK" bits, "SSL_ENC_MASK",
1961      "SSL_MAC_MASK", and "SSL_SSL_MASK" bits all in a single integer.
1962      (These masks as well as the individual bit definitions are hidden
1963      away into the non-exported interface ssl/ssl_locl.h, so this
1964      change to the definition of the SSL_CIPHER structure shouldn't
1965      affect applications.)  This give us more bits for each of these
1966      categories, so there is no longer a need to coagulate AES128 and
1967      AES256 into a single algorithm bit, and to coagulate Camellia128
1968      and Camellia256 into a single algorithm bit, which has led to all
1969      kinds of kludges.
1970
1971      Thus, among other things, the kludge introduced in 0.9.7m and
1972      0.9.8e for masking out AES256 independently of AES128 or masking
1973      out Camellia256 independently of AES256 is not needed here in 0.9.9.
1974
1975      With the change, we also introduce new ciphersuite aliases that
1976      so far were missing: "AES128", "AES256", "CAMELLIA128", and
1977      "CAMELLIA256".
1978      [Bodo Moeller]
1979
1980   *) Add support for dsa-with-SHA224 and dsa-with-SHA256.
1981      Use the leftmost N bytes of the signature input if the input is
1982      larger than the prime q (with N being the size in bytes of q).
1983      [Nils Larsch]
1984
1985   *) Very *very* experimental PKCS#7 streaming encoder support. Nothing uses
1986      it yet and it is largely untested.
1987      [Steve Henson]
1988
1989   *) Add support for the ecdsa-with-SHA224/256/384/512 signature types.
1990      [Nils Larsch]
1991
1992   *) Initial incomplete changes to avoid need for function casts in OpenSSL
1993      some compilers (gcc 4.2 and later) reject their use. Safestack is
1994      reimplemented.  Update ASN1 to avoid use of legacy functions. 
1995      [Steve Henson]
1996
1997   *) Win32/64 targets are linked with Winsock2.
1998      [Andy Polyakov]
1999
2000   *) Add an X509_CRL_METHOD structure to allow CRL processing to be redirected
2001      to external functions. This can be used to increase CRL handling 
2002      efficiency especially when CRLs are very large by (for example) storing
2003      the CRL revoked certificates in a database.
2004      [Steve Henson]
2005
2006   *) Overhaul of by_dir code. Add support for dynamic loading of CRLs so
2007      new CRLs added to a directory can be used. New command line option
2008      -verify_return_error to s_client and s_server. This causes real errors
2009      to be returned by the verify callback instead of carrying on no matter
2010      what. This reflects the way a "real world" verify callback would behave.
2011      [Steve Henson]
2012
2013   *) GOST engine, supporting several GOST algorithms and public key formats.
2014      Kindly donated by Cryptocom.
2015      [Cryptocom]
2016
2017   *) Partial support for Issuing Distribution Point CRL extension. CRLs
2018      partitioned by DP are handled but no indirect CRL or reason partitioning
2019      (yet). Complete overhaul of CRL handling: now the most suitable CRL is
2020      selected via a scoring technique which handles IDP and AKID in CRLs.
2021      [Steve Henson]
2022
2023   *) New X509_STORE_CTX callbacks lookup_crls() and lookup_certs() which
2024      will ultimately be used for all verify operations: this will remove the
2025      X509_STORE dependency on certificate verification and allow alternative
2026      lookup methods.  X509_STORE based implementations of these two callbacks.
2027      [Steve Henson]
2028
2029   *) Allow multiple CRLs to exist in an X509_STORE with matching issuer names.
2030      Modify get_crl() to find a valid (unexpired) CRL if possible.
2031      [Steve Henson]
2032
2033   *) New function X509_CRL_match() to check if two CRLs are identical. Normally
2034      this would be called X509_CRL_cmp() but that name is already used by
2035      a function that just compares CRL issuer names. Cache several CRL 
2036      extensions in X509_CRL structure and cache CRLDP in X509.
2037      [Steve Henson]
2038
2039   *) Store a "canonical" representation of X509_NAME structure (ASN1 Name)
2040      this maps equivalent X509_NAME structures into a consistent structure.
2041      Name comparison can then be performed rapidly using memcmp().
2042      [Steve Henson]
2043
2044   *) Non-blocking OCSP request processing. Add -timeout option to ocsp 
2045      utility.
2046      [Steve Henson]
2047
2048   *) Allow digests to supply their own micalg string for S/MIME type using
2049      the ctrl EVP_MD_CTRL_MICALG.
2050      [Steve Henson]
2051
2052   *) During PKCS7 signing pass the PKCS7 SignerInfo structure to the
2053      EVP_PKEY_METHOD before and after signing via the EVP_PKEY_CTRL_PKCS7_SIGN
2054      ctrl. It can then customise the structure before and/or after signing
2055      if necessary.
2056      [Steve Henson]
2057
2058   *) New function OBJ_add_sigid() to allow application defined signature OIDs
2059      to be added to OpenSSLs internal tables. New function OBJ_sigid_free()
2060      to free up any added signature OIDs.
2061      [Steve Henson]
2062
2063   *) New functions EVP_CIPHER_do_all(), EVP_CIPHER_do_all_sorted(),
2064      EVP_MD_do_all() and EVP_MD_do_all_sorted() to enumerate internal
2065      digest and cipher tables. New options added to openssl utility:
2066      list-message-digest-algorithms and list-cipher-algorithms.
2067      [Steve Henson]
2068
2069   *) Change the array representation of binary polynomials: the list
2070      of degrees of non-zero coefficients is now terminated with -1.
2071      Previously it was terminated with 0, which was also part of the
2072      value; thus, the array representation was not applicable to
2073      polynomials where t^0 has coefficient zero.  This change makes
2074      the array representation useful in a more general context.
2075      [Douglas Stebila]
2076
2077   *) Various modifications and fixes to SSL/TLS cipher string
2078      handling.  For ECC, the code now distinguishes between fixed ECDH
2079      with RSA certificates on the one hand and with ECDSA certificates
2080      on the other hand, since these are separate ciphersuites.  The
2081      unused code for Fortezza ciphersuites has been removed.
2082
2083      For consistency with EDH, ephemeral ECDH is now called "EECDH"
2084      (not "ECDHE").  For consistency with the code for DH
2085      certificates, use of ECDH certificates is now considered ECDH
2086      authentication, not RSA or ECDSA authentication (the latter is
2087      merely the CA's signing algorithm and not actively used in the
2088      protocol).
2089
2090      The temporary ciphersuite alias "ECCdraft" is no longer
2091      available, and ECC ciphersuites are no longer excluded from "ALL"
2092      and "DEFAULT".  The following aliases now exist for RFC 4492
2093      ciphersuites, most of these by analogy with the DH case:
2094
2095          kECDHr   - ECDH cert, signed with RSA
2096          kECDHe   - ECDH cert, signed with ECDSA
2097          kECDH    - ECDH cert (signed with either RSA or ECDSA)
2098          kEECDH   - ephemeral ECDH
2099          ECDH     - ECDH cert or ephemeral ECDH
2100
2101          aECDH    - ECDH cert
2102          aECDSA   - ECDSA cert
2103          ECDSA    - ECDSA cert
2104
2105          AECDH    - anonymous ECDH
2106          EECDH    - non-anonymous ephemeral ECDH (equivalent to "kEECDH:-AECDH")
2107
2108      [Bodo Moeller]
2109
2110   *) Add additional S/MIME capabilities for AES and GOST ciphers if supported.
2111      Use correct micalg parameters depending on digest(s) in signed message.
2112      [Steve Henson]
2113
2114   *) Add engine support for EVP_PKEY_ASN1_METHOD. Add functions to process
2115      an ENGINE asn1 method. Support ENGINE lookups in the ASN1 code.
2116      [Steve Henson]
2117
2118   *) Initial engine support for EVP_PKEY_METHOD. New functions to permit
2119      an engine to register a method. Add ENGINE lookups for methods and
2120      functional reference processing.
2121      [Steve Henson]
2122
2123   *) New functions EVP_Digest{Sign,Verify)*. These are enchance versions of
2124      EVP_{Sign,Verify}* which allow an application to customise the signature
2125      process.
2126      [Steve Henson]
2127
2128   *) New -resign option to smime utility. This adds one or more signers
2129      to an existing PKCS#7 signedData structure. Also -md option to use an
2130      alternative message digest algorithm for signing.
2131      [Steve Henson]
2132
2133   *) Tidy up PKCS#7 routines and add new functions to make it easier to
2134      create PKCS7 structures containing multiple signers. Update smime
2135      application to support multiple signers.
2136      [Steve Henson]
2137
2138   *) New -macalg option to pkcs12 utility to allow setting of an alternative
2139      digest MAC.
2140      [Steve Henson]
2141
2142   *) Initial support for PKCS#5 v2.0 PRFs other than default SHA1 HMAC.
2143      Reorganize PBE internals to lookup from a static table using NIDs,
2144      add support for HMAC PBE OID translation. Add a EVP_CIPHER ctrl:
2145      EVP_CTRL_PBE_PRF_NID this allows a cipher to specify an alternative
2146      PRF which will be automatically used with PBES2.
2147      [Steve Henson]
2148
2149   *) Replace the algorithm specific calls to generate keys in "req" with the
2150      new API.
2151      [Steve Henson]
2152
2153   *) Update PKCS#7 enveloped data routines to use new API. This is now
2154      supported by any public key method supporting the encrypt operation. A
2155      ctrl is added to allow the public key algorithm to examine or modify
2156      the PKCS#7 RecipientInfo structure if it needs to: for RSA this is
2157      a no op.
2158      [Steve Henson]
2159
2160   *) Add a ctrl to asn1 method to allow a public key algorithm to express
2161      a default digest type to use. In most cases this will be SHA1 but some
2162      algorithms (such as GOST) need to specify an alternative digest. The
2163      return value indicates how strong the prefernce is 1 means optional and
2164      2 is mandatory (that is it is the only supported type). Modify
2165      ASN1_item_sign() to accept a NULL digest argument to indicate it should
2166      use the default md. Update openssl utilities to use the default digest
2167      type for signing if it is not explicitly indicated.
2168      [Steve Henson]
2169
2170   *) Use OID cross reference table in ASN1_sign() and ASN1_verify(). New 
2171      EVP_MD flag EVP_MD_FLAG_PKEY_METHOD_SIGNATURE. This uses the relevant
2172      signing method from the key type. This effectively removes the link
2173      between digests and public key types.
2174      [Steve Henson]
2175
2176   *) Add an OID cross reference table and utility functions. Its purpose is to
2177      translate between signature OIDs such as SHA1WithrsaEncryption and SHA1,
2178      rsaEncryption. This will allow some of the algorithm specific hackery
2179      needed to use the correct OID to be removed. 
2180      [Steve Henson]
2181
2182   *) Remove algorithm specific dependencies when setting PKCS7_SIGNER_INFO
2183      structures for PKCS7_sign(). They are now set up by the relevant public
2184      key ASN1 method.
2185      [Steve Henson]
2186
2187   *) Add provisional EC pkey method with support for ECDSA and ECDH.
2188      [Steve Henson]
2189
2190   *) Add support for key derivation (agreement) in the API, DH method and
2191      pkeyutl.
2192      [Steve Henson]
2193
2194   *) Add DSA pkey method and DH pkey methods, extend DH ASN1 method to support
2195      public and private key formats. As a side effect these add additional 
2196      command line functionality not previously available: DSA signatures can be
2197      generated and verified using pkeyutl and DH key support and generation in
2198      pkey, genpkey.
2199      [Steve Henson]
2200
2201   *) BeOS support.
2202      [Oliver Tappe <zooey@hirschkaefer.de>]
2203
2204   *) New make target "install_html_docs" installs HTML renditions of the
2205      manual pages.
2206      [Oliver Tappe <zooey@hirschkaefer.de>]
2207
2208   *) New utility "genpkey" this is analagous to "genrsa" etc except it can
2209      generate keys for any algorithm. Extend and update EVP_PKEY_METHOD to
2210      support key and parameter generation and add initial key generation
2211      functionality for RSA.
2212      [Steve Henson]
2213
2214   *) Add functions for main EVP_PKEY_method operations. The undocumented
2215      functions EVP_PKEY_{encrypt,decrypt} have been renamed to
2216      EVP_PKEY_{encrypt,decrypt}_old. 
2217      [Steve Henson]
2218
2219   *) Initial definitions for EVP_PKEY_METHOD. This will be a high level public
2220      key API, doesn't do much yet.
2221      [Steve Henson]
2222
2223   *) New function EVP_PKEY_asn1_get0_info() to retrieve information about
2224      public key algorithms. New option to openssl utility:
2225      "list-public-key-algorithms" to print out info.
2226      [Steve Henson]
2227
2228   *) Implement the Supported Elliptic Curves Extension for
2229      ECC ciphersuites from draft-ietf-tls-ecc-12.txt.
2230      [Douglas Stebila]
2231
2232   *) Don't free up OIDs in OBJ_cleanup() if they are in use by EVP_MD or
2233      EVP_CIPHER structures to avoid later problems in EVP_cleanup().
2234      [Steve Henson]
2235
2236   *) New utilities pkey and pkeyparam. These are similar to algorithm specific
2237      utilities such as rsa, dsa, dsaparam etc except they process any key
2238      type.
2239      [Steve Henson]
2240
2241   *) Transfer public key printing routines to EVP_PKEY_ASN1_METHOD. New 
2242      functions EVP_PKEY_print_public(), EVP_PKEY_print_private(),
2243      EVP_PKEY_print_param() to print public key data from an EVP_PKEY
2244      structure.
2245      [Steve Henson]
2246
2247   *) Initial support for pluggable public key ASN1.
2248      De-spaghettify the public key ASN1 handling. Move public and private
2249      key ASN1 handling to a new EVP_PKEY_ASN1_METHOD structure. Relocate
2250      algorithm specific handling to a single module within the relevant
2251      algorithm directory. Add functions to allow (near) opaque processing
2252      of public and private key structures.
2253      [Steve Henson]
2254
2255   *) Implement the Supported Point Formats Extension for
2256      ECC ciphersuites from draft-ietf-tls-ecc-12.txt.
2257      [Douglas Stebila]
2258
2259   *) Add initial support for RFC 4279 PSK TLS ciphersuites. Add members
2260      for the psk identity [hint] and the psk callback functions to the
2261      SSL_SESSION, SSL and SSL_CTX structure.
2262      
2263      New ciphersuites:
2264          PSK-RC4-SHA, PSK-3DES-EDE-CBC-SHA, PSK-AES128-CBC-SHA,
2265          PSK-AES256-CBC-SHA
2266  
2267      New functions:
2268          SSL_CTX_use_psk_identity_hint
2269          SSL_get_psk_identity_hint
2270          SSL_get_psk_identity
2271          SSL_use_psk_identity_hint
2272
2273      [Mika Kousa and Pasi Eronen of Nokia Corporation]
2274
2275   *) Add RFC 3161 compliant time stamp request creation, response generation
2276      and response verification functionality.
2277      [Zoltán Glózik <zglozik@opentsa.org>, The OpenTSA Project]
2278
2279   *) Add initial support for TLS extensions, specifically for the server_name
2280      extension so far.  The SSL_SESSION, SSL_CTX, and SSL data structures now
2281      have new members for a host name.  The SSL data structure has an
2282      additional member SSL_CTX *initial_ctx so that new sessions can be
2283      stored in that context to allow for session resumption, even after the
2284      SSL has been switched to a new SSL_CTX in reaction to a client's
2285      server_name extension.
2286
2287      New functions (subject to change):
2288
2289          SSL_get_servername()
2290          SSL_get_servername_type()
2291          SSL_set_SSL_CTX()
2292
2293      New CTRL codes and macros (subject to change):
2294
2295          SSL_CTRL_SET_TLSEXT_SERVERNAME_CB
2296                                  - SSL_CTX_set_tlsext_servername_callback()
2297          SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG
2298                                       - SSL_CTX_set_tlsext_servername_arg()
2299          SSL_CTRL_SET_TLSEXT_HOSTNAME           - SSL_set_tlsext_host_name()
2300
2301      openssl s_client has a new '-servername ...' option.
2302
2303      openssl s_server has new options '-servername_host ...', '-cert2 ...',
2304      '-key2 ...', '-servername_fatal' (subject to change).  This allows
2305      testing the HostName extension for a specific single host name ('-cert'
2306      and '-key' remain fallbacks for handshakes without HostName
2307      negotiation).  If the unrecogninzed_name alert has to be sent, this by
2308      default is a warning; it becomes fatal with the '-servername_fatal'
2309      option.
2310
2311      [Peter Sylvester,  Remy Allais, Christophe Renou]
2312
2313   *) Whirlpool hash implementation is added.
2314      [Andy Polyakov]
2315
2316   *) BIGNUM code on 64-bit SPARCv9 targets is switched from bn(64,64) to
2317      bn(64,32). Because of instruction set limitations it doesn't have
2318      any negative impact on performance. This was done mostly in order
2319      to make it possible to share assembler modules, such as bn_mul_mont
2320      implementations, between 32- and 64-bit builds without hassle.
2321      [Andy Polyakov]
2322
2323   *) Move code previously exiled into file crypto/ec/ec2_smpt.c
2324      to ec2_smpl.c, and no longer require the OPENSSL_EC_BIN_PT_COMP
2325      macro.
2326      [Bodo Moeller]
2327
2328   *) New candidate for BIGNUM assembler implementation, bn_mul_mont,
2329      dedicated Montgomery multiplication procedure, is introduced.
2330      BN_MONT_CTX is modified to allow bn_mul_mont to reach for higher
2331      "64-bit" performance on certain 32-bit targets.
2332      [Andy Polyakov]
2333
2334   *) New option SSL_OP_NO_COMP to disable use of compression selectively
2335      in SSL structures. New SSL ctrl to set maximum send fragment size. 
2336      Save memory by seeting the I/O buffer sizes dynamically instead of
2337      using the maximum available value.
2338      [Steve Henson]
2339
2340   *) New option -V for 'openssl ciphers'. This prints the ciphersuite code
2341      in addition to the text details.
2342      [Bodo Moeller]
2343
2344   *) Very, very preliminary EXPERIMENTAL support for printing of general
2345      ASN1 structures. This currently produces rather ugly output and doesn't
2346      handle several customised structures at all.
2347      [Steve Henson]
2348
2349   *) Integrated support for PVK file format and some related formats such
2350      as MS PUBLICKEYBLOB and PRIVATEKEYBLOB. Command line switches to support
2351      these in the 'rsa' and 'dsa' utilities.
2352      [Steve Henson]
2353
2354   *) Support for PKCS#1 RSAPublicKey format on rsa utility command line.
2355      [Steve Henson]
2356
2357   *) Remove the ancient ASN1_METHOD code. This was only ever used in one
2358      place for the (very old) "NETSCAPE" format certificates which are now
2359      handled using new ASN1 code equivalents.
2360      [Steve Henson]
2361
2362   *) Let the TLSv1_method() etc. functions return a 'const' SSL_METHOD
2363      pointer and make the SSL_METHOD parameter in SSL_CTX_new,
2364      SSL_CTX_set_ssl_version and SSL_set_ssl_method 'const'.
2365      [Nils Larsch]
2366
2367   *) Modify CRL distribution points extension code to print out previously
2368      unsupported fields. Enhance extension setting code to allow setting of
2369      all fields.
2370      [Steve Henson]
2371
2372   *) Add print and set support for Issuing Distribution Point CRL extension.
2373      [Steve Henson]
2374
2375   *) Change 'Configure' script to enable Camellia by default.
2376      [NTT]
2377
2378  Changes between 0.9.8m and 0.9.8n [24 Mar 2010]
2379
2380   *) When rejecting SSL/TLS records due to an incorrect version number, never
2381      update s->server with a new major version number.  As of
2382      - OpenSSL 0.9.8m if 'short' is a 16-bit type,
2383      - OpenSSL 0.9.8f if 'short' is longer than 16 bits,
2384      the previous behavior could result in a read attempt at NULL when
2385      receiving specific incorrect SSL/TLS records once record payload
2386      protection is active.  (CVE-2010-0740)
2387      [Bodo Moeller, Adam Langley <agl@chromium.org>]
2388
2389   *) Fix for CVE-2010-0433 where some kerberos enabled versions of OpenSSL 
2390      could be crashed if the relevant tables were not present (e.g. chrooted).
2391      [Tomas Hoger <thoger@redhat.com>]
2392
2393  Changes between 0.9.8l and 0.9.8m [25 Feb 2010]
2394
2395   *) Always check bn_wexpend() return values for failure.  (CVE-2009-3245)
2396      [Martin Olsson, Neel Mehta]
2397
2398   *) Fix X509_STORE locking: Every 'objs' access requires a lock (to
2399      accommodate for stack sorting, always a write lock!).
2400      [Bodo Moeller]
2401
2402   *) On some versions of WIN32 Heap32Next is very slow. This can cause
2403      excessive delays in the RAND_poll(): over a minute. As a workaround
2404      include a time check in the inner Heap32Next loop too.
2405      [Steve Henson]
2406
2407   *) The code that handled flushing of data in SSL/TLS originally used the
2408      BIO_CTRL_INFO ctrl to see if any data was pending first. This caused
2409      the problem outlined in PR#1949. The fix suggested there however can
2410      trigger problems with buggy BIO_CTRL_WPENDING (e.g. some versions
2411      of Apache). So instead simplify the code to flush unconditionally.
2412      This should be fine since flushing with no data to flush is a no op.
2413      [Steve Henson]
2414
2415   *) Handle TLS versions 2.0 and later properly and correctly use the
2416      highest version of TLS/SSL supported. Although TLS >= 2.0 is some way
2417      off ancient servers have a habit of sticking around for a while...
2418      [Steve Henson]
2419
2420   *) Modify compression code so it frees up structures without using the
2421      ex_data callbacks. This works around a problem where some applications
2422      call CRYPTO_cleanup_all_ex_data() before application exit (e.g. when
2423      restarting) then use compression (e.g. SSL with compression) later.
2424      This results in significant per-connection memory leaks and
2425      has caused some security issues including CVE-2008-1678 and
2426      CVE-2009-4355.
2427      [Steve Henson]
2428
2429   *) Constify crypto/cast (i.e., <openssl/cast.h>): a CAST_KEY doesn't
2430      change when encrypting or decrypting.
2431      [Bodo Moeller]
2432
2433   *) Add option SSL_OP_LEGACY_SERVER_CONNECT which will allow clients to
2434      connect and renegotiate with servers which do not support RI.
2435      Until RI is more widely deployed this option is enabled by default.
2436      [Steve Henson]
2437
2438   *) Add "missing" ssl ctrls to clear options and mode.
2439      [Steve Henson]
2440
2441   *) If client attempts to renegotiate and doesn't support RI respond with
2442      a no_renegotiation alert as required by RFC5746.  Some renegotiating
2443      TLS clients will continue a connection gracefully when they receive
2444      the alert. Unfortunately OpenSSL mishandled this alert and would hang
2445      waiting for a server hello which it will never receive. Now we treat a
2446      received no_renegotiation alert as a fatal error. This is because
2447      applications requesting a renegotiation might well expect it to succeed
2448      and would have no code in place to handle the server denying it so the
2449      only safe thing to do is to terminate the connection.
2450      [Steve Henson]
2451
2452   *) Add ctrl macro SSL_get_secure_renegotiation_support() which returns 1 if
2453      peer supports secure renegotiation and 0 otherwise. Print out peer
2454      renegotiation support in s_client/s_server.
2455      [Steve Henson]
2456
2457   *) Replace the highly broken and deprecated SPKAC certification method with
2458      the updated NID creation version. This should correctly handle UTF8.
2459      [Steve Henson]
2460
2461   *) Implement RFC5746. Re-enable renegotiation but require the extension
2462      as needed. Unfortunately, SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION
2463      turns out to be a bad idea. It has been replaced by
2464      SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION which can be set with
2465      SSL_CTX_set_options(). This is really not recommended unless you
2466      know what you are doing.
2467      [Eric Rescorla <ekr@networkresonance.com>, Ben Laurie, Steve Henson]
2468
2469   *) Fixes to stateless session resumption handling. Use initial_ctx when
2470      issuing and attempting to decrypt tickets in case it has changed during
2471      servername handling. Use a non-zero length session ID when attempting
2472      stateless session resumption: this makes it possible to determine if
2473      a resumption has occurred immediately after receiving server hello
2474      (several places in OpenSSL subtly assume this) instead of later in
2475      the handshake.
2476      [Steve Henson]
2477
2478   *) The functions ENGINE_ctrl(), OPENSSL_isservice(),
2479      CMS_get1_RecipientRequest() and RAND_bytes() can return <=0 on error
2480      fixes for a few places where the return code is not checked
2481      correctly.
2482      [Julia Lawall <julia@diku.dk>]
2483
2484   *) Add --strict-warnings option to Configure script to include devteam
2485      warnings in other configurations.
2486      [Steve Henson]
2487
2488   *) Add support for --libdir option and LIBDIR variable in makefiles. This
2489      makes it possible to install openssl libraries in locations which
2490      have names other than "lib", for example "/usr/lib64" which some
2491      systems need.
2492      [Steve Henson, based on patch from Jeremy Utley]
2493
2494   *) Don't allow the use of leading 0x80 in OIDs. This is a violation of
2495      X690 8.9.12 and can produce some misleading textual output of OIDs.
2496      [Steve Henson, reported by Dan Kaminsky]
2497
2498   *) Delete MD2 from algorithm tables. This follows the recommendation in
2499      several standards that it is not used in new applications due to
2500      several cryptographic weaknesses. For binary compatibility reasons
2501      the MD2 API is still compiled in by default.
2502      [Steve Henson]
2503
2504   *) Add compression id to {d2i,i2d}_SSL_SESSION so it is correctly saved
2505      and restored.
2506      [Steve Henson]
2507
2508   *) Rename uni2asc and asc2uni functions to OPENSSL_uni2asc and
2509      OPENSSL_asc2uni conditionally on Netware platforms to avoid a name
2510      clash.
2511      [Guenter <lists@gknw.net>]
2512
2513   *) Fix the server certificate chain building code to use X509_verify_cert(),
2514      it used to have an ad-hoc builder which was unable to cope with anything
2515      other than a simple chain.
2516      [David Woodhouse <dwmw2@infradead.org>, Steve Henson]
2517
2518   *) Don't check self signed certificate signatures in X509_verify_cert()
2519      by default (a flag can override this): it just wastes time without
2520      adding any security. As a useful side effect self signed root CAs
2521      with non-FIPS digests are now usable in FIPS mode.
2522      [Steve Henson]
2523
2524   *) In dtls1_process_out_of_seq_message() the check if the current message
2525      is already buffered was missing. For every new message was memory
2526      allocated, allowing an attacker to perform an denial of service attack
2527      with sending out of seq handshake messages until there is no memory
2528      left. Additionally every future messege was buffered, even if the
2529      sequence number made no sense and would be part of another handshake.
2530      So only messages with sequence numbers less than 10 in advance will be
2531      buffered.  (CVE-2009-1378)
2532      [Robin Seggelmann, discovered by Daniel Mentz]     
2533
2534   *) Records are buffered if they arrive with a future epoch to be
2535      processed after finishing the corresponding handshake. There is
2536      currently no limitation to this buffer allowing an attacker to perform
2537      a DOS attack with sending records with future epochs until there is no
2538      memory left. This patch adds the pqueue_size() function to detemine
2539      the size of a buffer and limits the record buffer to 100 entries.
2540      (CVE-2009-1377)
2541      [Robin Seggelmann, discovered by Daniel Mentz]     
2542
2543   *) Keep a copy of frag->msg_header.frag_len so it can be used after the
2544      parent structure is freed.  (CVE-2009-1379)
2545      [Daniel Mentz]     
2546
2547   *) Handle non-blocking I/O properly in SSL_shutdown() call.
2548      [Darryl Miles <darryl-mailinglists@netbauds.net>]
2549
2550   *) Add 2.5.4.* OIDs
2551      [Ilya O. <vrghost@gmail.com>]
2552
2553  Changes between 0.9.8k and 0.9.8l  [5 Nov 2009]
2554
2555   *) Disable renegotiation completely - this fixes a severe security
2556      problem (CVE-2009-3555) at the cost of breaking all
2557      renegotiation. Renegotiation can be re-enabled by setting
2558      SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION in s3->flags at
2559      run-time. This is really not recommended unless you know what
2560      you're doing.
2561      [Ben Laurie]
2562
2563  Changes between 0.9.8j and 0.9.8k  [25 Mar 2009]
2564
2565   *) Don't set val to NULL when freeing up structures, it is freed up by
2566      underlying code. If sizeof(void *) > sizeof(long) this can result in
2567      zeroing past the valid field. (CVE-2009-0789)
2568      [Paolo Ganci <Paolo.Ganci@AdNovum.CH>]
2569
2570   *) Fix bug where return value of CMS_SignerInfo_verify_content() was not
2571      checked correctly. This would allow some invalid signed attributes to
2572      appear to verify correctly. (CVE-2009-0591)
2573      [Ivan Nestlerode <inestlerode@us.ibm.com>]
2574
2575   *) Reject UniversalString and BMPString types with invalid lengths. This
2576      prevents a crash in ASN1_STRING_print_ex() which assumes the strings have
2577      a legal length. (CVE-2009-0590)
2578      [Steve Henson]
2579
2580   *) Set S/MIME signing as the default purpose rather than setting it 
2581      unconditionally. This allows applications to override it at the store
2582      level.
2583      [Steve Henson]
2584
2585   *) Permit restricted recursion of ASN1 strings. This is needed in practice
2586      to handle some structures.
2587      [Steve Henson]
2588
2589   *) Improve efficiency of mem_gets: don't search whole buffer each time
2590      for a '\n'
2591      [Jeremy Shapiro <jnshapir@us.ibm.com>]
2592
2593   *) New -hex option for openssl rand.
2594      [Matthieu Herrb]
2595
2596   *) Print out UTF8String and NumericString when parsing ASN1.
2597      [Steve Henson]
2598
2599   *) Support NumericString type for name components.
2600      [Steve Henson]
2601
2602   *) Allow CC in the environment to override the automatically chosen
2603      compiler. Note that nothing is done to ensure flags work with the
2604      chosen compiler.
2605      [Ben Laurie]
2606
2607  Changes between 0.9.8i and 0.9.8j  [07 Jan 2009]
2608
2609   *) Properly check EVP_VerifyFinal() and similar return values
2610      (CVE-2008-5077).
2611      [Ben Laurie, Bodo Moeller, Google Security Team]
2612
2613   *) Enable TLS extensions by default.
2614      [Ben Laurie]
2615
2616   *) Allow the CHIL engine to be loaded, whether the application is
2617      multithreaded or not. (This does not release the developer from the
2618      obligation to set up the dynamic locking callbacks.)
2619      [Sander Temme <sander@temme.net>]
2620
2621   *) Use correct exit code if there is an error in dgst command.
2622      [Steve Henson; problem pointed out by Roland Dirlewanger]
2623
2624   *) Tweak Configure so that you need to say "experimental-jpake" to enable
2625      JPAKE, and need to use -DOPENSSL_EXPERIMENTAL_JPAKE in applications.
2626      [Bodo Moeller]
2627
2628   *) Add experimental JPAKE support, including demo authentication in
2629      s_client and s_server.
2630      [Ben Laurie]
2631
2632   *) Set the comparison function in v3_addr_canonize().
2633      [Rob Austein <sra@hactrn.net>]
2634
2635   *) Add support for XMPP STARTTLS in s_client.
2636      [Philip Paeps <philip@freebsd.org>]
2637
2638   *) Change the server-side SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG behavior
2639      to ensure that even with this option, only ciphersuites in the
2640      server's preference list will be accepted.  (Note that the option
2641      applies only when resuming a session, so the earlier behavior was
2642      just about the algorithm choice for symmetric cryptography.)
2643      [Bodo Moeller]
2644
2645  Changes between 0.9.8h and 0.9.8i  [15 Sep 2008]
2646
2647   *) Fix NULL pointer dereference if a DTLS server received
2648      ChangeCipherSpec as first record (CVE-2009-1386).
2649      [PR #1679]
2650
2651   *) Fix a state transitition in s3_srvr.c and d1_srvr.c
2652      (was using SSL3_ST_CW_CLNT_HELLO_B, should be ..._ST_SW_SRVR_...).
2653      [Nagendra Modadugu]
2654
2655   *) The fix in 0.9.8c that supposedly got rid of unsafe
2656      double-checked locking was incomplete for RSA blinding,
2657      addressing just one layer of what turns out to have been
2658      doubly unsafe triple-checked locking.
2659
2660      So now fix this for real by retiring the MONT_HELPER macro
2661      in crypto/rsa/rsa_eay.c.
2662
2663      [Bodo Moeller; problem pointed out by Marius Schilder]
2664
2665   *) Various precautionary measures:
2666
2667      - Avoid size_t integer overflow in HASH_UPDATE (md32_common.h).
2668
2669      - Avoid a buffer overflow in d2i_SSL_SESSION() (ssl_asn1.c).
2670        (NB: This would require knowledge of the secret session ticket key
2671        to exploit, in which case you'd be SOL either way.)
2672
2673      - Change bn_nist.c so that it will properly handle input BIGNUMs
2674        outside the expected range.
2675
2676      - Enforce the 'num' check in BN_div() (bn_div.c) for non-BN_DEBUG
2677        builds.
2678
2679      [Neel Mehta, Bodo Moeller]
2680
2681   *) Allow engines to be "soft loaded" - i.e. optionally don't die if
2682      the load fails. Useful for distros.
2683      [Ben Laurie and the FreeBSD team]
2684
2685   *) Add support for Local Machine Keyset attribute in PKCS#12 files.
2686      [Steve Henson]
2687
2688   *) Fix BN_GF2m_mod_arr() top-bit cleanup code.
2689      [Huang Ying]
2690
2691   *) Expand ENGINE to support engine supplied SSL client certificate functions.
2692
2693      This work was sponsored by Logica.
2694      [Steve Henson]
2695
2696   *) Add CryptoAPI ENGINE to support use of RSA and DSA keys held in Windows
2697      keystores. Support for SSL/TLS client authentication too.
2698      Not compiled unless enable-capieng specified to Configure.
2699
2700      This work was sponsored by Logica.
2701      [Steve Henson]
2702
2703   *) Fix bug in X509_ATTRIBUTE creation: dont set attribute using
2704      ASN1_TYPE_set1 if MBSTRING flag set. This bug would crash certain
2705      attribute creation routines such as certifcate requests and PKCS#12
2706      files.
2707      [Steve Henson]
2708
2709  Changes between 0.9.8g and 0.9.8h  [28 May 2008]
2710
2711   *) Fix flaw if 'Server Key exchange message' is omitted from a TLS
2712      handshake which could lead to a cilent crash as found using the
2713      Codenomicon TLS test suite (CVE-2008-1672) 
2714      [Steve Henson, Mark Cox]
2715
2716   *) Fix double free in TLS server name extensions which could lead to
2717      a remote crash found by Codenomicon TLS test suite (CVE-2008-0891) 
2718      [Joe Orton]
2719
2720   *) Clear error queue in SSL_CTX_use_certificate_chain_file()
2721
2722      Clear the error queue to ensure that error entries left from
2723      older function calls do not interfere with the correct operation.
2724      [Lutz Jaenicke, Erik de Castro Lopo]
2725
2726   *) Remove root CA certificates of commercial CAs:
2727
2728      The OpenSSL project does not recommend any specific CA and does not
2729      have any policy with respect to including or excluding any CA.
2730      Therefore it does not make any sense to ship an arbitrary selection
2731      of root CA certificates with the OpenSSL software.
2732      [Lutz Jaenicke]
2733
2734   *) RSA OAEP patches to fix two separate invalid memory reads.
2735      The first one involves inputs when 'lzero' is greater than
2736      'SHA_DIGEST_LENGTH' (it would read about SHA_DIGEST_LENGTH bytes
2737      before the beginning of from). The second one involves inputs where
2738      the 'db' section contains nothing but zeroes (there is a one-byte
2739      invalid read after the end of 'db').
2740      [Ivan Nestlerode <inestlerode@us.ibm.com>]
2741
2742   *) Partial backport from 0.9.9-dev:
2743
2744      Introduce bn_mul_mont (dedicated Montgomery multiplication
2745      procedure) as a candidate for BIGNUM assembler implementation.
2746      While 0.9.9-dev uses assembler for various architectures, only
2747      x86_64 is available by default here in the 0.9.8 branch, and
2748      32-bit x86 is available through a compile-time setting.
2749
2750      To try the 32-bit x86 assembler implementation, use Configure
2751      option "enable-montasm" (which exists only for this backport).
2752
2753      As "enable-montasm" for 32-bit x86 disclaims code stability
2754      anyway, in this constellation we activate additional code
2755      backported from 0.9.9-dev for further performance improvements,
2756      namely BN_from_montgomery_word.  (To enable this otherwise,
2757      e.g. x86_64, try "-DMONT_FROM_WORD___NON_DEFAULT_0_9_8_BUILD".)
2758
2759      [Andy Polyakov (backport partially by Bodo Moeller)]
2760
2761   *) Add TLS session ticket callback. This allows an application to set
2762      TLS ticket cipher and HMAC keys rather than relying on hardcoded fixed
2763      values. This is useful for key rollover for example where several key
2764      sets may exist with different names.
2765      [Steve Henson]
2766
2767   *) Reverse ENGINE-internal logic for caching default ENGINE handles.
2768      This was broken until now in 0.9.8 releases, such that the only way
2769      a registered ENGINE could be used (assuming it initialises
2770      successfully on the host) was to explicitly set it as the default
2771      for the relevant algorithms. This is in contradiction with 0.9.7
2772      behaviour and the documentation. With this fix, when an ENGINE is
2773      registered into a given algorithm's table of implementations, the
2774      'uptodate' flag is reset so that auto-discovery will be used next
2775      time a new context for that algorithm attempts to select an
2776      implementation.
2777      [Ian Lister (tweaked by Geoff Thorpe)]
2778
2779   *) Backport of CMS code to OpenSSL 0.9.8. This differs from the 0.9.9
2780      implemention in the following ways:
2781
2782      Lack of EVP_PKEY_ASN1_METHOD means algorithm parameters have to be
2783      hard coded.
2784
2785      Lack of BER streaming support means one pass streaming processing is
2786      only supported if data is detached: setting the streaming flag is
2787      ignored for embedded content.
2788
2789      CMS support is disabled by default and must be explicitly enabled
2790      with the enable-cms configuration option.
2791      [Steve Henson]
2792
2793   *) Update the GMP engine glue to do direct copies between BIGNUM and
2794      mpz_t when openssl and GMP use the same limb size. Otherwise the
2795      existing "conversion via a text string export" trick is still used.
2796      [Paul Sheer <paulsheer@gmail.com>]
2797
2798   *) Zlib compression BIO. This is a filter BIO which compressed and
2799      uncompresses any data passed through it.
2800      [Steve Henson]
2801
2802   *) Add AES_wrap_key() and AES_unwrap_key() functions to implement
2803      RFC3394 compatible AES key wrapping.
2804      [Steve Henson]
2805
2806   *) Add utility functions to handle ASN1 structures. ASN1_STRING_set0():
2807      sets string data without copying. X509_ALGOR_set0() and
2808      X509_ALGOR_get0(): set and retrieve X509_ALGOR (AlgorithmIdentifier)
2809      data. Attribute function X509at_get0_data_by_OBJ(): retrieves data
2810      from an X509_ATTRIBUTE structure optionally checking it occurs only
2811      once. ASN1_TYPE_set1(): set and ASN1_TYPE structure copying supplied
2812      data.
2813      [Steve Henson]
2814
2815   *) Fix BN flag handling in RSA_eay_mod_exp() and BN_MONT_CTX_set()
2816      to get the expected BN_FLG_CONSTTIME behavior.
2817      [Bodo Moeller (Google)]
2818   
2819   *) Netware support:
2820
2821      - fixed wrong usage of ioctlsocket() when build for LIBC BSD sockets
2822      - fixed do_tests.pl to run the test suite with CLIB builds too (CLIB_OPT)
2823      - added some more tests to do_tests.pl
2824      - fixed RunningProcess usage so that it works with newer LIBC NDKs too
2825      - removed usage of BN_LLONG for CLIB builds to avoid runtime dependency
2826      - added new Configure targets netware-clib-bsdsock, netware-clib-gcc,
2827        netware-clib-bsdsock-gcc, netware-libc-bsdsock-gcc
2828      - various changes to netware.pl to enable gcc-cross builds on Win32
2829        platform
2830      - changed crypto/bio/b_sock.c to work with macro functions (CLIB BSD)
2831      - various changes to fix missing prototype warnings
2832      - fixed x86nasm.pl to create correct asm files for NASM COFF output
2833      - added AES, WHIRLPOOL and CPUID assembler code to build files
2834      - added missing AES assembler make rules to mk1mf.pl
2835      - fixed order of includes in apps/ocsp.c so that e_os.h settings apply
2836      [Guenter Knauf <eflash@gmx.net>]
2837
2838   *) Implement certificate status request TLS extension defined in RFC3546.
2839      A client can set the appropriate parameters and receive the encoded
2840      OCSP response via a callback. A server can query the supplied parameters
2841      and set the encoded OCSP response in the callback. Add simplified examples
2842      to s_client and s_server.
2843      [Steve Henson]
2844
2845  Changes between 0.9.8f and 0.9.8g  [19 Oct 2007]
2846
2847   *) Fix various bugs:
2848      + Binary incompatibility of ssl_ctx_st structure
2849      + DTLS interoperation with non-compliant servers
2850      + Don't call get_session_cb() without proposed session
2851      + Fix ia64 assembler code
2852      [Andy Polyakov, Steve Henson]
2853
2854  Changes between 0.9.8e and 0.9.8f  [11 Oct 2007]
2855
2856   *) DTLS Handshake overhaul. There were longstanding issues with
2857      OpenSSL DTLS implementation, which were making it impossible for
2858      RFC 4347 compliant client to communicate with OpenSSL server.
2859      Unfortunately just fixing these incompatibilities would "cut off"
2860      pre-0.9.8f clients. To allow for hassle free upgrade post-0.9.8e
2861      server keeps tolerating non RFC compliant syntax. The opposite is
2862      not true, 0.9.8f client can not communicate with earlier server.
2863      This update even addresses CVE-2007-4995.
2864      [Andy Polyakov]
2865
2866   *) Changes to avoid need for function casts in OpenSSL: some compilers
2867      (gcc 4.2 and later) reject their use.
2868      [Kurt Roeckx <kurt@roeckx.be>, Peter Hartley <pdh@utter.chaos.org.uk>,
2869       Steve Henson]
2870   
2871   *) Add RFC4507 support to OpenSSL. This includes the corrections in
2872      RFC4507bis. The encrypted ticket format is an encrypted encoded
2873      SSL_SESSION structure, that way new session features are automatically
2874      supported.
2875
2876      If a client application caches session in an SSL_SESSION structure
2877      support is transparent because tickets are now stored in the encoded
2878      SSL_SESSION.
2879      
2880      The SSL_CTX structure automatically generates keys for ticket
2881      protection in servers so again support should be possible
2882      with no application modification.
2883
2884      If a client or server wishes to disable RFC4507 support then the option
2885      SSL_OP_NO_TICKET can be set.
2886
2887      Add a TLS extension debugging callback to allow the contents of any client
2888      or server extensions to be examined.
2889
2890      This work was sponsored by Google.
2891      [Steve Henson]
2892
2893   *) Add initial support for TLS extensions, specifically for the server_name
2894      extension so far.  The SSL_SESSION, SSL_CTX, and SSL data structures now
2895      have new members for a host name.  The SSL data structure has an
2896      additional member SSL_CTX *initial_ctx so that new sessions can be
2897      stored in that context to allow for session resumption, even after the
2898      SSL has been switched to a new SSL_CTX in reaction to a client's
2899      server_name extension.
2900
2901      New functions (subject to change):
2902
2903          SSL_get_servername()
2904          SSL_get_servername_type()
2905          SSL_set_SSL_CTX()
2906
2907      New CTRL codes and macros (subject to change):
2908
2909          SSL_CTRL_SET_TLSEXT_SERVERNAME_CB
2910                                  - SSL_CTX_set_tlsext_servername_callback()
2911          SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG
2912                                       - SSL_CTX_set_tlsext_servername_arg()
2913          SSL_CTRL_SET_TLSEXT_HOSTNAME           - SSL_set_tlsext_host_name()
2914
2915      openssl s_client has a new '-servername ...' option.
2916
2917      openssl s_server has new options '-servername_host ...', '-cert2 ...',
2918      '-key2 ...', '-servername_fatal' (subject to change).  This allows
2919      testing the HostName extension for a specific single host name ('-cert'
2920      and '-key' remain fallbacks for handshakes without HostName
2921      negotiation).  If the unrecogninzed_name alert has to be sent, this by
2922      default is a warning; it becomes fatal with the '-servername_fatal'
2923      option.
2924
2925      [Peter Sylvester,  Remy Allais, Christophe Renou, Steve Henson]
2926
2927   *) Add AES and SSE2 assembly language support to VC++ build.
2928      [Steve Henson]
2929
2930   *) Mitigate attack on final subtraction in Montgomery reduction.
2931      [Andy Polyakov]
2932
2933   *) Fix crypto/ec/ec_mult.c to work properly with scalars of value 0
2934      (which previously caused an internal error).
2935      [Bodo Moeller]
2936
2937   *) Squeeze another 10% out of IGE mode when in != out.
2938      [Ben Laurie]
2939
2940   *) AES IGE mode speedup.
2941      [Dean Gaudet (Google)]
2942
2943   *) Add the Korean symmetric 128-bit cipher SEED (see
2944      http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp) and
2945      add SEED ciphersuites from RFC 4162:
2946
2947         TLS_RSA_WITH_SEED_CBC_SHA      =  "SEED-SHA"
2948         TLS_DHE_DSS_WITH_SEED_CBC_SHA  =  "DHE-DSS-SEED-SHA"
2949         TLS_DHE_RSA_WITH_SEED_CBC_SHA  =  "DHE-RSA-SEED-SHA"
2950         TLS_DH_anon_WITH_SEED_CBC_SHA  =  "ADH-SEED-SHA"
2951
2952      To minimize changes between patchlevels in the OpenSSL 0.9.8
2953      series, SEED remains excluded from compilation unless OpenSSL
2954      is configured with 'enable-seed'.
2955      [KISA, Bodo Moeller]
2956
2957   *) Mitigate branch prediction attacks, which can be practical if a
2958      single processor is shared, allowing a spy process to extract
2959      information.  For detailed background information, see
2960      http://eprint.iacr.org/2007/039 (O. Aciicmez, S. Gueron,
2961      J.-P. Seifert, "New Branch Prediction Vulnerabilities in OpenSSL
2962      and Necessary Software Countermeasures").  The core of the change
2963      are new versions BN_div_no_branch() and
2964      BN_mod_inverse_no_branch() of BN_div() and BN_mod_inverse(),
2965      respectively, which are slower, but avoid the security-relevant
2966      conditional branches.  These are automatically called by BN_div()
2967      and BN_mod_inverse() if the flag BN_FLG_CONSTTIME is set for one
2968      of the input BIGNUMs.  Also, BN_is_bit_set() has been changed to
2969      remove a conditional branch.
2970
2971      BN_FLG_CONSTTIME is the new name for the previous
2972      BN_FLG_EXP_CONSTTIME flag, since it now affects more than just
2973      modular exponentiation.  (Since OpenSSL 0.9.7h, setting this flag
2974      in the exponent causes BN_mod_exp_mont() to use the alternative
2975      implementation in BN_mod_exp_mont_consttime().)  The old name
2976      remains as a deprecated alias.
2977
2978      Similary, RSA_FLAG_NO_EXP_CONSTTIME is replaced by a more general
2979      RSA_FLAG_NO_CONSTTIME flag since the RSA implementation now uses
2980      constant-time implementations for more than just exponentiation.
2981      Here too the old name is kept as a deprecated alias.
2982
2983      BN_BLINDING_new() will now use BN_dup() for the modulus so that
2984      the BN_BLINDING structure gets an independent copy of the
2985      modulus.  This means that the previous "BIGNUM *m" argument to
2986      BN_BLINDING_new() and to BN_BLINDING_create_param() now
2987      essentially becomes "const BIGNUM *m", although we can't actually
2988      change this in the header file before 0.9.9.  It allows
2989      RSA_setup_blinding() to use BN_with_flags() on the modulus to
2990      enable BN_FLG_CONSTTIME.
2991
2992      [Matthew D Wood (Intel Corp)]
2993
2994   *) In the SSL/TLS server implementation, be strict about session ID
2995      context matching (which matters if an application uses a single
2996      external cache for different purposes).  Previously,
2997      out-of-context reuse was forbidden only if SSL_VERIFY_PEER was
2998      set.  This did ensure strict client verification, but meant that,
2999      with applications using a single external cache for quite
3000      different requirements, clients could circumvent ciphersuite
3001      restrictions for a given session ID context by starting a session
3002      in a different context.
3003      [Bodo Moeller]
3004
3005   *) Include "!eNULL" in SSL_DEFAULT_CIPHER_LIST to make sure that
3006      a ciphersuite string such as "DEFAULT:RSA" cannot enable
3007      authentication-only ciphersuites.
3008      [Bodo Moeller]
3009
3010   *) Update the SSL_get_shared_ciphers() fix CVE-2006-3738 which was
3011      not complete and could lead to a possible single byte overflow
3012      (CVE-2007-5135) [Ben Laurie]
3013
3014  Changes between 0.9.8d and 0.9.8e  [23 Feb 2007]
3015
3016   *) Since AES128 and AES256 (and similarly Camellia128 and
3017      Camellia256) share a single mask bit in the logic of
3018      ssl/ssl_ciph.c, the code for masking out disabled ciphers needs a
3019      kludge to work properly if AES128 is available and AES256 isn't
3020      (or if Camellia128 is available and Camellia256 isn't).
3021      [Victor Duchovni]
3022
3023   *) Fix the BIT STRING encoding generated by crypto/ec/ec_asn1.c
3024      (within i2d_ECPrivateKey, i2d_ECPKParameters, i2d_ECParameters):
3025      When a point or a seed is encoded in a BIT STRING, we need to
3026      prevent the removal of trailing zero bits to get the proper DER
3027      encoding.  (By default, crypto/asn1/a_bitstr.c assumes the case
3028      of a NamedBitList, for which trailing 0 bits need to be removed.)
3029      [Bodo Moeller]
3030
3031   *) Have SSL/TLS server implementation tolerate "mismatched" record
3032      protocol version while receiving ClientHello even if the
3033      ClientHello is fragmented.  (The server can't insist on the
3034      particular protocol version it has chosen before the ServerHello
3035      message has informed the client about his choice.)
3036      [Bodo Moeller]
3037
3038   *) Add RFC 3779 support.
3039      [Rob Austein for ARIN, Ben Laurie]
3040
3041   *) Load error codes if they are not already present instead of using a
3042      static variable. This allows them to be cleanly unloaded and reloaded.
3043      Improve header file function name parsing.
3044      [Steve Henson]
3045
3046   *) extend SMTP and IMAP protocol emulation in s_client to use EHLO
3047      or CAPABILITY handshake as required by RFCs.
3048      [Goetz Babin-Ebell]
3049
3050  Changes between 0.9.8c and 0.9.8d  [28 Sep 2006]
3051
3052   *) Introduce limits to prevent malicious keys being able to
3053      cause a denial of service.  (CVE-2006-2940)
3054      [Steve Henson, Bodo Moeller]
3055
3056   *) Fix ASN.1 parsing of certain invalid structures that can result
3057      in a denial of service.  (CVE-2006-2937)  [Steve Henson]
3058
3059   *) Fix buffer overflow in SSL_get_shared_ciphers() function. 
3060      (CVE-2006-3738) [Tavis Ormandy and Will Drewry, Google Security Team]
3061
3062   *) Fix SSL client code which could crash if connecting to a
3063      malicious SSLv2 server.  (CVE-2006-4343)
3064      [Tavis Ormandy and Will Drewry, Google Security Team]
3065
3066   *) Since 0.9.8b, ciphersuite strings naming explicit ciphersuites
3067      match only those.  Before that, "AES256-SHA" would be interpreted
3068      as a pattern and match "AES128-SHA" too (since AES128-SHA got
3069      the same strength classification in 0.9.7h) as we currently only
3070      have a single AES bit in the ciphersuite description bitmap.
3071      That change, however, also applied to ciphersuite strings such as
3072      "RC4-MD5" that intentionally matched multiple ciphersuites --
3073      namely, SSL 2.0 ciphersuites in addition to the more common ones
3074      from SSL 3.0/TLS 1.0.
3075
3076      So we change the selection algorithm again: Naming an explicit
3077      ciphersuite selects this one ciphersuite, and any other similar
3078      ciphersuite (same bitmap) from *other* protocol versions.
3079      Thus, "RC4-MD5" again will properly select both the SSL 2.0
3080      ciphersuite and the SSL 3.0/TLS 1.0 ciphersuite.
3081
3082      Since SSL 2.0 does not have any ciphersuites for which the
3083      128/256 bit distinction would be relevant, this works for now.
3084      The proper fix will be to use different bits for AES128 and
3085      AES256, which would have avoided the problems from the beginning;
3086      however, bits are scarce, so we can only do this in a new release
3087      (not just a patchlevel) when we can change the SSL_CIPHER
3088      definition to split the single 'unsigned long mask' bitmap into
3089      multiple values to extend the available space.
3090
3091      [Bodo Moeller]
3092
3093  Changes between 0.9.8b and 0.9.8c  [05 Sep 2006]
3094
3095   *) Avoid PKCS #1 v1.5 signature attack discovered by Daniel Bleichenbacher
3096      (CVE-2006-4339)  [Ben Laurie and Google Security Team]
3097
3098   *) Add AES IGE and biIGE modes.
3099      [Ben Laurie]
3100
3101   *) Change the Unix randomness entropy gathering to use poll() when
3102      possible instead of select(), since the latter has some
3103      undesirable limitations.
3104      [Darryl Miles via Richard Levitte and Bodo Moeller]
3105
3106   *) Disable "ECCdraft" ciphersuites more thoroughly.  Now special
3107      treatment in ssl/ssl_ciph.s makes sure that these ciphersuites
3108      cannot be implicitly activated as part of, e.g., the "AES" alias.
3109      However, please upgrade to OpenSSL 0.9.9[-dev] for
3110      non-experimental use of the ECC ciphersuites to get TLS extension
3111      support, which is required for curve and point format negotiation
3112      to avoid potential handshake problems.
3113      [Bodo Moeller]
3114
3115   *) Disable rogue ciphersuites:
3116
3117       - SSLv2 0x08 0x00 0x80 ("RC4-64-MD5")
3118       - SSLv3/TLSv1 0x00 0x61 ("EXP1024-RC2-CBC-MD5")
3119       - SSLv3/TLSv1 0x00 0x60 ("EXP1024-RC4-MD5")
3120
3121      The latter two were purportedly from
3122      draft-ietf-tls-56-bit-ciphersuites-0[01].txt, but do not really
3123      appear there.
3124
3125      Also deactivate the remaining ciphersuites from
3126      draft-ietf-tls-56-bit-ciphersuites-01.txt.  These are just as
3127      unofficial, and the ID has long expired.
3128      [Bodo Moeller]
3129
3130   *) Fix RSA blinding Heisenbug (problems sometimes occured on
3131      dual-core machines) and other potential thread-safety issues.
3132      [Bodo Moeller]
3133
3134   *) Add the symmetric cipher Camellia (128-bit, 192-bit, 256-bit key
3135      versions), which is now available for royalty-free use
3136      (see http://info.isl.ntt.co.jp/crypt/eng/info/chiteki.html).
3137      Also, add Camellia TLS ciphersuites from RFC 4132.
3138
3139      To minimize changes between patchlevels in the OpenSSL 0.9.8
3140      series, Camellia remains excluded from compilation unless OpenSSL
3141      is configured with 'enable-camellia'.
3142      [NTT]
3143
3144   *) Disable the padding bug check when compression is in use. The padding
3145      bug check assumes the first packet is of even length, this is not
3146      necessarily true if compresssion is enabled and can result in false
3147      positives causing handshake failure. The actual bug test is ancient
3148      code so it is hoped that implementations will either have fixed it by
3149      now or any which still have the bug do not support compression.
3150      [Steve Henson]
3151
3152  Changes between 0.9.8a and 0.9.8b  [04 May 2006]
3153
3154   *) When applying a cipher rule check to see if string match is an explicit
3155      cipher suite and only match that one cipher suite if it is.
3156      [Steve Henson]
3157
3158   *) Link in manifests for VC++ if needed.
3159      [Austin Ziegler <halostatue@gmail.com>]
3160
3161   *) Update support for ECC-based TLS ciphersuites according to
3162      draft-ietf-tls-ecc-12.txt with proposed changes (but without
3163      TLS extensions, which are supported starting with the 0.9.9
3164      branch, not in the OpenSSL 0.9.8 branch).
3165      [Douglas Stebila]
3166
3167   *) New functions EVP_CIPHER_CTX_new() and EVP_CIPHER_CTX_free() to support
3168      opaque EVP_CIPHER_CTX handling.
3169      [Steve Henson]
3170
3171   *) Fixes and enhancements to zlib compression code. We now only use
3172      "zlib1.dll" and use the default __cdecl calling convention on Win32
3173      to conform with the standards mentioned here:
3174            http://www.zlib.net/DLL_FAQ.txt
3175      Static zlib linking now works on Windows and the new --with-zlib-include
3176      --with-zlib-lib options to Configure can be used to supply the location
3177      of the headers and library. Gracefully handle case where zlib library
3178      can't be loaded.
3179      [Steve Henson]
3180
3181   *) Several fixes and enhancements to the OID generation code. The old code
3182      sometimes allowed invalid OIDs (1.X for X >= 40 for example), couldn't
3183      handle numbers larger than ULONG_MAX, truncated printing and had a
3184      non standard OBJ_obj2txt() behaviour.
3185      [Steve Henson]
3186
3187   *) Add support for building of engines under engine/ as shared libraries
3188      under VC++ build system.
3189      [Steve Henson]
3190
3191   *) Corrected the numerous bugs in the Win32 path splitter in DSO.
3192      Hopefully, we will not see any false combination of paths any more.
3193      [Richard Levitte]
3194
3195  Changes between 0.9.8 and 0.9.8a  [11 Oct 2005]
3196
3197   *) Remove the functionality of SSL_OP_MSIE_SSLV2_RSA_PADDING
3198      (part of SSL_OP_ALL).  This option used to disable the
3199      countermeasure against man-in-the-middle protocol-version
3200      rollback in the SSL 2.0 server implementation, which is a bad
3201      idea.  (CVE-2005-2969)
3202
3203      [Bodo Moeller; problem pointed out by Yutaka Oiwa (Research Center
3204      for Information Security, National Institute of Advanced Industrial
3205      Science and Technology [AIST], Japan)]
3206
3207   *) Add two function to clear and return the verify parameter flags.
3208      [Steve Henson]
3209
3210   *) Keep cipherlists sorted in the source instead of sorting them at
3211      runtime, thus removing the need for a lock.
3212      [Nils Larsch]
3213
3214   *) Avoid some small subgroup attacks in Diffie-Hellman.
3215      [Nick Mathewson and Ben Laurie]
3216
3217   *) Add functions for well-known primes.
3218      [Nick Mathewson]
3219
3220   *) Extended Windows CE support.
3221      [Satoshi Nakamura and Andy Polyakov]
3222
3223   *) Initialize SSL_METHOD structures at compile time instead of during
3224      runtime, thus removing the need for a lock.
3225      [Steve Henson]
3226
3227   *) Make PKCS7_decrypt() work even if no certificate is supplied by
3228      attempting to decrypt each encrypted key in turn. Add support to
3229      smime utility.
3230      [Steve Henson]
3231
3232  Changes between 0.9.7h and 0.9.8  [05 Jul 2005]
3233
3234   [NB: OpenSSL 0.9.7i and later 0.9.7 patch levels were released after
3235   OpenSSL 0.9.8.]
3236
3237   *) Add libcrypto.pc and libssl.pc for those who feel they need them.
3238      [Richard Levitte]
3239
3240   *) Change CA.sh and CA.pl so they don't bundle the CSR and the private
3241      key into the same file any more.
3242      [Richard Levitte]
3243
3244   *) Add initial support for Win64, both IA64 and AMD64/x64 flavors.
3245      [Andy Polyakov]
3246
3247   *) Add -utf8 command line and config file option to 'ca'.
3248      [Stefan <stf@udoma.org]
3249
3250   *) Removed the macro des_crypt(), as it seems to conflict with some
3251      libraries.  Use DES_crypt().
3252      [Richard Levitte]
3253
3254   *) Correct naming of the 'chil' and '4758cca' ENGINEs. This
3255      involves renaming the source and generated shared-libs for
3256      both. The engines will accept the corrected or legacy ids
3257      ('ncipher' and '4758_cca' respectively) when binding. NB,
3258      this only applies when building 'shared'.
3259      [Corinna Vinschen <vinschen@redhat.com> and Geoff Thorpe]
3260
3261   *) Add attribute functions to EVP_PKEY structure. Modify
3262      PKCS12_create() to recognize a CSP name attribute and
3263      use it. Make -CSP option work again in pkcs12 utility.
3264      [Steve Henson]
3265
3266   *) Add new functionality to the bn blinding code:
3267      - automatic re-creation of the BN_BLINDING parameters after
3268        a fixed number of uses (currently 32)
3269      - add new function for parameter creation
3270      - introduce flags to control the update behaviour of the
3271        BN_BLINDING parameters
3272      - hide BN_BLINDING structure
3273      Add a second BN_BLINDING slot to the RSA structure to improve
3274      performance when a single RSA object is shared among several
3275      threads.
3276      [Nils Larsch]
3277
3278   *) Add support for DTLS.
3279      [Nagendra Modadugu <nagendra@cs.stanford.edu> and Ben Laurie]
3280
3281   *) Add support for DER encoded private keys (SSL_FILETYPE_ASN1)
3282      to SSL_CTX_use_PrivateKey_file() and SSL_use_PrivateKey_file()
3283      [Walter Goulet]
3284
3285   *) Remove buggy and incompletet DH cert support from
3286      ssl/ssl_rsa.c and ssl/s3_both.c
3287      [Nils Larsch]
3288
3289   *) Use SHA-1 instead of MD5 as the default digest algorithm for
3290      the apps/openssl applications.
3291      [Nils Larsch]
3292
3293   *) Compile clean with "-Wall -Wmissing-prototypes
3294      -Wstrict-prototypes -Wmissing-declarations -Werror". Currently
3295      DEBUG_SAFESTACK must also be set.
3296      [Ben Laurie]
3297
3298   *) Change ./Configure so that certain algorithms can be disabled by default.
3299      The new counterpiece to "no-xxx" is "enable-xxx".
3300
3301      The patented RC5 and MDC2 algorithms will now be disabled unless
3302      "enable-rc5" and "enable-mdc2", respectively, are specified.
3303
3304      (IDEA remains enabled despite being patented.  This is because IDEA
3305      is frequently required for interoperability, and there is no license
3306      fee for non-commercial use.  As before, "no-idea" can be used to
3307      avoid this algorithm.)
3308
3309      [Bodo Moeller]
3310
3311   *) Add processing of proxy certificates (see RFC 3820).  This work was
3312      sponsored by KTH (The Royal Institute of Technology in Stockholm) and
3313      EGEE (Enabling Grids for E-science in Europe).
3314      [Richard Levitte]
3315
3316   *) RC4 performance overhaul on modern architectures/implementations, such
3317      as Intel P4, IA-64 and AMD64.
3318      [Andy Polyakov]
3319
3320   *) New utility extract-section.pl. This can be used specify an alternative
3321      section number in a pod file instead of having to treat each file as
3322      a separate case in Makefile. This can be done by adding two lines to the
3323      pod file:
3324
3325      =for comment openssl_section:XXX
3326
3327      The blank line is mandatory.
3328
3329      [Steve Henson]
3330
3331   *) New arguments -certform, -keyform and -pass for s_client and s_server
3332      to allow alternative format key and certificate files and passphrase
3333      sources.
3334      [Steve Henson]
3335
3336   *) New structure X509_VERIFY_PARAM which combines current verify parameters,
3337      update associated structures and add various utility functions.
3338
3339      Add new policy related verify parameters, include policy checking in 
3340      standard verify code. Enhance 'smime' application with extra parameters
3341      to support policy checking and print out.
3342      [Steve Henson]
3343
3344   *) Add a new engine to support VIA PadLock ACE extensions in the VIA C3
3345      Nehemiah processors. These extensions support AES encryption in hardware
3346      as well as RNG (though RNG support is currently disabled).
3347      [Michal Ludvig <michal@logix.cz>, with help from Andy Polyakov]
3348
3349   *) Deprecate BN_[get|set]_params() functions (they were ignored internally).
3350      [Geoff Thorpe]
3351
3352   *) New FIPS 180-2 algorithms, SHA-224/-256/-384/-512 are implemented.
3353      [Andy Polyakov and a number of other people]
3354
3355   *) Improved PowerPC platform support. Most notably BIGNUM assembler
3356      implementation contributed by IBM.
3357      [Suresh Chari, Peter Waltenberg, Andy Polyakov]
3358
3359   *) The new 'RSA_generate_key_ex' function now takes a BIGNUM for the public
3360      exponent rather than 'unsigned long'. There is a corresponding change to
3361      the new 'rsa_keygen' element of the RSA_METHOD structure.
3362      [Jelte Jansen, Geoff Thorpe]
3363
3364   *) Functionality for creating the initial serial number file is now
3365      moved from CA.pl to the 'ca' utility with a new option -create_serial.
3366
3367      (Before OpenSSL 0.9.7e, CA.pl used to initialize the serial
3368      number file to 1, which is bound to cause problems.  To avoid
3369      the problems while respecting compatibility between different 0.9.7
3370      patchlevels, 0.9.7e  employed 'openssl x509 -next_serial' in
3371      CA.pl for serial number initialization.  With the new release 0.9.8,
3372      we can fix the problem directly in the 'ca' utility.)
3373      [Steve Henson]
3374
3375   *) Reduced header interdepencies by declaring more opaque objects in
3376      ossl_typ.h. As a consequence, including some headers (eg. engine.h) will
3377      give fewer recursive includes, which could break lazy source code - so
3378      this change is covered by the OPENSSL_NO_DEPRECATED symbol. As always,
3379      developers should define this symbol when building and using openssl to
3380      ensure they track the recommended behaviour, interfaces, [etc], but
3381      backwards-compatible behaviour prevails when this isn't defined.
3382      [Geoff Thorpe]
3383
3384   *) New function X509_POLICY_NODE_print() which prints out policy nodes.
3385      [Steve Henson]
3386
3387   *) Add new EVP function EVP_CIPHER_CTX_rand_key and associated functionality.
3388      This will generate a random key of the appropriate length based on the 
3389      cipher context. The EVP_CIPHER can provide its own random key generation
3390      routine to support keys of a specific form. This is used in the des and 
3391      3des routines to generate a key of the correct parity. Update S/MIME
3392      code to use new functions and hence generate correct parity DES keys.
3393      Add EVP_CHECK_DES_KEY #define to return an error if the key is not 
3394      valid (weak or incorrect parity).
3395      [Steve Henson]
3396
3397   *) Add a local set of CRLs that can be used by X509_verify_cert() as well
3398      as looking them up. This is useful when the verified structure may contain
3399      CRLs, for example PKCS#7 signedData. Modify PKCS7_verify() to use any CRLs
3400      present unless the new PKCS7_NO_CRL flag is asserted.
3401      [Steve Henson]
3402
3403   *) Extend ASN1 oid configuration module. It now additionally accepts the
3404      syntax:
3405
3406      shortName = some long name, 1.2.3.4
3407      [Steve Henson]
3408
3409   *) Reimplemented the BN_CTX implementation. There is now no more static
3410      limitation on the number of variables it can handle nor the depth of the
3411      "stack" handling for BN_CTX_start()/BN_CTX_end() pairs. The stack
3412      information can now expand as required, and rather than having a single
3413      static array of bignums, BN_CTX now uses a linked-list of such arrays
3414      allowing it to expand on demand whilst maintaining the usefulness of
3415      BN_CTX's "bundling".
3416      [Geoff Thorpe]
3417
3418   *) Add a missing BN_CTX parameter to the 'rsa_mod_exp' callback in RSA_METHOD
3419      to allow all RSA operations to function using a single BN_CTX.
3420      [Geoff Thorpe]
3421
3422   *) Preliminary support for certificate policy evaluation and checking. This
3423      is initially intended to pass the tests outlined in "Conformance Testing
3424      of Relying Party Client Certificate Path Processing Logic" v1.07.
3425      [Steve Henson]
3426
3427   *) bn_dup_expand() has been deprecated, it was introduced in 0.9.7 and
3428      remained unused and not that useful. A variety of other little bignum
3429      tweaks and fixes have also been made continuing on from the audit (see
3430      below).
3431      [Geoff Thorpe]
3432
3433   *) Constify all or almost all d2i, c2i, s2i and r2i functions, along with
3434      associated ASN1, EVP and SSL functions and old ASN1 macros.
3435      [Richard Levitte]
3436
3437   *) BN_zero() only needs to set 'top' and 'neg' to zero for correct results,
3438      and this should never fail. So the return value from the use of
3439      BN_set_word() (which can fail due to needless expansion) is now deprecated;
3440      if OPENSSL_NO_DEPRECATED is defined, BN_zero() is a void macro.
3441      [Geoff Thorpe]
3442
3443   *) BN_CTX_get() should return zero-valued bignums, providing the same
3444      initialised value as BN_new().
3445      [Geoff Thorpe, suggested by Ulf Möller]
3446
3447   *) Support for inhibitAnyPolicy certificate extension.
3448      [Steve Henson]
3449
3450   *) An audit of the BIGNUM code is underway, for which debugging code is
3451      enabled when BN_DEBUG is defined. This makes stricter enforcements on what
3452      is considered valid when processing BIGNUMs, and causes execution to
3453      assert() when a problem is discovered. If BN_DEBUG_RAND is defined,
3454      further steps are taken to deliberately pollute unused data in BIGNUM
3455      structures to try and expose faulty code further on. For now, openssl will
3456      (in its default mode of operation) continue to tolerate the inconsistent
3457      forms that it has tolerated in the past, but authors and packagers should
3458      consider trying openssl and their own applications when compiled with
3459      these debugging symbols defined. It will help highlight potential bugs in
3460      their own code, and will improve the test coverage for OpenSSL itself. At
3461      some point, these tighter rules will become openssl's default to improve
3462      maintainability, though the assert()s and other overheads will remain only
3463      in debugging configurations. See bn.h for more details.
3464      [Geoff Thorpe, Nils Larsch, Ulf Möller]
3465
3466   *) BN_CTX_init() has been deprecated, as BN_CTX is an opaque structure
3467      that can only be obtained through BN_CTX_new() (which implicitly
3468      initialises it). The presence of this function only made it possible
3469      to overwrite an existing structure (and cause memory leaks).
3470      [Geoff Thorpe]
3471
3472   *) Because of the callback-based approach for implementing LHASH as a
3473      template type, lh_insert() adds opaque objects to hash-tables and
3474      lh_doall() or lh_doall_arg() are typically used with a destructor callback
3475      to clean up those corresponding objects before destroying the hash table
3476      (and losing the object pointers). So some over-zealous constifications in
3477      LHASH have been relaxed so that lh_insert() does not take (nor store) the
3478      objects as "const" and the lh_doall[_arg] callback wrappers are not
3479      prototyped to have "const" restrictions on the object pointers they are
3480      given (and so aren't required to cast them away any more).
3481      [Geoff Thorpe]
3482
3483   *) The tmdiff.h API was so ugly and minimal that our own timing utility
3484      (speed) prefers to use its own implementation. The two implementations
3485      haven't been consolidated as yet (volunteers?) but the tmdiff API has had
3486      its object type properly exposed (MS_TM) instead of casting to/from "char
3487      *". This may still change yet if someone realises MS_TM and "ms_time_***"
3488      aren't necessarily the greatest nomenclatures - but this is what was used
3489      internally to the implementation so I've used that for now.
3490      [Geoff Thorpe]
3491
3492   *) Ensure that deprecated functions do not get compiled when
3493      OPENSSL_NO_DEPRECATED is defined. Some "openssl" subcommands and a few of
3494      the self-tests were still using deprecated key-generation functions so
3495      these have been updated also.
3496      [Geoff Thorpe]
3497
3498   *) Reorganise PKCS#7 code to separate the digest location functionality
3499      into PKCS7_find_digest(), digest addtion into PKCS7_bio_add_digest().
3500      New function PKCS7_set_digest() to set the digest type for PKCS#7
3501      digestedData type. Add additional code to correctly generate the
3502      digestedData type and add support for this type in PKCS7 initialization
3503      functions.
3504      [Steve Henson]
3505
3506   *) New function PKCS7_set0_type_other() this initializes a PKCS7 
3507      structure of type "other".
3508      [Steve Henson]
3509
3510   *) Fix prime generation loop in crypto/bn/bn_prime.pl by making
3511      sure the loop does correctly stop and breaking ("division by zero")
3512      modulus operations are not performed. The (pre-generated) prime
3513      table crypto/bn/bn_prime.h was already correct, but it could not be
3514      re-generated on some platforms because of the "division by zero"
3515      situation in the script.
3516      [Ralf S. Engelschall]
3517
3518   *) Update support for ECC-based TLS ciphersuites according to
3519      draft-ietf-tls-ecc-03.txt: the KDF1 key derivation function with
3520      SHA-1 now is only used for "small" curves (where the
3521      representation of a field element takes up to 24 bytes); for
3522      larger curves, the field element resulting from ECDH is directly
3523      used as premaster secret.
3524      [Douglas Stebila (Sun Microsystems Laboratories)]
3525
3526   *) Add code for kP+lQ timings to crypto/ec/ectest.c, and add SEC2
3527      curve secp160r1 to the tests.
3528      [Douglas Stebila (Sun Microsystems Laboratories)]
3529
3530   *) Add the possibility to load symbols globally with DSO.
3531      [Götz Babin-Ebell <babin-ebell@trustcenter.de> via Richard Levitte]
3532
3533   *) Add the functions ERR_set_mark() and ERR_pop_to_mark() for better
3534      control of the error stack.
3535      [Richard Levitte]
3536
3537   *) Add support for STORE in ENGINE.
3538      [Richard Levitte]
3539
3540   *) Add the STORE type.  The intention is to provide a common interface
3541      to certificate and key stores, be they simple file-based stores, or
3542      HSM-type store, or LDAP stores, or...
3543      NOTE: The code is currently UNTESTED and isn't really used anywhere.
3544      [Richard Levitte]
3545
3546   *) Add a generic structure called OPENSSL_ITEM.  This can be used to
3547      pass a list of arguments to any function as well as provide a way
3548      for a function to pass data back to the caller.
3549      [Richard Levitte]
3550
3551   *) Add the functions BUF_strndup() and BUF_memdup().  BUF_strndup()
3552      works like BUF_strdup() but can be used to duplicate a portion of
3553      a string.  The copy gets NUL-terminated.  BUF_memdup() duplicates
3554      a memory area.
3555      [Richard Levitte]
3556
3557   *) Add the function sk_find_ex() which works like sk_find(), but will
3558      return an index to an element even if an exact match couldn't be
3559      found.  The index is guaranteed to point at the element where the
3560      searched-for key would be inserted to preserve sorting order.
3561      [Richard Levitte]
3562
3563   *) Add the function OBJ_bsearch_ex() which works like OBJ_bsearch() but
3564      takes an extra flags argument for optional functionality.  Currently,
3565      the following flags are defined:
3566
3567         OBJ_BSEARCH_VALUE_ON_NOMATCH
3568         This one gets OBJ_bsearch_ex() to return a pointer to the first
3569         element where the comparing function returns a negative or zero
3570         number.
3571
3572         OBJ_BSEARCH_FIRST_VALUE_ON_MATCH
3573         This one gets OBJ_bsearch_ex() to return a pointer to the first
3574         element where the comparing function returns zero.  This is useful
3575         if there are more than one element where the comparing function
3576         returns zero.
3577      [Richard Levitte]
3578
3579   *) Make it possible to create self-signed certificates with 'openssl ca'
3580      in such a way that the self-signed certificate becomes part of the
3581      CA database and uses the same mechanisms for serial number generation
3582      as all other certificate signing.  The new flag '-selfsign' enables
3583      this functionality.  Adapt CA.sh and CA.pl.in.
3584      [Richard Levitte]
3585
3586   *) Add functionality to check the public key of a certificate request
3587      against a given private.  This is useful to check that a certificate
3588      request can be signed by that key (self-signing).
3589      [Richard Levitte]
3590
3591   *) Make it possible to have multiple active certificates with the same
3592      subject in the CA index file.  This is done only if the keyword
3593      'unique_subject' is set to 'no' in the main CA section (default
3594      if 'CA_default') of the configuration file.  The value is saved
3595      with the database itself in a separate index attribute file,
3596      named like the index file with '.attr' appended to the name.
3597      [Richard Levitte]
3598
3599   *) Generate muti valued AVAs using '+' notation in config files for
3600      req and dirName.
3601      [Steve Henson]
3602
3603   *) Support for nameConstraints certificate extension.
3604      [Steve Henson]
3605
3606   *) Support for policyConstraints certificate extension.
3607      [Steve Henson]
3608
3609   *) Support for policyMappings certificate extension.
3610      [Steve Henson]
3611
3612   *) Make sure the default DSA_METHOD implementation only uses its
3613      dsa_mod_exp() and/or bn_mod_exp() handlers if they are non-NULL,
3614      and change its own handlers to be NULL so as to remove unnecessary
3615      indirection. This lets alternative implementations fallback to the
3616      default implementation more easily.
3617      [Geoff Thorpe]
3618
3619   *) Support for directoryName in GeneralName related extensions
3620      in config files.
3621      [Steve Henson]
3622
3623   *) Make it possible to link applications using Makefile.shared.
3624      Make that possible even when linking against static libraries!
3625      [Richard Levitte]
3626
3627   *) Support for single pass processing for S/MIME signing. This now
3628      means that S/MIME signing can be done from a pipe, in addition
3629      cleartext signing (multipart/signed type) is effectively streaming
3630      and the signed data does not need to be all held in memory.
3631
3632      This is done with a new flag PKCS7_STREAM. When this flag is set
3633      PKCS7_sign() only initializes the PKCS7 structure and the actual signing
3634      is done after the data is output (and digests calculated) in
3635      SMIME_write_PKCS7().
3636      [Steve Henson]
3637
3638   *) Add full support for -rpath/-R, both in shared libraries and
3639      applications, at least on the platforms where it's known how
3640      to do it.
3641      [Richard Levitte]
3642
3643   *) In crypto/ec/ec_mult.c, implement fast point multiplication with
3644      precomputation, based on wNAF splitting: EC_GROUP_precompute_mult()
3645      will now compute a table of multiples of the generator that
3646      makes subsequent invocations of EC_POINTs_mul() or EC_POINT_mul()
3647      faster (notably in the case of a single point multiplication,
3648      scalar * generator).
3649      [Nils Larsch, Bodo Moeller]
3650
3651   *) IPv6 support for certificate extensions. The various extensions
3652      which use the IP:a.b.c.d can now take IPv6 addresses using the
3653      formats of RFC1884 2.2 . IPv6 addresses are now also displayed
3654      correctly.
3655      [Steve Henson]
3656
3657   *) Added an ENGINE that implements RSA by performing private key
3658      exponentiations with the GMP library. The conversions to and from
3659      GMP's mpz_t format aren't optimised nor are any montgomery forms
3660      cached, and on x86 it appears OpenSSL's own performance has caught up.
3661      However there are likely to be other architectures where GMP could
3662      provide a boost. This ENGINE is not built in by default, but it can be
3663      specified at Configure time and should be accompanied by the necessary
3664      linker additions, eg;
3665          ./config -DOPENSSL_USE_GMP -lgmp
3666      [Geoff Thorpe]
3667
3668   *) "openssl engine" will not display ENGINE/DSO load failure errors when
3669      testing availability of engines with "-t" - the old behaviour is
3670      produced by increasing the feature's verbosity with "-tt".
3671      [Geoff Thorpe]
3672
3673   *) ECDSA routines: under certain error conditions uninitialized BN objects
3674      could be freed. Solution: make sure initialization is performed early
3675      enough. (Reported and fix supplied by Nils Larsch <nla@trustcenter.de>
3676      via PR#459)
3677      [Lutz Jaenicke]
3678
3679   *) Key-generation can now be implemented in RSA_METHOD, DSA_METHOD
3680      and DH_METHOD (eg. by ENGINE implementations) to override the normal
3681      software implementations. For DSA and DH, parameter generation can
3682      also be overriden by providing the appropriate method callbacks.
3683      [Geoff Thorpe]
3684
3685   *) Change the "progress" mechanism used in key-generation and
3686      primality testing to functions that take a new BN_GENCB pointer in
3687      place of callback/argument pairs. The new API functions have "_ex"
3688      postfixes and the older functions are reimplemented as wrappers for
3689      the new ones. The OPENSSL_NO_DEPRECATED symbol can be used to hide
3690      declarations of the old functions to help (graceful) attempts to
3691      migrate to the new functions. Also, the new key-generation API
3692      functions operate on a caller-supplied key-structure and return
3693      success/failure rather than returning a key or NULL - this is to
3694      help make "keygen" another member function of RSA_METHOD etc.
3695
3696      Example for using the new callback interface:
3697
3698           int (*my_callback)(int a, int b, BN_GENCB *cb) = ...;
3699           void *my_arg = ...;
3700           BN_GENCB my_cb;
3701
3702           BN_GENCB_set(&my_cb, my_callback, my_arg);
3703
3704           return BN_is_prime_ex(some_bignum, BN_prime_checks, NULL, &cb);
3705           /* For the meaning of a, b in calls to my_callback(), see the
3706            * documentation of the function that calls the callback.
3707            * cb will point to my_cb; my_arg can be retrieved as cb->arg.
3708            * my_callback should return 1 if it wants BN_is_prime_ex()
3709            * to continue, or 0 to stop.
3710            */
3711
3712      [Geoff Thorpe]
3713
3714   *) Change the ZLIB compression method to be stateful, and make it
3715      available to TLS with the number defined in 
3716      draft-ietf-tls-compression-04.txt.
3717      [Richard Levitte]
3718
3719   *) Add the ASN.1 structures and functions for CertificatePair, which
3720      is defined as follows (according to X.509_4thEditionDraftV6.pdf):
3721
3722      CertificatePair ::= SEQUENCE {
3723         forward         [0]     Certificate OPTIONAL,
3724         reverse         [1]     Certificate OPTIONAL,