Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(518)

Side by Side Diff: openssl/CHANGES

Issue 9254031: Upgrade chrome's OpenSSL to same version Android ships with. (Closed) Base URL: http://src.chromium.org/svn/trunk/deps/third_party/openssl/
Patch Set: '' Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « openssl/ACKNOWLEDGMENTS ('k') | openssl/CHANGES.SSLeay » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 OpenSSL CHANGES 2 OpenSSL CHANGES
3 _______________ 3 _______________
4 4
5 Changes between 1.0.0e and 1.0.0f [4 Jan 2012]
6
7 *) Nadhem Alfardan and Kenny Paterson have discovered an extension
8 of the Vaudenay padding oracle attack on CBC mode encryption
9 which enables an efficient plaintext recovery attack against
10 the OpenSSL implementation of DTLS. Their attack exploits timing
11 differences arising during decryption processing. A research
12 paper describing this attack can be found at:
13 http://www.isg.rhul.ac.uk/~kp/dtls.pdf
14 Thanks go to Nadhem Alfardan and Kenny Paterson of the Information
15 Security Group at Royal Holloway, University of London
16 (www.isg.rhul.ac.uk) for discovering this flaw and to Robin Seggelmann
17 <seggelmann@fh-muenster.de> and Michael Tuexen <tuexen@fh-muenster.de>
18 for preparing the fix. (CVE-2011-4108)
19 [Robin Seggelmann, Michael Tuexen]
20
21 *) Clear bytes used for block padding of SSL 3.0 records.
22 (CVE-2011-4576)
23 [Adam Langley (Google)]
24
25 *) Only allow one SGC handshake restart for SSL/TLS. (CVE-2011-4619)
26 [Adam Langley (Google)]
27
28 *) Check parameters are not NULL in GOST ENGINE. (CVE-2012-0027)
29 [Andrey Kulikov <amdeich@gmail.com>]
30
31 *) Prevent malformed RFC3779 data triggering an assertion failure.
32 Thanks to Andrew Chi, BBN Technologies, for discovering the flaw
33 and Rob Austein <sra@hactrn.net> for fixing it. (CVE-2011-4577)
34 [Rob Austein <sra@hactrn.net>]
35
36 *) Improved PRNG seeding for VOS.
37 [Paul Green <Paul.Green@stratus.com>]
38
39 *) Fix ssl_ciph.c set-up race.
40 [Adam Langley (Google)]
41
42 *) Fix spurious failures in ecdsatest.c.
43 [Emilia Käsper (Google)]
44
45 *) Fix the BIO_f_buffer() implementation (which was mixing different
46 interpretations of the '..._len' fields).
47 [Adam Langley (Google)]
48
49 *) Fix handling of BN_BLINDING: now BN_BLINDING_invert_ex (rather than
50 BN_BLINDING_invert_ex) calls BN_BLINDING_update, ensuring that concurrent
51 threads won't reuse the same blinding coefficients.
52
53 This also avoids the need to obtain the CRYPTO_LOCK_RSA_BLINDING
54 lock to call BN_BLINDING_invert_ex, and avoids one use of
55 BN_BLINDING_update for each BN_BLINDING structure (previously,
56 the last update always remained unused).
57 [Emilia Käsper (Google)]
58
59 *) In ssl3_clear, preserve s3->init_extra along with s3->rbuf.
60 [Bob Buckholz (Google)]
61
62 Changes between 1.0.0d and 1.0.0e [6 Sep 2011]
63
64 *) Fix bug where CRLs with nextUpdate in the past are sometimes accepted
65 by initialising X509_STORE_CTX properly. (CVE-2011-3207)
66 [Kaspar Brand <ossl@velox.ch>]
67
68 *) Fix SSL memory handling for (EC)DH ciphersuites, in particular
69 for multi-threaded use of ECDH. (CVE-2011-3210)
70 [Adam Langley (Google)]
71
72 *) Fix x509_name_ex_d2i memory leak on bad inputs.
73 [Bodo Moeller]
74
75 *) Remove hard coded ecdsaWithSHA1 signature tests in ssl code and check
76 signature public key algorithm by using OID xref utilities instead.
77 Before this you could only use some ECC ciphersuites with SHA1 only.
78 [Steve Henson]
79
80 *) Add protection against ECDSA timing attacks as mentioned in the paper
81 by Billy Bob Brumley and Nicola Tuveri, see:
82
83 http://eprint.iacr.org/2011/232.pdf
84
85 [Billy Bob Brumley and Nicola Tuveri]
86
87 Changes between 1.0.0c and 1.0.0d [8 Feb 2011]
88
89 *) Fix parsing of OCSP stapling ClientHello extension. CVE-2011-0014
90 [Neel Mehta, Adam Langley, Bodo Moeller (Google)]
91
92 *) Fix bug in string printing code: if *any* escaping is enabled we must
93 escape the escape character (backslash) or the resulting string is
94 ambiguous.
95 [Steve Henson]
96
97 Changes between 1.0.0b and 1.0.0c [2 Dec 2010]
98
99 *) Disable code workaround for ancient and obsolete Netscape browsers
100 and servers: an attacker can use it in a ciphersuite downgrade attack.
101 Thanks to Martin Rex for discovering this bug. CVE-2010-4180
102 [Steve Henson]
103
104 *) Fixed J-PAKE implementation error, originally discovered by
105 Sebastien Martini, further info and confirmation from Stefan
106 Arentz and Feng Hao. Note that this fix is a security fix. CVE-2010-4252
107 [Ben Laurie]
108
109 Changes between 1.0.0a and 1.0.0b [16 Nov 2010]
110
111 *) Fix extension code to avoid race conditions which can result in a buffer
112 overrun vulnerability: resumed sessions must not be modified as they can
113 be shared by multiple threads. CVE-2010-3864
114 [Steve Henson]
115
116 *) Fix WIN32 build system to correctly link an ENGINE directory into
117 a DLL.
118 [Steve Henson]
119
120 Changes between 1.0.0 and 1.0.0a [01 Jun 2010]
121
122 *) Check return value of int_rsa_verify in pkey_rsa_verifyrecover
123 (CVE-2010-1633)
124 [Steve Henson, Peter-Michael Hager <hager@dortmund.net>]
125
126 Changes between 0.9.8n and 1.0.0 [29 Mar 2010]
127
128 *) Add "missing" function EVP_CIPHER_CTX_copy(). This copies a cipher
129 context. The operation can be customised via the ctrl mechanism in
130 case ENGINEs want to include additional functionality.
131 [Steve Henson]
132
133 *) Tolerate yet another broken PKCS#8 key format: private key value negative.
134 [Steve Henson]
135
136 *) Add new -subject_hash_old and -issuer_hash_old options to x509 utility to
137 output hashes compatible with older versions of OpenSSL.
138 [Willy Weisz <weisz@vcpc.univie.ac.at>]
139
140 *) Fix compression algorithm handling: if resuming a session use the
141 compression algorithm of the resumed session instead of determining
142 it from client hello again. Don't allow server to change algorithm.
143 [Steve Henson]
144
145 *) Add load_crls() function to apps tidying load_certs() too. Add option
146 to verify utility to allow additional CRLs to be included.
147 [Steve Henson]
148
149 *) Update OCSP request code to permit adding custom headers to the request:
150 some responders need this.
151 [Steve Henson]
152
153 *) The function EVP_PKEY_sign() returns <=0 on error: check return code
154 correctly.
155 [Julia Lawall <julia@diku.dk>]
156
157 *) Update verify callback code in apps/s_cb.c and apps/verify.c, it
158 needlessly dereferenced structures, used obsolete functions and
159 didn't handle all updated verify codes correctly.
160 [Steve Henson]
161
162 *) Disable MD2 in the default configuration.
163 [Steve Henson]
164
165 *) In BIO_pop() and BIO_push() use the ctrl argument (which was NULL) to
166 indicate the initial BIO being pushed or popped. This makes it possible
167 to determine whether the BIO is the one explicitly called or as a result
168 of the ctrl being passed down the chain. Fix BIO_pop() and SSL BIOs so
169 it handles reference counts correctly and doesn't zero out the I/O bio
170 when it is not being explicitly popped. WARNING: applications which
171 included workarounds for the old buggy behaviour will need to be modified
172 or they could free up already freed BIOs.
173 [Steve Henson]
174
175 *) Extend the uni2asc/asc2uni => OPENSSL_uni2asc/OPENSSL_asc2uni
176 renaming to all platforms (within the 0.9.8 branch, this was
177 done conditionally on Netware platforms to avoid a name clash).
178 [Guenter <lists@gknw.net>]
179
180 *) Add ECDHE and PSK support to DTLS.
181 [Michael Tuexen <tuexen@fh-muenster.de>]
182
183 *) Add CHECKED_STACK_OF macro to safestack.h, otherwise safestack can't
184 be used on C++.
185 [Steve Henson]
186
187 *) Add "missing" function EVP_MD_flags() (without this the only way to
188 retrieve a digest flags is by accessing the structure directly. Update
189 EVP_MD_do_all*() and EVP_CIPHER_do_all*() to include the name a digest
190 or cipher is registered as in the "from" argument. Print out all
191 registered digests in the dgst usage message instead of manually
192 attempting to work them out.
193 [Steve Henson]
194
195 *) If no SSLv2 ciphers are used don't use an SSLv2 compatible client hello:
196 this allows the use of compression and extensions. Change default cipher
197 string to remove SSLv2 ciphersuites. This effectively avoids ancient SSLv2
198 by default unless an application cipher string requests it.
199 [Steve Henson]
200
201 *) Alter match criteria in PKCS12_parse(). It used to try to use local
202 key ids to find matching certificates and keys but some PKCS#12 files
203 don't follow the (somewhat unwritten) rules and this strategy fails.
204 Now just gather all certificates together and the first private key
205 then look for the first certificate that matches the key.
206 [Steve Henson]
207
208 *) Support use of registered digest and cipher names for dgst and cipher
209 commands instead of having to add each one as a special case. So now
210 you can do:
211
212 openssl sha256 foo
213
214 as well as:
215
216 openssl dgst -sha256 foo
217
218 and this works for ENGINE based algorithms too.
219
220 [Steve Henson]
221
222 *) Update Gost ENGINE to support parameter files.
223 [Victor B. Wagner <vitus@cryptocom.ru>]
224
225 *) Support GeneralizedTime in ca utility.
226 [Oliver Martin <oliver@volatilevoid.net>, Steve Henson]
227
228 *) Enhance the hash format used for certificate directory links. The new
229 form uses the canonical encoding (meaning equivalent names will work
230 even if they aren't identical) and uses SHA1 instead of MD5. This form
231 is incompatible with the older format and as a result c_rehash should
232 be used to rebuild symbolic links.
233 [Steve Henson]
234
235 *) Make PKCS#8 the default write format for private keys, replacing the
236 traditional format. This form is standardised, more secure and doesn't
237 include an implicit MD5 dependency.
238 [Steve Henson]
239
240 *) Add a $gcc_devteam_warn option to Configure. The idea is that any code
241 committed to OpenSSL should pass this lot as a minimum.
242 [Steve Henson]
243
244 *) Add session ticket override functionality for use by EAP-FAST.
245 [Jouni Malinen <j@w1.fi>]
246
247 *) Modify HMAC functions to return a value. Since these can be implemented
248 in an ENGINE errors can occur.
249 [Steve Henson]
250
251 *) Type-checked OBJ_bsearch_ex.
252 [Ben Laurie]
253
254 *) Type-checked OBJ_bsearch. Also some constification necessitated
255 by type-checking. Still to come: TXT_DB, bsearch(?),
256 OBJ_bsearch_ex, qsort, CRYPTO_EX_DATA, ASN1_VALUE, ASN1_STRING,
257 CONF_VALUE.
258 [Ben Laurie]
259
260 *) New function OPENSSL_gmtime_adj() to add a specific number of days and
261 seconds to a tm structure directly, instead of going through OS
262 specific date routines. This avoids any issues with OS routines such
263 as the year 2038 bug. New *_adj() functions for ASN1 time structures
264 and X509_time_adj_ex() to cover the extended range. The existing
265 X509_time_adj() is still usable and will no longer have any date issues.
266 [Steve Henson]
267
268 *) Delta CRL support. New use deltas option which will attempt to locate
269 and search any appropriate delta CRLs available.
270
271 This work was sponsored by Google.
272 [Steve Henson]
273
274 *) Support for CRLs partitioned by reason code. Reorganise CRL processing
275 code and add additional score elements. Validate alternate CRL paths
276 as part of the CRL checking and indicate a new error "CRL path validation
277 error" in this case. Applications wanting additional details can use
278 the verify callback and check the new "parent" field. If this is not
279 NULL CRL path validation is taking place. Existing applications wont
280 see this because it requires extended CRL support which is off by
281 default.
282
283 This work was sponsored by Google.
284 [Steve Henson]
285
286 *) Support for freshest CRL extension.
287
288 This work was sponsored by Google.
289 [Steve Henson]
290
291 *) Initial indirect CRL support. Currently only supported in the CRLs
292 passed directly and not via lookup. Process certificate issuer
293 CRL entry extension and lookup CRL entries by bother issuer name
294 and serial number. Check and process CRL issuer entry in IDP extension.
295
296 This work was sponsored by Google.
297 [Steve Henson]
298
299 *) Add support for distinct certificate and CRL paths. The CRL issuer
300 certificate is validated separately in this case. Only enabled if
301 an extended CRL support flag is set: this flag will enable additional
302 CRL functionality in future.
303
304 This work was sponsored by Google.
305 [Steve Henson]
306
307 *) Add support for policy mappings extension.
308
309 This work was sponsored by Google.
310 [Steve Henson]
311
312 *) Fixes to pathlength constraint, self issued certificate handling,
313 policy processing to align with RFC3280 and PKITS tests.
314
315 This work was sponsored by Google.
316 [Steve Henson]
317
318 *) Support for name constraints certificate extension. DN, email, DNS
319 and URI types are currently supported.
320
321 This work was sponsored by Google.
322 [Steve Henson]
323
324 *) To cater for systems that provide a pointer-based thread ID rather
325 than numeric, deprecate the current numeric thread ID mechanism and
326 replace it with a structure and associated callback type. This
327 mechanism allows a numeric "hash" to be extracted from a thread ID in
328 either case, and on platforms where pointers are larger than 'long',
329 mixing is done to help ensure the numeric 'hash' is usable even if it
330 can't be guaranteed unique. The default mechanism is to use "&errno"
331 as a pointer-based thread ID to distinguish between threads.
332
333 Applications that want to provide their own thread IDs should now use
334 CRYPTO_THREADID_set_callback() to register a callback that will call
335 either CRYPTO_THREADID_set_numeric() or CRYPTO_THREADID_set_pointer().
336
337 Note that ERR_remove_state() is now deprecated, because it is tied
338 to the assumption that thread IDs are numeric. ERR_remove_state(0)
339 to free the current thread's error state should be replaced by
340 ERR_remove_thread_state(NULL).
341
342 (This new approach replaces the functions CRYPTO_set_idptr_callback(),
343 CRYPTO_get_idptr_callback(), and CRYPTO_thread_idptr() that existed in
344 OpenSSL 0.9.9-dev between June 2006 and August 2008. Also, if an
345 application was previously providing a numeric thread callback that
346 was inappropriate for distinguishing threads, then uniqueness might
347 have been obtained with &errno that happened immediately in the
348 intermediate development versions of OpenSSL; this is no longer the
349 case, the numeric thread callback will now override the automatic use
350 of &errno.)
351 [Geoff Thorpe, with help from Bodo Moeller]
352
353 *) Initial support for different CRL issuing certificates. This covers a
354 simple case where the self issued certificates in the chain exist and
355 the real CRL issuer is higher in the existing chain.
356
357 This work was sponsored by Google.
358 [Steve Henson]
359
360 *) Removed effectively defunct crypto/store from the build.
361 [Ben Laurie]
362
363 *) Revamp of STACK to provide stronger type-checking. Still to come:
364 TXT_DB, bsearch(?), OBJ_bsearch, qsort, CRYPTO_EX_DATA, ASN1_VALUE,
365 ASN1_STRING, CONF_VALUE.
366 [Ben Laurie]
367
368 *) Add a new SSL_MODE_RELEASE_BUFFERS mode flag to release unused buffer
369 RAM on SSL connections. This option can save about 34k per idle SSL.
370 [Nick Mathewson]
371
372 *) Revamp of LHASH to provide stronger type-checking. Still to come:
373 STACK, TXT_DB, bsearch, qsort.
374 [Ben Laurie]
375
376 *) Initial support for Cryptographic Message Syntax (aka CMS) based
377 on RFC3850, RFC3851 and RFC3852. New cms directory and cms utility,
378 support for data, signedData, compressedData, digestedData and
379 encryptedData, envelopedData types included. Scripts to check against
380 RFC4134 examples draft and interop and consistency checks of many
381 content types and variants.
382 [Steve Henson]
383
384 *) Add options to enc utility to support use of zlib compression BIO.
385 [Steve Henson]
386
387 *) Extend mk1mf to support importing of options and assembly language
388 files from Configure script, currently only included in VC-WIN32.
389 The assembly language rules can now optionally generate the source
390 files from the associated perl scripts.
391 [Steve Henson]
392
393 *) Implement remaining functionality needed to support GOST ciphersuites.
394 Interop testing has been performed using CryptoPro implementations.
395 [Victor B. Wagner <vitus@cryptocom.ru>]
396
397 *) s390x assembler pack.
398 [Andy Polyakov]
399
400 *) ARMv4 assembler pack. ARMv4 refers to v4 and later ISA, not CPU
401 "family."
402 [Andy Polyakov]
403
404 *) Implement Opaque PRF Input TLS extension as specified in
405 draft-rescorla-tls-opaque-prf-input-00.txt. Since this is not an
406 official specification yet and no extension type assignment by
407 IANA exists, this extension (for now) will have to be explicitly
408 enabled when building OpenSSL by providing the extension number
409 to use. For example, specify an option
410
411 -DTLSEXT_TYPE_opaque_prf_input=0x9527
412
413 to the "config" or "Configure" script to enable the extension,
414 assuming extension number 0x9527 (which is a completely arbitrary
415 and unofficial assignment based on the MD5 hash of the Internet
416 Draft). Note that by doing so, you potentially lose
417 interoperability with other TLS implementations since these might
418 be using the same extension number for other purposes.
419
420 SSL_set_tlsext_opaque_prf_input(ssl, src, len) is used to set the
421 opaque PRF input value to use in the handshake. This will create
422 an interal copy of the length-'len' string at 'src', and will
423 return non-zero for success.
424
425 To get more control and flexibility, provide a callback function
426 by using
427
428 SSL_CTX_set_tlsext_opaque_prf_input_callback(ctx, cb)
429 SSL_CTX_set_tlsext_opaque_prf_input_callback_arg(ctx, arg)
430
431 where
432
433 int (*cb)(SSL *, void *peerinput, size_t len, void *arg);
434 void *arg;
435
436 Callback function 'cb' will be called in handshakes, and is
437 expected to use SSL_set_tlsext_opaque_prf_input() as appropriate.
438 Argument 'arg' is for application purposes (the value as given to
439 SSL_CTX_set_tlsext_opaque_prf_input_callback_arg() will directly
440 be provided to the callback function). The callback function
441 has to return non-zero to report success: usually 1 to use opaque
442 PRF input just if possible, or 2 to enforce use of the opaque PRF
443 input. In the latter case, the library will abort the handshake
444 if opaque PRF input is not successfully negotiated.
445
446 Arguments 'peerinput' and 'len' given to the callback function
447 will always be NULL and 0 in the case of a client. A server will
448 see the client's opaque PRF input through these variables if
449 available (NULL and 0 otherwise). Note that if the server
450 provides an opaque PRF input, the length must be the same as the
451 length of the client's opaque PRF input.
452
453 Note that the callback function will only be called when creating
454 a new session (session resumption can resume whatever was
455 previously negotiated), and will not be called in SSL 2.0
456 handshakes; thus, SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2) or
457 SSL_set_options(ssl, SSL_OP_NO_SSLv2) is especially recommended
458 for applications that need to enforce opaque PRF input.
459
460 [Bodo Moeller]
461
462 *) Update ssl code to support digests other than SHA1+MD5 for handshake
463 MAC.
464
465 [Victor B. Wagner <vitus@cryptocom.ru>]
466
467 *) Add RFC4507 support to OpenSSL. This includes the corrections in
468 RFC4507bis. The encrypted ticket format is an encrypted encoded
469 SSL_SESSION structure, that way new session features are automatically
470 supported.
471
472 If a client application caches session in an SSL_SESSION structure
473 support is transparent because tickets are now stored in the encoded
474 SSL_SESSION.
475
476 The SSL_CTX structure automatically generates keys for ticket
477 protection in servers so again support should be possible
478 with no application modification.
479
480 If a client or server wishes to disable RFC4507 support then the option
481 SSL_OP_NO_TICKET can be set.
482
483 Add a TLS extension debugging callback to allow the contents of any client
484 or server extensions to be examined.
485
486 This work was sponsored by Google.
487 [Steve Henson]
488
489 *) Final changes to avoid use of pointer pointer casts in OpenSSL.
490 OpenSSL should now compile cleanly on gcc 4.2
491 [Peter Hartley <pdh@utter.chaos.org.uk>, Steve Henson]
492
493 *) Update SSL library to use new EVP_PKEY MAC API. Include generic MAC
494 support including streaming MAC support: this is required for GOST
495 ciphersuite support.
496 [Victor B. Wagner <vitus@cryptocom.ru>, Steve Henson]
497
498 *) Add option -stream to use PKCS#7 streaming in smime utility. New
499 function i2d_PKCS7_bio_stream() and PEM_write_PKCS7_bio_stream()
500 to output in BER and PEM format.
501 [Steve Henson]
502
503 *) Experimental support for use of HMAC via EVP_PKEY interface. This
504 allows HMAC to be handled via the EVP_DigestSign*() interface. The
505 EVP_PKEY "key" in this case is the HMAC key, potentially allowing
506 ENGINE support for HMAC keys which are unextractable. New -mac and
507 -macopt options to dgst utility.
508 [Steve Henson]
509
510 *) New option -sigopt to dgst utility. Update dgst to use
511 EVP_Digest{Sign,Verify}*. These two changes make it possible to use
512 alternative signing paramaters such as X9.31 or PSS in the dgst
513 utility.
514 [Steve Henson]
515
516 *) Change ssl_cipher_apply_rule(), the internal function that does
517 the work each time a ciphersuite string requests enabling
518 ("foo+bar"), moving ("+foo+bar"), disabling ("-foo+bar", or
519 removing ("!foo+bar") a class of ciphersuites: Now it maintains
520 the order of disabled ciphersuites such that those ciphersuites
521 that most recently went from enabled to disabled not only stay
522 in order with respect to each other, but also have higher priority
523 than other disabled ciphersuites the next time ciphersuites are
524 enabled again.
525
526 This means that you can now say, e.g., "PSK:-PSK:HIGH" to enable
527 the same ciphersuites as with "HIGH" alone, but in a specific
528 order where the PSK ciphersuites come first (since they are the
529 most recently disabled ciphersuites when "HIGH" is parsed).
530
531 Also, change ssl_create_cipher_list() (using this new
532 funcionality) such that between otherwise identical
533 cihpersuites, ephemeral ECDH is preferred over ephemeral DH in
534 the default order.
535 [Bodo Moeller]
536
537 *) Change ssl_create_cipher_list() so that it automatically
538 arranges the ciphersuites in reasonable order before starting
539 to process the rule string. Thus, the definition for "DEFAULT"
540 (SSL_DEFAULT_CIPHER_LIST) now is just "ALL:!aNULL:!eNULL", but
541 remains equivalent to "AES:ALL:!aNULL:!eNULL:+aECDH:+kRSA:+RC4:@STRENGTH".
542 This makes it much easier to arrive at a reasonable default order
543 in applications for which anonymous ciphers are OK (meaning
544 that you can't actually use DEFAULT).
545 [Bodo Moeller; suggested by Victor Duchovni]
546
547 *) Split the SSL/TLS algorithm mask (as used for ciphersuite string
548 processing) into multiple integers instead of setting
549 "SSL_MKEY_MASK" bits, "SSL_AUTH_MASK" bits, "SSL_ENC_MASK",
550 "SSL_MAC_MASK", and "SSL_SSL_MASK" bits all in a single integer.
551 (These masks as well as the individual bit definitions are hidden
552 away into the non-exported interface ssl/ssl_locl.h, so this
553 change to the definition of the SSL_CIPHER structure shouldn't
554 affect applications.) This give us more bits for each of these
555 categories, so there is no longer a need to coagulate AES128 and
556 AES256 into a single algorithm bit, and to coagulate Camellia128
557 and Camellia256 into a single algorithm bit, which has led to all
558 kinds of kludges.
559
560 Thus, among other things, the kludge introduced in 0.9.7m and
561 0.9.8e for masking out AES256 independently of AES128 or masking
562 out Camellia256 independently of AES256 is not needed here in 0.9.9.
563
564 With the change, we also introduce new ciphersuite aliases that
565 so far were missing: "AES128", "AES256", "CAMELLIA128", and
566 "CAMELLIA256".
567 [Bodo Moeller]
568
569 *) Add support for dsa-with-SHA224 and dsa-with-SHA256.
570 Use the leftmost N bytes of the signature input if the input is
571 larger than the prime q (with N being the size in bytes of q).
572 [Nils Larsch]
573
574 *) Very *very* experimental PKCS#7 streaming encoder support. Nothing uses
575 it yet and it is largely untested.
576 [Steve Henson]
577
578 *) Add support for the ecdsa-with-SHA224/256/384/512 signature types.
579 [Nils Larsch]
580
581 *) Initial incomplete changes to avoid need for function casts in OpenSSL
582 some compilers (gcc 4.2 and later) reject their use. Safestack is
583 reimplemented. Update ASN1 to avoid use of legacy functions.
584 [Steve Henson]
585
586 *) Win32/64 targets are linked with Winsock2.
587 [Andy Polyakov]
588
589 *) Add an X509_CRL_METHOD structure to allow CRL processing to be redirected
590 to external functions. This can be used to increase CRL handling
591 efficiency especially when CRLs are very large by (for example) storing
592 the CRL revoked certificates in a database.
593 [Steve Henson]
594
595 *) Overhaul of by_dir code. Add support for dynamic loading of CRLs so
596 new CRLs added to a directory can be used. New command line option
597 -verify_return_error to s_client and s_server. This causes real errors
598 to be returned by the verify callback instead of carrying on no matter
599 what. This reflects the way a "real world" verify callback would behave.
600 [Steve Henson]
601
602 *) GOST engine, supporting several GOST algorithms and public key formats.
603 Kindly donated by Cryptocom.
604 [Cryptocom]
605
606 *) Partial support for Issuing Distribution Point CRL extension. CRLs
607 partitioned by DP are handled but no indirect CRL or reason partitioning
608 (yet). Complete overhaul of CRL handling: now the most suitable CRL is
609 selected via a scoring technique which handles IDP and AKID in CRLs.
610 [Steve Henson]
611
612 *) New X509_STORE_CTX callbacks lookup_crls() and lookup_certs() which
613 will ultimately be used for all verify operations: this will remove the
614 X509_STORE dependency on certificate verification and allow alternative
615 lookup methods. X509_STORE based implementations of these two callbacks.
616 [Steve Henson]
617
618 *) Allow multiple CRLs to exist in an X509_STORE with matching issuer names.
619 Modify get_crl() to find a valid (unexpired) CRL if possible.
620 [Steve Henson]
621
622 *) New function X509_CRL_match() to check if two CRLs are identical. Normally
623 this would be called X509_CRL_cmp() but that name is already used by
624 a function that just compares CRL issuer names. Cache several CRL
625 extensions in X509_CRL structure and cache CRLDP in X509.
626 [Steve Henson]
627
628 *) Store a "canonical" representation of X509_NAME structure (ASN1 Name)
629 this maps equivalent X509_NAME structures into a consistent structure.
630 Name comparison can then be performed rapidly using memcmp().
631 [Steve Henson]
632
633 *) Non-blocking OCSP request processing. Add -timeout option to ocsp
634 utility.
635 [Steve Henson]
636
637 *) Allow digests to supply their own micalg string for S/MIME type using
638 the ctrl EVP_MD_CTRL_MICALG.
639 [Steve Henson]
640
641 *) During PKCS7 signing pass the PKCS7 SignerInfo structure to the
642 EVP_PKEY_METHOD before and after signing via the EVP_PKEY_CTRL_PKCS7_SIGN
643 ctrl. It can then customise the structure before and/or after signing
644 if necessary.
645 [Steve Henson]
646
647 *) New function OBJ_add_sigid() to allow application defined signature OIDs
648 to be added to OpenSSLs internal tables. New function OBJ_sigid_free()
649 to free up any added signature OIDs.
650 [Steve Henson]
651
652 *) New functions EVP_CIPHER_do_all(), EVP_CIPHER_do_all_sorted(),
653 EVP_MD_do_all() and EVP_MD_do_all_sorted() to enumerate internal
654 digest and cipher tables. New options added to openssl utility:
655 list-message-digest-algorithms and list-cipher-algorithms.
656 [Steve Henson]
657
658 *) Change the array representation of binary polynomials: the list
659 of degrees of non-zero coefficients is now terminated with -1.
660 Previously it was terminated with 0, which was also part of the
661 value; thus, the array representation was not applicable to
662 polynomials where t^0 has coefficient zero. This change makes
663 the array representation useful in a more general context.
664 [Douglas Stebila]
665
666 *) Various modifications and fixes to SSL/TLS cipher string
667 handling. For ECC, the code now distinguishes between fixed ECDH
668 with RSA certificates on the one hand and with ECDSA certificates
669 on the other hand, since these are separate ciphersuites. The
670 unused code for Fortezza ciphersuites has been removed.
671
672 For consistency with EDH, ephemeral ECDH is now called "EECDH"
673 (not "ECDHE"). For consistency with the code for DH
674 certificates, use of ECDH certificates is now considered ECDH
675 authentication, not RSA or ECDSA authentication (the latter is
676 merely the CA's signing algorithm and not actively used in the
677 protocol).
678
679 The temporary ciphersuite alias "ECCdraft" is no longer
680 available, and ECC ciphersuites are no longer excluded from "ALL"
681 and "DEFAULT". The following aliases now exist for RFC 4492
682 ciphersuites, most of these by analogy with the DH case:
683
684 kECDHr - ECDH cert, signed with RSA
685 kECDHe - ECDH cert, signed with ECDSA
686 kECDH - ECDH cert (signed with either RSA or ECDSA)
687 kEECDH - ephemeral ECDH
688 ECDH - ECDH cert or ephemeral ECDH
689
690 aECDH - ECDH cert
691 aECDSA - ECDSA cert
692 ECDSA - ECDSA cert
693
694 AECDH - anonymous ECDH
695 EECDH - non-anonymous ephemeral ECDH (equivalent to "kEECDH:-AECDH")
696
697 [Bodo Moeller]
698
699 *) Add additional S/MIME capabilities for AES and GOST ciphers if supported.
700 Use correct micalg parameters depending on digest(s) in signed message.
701 [Steve Henson]
702
703 *) Add engine support for EVP_PKEY_ASN1_METHOD. Add functions to process
704 an ENGINE asn1 method. Support ENGINE lookups in the ASN1 code.
705 [Steve Henson]
706
707 *) Initial engine support for EVP_PKEY_METHOD. New functions to permit
708 an engine to register a method. Add ENGINE lookups for methods and
709 functional reference processing.
710 [Steve Henson]
711
712 *) New functions EVP_Digest{Sign,Verify)*. These are enchance versions of
713 EVP_{Sign,Verify}* which allow an application to customise the signature
714 process.
715 [Steve Henson]
716
717 *) New -resign option to smime utility. This adds one or more signers
718 to an existing PKCS#7 signedData structure. Also -md option to use an
719 alternative message digest algorithm for signing.
720 [Steve Henson]
721
722 *) Tidy up PKCS#7 routines and add new functions to make it easier to
723 create PKCS7 structures containing multiple signers. Update smime
724 application to support multiple signers.
725 [Steve Henson]
726
727 *) New -macalg option to pkcs12 utility to allow setting of an alternative
728 digest MAC.
729 [Steve Henson]
730
731 *) Initial support for PKCS#5 v2.0 PRFs other than default SHA1 HMAC.
732 Reorganize PBE internals to lookup from a static table using NIDs,
733 add support for HMAC PBE OID translation. Add a EVP_CIPHER ctrl:
734 EVP_CTRL_PBE_PRF_NID this allows a cipher to specify an alternative
735 PRF which will be automatically used with PBES2.
736 [Steve Henson]
737
738 *) Replace the algorithm specific calls to generate keys in "req" with the
739 new API.
740 [Steve Henson]
741
742 *) Update PKCS#7 enveloped data routines to use new API. This is now
743 supported by any public key method supporting the encrypt operation. A
744 ctrl is added to allow the public key algorithm to examine or modify
745 the PKCS#7 RecipientInfo structure if it needs to: for RSA this is
746 a no op.
747 [Steve Henson]
748
749 *) Add a ctrl to asn1 method to allow a public key algorithm to express
750 a default digest type to use. In most cases this will be SHA1 but some
751 algorithms (such as GOST) need to specify an alternative digest. The
752 return value indicates how strong the prefernce is 1 means optional and
753 2 is mandatory (that is it is the only supported type). Modify
754 ASN1_item_sign() to accept a NULL digest argument to indicate it should
755 use the default md. Update openssl utilities to use the default digest
756 type for signing if it is not explicitly indicated.
757 [Steve Henson]
758
759 *) Use OID cross reference table in ASN1_sign() and ASN1_verify(). New
760 EVP_MD flag EVP_MD_FLAG_PKEY_METHOD_SIGNATURE. This uses the relevant
761 signing method from the key type. This effectively removes the link
762 between digests and public key types.
763 [Steve Henson]
764
765 *) Add an OID cross reference table and utility functions. Its purpose is to
766 translate between signature OIDs such as SHA1WithrsaEncryption and SHA1,
767 rsaEncryption. This will allow some of the algorithm specific hackery
768 needed to use the correct OID to be removed.
769 [Steve Henson]
770
771 *) Remove algorithm specific dependencies when setting PKCS7_SIGNER_INFO
772 structures for PKCS7_sign(). They are now set up by the relevant public
773 key ASN1 method.
774 [Steve Henson]
775
776 *) Add provisional EC pkey method with support for ECDSA and ECDH.
777 [Steve Henson]
778
779 *) Add support for key derivation (agreement) in the API, DH method and
780 pkeyutl.
781 [Steve Henson]
782
783 *) Add DSA pkey method and DH pkey methods, extend DH ASN1 method to support
784 public and private key formats. As a side effect these add additional
785 command line functionality not previously available: DSA signatures can be
786 generated and verified using pkeyutl and DH key support and generation in
787 pkey, genpkey.
788 [Steve Henson]
789
790 *) BeOS support.
791 [Oliver Tappe <zooey@hirschkaefer.de>]
792
793 *) New make target "install_html_docs" installs HTML renditions of the
794 manual pages.
795 [Oliver Tappe <zooey@hirschkaefer.de>]
796
797 *) New utility "genpkey" this is analagous to "genrsa" etc except it can
798 generate keys for any algorithm. Extend and update EVP_PKEY_METHOD to
799 support key and parameter generation and add initial key generation
800 functionality for RSA.
801 [Steve Henson]
802
803 *) Add functions for main EVP_PKEY_method operations. The undocumented
804 functions EVP_PKEY_{encrypt,decrypt} have been renamed to
805 EVP_PKEY_{encrypt,decrypt}_old.
806 [Steve Henson]
807
808 *) Initial definitions for EVP_PKEY_METHOD. This will be a high level public
809 key API, doesn't do much yet.
810 [Steve Henson]
811
812 *) New function EVP_PKEY_asn1_get0_info() to retrieve information about
813 public key algorithms. New option to openssl utility:
814 "list-public-key-algorithms" to print out info.
815 [Steve Henson]
816
817 *) Implement the Supported Elliptic Curves Extension for
818 ECC ciphersuites from draft-ietf-tls-ecc-12.txt.
819 [Douglas Stebila]
820
821 *) Don't free up OIDs in OBJ_cleanup() if they are in use by EVP_MD or
822 EVP_CIPHER structures to avoid later problems in EVP_cleanup().
823 [Steve Henson]
824
825 *) New utilities pkey and pkeyparam. These are similar to algorithm specific
826 utilities such as rsa, dsa, dsaparam etc except they process any key
827 type.
828 [Steve Henson]
829
830 *) Transfer public key printing routines to EVP_PKEY_ASN1_METHOD. New
831 functions EVP_PKEY_print_public(), EVP_PKEY_print_private(),
832 EVP_PKEY_print_param() to print public key data from an EVP_PKEY
833 structure.
834 [Steve Henson]
835
836 *) Initial support for pluggable public key ASN1.
837 De-spaghettify the public key ASN1 handling. Move public and private
838 key ASN1 handling to a new EVP_PKEY_ASN1_METHOD structure. Relocate
839 algorithm specific handling to a single module within the relevant
840 algorithm directory. Add functions to allow (near) opaque processing
841 of public and private key structures.
842 [Steve Henson]
843
844 *) Implement the Supported Point Formats Extension for
845 ECC ciphersuites from draft-ietf-tls-ecc-12.txt.
846 [Douglas Stebila]
847
848 *) Add initial support for RFC 4279 PSK TLS ciphersuites. Add members
849 for the psk identity [hint] and the psk callback functions to the
850 SSL_SESSION, SSL and SSL_CTX structure.
851
852 New ciphersuites:
853 PSK-RC4-SHA, PSK-3DES-EDE-CBC-SHA, PSK-AES128-CBC-SHA,
854 PSK-AES256-CBC-SHA
855
856 New functions:
857 SSL_CTX_use_psk_identity_hint
858 SSL_get_psk_identity_hint
859 SSL_get_psk_identity
860 SSL_use_psk_identity_hint
861
862 [Mika Kousa and Pasi Eronen of Nokia Corporation]
863
864 *) Add RFC 3161 compliant time stamp request creation, response generation
865 and response verification functionality.
866 [Zoltán Glózik <zglozik@opentsa.org>, The OpenTSA Project]
867
868 *) Add initial support for TLS extensions, specifically for the server_name
869 extension so far. The SSL_SESSION, SSL_CTX, and SSL data structures now
870 have new members for a host name. The SSL data structure has an
871 additional member SSL_CTX *initial_ctx so that new sessions can be
872 stored in that context to allow for session resumption, even after the
873 SSL has been switched to a new SSL_CTX in reaction to a client's
874 server_name extension.
875
876 New functions (subject to change):
877
878 SSL_get_servername()
879 SSL_get_servername_type()
880 SSL_set_SSL_CTX()
881
882 New CTRL codes and macros (subject to change):
883
884 SSL_CTRL_SET_TLSEXT_SERVERNAME_CB
885 - SSL_CTX_set_tlsext_servername_callback()
886 SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG
887 - SSL_CTX_set_tlsext_servername_arg()
888 SSL_CTRL_SET_TLSEXT_HOSTNAME - SSL_set_tlsext_host_name()
889
890 openssl s_client has a new '-servername ...' option.
891
892 openssl s_server has new options '-servername_host ...', '-cert2 ...',
893 '-key2 ...', '-servername_fatal' (subject to change). This allows
894 testing the HostName extension for a specific single host name ('-cert'
895 and '-key' remain fallbacks for handshakes without HostName
896 negotiation). If the unrecogninzed_name alert has to be sent, this by
897 default is a warning; it becomes fatal with the '-servername_fatal'
898 option.
899
900 [Peter Sylvester, Remy Allais, Christophe Renou]
901
902 *) Whirlpool hash implementation is added.
903 [Andy Polyakov]
904
905 *) BIGNUM code on 64-bit SPARCv9 targets is switched from bn(64,64) to
906 bn(64,32). Because of instruction set limitations it doesn't have
907 any negative impact on performance. This was done mostly in order
908 to make it possible to share assembler modules, such as bn_mul_mont
909 implementations, between 32- and 64-bit builds without hassle.
910 [Andy Polyakov]
911
912 *) Move code previously exiled into file crypto/ec/ec2_smpt.c
913 to ec2_smpl.c, and no longer require the OPENSSL_EC_BIN_PT_COMP
914 macro.
915 [Bodo Moeller]
916
917 *) New candidate for BIGNUM assembler implementation, bn_mul_mont,
918 dedicated Montgomery multiplication procedure, is introduced.
919 BN_MONT_CTX is modified to allow bn_mul_mont to reach for higher
920 "64-bit" performance on certain 32-bit targets.
921 [Andy Polyakov]
922
923 *) New option SSL_OP_NO_COMP to disable use of compression selectively
924 in SSL structures. New SSL ctrl to set maximum send fragment size.
925 Save memory by seeting the I/O buffer sizes dynamically instead of
926 using the maximum available value.
927 [Steve Henson]
928
929 *) New option -V for 'openssl ciphers'. This prints the ciphersuite code
930 in addition to the text details.
931 [Bodo Moeller]
932
933 *) Very, very preliminary EXPERIMENTAL support for printing of general
934 ASN1 structures. This currently produces rather ugly output and doesn't
935 handle several customised structures at all.
936 [Steve Henson]
937
938 *) Integrated support for PVK file format and some related formats such
939 as MS PUBLICKEYBLOB and PRIVATEKEYBLOB. Command line switches to support
940 these in the 'rsa' and 'dsa' utilities.
941 [Steve Henson]
942
943 *) Support for PKCS#1 RSAPublicKey format on rsa utility command line.
944 [Steve Henson]
945
946 *) Remove the ancient ASN1_METHOD code. This was only ever used in one
947 place for the (very old) "NETSCAPE" format certificates which are now
948 handled using new ASN1 code equivalents.
949 [Steve Henson]
950
951 *) Let the TLSv1_method() etc. functions return a 'const' SSL_METHOD
952 pointer and make the SSL_METHOD parameter in SSL_CTX_new,
953 SSL_CTX_set_ssl_version and SSL_set_ssl_method 'const'.
954 [Nils Larsch]
955
956 *) Modify CRL distribution points extension code to print out previously
957 unsupported fields. Enhance extension setting code to allow setting of
958 all fields.
959 [Steve Henson]
960
961 *) Add print and set support for Issuing Distribution Point CRL extension.
962 [Steve Henson]
963
964 *) Change 'Configure' script to enable Camellia by default.
965 [NTT]
966
967 Changes between 0.9.8r and 0.9.8s [xx XXX xxxx]
968
969 *) Fix ssl_ciph.c set-up race.
970 [Adam Langley (Google)]
971
972 *) Fix spurious failures in ecdsatest.c.
973 [Emilia Käsper (Google)]
974
975 *) Fix the BIO_f_buffer() implementation (which was mixing different
976 interpretations of the '..._len' fields).
977 [Adam Langley (Google)]
978
979 *) Fix handling of BN_BLINDING: now BN_BLINDING_invert_ex (rather than
980 BN_BLINDING_invert_ex) calls BN_BLINDING_update, ensuring that concurrent
981 threads won't reuse the same blinding coefficients.
982
983 This also avoids the need to obtain the CRYPTO_LOCK_RSA_BLINDING
984 lock to call BN_BLINDING_invert_ex, and avoids one use of
985 BN_BLINDING_update for each BN_BLINDING structure (previously,
986 the last update always remained unused).
987 [Emilia Käsper (Google)]
988
989 *) Fix SSL memory handling for (EC)DH ciphersuites, in particular
990 for multi-threaded use of ECDH.
991 [Adam Langley (Google)]
992
993 *) Fix x509_name_ex_d2i memory leak on bad inputs.
994 [Bodo Moeller]
995
996 *) Add protection against ECDSA timing attacks as mentioned in the paper
997 by Billy Bob Brumley and Nicola Tuveri, see:
998
999 http://eprint.iacr.org/2011/232.pdf
1000
1001 [Billy Bob Brumley and Nicola Tuveri]
1002
1003 Changes between 0.9.8q and 0.9.8r [8 Feb 2011]
1004
1005 *) Fix parsing of OCSP stapling ClientHello extension. CVE-2011-0014
1006 [Neel Mehta, Adam Langley, Bodo Moeller (Google)]
1007
1008 *) Fix bug in string printing code: if *any* escaping is enabled we must
1009 escape the escape character (backslash) or the resulting string is
1010 ambiguous.
1011 [Steve Henson]
1012
1013 Changes between 0.9.8p and 0.9.8q [2 Dec 2010]
1014
1015 *) Disable code workaround for ancient and obsolete Netscape browsers
1016 and servers: an attacker can use it in a ciphersuite downgrade attack.
1017 Thanks to Martin Rex for discovering this bug. CVE-2010-4180
1018 [Steve Henson]
1019
1020 *) Fixed J-PAKE implementation error, originally discovered by
1021 Sebastien Martini, further info and confirmation from Stefan
1022 Arentz and Feng Hao. Note that this fix is a security fix. CVE-2010-4252
1023 [Ben Laurie]
1024
1025 Changes between 0.9.8o and 0.9.8p [16 Nov 2010]
1026
1027 *) Fix extension code to avoid race conditions which can result in a buffer
1028 overrun vulnerability: resumed sessions must not be modified as they can
1029 be shared by multiple threads. CVE-2010-3864
1030 [Steve Henson]
1031
1032 *) Fix for double free bug in ssl/s3_clnt.c CVE-2010-2939
1033 [Steve Henson]
1034
1035 *) Don't reencode certificate when calculating signature: cache and use
1036 the original encoding instead. This makes signature verification of
1037 some broken encodings work correctly.
1038 [Steve Henson]
1039
1040 *) ec2_GF2m_simple_mul bugfix: compute correct result if the output EC_POINT
1041 is also one of the inputs.
1042 [Emilia Käsper <emilia.kasper@esat.kuleuven.be> (Google)]
1043
1044 *) Don't repeatedly append PBE algorithms to table if they already exist.
1045 Sort table on each new add. This effectively makes the table read only
1046 after all algorithms are added and subsequent calls to PKCS12_pbe_add
1047 etc are non-op.
1048 [Steve Henson]
1049
5 Changes between 0.9.8n and 0.9.8o [01 Jun 2010] 1050 Changes between 0.9.8n and 0.9.8o [01 Jun 2010]
6 1051
1052 [NB: OpenSSL 0.9.8o and later 0.9.8 patch levels were released after
1053 OpenSSL 1.0.0.]
1054
7 *) Correct a typo in the CMS ASN1 module which can result in invalid memory 1055 *) Correct a typo in the CMS ASN1 module which can result in invalid memory
8 access or freeing data twice (CVE-2010-0742) 1056 access or freeing data twice (CVE-2010-0742)
9 [Steve Henson, Ronald Moesbergen <intercommit@gmail.com>] 1057 [Steve Henson, Ronald Moesbergen <intercommit@gmail.com>]
10 1058
11 *) Add SHA2 algorithms to SSL_library_init(). SHA2 is becoming far more 1059 *) Add SHA2 algorithms to SSL_library_init(). SHA2 is becoming far more
12 common in certificates and some applications which only call 1060 common in certificates and some applications which only call
13 SSL_library_init and not OpenSSL_add_all_algorithms() will fail. 1061 SSL_library_init and not OpenSSL_add_all_algorithms() will fail.
14 [Steve Henson] 1062 [Steve Henson]
15 1063
16 *) VMS fixes: 1064 *) VMS fixes:
(...skipping 8496 matching lines...) Expand 10 before | Expand all | Expand 10 after
8513 *) Fixed a few memory leaks. 9561 *) Fixed a few memory leaks.
8514 [Eric A. Young] 9562 [Eric A. Young]
8515 9563
8516 *) Fixed various code and comment typos. 9564 *) Fixed various code and comment typos.
8517 [Eric A. Young] 9565 [Eric A. Young]
8518 9566
8519 *) A minor bug in ssl/s3_clnt.c where there would always be 4 0 9567 *) A minor bug in ssl/s3_clnt.c where there would always be 4 0
8520 bytes sent in the client random. 9568 bytes sent in the client random.
8521 [Edward Bishop <ebishop@spyglass.com>] 9569 [Edward Bishop <ebishop@spyglass.com>]
8522 9570
OLDNEW
« no previous file with comments | « openssl/ACKNOWLEDGMENTS ('k') | openssl/CHANGES.SSLeay » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698