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