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