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