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