]> git.ipfire.org Git - thirdparty/openssl.git/blame - CHANGES
Ooops @ should be for the if command not set.
[thirdparty/openssl.git] / CHANGES
CommitLineData
81a6c781 1
f1c236f8 2 OpenSSL CHANGES
651d0aff
RE
3 _______________
4
d34353cc
DSH
5 Changes between 0.9.8j and 0.9.8k [xx XXX xxxx]
6
59689735
BM
7 *) New -hex option for openssl rand.
8 [Matthieu Herrb]
9
73cb3729
DSH
10 *) Print out UTF8String and NumericString when parsing ASN1.
11 [Steve Henson]
12
1f35508a
DSH
13 *) Support NumericString type for name components.
14 [Steve Henson]
15
dc0cb7e7
BL
16 *) Allow CC in the environment to override the automatically chosen
17 compiler. Note that nothing is done to ensure flags work with the
18 chosen compiler.
19 [Ben Laurie]
d34353cc 20
6287fa53
DSH
21 Changes between 0.9.8i and 0.9.8j [07 Jan 2009]
22
a00c3c40
DSH
23 *) Properly check EVP_VerifyFinal() and similar return values
24 (CVE-2008-5077).
25 [Ben Laurie, Bodo Moeller, Google Security Team]
26
c1534223
BL
27 *) Enable TLS extensions by default.
28 [Ben Laurie]
29
bfc6482a
GT
30 *) Allow the CHIL engine to be loaded, whether the application is
31 multithreaded or not. (This does not release the developer from the
32 obligation to set up the dynamic locking callbacks.)
33 [Sander Temme <sander@temme.net>]
34
582ef3db
DSH
35 *) Use correct exit code if there is an error in dgst command.
36 [Steve Henson; problem pointed out by Roland Dirlewanger]
37
505ed2b0
BM
38 *) Tweak Configure so that you need to say "experimental-jpake" to enable
39 JPAKE, and need to use -DOPENSSL_EXPERIMENTAL_JPAKE in applications.
40 [Bodo Moeller]
41
42 *) Add experimental JPAKE support, including demo authentication in
43 s_client and s_server.
2124e869
BL
44 [Ben Laurie]
45
cdffc716
BL
46 *) Set the comparison function in v3_addr_canonize().
47 [Rob Austein <sra@hactrn.net>]
48
5dffc13f
BL
49 *) Add support for XMPP STARTTLS in s_client.
50 [Philip Paeps <philip@freebsd.org>]
51
d875413a
BM
52 *) Change the server-side SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG behavior
53 to ensure that even with this option, only ciphersuites in the
54 server's preference list will be accepted. (Note that the option
55 applies only when resuming a session, so the earlier behavior was
56 just about the algorithm choice for symmetric cryptography.)
57 [Bodo Moeller]
6d3b70c8 58
b7e7aa00 59 Changes between 0.9.8h and 0.9.8i [15 Sep 2008]
3f79793b 60
200d00c8
BM
61 *) Fix a state transitition in s3_srvr.c and d1_srvr.c
62 (was using SSL3_ST_CW_CLNT_HELLO_B, should be ..._ST_SW_SRVR_...).
63 [Nagendra Modadugu]
64
669b912d
BM
65 *) The fix in 0.9.8c that supposedly got rid of unsafe
66 double-checked locking was incomplete for RSA blinding,
67 addressing just one layer of what turns out to have been
68 doubly unsafe triple-checked locking.
69
70 So now fix this for real by retiring the MONT_HELPER macro
71 in crypto/rsa/rsa_eay.c.
72
73 [Bodo Moeller; problem pointed out by Marius Schilder]
74
36a4a67b
BM
75 *) Various precautionary measures:
76
77 - Avoid size_t integer overflow in HASH_UPDATE (md32_common.h).
78
79 - Avoid a buffer overflow in d2i_SSL_SESSION() (ssl_asn1.c).
80 (NB: This would require knowledge of the secret session ticket key
81 to exploit, in which case you'd be SOL either way.)
82
83 - Change bn_nist.c so that it will properly handle input BIGNUMs
84 outside the expected range.
85
86 - Enforce the 'num' check in BN_div() (bn_div.c) for non-BN_DEBUG
87 builds.
88
89 [Neel Mehta, Bodo Moeller]
90
4ea574fd
BM
91 *) Allow engines to be "soft loaded" - i.e. optionally don't die if
92 the load fails. Useful for distros.
93 [Ben Laurie and the FreeBSD team]
94
dd6e9046
DSH
95 *) Add support for Local Machine Keyset attribute in PKCS#12 files.
96 [Steve Henson]
97
4afcee8b
BM
98 *) Fix BN_GF2m_mod_arr() top-bit cleanup code.
99 [Huang Ying]
100
1a12ce8e 101 *) Expand ENGINE to support engine supplied SSL client certificate functions.
1f320621
DSH
102
103 This work was sponsored by Logica.
1a12ce8e
DSH
104 [Steve Henson]
105
4afcee8b
BM
106 *) Add CryptoAPI ENGINE to support use of RSA and DSA keys held in Windows
107 keystores. Support for SSL/TLS client authentication too.
1a12ce8e 108 Not compiled unless enable-capieng specified to Configure.
1f320621
DSH
109
110 This work was sponsored by Logica.
1a12ce8e
DSH
111 [Steve Henson]
112
cf8115de
DSH
113 *) Fix bug in X509_ATTRIBUTE creation: dont set attribute using
114 ASN1_TYPE_set1 if MBSTRING flag set. This bug would crash certain
115 attribute creation routines such as certifcate requests and PKCS#12
116 files.
117 [Steve Henson]
118
0d01d8a7 119 Changes between 0.9.8g and 0.9.8h [28 May 2008]
2339c5d7 120
2c0fa03d
MC
121 *) Fix flaw if 'Server Key exchange message' is omitted from a TLS
122 handshake which could lead to a cilent crash as found using the
123 Codenomicon TLS test suite (CVE-2008-1672)
124 [Steve Henson, Mark Cox]
125
d3b3a6d3
MC
126 *) Fix double free in TLS server name extensions which could lead to
127 a remote crash found by Codenomicon TLS test suite (CVE-2008-0891)
128 [Joe Orton]
129
5f232886
LJ
130 *) Clear error queue in SSL_CTX_use_certificate_chain_file()
131
132 Clear the error queue to ensure that error entries left from
133 older function calls do not interfere with the correct operation.
134 [Lutz Jaenicke, Erik de Castro Lopo]
135
45c58c7d
LJ
136 *) Remove root CA certificates of commercial CAs:
137
138 The OpenSSL project does not recommend any specific CA and does not
139 have any policy with respect to including or excluding any CA.
140 Therefore it does not make any sense to ship an arbitrary selection
141 of root CA certificates with the OpenSSL software.
142 [Lutz Jaenicke]
143
10d3886c
DSH
144 *) RSA OAEP patches to fix two separate invalid memory reads.
145 The first one involves inputs when 'lzero' is greater than
146 'SHA_DIGEST_LENGTH' (it would read about SHA_DIGEST_LENGTH bytes
147 before the beginning of from). The second one involves inputs where
148 the 'db' section contains nothing but zeroes (there is a one-byte
149 invalid read after the end of 'db').
112591be 150 [Ivan Nestlerode <inestlerode@us.ibm.com>]
10d3886c 151
812d8a17
BM
152 *) Partial backport from 0.9.9-dev:
153
c3031a46
BM
154 Introduce bn_mul_mont (dedicated Montgomery multiplication
155 procedure) as a candidate for BIGNUM assembler implementation.
156 While 0.9.9-dev uses assembler for various architectures, only
157 x86_64 is available by default here in the 0.9.8 branch, and
158 32-bit x86 is available through a compile-time setting.
159
160 To try the 32-bit x86 assembler implementation, use Configure
161 option "enable-montasm" (which exists only for this backport).
162
163 As "enable-montasm" for 32-bit x86 disclaims code stability
164 anyway, in this constellation we activate additional code
165 backported from 0.9.9-dev for further performance improvements,
166 namely BN_from_montgomery_word. (To enable this otherwise,
167 e.g. x86_64, try "-DMONT_FROM_WORD___NON_DEFAULT_0_9_8_BUILD".)
168
169 [Andy Polyakov (backport partially by Bodo Moeller)]
812d8a17 170
db533c96
DSH
171 *) Add TLS session ticket callback. This allows an application to set
172 TLS ticket cipher and HMAC keys rather than relying on hardcoded fixed
173 values. This is useful for key rollover for example where several key
174 sets may exist with different names.
175 [Steve Henson]
176
98bd148b
GT
177 *) Reverse ENGINE-internal logic for caching default ENGINE handles.
178 This was broken until now in 0.9.8 releases, such that the only way
179 a registered ENGINE could be used (assuming it initialises
180 successfully on the host) was to explicitly set it as the default
181 for the relevant algorithms. This is in contradiction with 0.9.7
182 behaviour and the documentation. With this fix, when an ENGINE is
183 registered into a given algorithm's table of implementations, the
184 'uptodate' flag is reset so that auto-discovery will be used next
185 time a new context for that algorithm attempts to select an
186 implementation.
187 [Ian Lister (tweaked by Geoff Thorpe)]
188
94b2c29f
DSH
189 *) Backport of CMS code to OpenSSL 0.9.8. This differs from the 0.9.9
190 implemention in the following ways:
191
192 Lack of EVP_PKEY_ASN1_METHOD means algorithm parameters have to be
193 hard coded.
194
195 Lack of BER streaming support means one pass streaming processing is
196 only supported if data is detached: setting the streaming flag is
197 ignored for embedded content.
198
199 CMS support is disabled by default and must be explicitly enabled
200 with the enable-cms configuration option.
201 [Steve Henson]
202
292248b8
GT
203 *) Update the GMP engine glue to do direct copies between BIGNUM and
204 mpz_t when openssl and GMP use the same limb size. Otherwise the
205 existing "conversion via a text string export" trick is still used.
206 [Paul Sheer <paulsheer@gmail.com>]
207
7ec2d392 208 *) Zlib compression BIO. This is a filter BIO which compressed and
6b8be6da 209 uncompresses any data passed through it.
7ec2d392
DSH
210 [Steve Henson]
211
e88f66bb
DSH
212 *) Add AES_wrap_key() and AES_unwrap_key() functions to implement
213 RFC3394 compatible AES key wrapping.
214 [Steve Henson]
215
9e7459fc
DSH
216 *) Add utility functions to handle ASN1 structures. ASN1_STRING_set0():
217 sets string data without copying. X509_ALGOR_set0() and
218 X509_ALGOR_get0(): set and retrieve X509_ALGOR (AlgorithmIdentifier)
219 data. Attribute function X509at_get0_data_by_OBJ(): retrieves data
220 from an X509_ATTRIBUTE structure optionally checking it occurs only
221 once. ASN1_TYPE_set1(): set and ASN1_TYPE structure copying supplied
222 data.
223 [Steve Henson]
224
19398a17
BM
225 *) Fix BN flag handling in RSA_eay_mod_exp() and BN_MONT_CTX_set()
226 to get the expected BN_FLG_CONSTTIME behavior.
227 [Bodo Moeller (Google)]
228
3b0e61a8
DSH
229 *) Netware support:
230
231 - fixed wrong usage of ioctlsocket() when build for LIBC BSD sockets
232 - fixed do_tests.pl to run the test suite with CLIB builds too (CLIB_OPT)
233 - added some more tests to do_tests.pl
234 - fixed RunningProcess usage so that it works with newer LIBC NDKs too
235 - removed usage of BN_LLONG for CLIB builds to avoid runtime dependency
236 - added new Configure targets netware-clib-bsdsock, netware-clib-gcc,
237 netware-clib-bsdsock-gcc, netware-libc-bsdsock-gcc
238 - various changes to netware.pl to enable gcc-cross builds on Win32
239 platform
240 - changed crypto/bio/b_sock.c to work with macro functions (CLIB BSD)
241 - various changes to fix missing prototype warnings
242 - fixed x86nasm.pl to create correct asm files for NASM COFF output
243 - added AES, WHIRLPOOL and CPUID assembler code to build files
244 - added missing AES assembler make rules to mk1mf.pl
245 - fixed order of includes in apps/ocsp.c so that e_os.h settings apply
246 [Guenter Knauf <eflash@gmx.net>]
247
a5232767
DSH
248 *) Implement certificate status request TLS extension defined in RFC3546.
249 A client can set the appropriate parameters and receive the encoded
250 OCSP response via a callback. A server can query the supplied parameters
251 and set the encoded OCSP response in the callback. Add simplified examples
252 to s_client and s_server.
253 [Steve Henson]
2339c5d7 254
32f1f622
LJ
255 Changes between 0.9.8f and 0.9.8g [19 Oct 2007]
256
257 *) Fix various bugs:
258 + Binary incompatibility of ssl_ctx_st structure
259 + DTLS interoperation with non-compliant servers
260 + Don't call get_session_cb() without proposed session
261 + Fix ia64 assembler code
262 [Andy Polyakov, Steve Henson]
263
dd002667 264 Changes between 0.9.8e and 0.9.8f [11 Oct 2007]
927a28ba 265
bb99ce5f
BL
266 *) DTLS Handshake overhaul. There were longstanding issues with
267 OpenSSL DTLS implementation, which were making it impossible for
268 RFC 4347 compliant client to communicate with OpenSSL server.
269 Unfortunately just fixing these incompatibilities would "cut off"
270 pre-0.9.8f clients. To allow for hassle free upgrade post-0.9.8e
271 server keeps tolerating non RFC compliant syntax. The opposite is
272 not true, 0.9.8f client can not communicate with earlier server.
273 This update even addresses CVE-2007-4995.
274 [Andy Polyakov]
275
927a28ba 276 *) Changes to avoid need for function casts in OpenSSL: some compilers
294f03a8
DSH
277 (gcc 4.2 and later) reject their use.
278 [Kurt Roeckx <kurt@roeckx.be>, Peter Hartley <pdh@utter.chaos.org.uk>,
279 Steve Henson]
865a90eb
DSH
280
281 *) Add RFC4507 support to OpenSSL. This includes the corrections in
282 RFC4507bis. The encrypted ticket format is an encrypted encoded
283 SSL_SESSION structure, that way new session features are automatically
284 supported.
285
5b96d1cc
DSH
286 If a client application caches session in an SSL_SESSION structure
287 support is transparent because tickets are now stored in the encoded
288 SSL_SESSION.
289
290 The SSL_CTX structure automatically generates keys for ticket
291 protection in servers so again support should be possible
865a90eb
DSH
292 with no application modification.
293
294 If a client or server wishes to disable RFC4507 support then the option
295 SSL_OP_NO_TICKET can be set.
296
297 Add a TLS extension debugging callback to allow the contents of any client
298 or server extensions to be examined.
967ead72
DSH
299
300 This work was sponsored by Google.
865a90eb
DSH
301 [Steve Henson]
302
303 *) Add initial support for TLS extensions, specifically for the server_name
304 extension so far. The SSL_SESSION, SSL_CTX, and SSL data structures now
305 have new members for a host name. The SSL data structure has an
306 additional member SSL_CTX *initial_ctx so that new sessions can be
307 stored in that context to allow for session resumption, even after the
308 SSL has been switched to a new SSL_CTX in reaction to a client's
309 server_name extension.
310
311 New functions (subject to change):
312
313 SSL_get_servername()
314 SSL_get_servername_type()
315 SSL_set_SSL_CTX()
316
317 New CTRL codes and macros (subject to change):
318
319 SSL_CTRL_SET_TLSEXT_SERVERNAME_CB
320 - SSL_CTX_set_tlsext_servername_callback()
321 SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG
322 - SSL_CTX_set_tlsext_servername_arg()
323 SSL_CTRL_SET_TLSEXT_HOSTNAME - SSL_set_tlsext_host_name()
324
325 openssl s_client has a new '-servername ...' option.
326
327 openssl s_server has new options '-servername_host ...', '-cert2 ...',
328 '-key2 ...', '-servername_fatal' (subject to change). This allows
329 testing the HostName extension for a specific single host name ('-cert'
330 and '-key' remain fallbacks for handshakes without HostName
331 negotiation). If the unrecogninzed_name alert has to be sent, this by
332 default is a warning; it becomes fatal with the '-servername_fatal'
333 option.
334
335 [Peter Sylvester, Remy Allais, Christophe Renou, Steve Henson]
5dd24ead 336
f805d307
DSH
337 *) Add AES and SSE2 assembly language support to VC++ build.
338 [Steve Henson]
339
4c5979a1
AP
340 *) Mitigate attack on final subtraction in Montgomery reduction.
341 [Andy Polyakov]
342
b22250bb
BM
343 *) Fix crypto/ec/ec_mult.c to work properly with scalars of value 0
344 (which previously caused an internal error).
345 [Bodo Moeller]
346
8957121c
BL
347 *) Squeeze another 10% out of IGE mode when in != out.
348 [Ben Laurie]
349
50241bc8
BL
350 *) AES IGE mode speedup.
351 [Dean Gaudet (Google)]
352
c3cc4662
BM
353 *) Add the Korean symmetric 128-bit cipher SEED (see
354 http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp) and
355 add SEED ciphersuites from RFC 4162:
356
357 TLS_RSA_WITH_SEED_CBC_SHA = "SEED-SHA"
358 TLS_DHE_DSS_WITH_SEED_CBC_SHA = "DHE-DSS-SEED-SHA"
359 TLS_DHE_RSA_WITH_SEED_CBC_SHA = "DHE-RSA-SEED-SHA"
360 TLS_DH_anon_WITH_SEED_CBC_SHA = "ADH-SEED-SHA"
361
362 To minimize changes between patchlevels in the OpenSSL 0.9.8
363 series, SEED remains excluded from compilation unless OpenSSL
364 is configured with 'enable-seed'.
365 [KISA, Bodo Moeller]
366
7cdb8158
BM
367 *) Mitigate branch prediction attacks, which can be practical if a
368 single processor is shared, allowing a spy process to extract
369 information. For detailed background information, see
370 http://eprint.iacr.org/2007/039 (O. Aciicmez, S. Gueron,
371 J.-P. Seifert, "New Branch Prediction Vulnerabilities in OpenSSL
372 and Necessary Software Countermeasures"). The core of the change
373 are new versions BN_div_no_branch() and
374 BN_mod_inverse_no_branch() of BN_div() and BN_mod_inverse(),
375 respectively, which are slower, but avoid the security-relevant
376 conditional branches. These are automatically called by BN_div()
2ac061e4
BM
377 and BN_mod_inverse() if the flag BN_FLG_CONSTTIME is set for one
378 of the input BIGNUMs. Also, BN_is_bit_set() has been changed to
379 remove a conditional branch.
7cdb8158
BM
380
381 BN_FLG_CONSTTIME is the new name for the previous
382 BN_FLG_EXP_CONSTTIME flag, since it now affects more than just
383 modular exponentiation. (Since OpenSSL 0.9.7h, setting this flag
384 in the exponent causes BN_mod_exp_mont() to use the alternative
385 implementation in BN_mod_exp_mont_consttime().) The old name
386 remains as a deprecated alias.
387
388 Similary, RSA_FLAG_NO_EXP_CONSTTIME is replaced by a more general
389 RSA_FLAG_NO_CONSTTIME flag since the RSA implementation now uses
390 constant-time implementations for more than just exponentiation.
391 Here too the old name is kept as a deprecated alias.
392
393 BN_BLINDING_new() will now use BN_dup() for the modulus so that
394 the BN_BLINDING structure gets an independent copy of the
395 modulus. This means that the previous "BIGNUM *m" argument to
396 BN_BLINDING_new() and to BN_BLINDING_create_param() now
397 essentially becomes "const BIGNUM *m", although we can't actually
398 change this in the header file before 0.9.9. It allows
399 RSA_setup_blinding() to use BN_with_flags() on the modulus to
400 enable BN_FLG_CONSTTIME.
401
402 [Matthew D Wood (Intel Corp)]
403
6fd3f326
BM
404 *) In the SSL/TLS server implementation, be strict about session ID
405 context matching (which matters if an application uses a single
406 external cache for different purposes). Previously,
407 out-of-context reuse was forbidden only if SSL_VERIFY_PEER was
408 set. This did ensure strict client verification, but meant that,
409 with applications using a single external cache for quite
410 different requirements, clients could circumvent ciphersuite
411 restrictions for a given session ID context by starting a session
412 in a different context.
413 [Bodo Moeller]
414
55f05012
BM
415 *) Include "!eNULL" in SSL_DEFAULT_CIPHER_LIST to make sure that
416 a ciphersuite string such as "DEFAULT:RSA" cannot enable
417 authentication-only ciphersuites.
418 [Bodo Moeller]
419
216ac24b
MC
420 *) Update the SSL_get_shared_ciphers() fix CVE-2006-3738 which was
421 not complete and could lead to a possible single byte overflow
422 (CVE-2007-5135) [Ben Laurie]
423
d9e26244
BM
424 Changes between 0.9.8d and 0.9.8e [23 Feb 2007]
425
5f4cc234
BM
426 *) Since AES128 and AES256 (and similarly Camellia128 and
427 Camellia256) share a single mask bit in the logic of
428 ssl/ssl_ciph.c, the code for masking out disabled ciphers needs a
429 kludge to work properly if AES128 is available and AES256 isn't
430 (or if Camellia128 is available and Camellia256 isn't).
431 [Victor Duchovni]
432
1a8521ff
BM
433 *) Fix the BIT STRING encoding generated by crypto/ec/ec_asn1.c
434 (within i2d_ECPrivateKey, i2d_ECPKParameters, i2d_ECParameters):
435 When a point or a seed is encoded in a BIT STRING, we need to
436 prevent the removal of trailing zero bits to get the proper DER
437 encoding. (By default, crypto/asn1/a_bitstr.c assumes the case
438 of a NamedBitList, for which trailing 0 bits need to be removed.)
439 [Bodo Moeller]
440
5c6f76da
BM
441 *) Have SSL/TLS server implementation tolerate "mismatched" record
442 protocol version while receiving ClientHello even if the
443 ClientHello is fragmented. (The server can't insist on the
444 particular protocol version it has chosen before the ServerHello
445 message has informed the client about his choice.)
446 [Bodo Moeller]
447
4636341b
BL
448 *) Add RFC 3779 support.
449 [Rob Austein for ARIN, Ben Laurie]
25e52a78 450
900f7a87
DSH
451 *) Load error codes if they are not already present instead of using a
452 static variable. This allows them to be cleanly unloaded and reloaded.
453 Improve header file function name parsing.
454 [Steve Henson]
455
cdb13ae8
LJ
456 *) extend SMTP and IMAP protocol emulation in s_client to use EHLO
457 or CAPABILITY handshake as required by RFCs.
458 [Goetz Babin-Ebell]
459
47c4bb2d 460 Changes between 0.9.8c and 0.9.8d [28 Sep 2006]
da1841a0 461
951dfbb1
MC
462 *) Introduce limits to prevent malicious keys being able to
463 cause a denial of service. (CVE-2006-2940)
464 [Steve Henson, Bodo Moeller]
465
466 *) Fix ASN.1 parsing of certain invalid structures that can result
467 in a denial of service. (CVE-2006-2937) [Steve Henson]
468
469 *) Fix buffer overflow in SSL_get_shared_ciphers() function.
470 (CVE-2006-3738) [Tavis Ormandy and Will Drewry, Google Security Team]
471
472 *) Fix SSL client code which could crash if connecting to a
473 malicious SSLv2 server. (CVE-2006-4343)
474 [Tavis Ormandy and Will Drewry, Google Security Team]
475
879b30aa
BM
476 *) Since 0.9.8b, ciphersuite strings naming explicit ciphersuites
477 match only those. Before that, "AES256-SHA" would be interpreted
8fdb296c
BM
478 as a pattern and match "AES128-SHA" too (since AES128-SHA got
479 the same strength classification in 0.9.7h) as we currently only
879b30aa
BM
480 have a single AES bit in the ciphersuite description bitmap.
481 That change, however, also applied to ciphersuite strings such as
482 "RC4-MD5" that intentionally matched multiple ciphersuites --
483 namely, SSL 2.0 ciphersuites in addition to the more common ones
484 from SSL 3.0/TLS 1.0.
485
486 So we change the selection algorithm again: Naming an explicit
487 ciphersuite selects this one ciphersuite, and any other similar
488 ciphersuite (same bitmap) from *other* protocol versions.
489 Thus, "RC4-MD5" again will properly select both the SSL 2.0
490 ciphersuite and the SSL 3.0/TLS 1.0 ciphersuite.
491
492 Since SSL 2.0 does not have any ciphersuites for which the
493 128/256 bit distinction would be relevant, this works for now.
494 The proper fix will be to use different bits for AES128 and
495 AES256, which would have avoided the problems from the beginning;
496 however, bits are scarce, so we can only do this in a new release
497 (not just a patchlevel) when we can change the SSL_CIPHER
498 definition to split the single 'unsigned long mask' bitmap into
499 multiple values to extend the available space.
500
501 [Bodo Moeller]
502
0a0a10d1 503 Changes between 0.9.8b and 0.9.8c [05 Sep 2006]
1c5dc844 504
df20b6e7
MC
505 *) Avoid PKCS #1 v1.5 signature attack discovered by Daniel Bleichenbacher
506 (CVE-2006-4339) [Ben Laurie and Google Security Team]
507
4b9dcd82
BL
508 *) Add AES IGE and biIGE modes.
509 [Ben Laurie]
510
ec67e3b7
BM
511 *) Change the Unix randomness entropy gathering to use poll() when
512 possible instead of select(), since the latter has some
513 undesirable limitations.
514 [Darryl Miles via Richard Levitte and Bodo Moeller]
515
aa17ab7e
BM
516 *) Disable "ECCdraft" ciphersuites more thoroughly. Now special
517 treatment in ssl/ssl_ciph.s makes sure that these ciphersuites
518 cannot be implicitly activated as part of, e.g., the "AES" alias.
519 However, please upgrade to OpenSSL 0.9.9[-dev] for
520 non-experimental use of the ECC ciphersuites to get TLS extension
521 support, which is required for curve and point format negotiation
522 to avoid potential handshake problems.
35908bd0
BM
523 [Bodo Moeller]
524
0e73294e
BM
525 *) Disable rogue ciphersuites:
526
527 - SSLv2 0x08 0x00 0x80 ("RC4-64-MD5")
528 - SSLv3/TLSv1 0x00 0x61 ("EXP1024-RC2-CBC-MD5")
529 - SSLv3/TLSv1 0x00 0x60 ("EXP1024-RC4-MD5")
530
531 The latter two were purportedly from
532 draft-ietf-tls-56-bit-ciphersuites-0[01].txt, but do not really
533 appear there.
534
68bb9815 535 Also deactivate the remaining ciphersuites from
0e73294e
BM
536 draft-ietf-tls-56-bit-ciphersuites-01.txt. These are just as
537 unofficial, and the ID has long expired.
538 [Bodo Moeller]
539
6d2cd23f
BM
540 *) Fix RSA blinding Heisenbug (problems sometimes occured on
541 dual-core machines) and other potential thread-safety issues.
542 [Bodo Moeller]
543
e18eef3d
BM
544 *) Add the symmetric cipher Camellia (128-bit, 192-bit, 256-bit key
545 versions), which is now available for royalty-free use
546 (see http://info.isl.ntt.co.jp/crypt/eng/info/chiteki.html).
547 Also, add Camellia TLS ciphersuites from RFC 4132.
548
549 To minimize changes between patchlevels in the OpenSSL 0.9.8
550 series, Camellia remains excluded from compilation unless OpenSSL
551 is configured with 'enable-camellia'.
552 [NTT]
553
b723a7b1
DSH
554 *) Disable the padding bug check when compression is in use. The padding
555 bug check assumes the first packet is of even length, this is not
556 necessarily true if compresssion is enabled and can result in false
557 positives causing handshake failure. The actual bug test is ancient
558 code so it is hoped that implementations will either have fixed it by
559 now or any which still have the bug do not support compression.
560 [Steve Henson]
1c5dc844 561
f871949e 562 Changes between 0.9.8a and 0.9.8b [04 May 2006]
d8b408b1 563
cbb0b734
DSH
564 *) When applying a cipher rule check to see if string match is an explicit
565 cipher suite and only match that one cipher suite if it is.
566 [Steve Henson]
567
217382d5
DSH
568 *) Link in manifests for VC++ if needed.
569 [Austin Ziegler <halostatue@gmail.com>]
570
bc932045 571 *) Update support for ECC-based TLS ciphersuites according to
5586a71a
BM
572 draft-ietf-tls-ecc-12.txt with proposed changes (but without
573 TLS extensions, which are supported starting with the 0.9.9
574 branch, not in the OpenSSL 0.9.8 branch).
bc932045
BM
575 [Douglas Stebila]
576
23d43aae
BM
577 *) New functions EVP_CIPHER_CTX_new() and EVP_CIPHER_CTX_free() to support
578 opaque EVP_CIPHER_CTX handling.
579 [Steve Henson]
580
7614f0e5
DSH
581 *) Fixes and enhancements to zlib compression code. We now only use
582 "zlib1.dll" and use the default __cdecl calling convention on Win32
583 to conform with the standards mentioned here:
584 http://www.zlib.net/DLL_FAQ.txt
585 Static zlib linking now works on Windows and the new --with-zlib-include
586 --with-zlib-lib options to Configure can be used to supply the location
587 of the headers and library. Gracefully handle case where zlib library
588 can't be loaded.
589 [Steve Henson]
590
feef17fd
DSH
591 *) Several fixes and enhancements to the OID generation code. The old code
592 sometimes allowed invalid OIDs (1.X for X >= 40 for example), couldn't
593 handle numbers larger than ULONG_MAX, truncated printing and had a
594 non standard OBJ_obj2txt() behaviour.
595 [Steve Henson]
596
abb0c2bb
DSH
597 *) Add support for building of engines under engine/ as shared libraries
598 under VC++ build system.
599 [Steve Henson]
600
d3afc92b
RL
601 *) Corrected the numerous bugs in the Win32 path splitter in DSO.
602 Hopefully, we will not see any false combination of paths any more.
603 [Richard Levitte]
604
64932f9e
MC
605 Changes between 0.9.8 and 0.9.8a [11 Oct 2005]
606
607 *) Remove the functionality of SSL_OP_MSIE_SSLV2_RSA_PADDING
608 (part of SSL_OP_ALL). This option used to disable the
609 countermeasure against man-in-the-middle protocol-version
610 rollback in the SSL 2.0 server implementation, which is a bad
802c0146 611 idea. (CVE-2005-2969)
64932f9e
MC
612
613 [Bodo Moeller; problem pointed out by Yutaka Oiwa (Research Center
614 for Information Security, National Institute of Advanced Industrial
615 Science and Technology [AIST], Japan)]
750cb3d2 616
0fce007b
DSH
617 *) Add two function to clear and return the verify parameter flags.
618 [Steve Henson]
619
3c0e39c5
NL
620 *) Keep cipherlists sorted in the source instead of sorting them at
621 runtime, thus removing the need for a lock.
622 [Nils Larsch]
623
19fddebf 624 *) Avoid some small subgroup attacks in Diffie-Hellman.
60864221
BL
625 [Nick Mathewson and Ben Laurie]
626
627 *) Add functions for well-known primes.
628 [Nick Mathewson]
9ddb11f1 629
98e98614
AP
630 *) Extended Windows CE support.
631 [Satoshi Nakamura and Andy Polyakov]
632
222f2246
DSH
633 *) Initialize SSL_METHOD structures at compile time instead of during
634 runtime, thus removing the need for a lock.
635 [Steve Henson]
636
1682e8fb
DSH
637 *) Make PKCS7_decrypt() work even if no certificate is supplied by
638 attempting to decrypt each encrypted key in turn. Add support to
639 smime utility.
640 [Steve Henson]
750cb3d2 641
f254b540 642 Changes between 0.9.7h and 0.9.8 [05 Jul 2005]
12bdb643 643
6d2cd23f
BM
644 [NB: OpenSSL 0.9.7i and later 0.9.7 patch levels were released after
645 OpenSSL 0.9.8.]
646
1d01c9d4
RL
647 *) Add libcrypto.pc and libssl.pc for those who feel they need them.
648 [Richard Levitte]
649
650 *) Change CA.sh and CA.pl so they don't bundle the CSR and the private
651 key into the same file any more.
652 [Richard Levitte]
653
e32ea818
AP
654 *) Add initial support for Win64, both IA64 and AMD64/x64 flavors.
655 [Andy Polyakov]
656
09c1a425
DSH
657 *) Add -utf8 command line and config file option to 'ca'.
658 [Stefan <stf@udoma.org]
659
1d01c9d4
RL
660 *) Removed the macro des_crypt(), as it seems to conflict with some
661 libraries. Use DES_crypt().
662 [Richard Levitte]
663
a4578a54
GT
664 *) Correct naming of the 'chil' and '4758cca' ENGINEs. This
665 involves renaming the source and generated shared-libs for
666 both. The engines will accept the corrected or legacy ids
667 ('ncipher' and '4758_cca' respectively) when binding. NB,
668 this only applies when building 'shared'.
669 [Corinna Vinschen <vinschen@redhat.com> and Geoff Thorpe]
670
b6995add
DSH
671 *) Add attribute functions to EVP_PKEY structure. Modify
672 PKCS12_create() to recognize a CSP name attribute and
673 use it. Make -CSP option work again in pkcs12 utility.
674 [Steve Henson]
675
800e400d
NL
676 *) Add new functionality to the bn blinding code:
677 - automatic re-creation of the BN_BLINDING parameters after
678 a fixed number of uses (currently 32)
679 - add new function for parameter creation
680 - introduce flags to control the update behaviour of the
681 BN_BLINDING parameters
682 - hide BN_BLINDING structure
683 Add a second BN_BLINDING slot to the RSA structure to improve
684 performance when a single RSA object is shared among several
685 threads.
686 [Nils Larsch]
687
36d16f8e
BL
688 *) Add support for DTLS.
689 [Nagendra Modadugu <nagendra@cs.stanford.edu> and Ben Laurie]
690
dc0ed30c
NL
691 *) Add support for DER encoded private keys (SSL_FILETYPE_ASN1)
692 to SSL_CTX_use_PrivateKey_file() and SSL_use_PrivateKey_file()
693 [Walter Goulet]
694
6049399b
NL
695 *) Remove buggy and incompletet DH cert support from
696 ssl/ssl_rsa.c and ssl/s3_both.c
697 [Nils Larsch]
698
12bdb643
NL
699 *) Use SHA-1 instead of MD5 as the default digest algorithm for
700 the apps/openssl applications.
701 [Nils Larsch]
4d94ae00 702
41a15c4f
BL
703 *) Compile clean with "-Wall -Wmissing-prototypes
704 -Wstrict-prototypes -Wmissing-declarations -Werror". Currently
705 DEBUG_SAFESTACK must also be set.
706 [Ben Laurie]
707
c9a112f5 708 *) Change ./Configure so that certain algorithms can be disabled by default.
ecc5ef87
BM
709 The new counterpiece to "no-xxx" is "enable-xxx".
710
711 The patented RC5 and MDC2 algorithms will now be disabled unless
712 "enable-rc5" and "enable-mdc2", respectively, are specified.
713
714 (IDEA remains enabled despite being patented. This is because IDEA
715 is frequently required for interoperability, and there is no license
716 fee for non-commercial use. As before, "no-idea" can be used to
717 avoid this algorithm.)
718
c9a112f5
BM
719 [Bodo Moeller]
720
6951c23a
RL
721 *) Add processing of proxy certificates (see RFC 3820). This work was
722 sponsored by KTH (The Royal Institute of Technology in Stockholm) and
723 EGEE (Enabling Grids for E-science in Europe).
724 [Richard Levitte]
725
ea681ba8
AP
726 *) RC4 performance overhaul on modern architectures/implementations, such
727 as Intel P4, IA-64 and AMD64.
728 [Andy Polyakov]
729
401ee37a
DSH
730 *) New utility extract-section.pl. This can be used specify an alternative
731 section number in a pod file instead of having to treat each file as
732 a separate case in Makefile. This can be done by adding two lines to the
733 pod file:
734
735 =for comment openssl_section:XXX
736
737 The blank line is mandatory.
738
739 [Steve Henson]
740
826a42a0
DSH
741 *) New arguments -certform, -keyform and -pass for s_client and s_server
742 to allow alternative format key and certificate files and passphrase
743 sources.
744 [Steve Henson]
745
5d7c222d
DSH
746 *) New structure X509_VERIFY_PARAM which combines current verify parameters,
747 update associated structures and add various utility functions.
748
749 Add new policy related verify parameters, include policy checking in
750 standard verify code. Enhance 'smime' application with extra parameters
751 to support policy checking and print out.
752 [Steve Henson]
753
30fe028f
GT
754 *) Add a new engine to support VIA PadLock ACE extensions in the VIA C3
755 Nehemiah processors. These extensions support AES encryption in hardware
756 as well as RNG (though RNG support is currently disabled).
757 [Michal Ludvig <michal@logix.cz>, with help from Andy Polyakov]
758
df11e1e9
GT
759 *) Deprecate BN_[get|set]_params() functions (they were ignored internally).
760 [Geoff Thorpe]
761
ad500340
AP
762 *) New FIPS 180-2 algorithms, SHA-224/-256/-384/-512 are implemented.
763 [Andy Polyakov and a number of other people]
764
e14f4aab
AP
765 *) Improved PowerPC platform support. Most notably BIGNUM assembler
766 implementation contributed by IBM.
767 [Suresh Chari, Peter Waltenberg, Andy Polyakov]
768
bcfea9fb
GT
769 *) The new 'RSA_generate_key_ex' function now takes a BIGNUM for the public
770 exponent rather than 'unsigned long'. There is a corresponding change to
771 the new 'rsa_keygen' element of the RSA_METHOD structure.
772 [Jelte Jansen, Geoff Thorpe]
773
d5f686d8
BM
774 *) Functionality for creating the initial serial number file is now
775 moved from CA.pl to the 'ca' utility with a new option -create_serial.
776
777 (Before OpenSSL 0.9.7e, CA.pl used to initialize the serial
778 number file to 1, which is bound to cause problems. To avoid
779 the problems while respecting compatibility between different 0.9.7
780 patchlevels, 0.9.7e employed 'openssl x509 -next_serial' in
781 CA.pl for serial number initialization. With the new release 0.9.8,
782 we can fix the problem directly in the 'ca' utility.)
64674bcc
DSH
783 [Steve Henson]
784
3a87a9b9
GT
785 *) Reduced header interdepencies by declaring more opaque objects in
786 ossl_typ.h. As a consequence, including some headers (eg. engine.h) will
787 give fewer recursive includes, which could break lazy source code - so
788 this change is covered by the OPENSSL_NO_DEPRECATED symbol. As always,
789 developers should define this symbol when building and using openssl to
790 ensure they track the recommended behaviour, interfaces, [etc], but
791 backwards-compatible behaviour prevails when this isn't defined.
792 [Geoff Thorpe]
793
bf5773fa
DSH
794 *) New function X509_POLICY_NODE_print() which prints out policy nodes.
795 [Steve Henson]
796
216659eb
DSH
797 *) Add new EVP function EVP_CIPHER_CTX_rand_key and associated functionality.
798 This will generate a random key of the appropriate length based on the
799 cipher context. The EVP_CIPHER can provide its own random key generation
800 routine to support keys of a specific form. This is used in the des and
801 3des routines to generate a key of the correct parity. Update S/MIME
802 code to use new functions and hence generate correct parity DES keys.
803 Add EVP_CHECK_DES_KEY #define to return an error if the key is not
804 valid (weak or incorrect parity).
805 [Steve Henson]
806
e1a27eb3
DSH
807 *) Add a local set of CRLs that can be used by X509_verify_cert() as well
808 as looking them up. This is useful when the verified structure may contain
809 CRLs, for example PKCS#7 signedData. Modify PKCS7_verify() to use any CRLs
810 present unless the new PKCS7_NO_CRL flag is asserted.
811 [Steve Henson]
812
6446e0c3
DSH
813 *) Extend ASN1 oid configuration module. It now additionally accepts the
814 syntax:
815
816 shortName = some long name, 1.2.3.4
817 [Steve Henson]
818
5c98b2ca
GT
819 *) Reimplemented the BN_CTX implementation. There is now no more static
820 limitation on the number of variables it can handle nor the depth of the
821 "stack" handling for BN_CTX_start()/BN_CTX_end() pairs. The stack
822 information can now expand as required, and rather than having a single
823 static array of bignums, BN_CTX now uses a linked-list of such arrays
824 allowing it to expand on demand whilst maintaining the usefulness of
825 BN_CTX's "bundling".
826 [Geoff Thorpe]
827
46ef873f
GT
828 *) Add a missing BN_CTX parameter to the 'rsa_mod_exp' callback in RSA_METHOD
829 to allow all RSA operations to function using a single BN_CTX.
830 [Geoff Thorpe]
831
4acc3e90
DSH
832 *) Preliminary support for certificate policy evaluation and checking. This
833 is initially intended to pass the tests outlined in "Conformance Testing
834 of Relying Party Client Certificate Path Processing Logic" v1.07.
835 [Steve Henson]
836
7f663ce4
GT
837 *) bn_dup_expand() has been deprecated, it was introduced in 0.9.7 and
838 remained unused and not that useful. A variety of other little bignum
839 tweaks and fixes have also been made continuing on from the audit (see
840 below).
841 [Geoff Thorpe]
842
875a644a
RL
843 *) Constify all or almost all d2i, c2i, s2i and r2i functions, along with
844 associated ASN1, EVP and SSL functions and old ASN1 macros.
7f663ce4 845 [Richard Levitte]
875a644a 846
b6358c89
GT
847 *) BN_zero() only needs to set 'top' and 'neg' to zero for correct results,
848 and this should never fail. So the return value from the use of
849 BN_set_word() (which can fail due to needless expansion) is now deprecated;
850 if OPENSSL_NO_DEPRECATED is defined, BN_zero() is a void macro.
851 [Geoff Thorpe]
852
9e051bac
GT
853 *) BN_CTX_get() should return zero-valued bignums, providing the same
854 initialised value as BN_new().
855