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