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