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