]> git.ipfire.org Git - thirdparty/openssl.git/blame - CHANGES
New release.
[thirdparty/openssl.git] / CHANGES
CommitLineData
81a6c781 1
f1c236f8 2 OpenSSL CHANGES
651d0aff
RE
3 _______________
4
0f32c841 5 Changes between 0.9.8f and 0.9.9 [xx XXX xxxx]
3ff55e96 6
0023adb4
AP
7 *) s390x assembler pack.
8 [Andy Polyakov]
9
4c7c5ff6
AP
10 *) ARMv4 assembler pack. ARMv4 refers to v4 and later ISA, not CPU
11 "family."
12 [Andy Polyakov]
13
67c8e7f4
DSH
14 *) Implement certificate status request TLS extension defined in RFC3546.
15 A client can set the appropriate parameters and receive the encoded
16 OCSP response via a callback. A server can query the supplied parameters
17 and set the encoded OCSP response in the callback. Add simplified examples
18 to s_client and s_server.
19 [Steve Henson]
20
761772d7
BM
21 *) Implement Opaque PRF Input TLS extension as specified in
22 draft-rescorla-tls-opaque-prf-input-00.txt. Since this is not an
23 official specification yet and no extension type assignment by
24 IANA exists, this extension (for now) will have to be explicitly
25 enabled when building OpenSSL by providing the extension number
26 to use. For example, specify an option
27
28 -DTLSEXT_TYPE_opaque_prf_input=0x9527
29
30 to the "config" or "Configure" script to enable the extension,
31 assuming extension number 0x9527 (which is a completely arbitrary
32 and unofficial assignment based on the MD5 hash of the Internet
33 Draft). Note that by doing so, you potentially lose
34 interoperability with other TLS implementations since these might
35 be using the same extension number for other purposes.
36
37 SSL_set_tlsext_opaque_prf_input(ssl, src, len) is used to set the
38 opaque PRF input value to use in the handshake. This will create
39 an interal copy of the length-'len' string at 'src', and will
40 return non-zero for success.
41
42 To get more control and flexibility, provide a callback function
43 by using
44
45 SSL_CTX_set_tlsext_opaque_prf_input_callback(ctx, cb)
46 SSL_CTX_set_tlsext_opaque_prf_input_callback_arg(ctx, arg)
47
48 where
49
50 int (*cb)(SSL *, void *peerinput, size_t len, void *arg);
51 void *arg;
52
53 Callback function 'cb' will be called in handshakes, and is
54 expected to use SSL_set_tlsext_opaque_prf_input() as appropriate.
55 Argument 'arg' is for application purposes (the value as given to
56 SSL_CTX_set_tlsext_opaque_prf_input_callback_arg() will directly
57 be provided to the callback function). The callback function
58 has to return non-zero to report success: usually 1 to use opaque
59 PRF input just if possible, or 2 to enforce use of the opaque PRF
60 input. In the latter case, the library will abort the handshake
61 if opaque PRF input is not successfully negotiated.
62
63 Arguments 'peerinput' and 'len' given to the callback function
64 will always be NULL and 0 in the case of a client. A server will
65 see the client's opaque PRF input through these variables if
66 available (NULL and 0 otherwise). Note that if the server
67 provides an opaque PRF input, the length must be the same as the
68 length of the client's opaque PRF input.
69
70 Note that the callback function will only be called when creating
71 a new session (session resumption can resume whatever was
72 previously negotiated), and will not be called in SSL 2.0
73 handshakes; thus, SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2) or
74 SSL_set_options(ssl, SSL_OP_NO_SSLv2) is especially recommended
75 for applications that need to enforce opaque PRF input.
76
77 [Bodo Moeller]
78
81025661
DSH
79 *) Update ssl code to support digests other than SHA1+MD5 for handshake
80 MAC.
81
82 [Victor B. Wagner <vitus@cryptocom.ru>]
83
6434abbf
DSH
84 *) Add RFC4507 support to OpenSSL. This includes the corrections in
85 RFC4507bis. The encrypted ticket format is an encrypted encoded
86 SSL_SESSION structure, that way new session features are automatically
87 supported.
88
ba0e826d
DSH
89 If a client application caches session in an SSL_SESSION structure
90 support is transparent because tickets are now stored in the encoded
91 SSL_SESSION.
92
93 The SSL_CTX structure automatically generates keys for ticket
94 protection in servers so again support should be possible
6434abbf
DSH
95 with no application modification.
96
97 If a client or server wishes to disable RFC4507 support then the option
98 SSL_OP_NO_TICKET can be set.
99
100 Add a TLS extension debugging callback to allow the contents of any client
101 or server extensions to be examined.
ec5d7473
DSH
102
103 This work was sponsored by Google.
6434abbf
DSH
104 [Steve Henson]
105
3c07d3a3
DSH
106 *) Final changes to avoid use of pointer pointer casts in OpenSSL.
107 OpenSSL should now compile cleanly on gcc 4.2
108 [Peter Hartley <pdh@utter.chaos.org.uk>, Steve Henson]
109
b948e2c5
DSH
110 *) Update SSL library to use new EVP_PKEY MAC API. Include generic MAC
111 support including streaming MAC support: this is required for GOST
112 ciphersuite support.
113 [Victor B. Wagner <vitus@cryptocom.ru>, Steve Henson]
114
9cfc8a9d
DSH
115 *) Add option -stream to use PKCS#7 streaming in smime utility. New
116 function i2d_PKCS7_bio_stream() and PEM_write_PKCS7_bio_stream()
117 to output in BER and PEM format.
118 [Steve Henson]
119
47b71e6e
DSH
120 *) Experimental support for use of HMAC via EVP_PKEY interface. This
121 allows HMAC to be handled via the EVP_DigestSign*() interface. The
122 EVP_PKEY "key" in this case is the HMAC key, potentially allowing
2022cfe0
DSH
123 ENGINE support for HMAC keys which are unextractable. New -mac and
124 -macopt options to dgst utility.
47b71e6e
DSH
125 [Steve Henson]
126
d952c79a
DSH
127 *) New option -sigopt to dgst utility. Update dgst to use
128 EVP_Digest{Sign,Verify}*. These two changes make it possible to use
129 alternative signing paramaters such as X9.31 or PSS in the dgst
130 utility.
131 [Steve Henson]
132
fd5bc65c
BM
133 *) Change ssl_cipher_apply_rule(), the internal function that does
134 the work each time a ciphersuite string requests enabling
135 ("foo+bar"), moving ("+foo+bar"), disabling ("-foo+bar", or
136 removing ("!foo+bar") a class of ciphersuites: Now it maintains
137 the order of disabled ciphersuites such that those ciphersuites
138 that most recently went from enabled to disabled not only stay
139 in order with respect to each other, but also have higher priority
140 than other disabled ciphersuites the next time ciphersuites are
141 enabled again.
142
143 This means that you can now say, e.g., "PSK:-PSK:HIGH" to enable
144 the same ciphersuites as with "HIGH" alone, but in a specific
145 order where the PSK ciphersuites come first (since they are the
146 most recently disabled ciphersuites when "HIGH" is parsed).
147
148 Also, change ssl_create_cipher_list() (using this new
149 funcionality) such that between otherwise identical
150 cihpersuites, ephemeral ECDH is preferred over ephemeral DH in
151 the default order.
152 [Bodo Moeller]
153
0a05123a
BM
154 *) Change ssl_create_cipher_list() so that it automatically
155 arranges the ciphersuites in reasonable order before starting
156 to process the rule string. Thus, the definition for "DEFAULT"
157 (SSL_DEFAULT_CIPHER_LIST) now is just "ALL:!aNULL:!eNULL", but
158 remains equivalent to "AES:ALL:!aNULL:!eNULL:+aECDH:+kRSA:+RC4:@STRENGTH".
159 This makes it much easier to arrive at a reasonable default order
160 in applications for which anonymous ciphers are OK (meaning
161 that you can't actually use DEFAULT).
162 [Bodo Moeller; suggested by Victor Duchovni]
163
52b8dad8
BM
164 *) Split the SSL/TLS algorithm mask (as used for ciphersuite string
165 processing) into multiple integers instead of setting
166 "SSL_MKEY_MASK" bits, "SSL_AUTH_MASK" bits, "SSL_ENC_MASK",
167 "SSL_MAC_MASK", and "SSL_SSL_MASK" bits all in a single integer.
168 (These masks as well as the individual bit definitions are hidden
169 away into the non-exported interface ssl/ssl_locl.h, so this
170 change to the definition of the SSL_CIPHER structure shouldn't
171 affect applications.) This give us more bits for each of these
172 categories, so there is no longer a need to coagulate AES128 and
173 AES256 into a single algorithm bit, and to coagulate Camellia128
174 and Camellia256 into a single algorithm bit, which has led to all
175 kinds of kludges.
176
177 Thus, among other things, the kludge introduced in 0.9.7m and
178 0.9.8e for masking out AES256 independently of AES128 or masking
179 out Camellia256 independently of AES256 is not needed here in 0.9.9.
180
181 With the change, we also introduce new ciphersuite aliases that
182 so far were missing: "AES128", "AES256", "CAMELLIA128", and
183 "CAMELLIA256".
184 [Bodo Moeller]
185
357d5de5
NL
186 *) Add support for dsa-with-SHA224 and dsa-with-SHA256.
187 Use the leftmost N bytes of the signature input if the input is
188 larger than the prime q (with N being the size in bytes of q).
189 [Nils Larsch]
190
11d8cdc6
DSH
191 *) Very *very* experimental PKCS#7 streaming encoder support. Nothing uses
192 it yet and it is largely untested.
193 [Steve Henson]
194
06e2dd03
NL
195 *) Add support for the ecdsa-with-SHA224/256/384/512 signature types.
196 [Nils Larsch]
197
de121164 198 *) Initial incomplete changes to avoid need for function casts in OpenSSL
297e6f19 199 some compilers (gcc 4.2 and later) reject their use. Safestack is
a6fbcb42 200 reimplemented. Update ASN1 to avoid use of legacy functions.
de121164
DSH
201 [Steve Henson]
202
3189772e
AP
203 *) Win32/64 targets are linked with Winsock2.
204 [Andy Polyakov]
205
010fa0b3
DSH
206 *) Add an X509_CRL_METHOD structure to allow CRL processing to be redirected
207 to external functions. This can be used to increase CRL handling
208 efficiency especially when CRLs are very large by (for example) storing
209 the CRL revoked certificates in a database.
210 [Steve Henson]
211
5d20c4fb
DSH
212 *) Overhaul of by_dir code. Add support for dynamic loading of CRLs so
213 new CRLs added to a directory can be used. New command line option
214 -verify_return_error to s_client and s_server. This causes real errors
215 to be returned by the verify callback instead of carrying on no matter
216 what. This reflects the way a "real world" verify callback would behave.
217 [Steve Henson]
218
219 *) GOST engine, supporting several GOST algorithms and public key formats.
220 Kindly donated by Cryptocom.
221 [Cryptocom]
222
bc7535bc
DSH
223 *) Partial support for Issuing Distribution Point CRL extension. CRLs
224 partitioned by DP are handled but no indirect CRL or reason partitioning
225 (yet). Complete overhaul of CRL handling: now the most suitable CRL is
226 selected via a scoring technique which handles IDP and AKID in CRLs.
227 [Steve Henson]
228
229 *) New X509_STORE_CTX callbacks lookup_crls() and lookup_certs() which
230 will ultimately be used for all verify operations: this will remove the
231 X509_STORE dependency on certificate verification and allow alternative
232 lookup methods. X509_STORE based implementations of these two callbacks.
233 [Steve Henson]
234
f6e7d014
DSH
235 *) Allow multiple CRLs to exist in an X509_STORE with matching issuer names.
236 Modify get_crl() to find a valid (unexpired) CRL if possible.
237 [Steve Henson]
238
edc54021
DSH
239 *) New function X509_CRL_match() to check if two CRLs are identical. Normally
240 this would be called X509_CRL_cmp() but that name is already used by
241 a function that just compares CRL issuer names. Cache several CRL
242 extensions in X509_CRL structure and cache CRLDP in X509.
243 [Steve Henson]
244
450ea834
DSH
245 *) Store a "canonical" representation of X509_NAME structure (ASN1 Name)
246 this maps equivalent X509_NAME structures into a consistent structure.
247 Name comparison can then be performed rapidly using memcmp().
248 [Steve Henson]
249
454dbbc5
DSH
250 *) Non-blocking OCSP request processing. Add -timeout option to ocsp
251 utility.
c1c6c0bf
DSH
252 [Steve Henson]
253
b7683e3a
DSH
254 *) Allow digests to supply their own micalg string for S/MIME type using
255 the ctrl EVP_MD_CTRL_MICALG.
256 [Steve Henson]
257
258 *) During PKCS7 signing pass the PKCS7 SignerInfo structure to the
259 EVP_PKEY_METHOD before and after signing via the EVP_PKEY_CTRL_PKCS7_SIGN
260 ctrl. It can then customise the structure before and/or after signing
261 if necessary.
262 [Steve Henson]
263
0ee2166c
DSH
264 *) New function OBJ_add_sigid() to allow application defined signature OIDs
265 to be added to OpenSSLs internal tables. New function OBJ_sigid_free()
266 to free up any added signature OIDs.
267 [Steve Henson]
268
5ba4bf35
DSH
269 *) New functions EVP_CIPHER_do_all(), EVP_CIPHER_do_all_sorted(),
270 EVP_MD_do_all() and EVP_MD_do_all_sorted() to enumerate internal
271 digest and cipher tables. New options added to openssl utility:
272 list-message-digest-algorithms and list-cipher-algorithms.
273 [Steve Henson]
274
48fc582f
BM
275 *) In addition to the numerical (unsigned long) thread ID, provide
276 for a pointer (void *) thread ID. This helps accomodate systems
277 that do not provide an unsigned long thread ID. OpenSSL assumes
278 it is in the same thread iff both the numerical and the pointer
279 thread ID agree; so applications are just required to define one
280 of them appropriately (e.g., by using a pointer to a per-thread
281 memory object malloc()ed by the application for the pointer-type
282 thread ID). Exactly analoguous to the existing functions
283
284 void CRYPTO_set_id_callback(unsigned long (*func)(void));
285 unsigned long (*CRYPTO_get_id_callback(void))(void);
286 unsigned long CRYPTO_thread_id(void);
287
288 we now have additional functions
289
290 void CRYPTO_set_idptr_callback(void *(*func)(void));
291 void *(*CRYPTO_get_idptr_callback(void))(void);
292 void *CRYPTO_thread_idptr(void);
293
294 also in <openssl/crypto.h>. The default value for
295 CRYPTO_thread_idptr() if the application has not provided its own
296 callback is &errno.
297 [Bodo Moeller]
298
c4e7870a
BM
299 *) Change the array representation of binary polynomials: the list
300 of degrees of non-zero coefficients is now terminated with -1.
301 Previously it was terminated with 0, which was also part of the
302 value; thus, the array representation was not applicable to
303 polynomials where t^0 has coefficient zero. This change makes
304 the array representation useful in a more general context.
305 [Douglas Stebila]
306
89bbe14c
BM
307 *) Various modifications and fixes to SSL/TLS cipher string
308 handling. For ECC, the code now distinguishes between fixed ECDH
309 with RSA certificates on the one hand and with ECDSA certificates
310 on the other hand, since these are separate ciphersuites. The
311 unused code for Fortezza ciphersuites has been removed.
312
313 For consistency with EDH, ephemeral ECDH is now called "EECDH"
314 (not "ECDHE"). For consistency with the code for DH
315 certificates, use of ECDH certificates is now considered ECDH
316 authentication, not RSA or ECDSA authentication (the latter is
317 merely the CA's signing algorithm and not actively used in the
318 protocol).
319
320 The temporary ciphersuite alias "ECCdraft" is no longer
321 available, and ECC ciphersuites are no longer excluded from "ALL"
322 and "DEFAULT". The following aliases now exist for RFC 4492
323 ciphersuites, most of these by analogy with the DH case:
324
325 kECDHr - ECDH cert, signed with RSA
326 kECDHe - ECDH cert, signed with ECDSA
327 kECDH - ECDH cert (signed with either RSA or ECDSA)
328 kEECDH - ephemeral ECDH
329 ECDH - ECDH cert or ephemeral ECDH
330
331 aECDH - ECDH cert
332 aECDSA - ECDSA cert
333 ECDSA - ECDSA cert
334
335 AECDH - anonymous ECDH
336 EECDH - non-anonymous ephemeral ECDH (equivalent to "kEECDH:-AECDH")
337
338 [Bodo Moeller]
339
fb7b3932
DSH
340 *) Add additional S/MIME capabilities for AES and GOST ciphers if supported.
341 Use correct micalg parameters depending on digest(s) in signed message.
342 [Steve Henson]
343
01b8b3c7
DSH
344 *) Add engine support for EVP_PKEY_ASN1_METHOD. Add functions to process
345 an ENGINE asn1 method. Support ENGINE lookups in the ASN1 code.
346 [Steve Henson]
de9fcfe3 347
58aa573a 348 *) Initial engine support for EVP_PKEY_METHOD. New functions to permit
c9777d26
DSH
349 an engine to register a method. Add ENGINE lookups for methods and
350 functional reference processing.
58aa573a
DSH
351 [Steve Henson]
352
91c9e621
DSH
353 *) New functions EVP_Digest{Sign,Verify)*. These are enchance versions of
354 EVP_{Sign,Verify}* which allow an application to customise the signature
355 process.
356 [Steve Henson]
357
55311921
DSH
358 *) New -resign option to smime utility. This adds one or more signers
359 to an existing PKCS#7 signedData structure. Also -md option to use an
360 alternative message digest algorithm for signing.
361 [Steve Henson]
362
a6e7fcd1
DSH
363 *) Tidy up PKCS#7 routines and add new functions to make it easier to
364 create PKCS7 structures containing multiple signers. Update smime
365 application to support multiple signers.
366 [Steve Henson]
367
121dd39f
DSH
368 *) New -macalg option to pkcs12 utility to allow setting of an alternative
369 digest MAC.
370 [Steve Henson]
371
856640b5 372 *) Initial support for PKCS#5 v2.0 PRFs other than default SHA1 HMAC.
b8f702a0 373 Reorganize PBE internals to lookup from a static table using NIDs,
6d3a1eac
DSH
374 add support for HMAC PBE OID translation. Add a EVP_CIPHER ctrl:
375 EVP_CTRL_PBE_PRF_NID this allows a cipher to specify an alternative
376 PRF which will be automatically used with PBES2.
856640b5
DSH
377 [Steve Henson]
378
34b3c72e 379 *) Replace the algorithm specific calls to generate keys in "req" with the
959e8dfe
DSH
380 new API.
381 [Steve Henson]
382
399a6f0b
DSH
383 *) Update PKCS#7 enveloped data routines to use new API. This is now
384 supported by any public key method supporting the encrypt operation. A
385 ctrl is added to allow the public key algorithm to examine or modify
386 the PKCS#7 RecipientInfo structure if it needs to: for RSA this is
387 a no op.
388 [Steve Henson]
28e4fe34 389
03919683
DSH
390 *) Add a ctrl to asn1 method to allow a public key algorithm to express
391 a default digest type to use. In most cases this will be SHA1 but some
392 algorithms (such as GOST) need to specify an alternative digest. The
393 return value indicates how strong the prefernce is 1 means optional and
394 2 is mandatory (that is it is the only supported type). Modify
395 ASN1_item_sign() to accept a NULL digest argument to indicate it should
396 use the default md. Update openssl utilities to use the default digest
397 type for signing if it is not explicitly indicated.
398 [Steve Henson]
399
ee1d9ec0
DSH
400 *) Use OID cross reference table in ASN1_sign() and ASN1_verify(). New
401 EVP_MD flag EVP_MD_FLAG_PKEY_METHOD_SIGNATURE. This uses the relevant
402 signing method from the key type. This effectively removes the link
403 between digests and public key types.
404 [Steve Henson]
405
d2027098
DSH
406 *) Add an OID cross reference table and utility functions. Its purpose is to
407 translate between signature OIDs such as SHA1WithrsaEncryption and SHA1,
408 rsaEncryption. This will allow some of the algorithm specific hackery
409 needed to use the correct OID to be removed.
410 [Steve Henson]
411
492a9e24
DSH
412 *) Remove algorithm specific dependencies when setting PKCS7_SIGNER_INFO
413 structures for PKCS7_sign(). They are now set up by the relevant public
414 key ASN1 method.
415 [Steve Henson]
416
9ca7047d
DSH
417 *) Add provisional EC pkey method with support for ECDSA and ECDH.
418 [Steve Henson]
419
ffb1ac67
DSH
420 *) Add support for key derivation (agreement) in the API, DH method and
421 pkeyutl.
422 [Steve Henson]
423
3ba0885a
DSH
424 *) Add DSA pkey method and DH pkey methods, extend DH ASN1 method to support
425 public and private key formats. As a side effect these add additional
426 command line functionality not previously available: DSA signatures can be
427 generated and verified using pkeyutl and DH key support and generation in
428 pkey, genpkey.
429 [Steve Henson]
430
4700aea9
UM
431 *) BeOS support.
432 [Oliver Tappe <zooey@hirschkaefer.de>]
433
434 *) New make target "install_html_docs" installs HTML renditions of the
435 manual pages.
436 [Oliver Tappe <zooey@hirschkaefer.de>]
437
f5cda4cb
DSH
438 *) New utility "genpkey" this is analagous to "genrsa" etc except it can
439 generate keys for any algorithm. Extend and update EVP_PKEY_METHOD to
440 support key and parameter generation and add initial key generation
441 functionality for RSA.
442 [Steve Henson]
443
f733a5ef
DSH
444 *) Add functions for main EVP_PKEY_method operations. The undocumented
445 functions EVP_PKEY_{encrypt,decrypt} have been renamed to
446 EVP_PKEY_{encrypt,decrypt}_old.
447 [Steve Henson]
448
0b6f3c66
DSH
449 *) Initial definitions for EVP_PKEY_METHOD. This will be a high level public
450 key API, doesn't do much yet.
451 [Steve Henson]
452
0b33dac3
DSH
453 *) New function EVP_PKEY_asn1_get0_info() to retrieve information about
454 public key algorithms. New option to openssl utility:
455 "list-public-key-algorithms" to print out info.
456 [Steve Henson]
457
33273721
BM
458 *) Implement the Supported Elliptic Curves Extension for
459 ECC ciphersuites from draft-ietf-tls-ecc-12.txt.
460 [Douglas Stebila]
461
246e0931
DSH
462 *) Don't free up OIDs in OBJ_cleanup() if they are in use by EVP_MD or
463 EVP_CIPHER structures to avoid later problems in EVP_cleanup().
464 [Steve Henson]
465
3e4585c8 466 *) New utilities pkey and pkeyparam. These are similar to algorithm specific
f5cda4cb 467 utilities such as rsa, dsa, dsaparam etc except they process any key
3e4585c8 468 type.
3e84b6e1
DSH
469 [Steve Henson]
470
35208f36
DSH
471 *) Transfer public key printing routines to EVP_PKEY_ASN1_METHOD. New
472 functions EVP_PKEY_print_public(), EVP_PKEY_print_private(),
473 EVP_PKEY_print_param() to print public key data from an EVP_PKEY
474 structure.
475 [Steve Henson]
476
448be743
DSH
477 *) Initial support for pluggable public key ASN1.
478 De-spaghettify the public key ASN1 handling. Move public and private
479 key ASN1 handling to a new EVP_PKEY_ASN1_METHOD structure. Relocate
480 algorithm specific handling to a single module within the relevant
481 algorithm directory. Add functions to allow (near) opaque processing
482 of public and private key structures.
483 [Steve Henson]
484
36ca4ba6
BM
485 *) Implement the Supported Point Formats Extension for
486 ECC ciphersuites from draft-ietf-tls-ecc-12.txt.
487 [Douglas Stebila]
488
ddac1974
NL
489 *) Add initial support for RFC 4279 PSK TLS ciphersuites. Add members
490 for the psk identity [hint] and the psk callback functions to the
491 SSL_SESSION, SSL and SSL_CTX structure.
492
493 New ciphersuites:
494 PSK-RC4-SHA, PSK-3DES-EDE-CBC-SHA, PSK-AES128-CBC-SHA,
495 PSK-AES256-CBC-SHA
496
497 New functions:
498 SSL_CTX_use_psk_identity_hint
499 SSL_get_psk_identity_hint
500 SSL_get_psk_identity
501 SSL_use_psk_identity_hint
502
503 [Mika Kousa and Pasi Eronen of Nokia Corporation]
504
c7235be6
UM
505 *) Add RFC 3161 compliant time stamp request creation, response generation
506 and response verification functionality.
507