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