]> git.ipfire.org Git - thirdparty/openssl.git/blame - CHANGES
Allow various options to be included for signing and verify of
[thirdparty/openssl.git] / CHANGES
CommitLineData
f1c236f8 1 OpenSSL CHANGES
651d0aff
RE
2 _______________
3
c5e8580e 4 Changes between 0.9.6 and 0.9.7 [xx XXX 2000]
a43cf9fa 5
8c950429
DSH
6 *) Additional options to ocsp utility to allow flags to be set and
7 additional certificates supplied.
8 [Steve Henson]
9
9235adbf
RL
10 *) Add the option -VAfile to 'openssl ocsp', so the user can give the
11 OCSP client a number of certificate to only verify the response
12 signature against.
13 [Richard Levitte]
14
57e7d3ce
UM
15 *) Add new function BN_rand_range(), and fix DSA_sign_setup() to prevent
16 Bleichenbacher's DSA attack.
35ed8cb8 17 [Ulf Moeller, Bodo Moeller]
57e7d3ce 18
deb2c1a1
DSH
19 *) Update Rijndael code to version 3.0 and change EVP AES ciphers to
20 handle the new API. Currently only ECB, CBC modes supported. Add new
21 AES OIDs. Add TLS AES ciphersuites as described in the "AES Ciphersuites
22 for TLS" draft-ietf-tls-ciphersuite-03.txt.
23 [Ben Laurie, Steve Henson]
24
9eea2be6
BM
25 *) In the NCONF_...-based implementations for CONF_... queries
26 (crypto/conf/conf_lib.c), if the input LHASH is NULL, avoid using
27 a temporary CONF structure with the data component set to NULL
28 (which gives segmentation faults in lh_retrieve).
29 Instead, use NULL for the CONF pointer in CONF_get_string and
30 CONF_get_number (which may use environment variables) and directly
31 return NULL from CONF_get_section.
32 [Bodo Moeller]
33
741a9690
UM
34 *) Fix potential buffer overrun for EBCDIC.
35 [Ulf Moeller]
36
26e083cc
DSH
37 *) New function OCSP_copy_nonce() to copy nonce value (if present) from
38 request to response.
39 [Steve Henson]
40
02e4fbed
DSH
41 *) Functions for OCSP responders. OCSP_request_onereq_count(),
42 OCSP_request_onereq_get0(), OCSP_onereq_get0_id() and OCSP_id_get0_info()
43 extract information from a certificate request. OCSP_response_create()
44 creates a response and optionally adds a basic response structure.
45 OCSP_basic_add1_status() adds a complete single response to a basic
46 reponse and returns the OCSP_SINGLERESP structure just added (to allow
47 extensions to be included for example). OCSP_basic_add1_cert() adds a
48 certificate to a basic response and OCSP_basic_sign() signs a basic
49 response with various flags. New helper functions ASN1_TIME_check()
50 (checks validity of ASN1_TIME structure) and ASN1_TIME_to_generalizedtime()
51 (converts ASN1_TIME to GeneralizedTime).
52 [Steve Henson]
53
88ce56f8
DSH
54 *) Various new functions. EVP_Digest() combines EVP_Digest{Init,Update,Final}()
55 in a single operation. X509_get0_pubkey_bitstr() extracts the public_key
56 structure from a certificate. X509_pubkey_digest() digests tha public_key
57 contents: this is used in various key identifiers.
58 [Steve Henson]
59
8cff6331
DSH
60 *) Tolerate nonRepudiation as being valid for S/MIME signing and certSign
61 keyUsage if basicConstraints absent for a CA.
62 [Steve Henson]
63
903872d6
RL
64 *) Make SMIME_write_PKCS7() write mail header values with a format that
65 is more generally accepted (no spaces before the semicolon), since
66 some programs can't parse those values properly otherwise. Also make
67 sure BIO's that break lines after each write do not create invalid
68 headers.
69 [Richard Levitte]
70
b8470240
DSH
71 *) Make sk_sort() tolerate a NULL argument.
72 [Steve Henson reported by Massimiliano Pala <madwolf@comune.modena.it>]
73
50d51991
DSH
74 *) New OCSP verify flag OCSP_TRUSTOTHER. When set the "other" certificates
75 passed by the function are trusted implicitly. If any of them signed the
76 reponse then it is assumed to be valid and is not verified.
77 [Steve Henson]
78
a342cc5a
DSH
79 *) Zero the premaster secret after deriving the master secret in
80 DH ciphersuites.
81 [Steve Henson]
82
a43cf9fa
DSH
83 *) In PKCS7_set_type() initialise content_type in PKCS7_ENC_CONTENT
84 to data. This was previously part of the PKCS7 ASN1 code. This
85 was causing problems with OpenSSL created PKCS#12 and PKCS#7 structures.
86 [Steve Henson, reported by Kenneth R. Robinette
87 <support@securenetterm.com>]
88
89 *) Add CRYPTO_push_info() and CRYPTO_pop_info() calls to new ASN1
90 routines: without these tracing memory leaks is very painful.
91 Fix leaks in PKCS12 and PKCS7 routines.
92 [Steve Henson]
93
75802000
UM
94 *) Fix for Irix with NO_ASM.
95 ["Bruce W. Forsberg" <bruce.forsberg@baesystems.com>]
96
ae0665b8
BM
97 *) Add some EVP_add_digest_alias registrations (as found in
98 OpenSSL_add_all_digests()), to SSL_library_init()
99 aka OpenSSL_add_ssl_algorithms(). This provides improved
100 compatibility with peers using X.509 certificates
101 with unconventional AlgorithmIdentifier OIDs.
102 [Bodo Moeller]
103
893b76c5
UM
104 *) ./config script fixes.
105 [Ulf Moeller, Richard Levitte]
106
ba8e2824
DSH
107 *) Make X509_time_adj() cope with the new behaviour of ASN1_TIME_new().
108 Previously it initialised the 'type' argument to V_ASN1_UTCTIME which
109 effectively meant GeneralizedTime would never be used. Now it
110 is initialised to -1 but X509_time_adj() now has to check the value
111 and use ASN1_TIME_set() if the value is not V_ASN1_UTCTIME or
112 V_ASN1_GENERALIZEDTIME, without this it always uses GeneralizedTime.
113 [Steve Henson, reported by Kenneth R. Robinette
114 <support@securenetterm.com>]
115
8e8972bb
DSH
116 *) Fixes to BN_to_ASN1_INTEGER when bn is zero. This would previously
117 result in a zero length in the ASN1_INTEGER structure which was
118 not consistent with the structure when d2i_ASN1_INTEGER() was used
119 and would cause ASN1_INTEGER_cmp() to fail. Enhance s2i_ASN1_INTEGER()
120 to cope with hex and negative integers. Fix bug in i2a_ASN1_INTEGER()
121 where it did not print out a minus for negative ASN1_INTEGER.
122 [Steve Henson]
123
57108f0a
BM
124 *) Fix 'openssl passwd -1'.
125 [Bodo Moeller]
126
73758d43
DSH
127 *) Add summary printout to ocsp utility. The various functions which
128 convert status values to strings have been renamed to:
129 OCSP_response_status_str(), OCSP_cert_status_str() and
130 OCSP_crl_reason_str() and are no longer static. New options
131 to verify nonce values and to disable verification. OCSP response
132 printout format cleaned up.
133 [Steve Henson]
134
e8af92fc
DSH
135 *) Add additional OCSP certificate checks. These are those specified
136 in RFC2560. This consists of two separate checks: the CA of the
137 certificate being checked must either be the OCSP signer certificate
138 or the issuer of the OCSP signer certificate. In the latter case the
139 OCSP signer certificate must contain the OCSP signing extended key
140 usage. This check is performed by attempting to match the OCSP
141 signer or the OCSP signer CA to the issuerNameHash and issuerKeyHash
142 in the OCSP_CERTID structures of the response.
143 [Steve Henson]
144
81f169e9
DSH
145 *) Initial OCSP certificate verification added to OCSP_basic_verify()
146 and related routines. This uses the standard OpenSSL certificate
147 verify routines to perform initial checks (just CA validity) and
148 to obtain the certificate chain. Then additional checks will be
149 performed on the chain. Currently the root CA is checked to see
150 if it is explicitly trusted for OCSP signing. This is used to set
151 a root CA as a global signing root: that is any certificate that
152 chains to that CA is an acceptable OCSP signing certificate.
153 [Steve Henson]
154
dfebac32
BM
155 *) New '-extfile ...' option to 'openssl ca' for reading X.509v3
156 extensions from a separate configuration file.
157 As when reading extensions from the main configuration file,
158 the '-extensions ...' option may be used for specifying the
159 section to use.
160 [Massimiliano Pala <madwolf@comune.modena.it>]
161
6308af19
DSH
162 *) Change PKCS12_key_gen_asc() so it can cope with non null
163 terminated strings whose length is passed in the passlen
164 parameter, for example from PEM callbacks. This was done
165 by adding an extra length parameter to asc2uni().
166 [Steve Henson, reported by <oddissey@samsung.co.kr>]
167
5782ceb2
DSH
168 *) New OCSP utility. Allows OCSP requests to be generated or
169 read. The request can be sent to a responder and the output
170 parsed, outputed or printed in text form. Not complete yet:
171 still needs to check the OCSP response validity.
172 [Steve Henson]
173
c67cdb50
BM
174 *) New subcommands for 'openssl ca':
175 'openssl ca -status <serial>' prints the status of the cert with
176 the given serial number (according to the index file).
177 'openssl ca -updatedb' updates the expiry status of certificates
178 in the index file.
179 [Massimiliano Pala <madwolf@comune.modena.it>]
180
d199858e
BM
181 *) New '-newreq-nodes' command option to CA.pl. This is like
182 '-newreq', but calls 'openssl req' with the '-nodes' option
183 so that the resulting key is not encrypted.
184 [Damien Miller <djm@mindrot.org>]
185
10a2975a
RL
186 *) New configuration for the GNU Hurd.
187 [Jonathan Bartlett <johnnyb@wolfram.com> via Richard Levitte]
188
9b4dc830
DSH
189 *) Initial code to implement OCSP basic response verify. This
190 is currently incomplete. Currently just finds the signer's
191 certificate and verifies the signature on the response.
192 [Steve Henson]
193
673b3fde
BM
194 *) New SSLeay_version code SSLEAY_DIR to determine the compiled-in
195 value of OPENSSLDIR. This is available via the new '-d' option
196 to 'openssl version', and is also included in 'openssl version -a'.
197 [Bodo Moeller]
198
c06648f7
BM
199 *) Fix C code generated by 'openssl dsaparam -C': If a BN_bin2bn
200 call failed, free the DSA structure.
201 [Bodo Moeller]
202
a5435e8b
BM
203 *) Allowing defining memory allocation callbacks that will be given
204 file name and line number information in additional arguments
205 (a const char* and an int). The basic functionality remains, as
206 well as the original possibility to just replace malloc(),
207 realloc() and free() by functions that do not know about these
208 additional arguments. To register and find out the current
209 settings for extended allocation functions, the following
210 functions are provided:
65a22e8e
RL
211
212 CRYPTO_set_mem_ex_functions
213 CRYPTO_set_locked_mem_ex_functions
214 CRYPTO_get_mem_ex_functions
215 CRYPTO_get_locked_mem_ex_functions
216
a5435e8b
BM
217 These work the same way as CRYPTO_set_mem_functions and friends.
218 CRYPTO_get_[locked_]mem_functions now writes 0 where such an
219 extended allocation function is enabled.
220 Similarly, CRYPTO_get_[locked_]mem_ex_functions writes 0 where
221 a conventional allocation function is enabled.
222 [Richard Levitte, Bodo Moeller]
65a22e8e 223
cbf0f45f
DSH
224 *) Fix to uni2asc() to cope with zero length Unicode strings.
225 These are present in some PKCS#12 files.
226 [Steve Henson]
227
3c914840
GT
228 *) Finish off removing the remaining LHASH function pointer casts.
229 There should no longer be any prototype-casting required when using
56a67adb
GT
230 the LHASH abstraction, and any casts that remain are "bugs". See
231 the callback types and macros at the head of lhash.h for details
232 (and "OBJ_cleanup" in crypto/objects/obj_dat.c as an example).
3c914840
GT
233 [Geoff Thorpe]
234
599c0353
LJ
235 *) Add automatic query of EGD sockets in RAND_poll() for the unix variant.
236 If an EGD or PRNGD is running and enough entropy is returned, automatic
237 seeding like with /dev/[u]random will be performed.
238 Positions tried are: /etc/entropy, /var/run/egd-pool.
239 [Lutz Jaenicke]
240
0c61e299 241 *) Change the Unix RAND_poll() variant to be able to poll several
361ef5f4
RL
242 random devices, as specified by DEVRANDOM, until a sufficient amount
243 of data has been collected. We spend at most 10 ms on each file
244 (select timeout) and read in non-blocking mode. DEVRANDOM now
245 defaults to the list "/dev/urandom", "/dev/random", "/dev/srandom"
246 (previously it was just the string "/dev/urandom"), so on typical
247 platforms the 10 ms delay will never occur.
248 Also separate out the Unix variant to its own file, rand_unix.c.
249 For VMS, there's a currently-empty rand_vms.c.
0c61e299
RL
250 [Richard Levitte]
251
0b33bc65
DSH
252 *) Move OCSP client related routines to ocsp_cl.c. These
253 provide utility functions which an application needing
254 to issue a request to an OCSP responder and analyse the
255 response will typically need: as opposed to those which an
256 OCSP responder itself would need which will be added later.
257
258 OCSP_request_sign() signs an OCSP request with an API similar
259 to PKCS7_sign(). OCSP_response_status() returns status of OCSP
260 response. OCSP_response_get1_basic() extracts basic response
261 from response. OCSP_resp_find_status(): finds and extracts status
262 information from an OCSP_CERTID structure (which will be created
263 when the request structure is built). These are built from lower
264 level functions which work on OCSP_SINGLERESP structures but
265 wont normally be used unless the application wishes to examine
266 extensions in the OCSP response for example.
267
268 Replace nonce routines with a pair of functions.
269 OCSP_request_add1_nonce() adds a nonce value and optionally
270 generates a random value. OCSP_check_nonce() checks the
271 validity of the nonce in an OCSP response.
272 [Steve Henson]
273
274 *) Change function OCSP_request_add() to OCSP_request_add0_id().
8e961835
DSH
275 This doesn't copy the supplied OCSP_CERTID and avoids the
276 need to free up the newly created id. Change return type
277 to OCSP_ONEREQ to return the internal OCSP_ONEREQ structure.
278 This can then be used to add extensions to the request.
279 Deleted OCSP_request_new(), since most of its functionality
280 is now in OCSP_REQUEST_new() (and the case insensitive name
281 clash) apart from the ability to set the request name which
282 will be added elsewhere.
283 [Steve Henson]
284
bf0d176e
DSH
285 *) Update OCSP API. Remove obsolete extensions argument from
286 various functions. Extensions are now handled using the new
287 OCSP extension code. New simple OCSP HTTP function which
288 can be used to send requests and parse the response.
289 [Steve Henson]
290
ec5add87
DSH
291 *) Fix the PKCS#7 (S/MIME) code to work with new ASN1. Two new
292 ASN1_ITEM structures help with sign and verify. PKCS7_ATTR_SIGN
293 uses the special reorder version of SET OF to sort the attributes
294 and reorder them to match the encoded order. This resolves a long
295 standing problem: a verify on a PKCS7 structure just after signing
296 it used to fail because the attribute order did not match the
297 encoded order. PKCS7_ATTR_VERIFY does not reorder the attributes:
298 it uses the received order. This is necessary to tolerate some broken
299 software that does not order SET OF. This is handled by encoding
300 as a SEQUENCE OF but using implicit tagging (with UNIVERSAL class)
301 to produce the required SET OF.
302 [Steve Henson]
303
a6574c21
RL
304 *) Have mk1mf.pl generate the macros OPENSSL_BUILD_SHLIBCRYPTO and
305 OPENSSL_BUILD_SHLIBSSL and use them appropriately in the header
306 files to get correct declarations of the ASN.1 item variables.
307 [Richard Levitte]
308
ecbe0781
DSH
309 *) Rewrite of PKCS#12 code to use new ASN1 functionality. Replace many
310 PKCS#12 macros with real functions. Fix two unrelated ASN1 bugs:
311 asn1_check_tlen() would sometimes attempt to use 'ctx' when it was
312 NULL and ASN1_TYPE was not dereferenced properly in asn1_ex_c2i().
313 New ASN1 macro: DECLARE_ASN1_ITEM() which just declares the relevant
314 ASN1_ITEM and no wrapper functions.
315 [Steve Henson]
316
4e1209eb
DSH
317 *) New functions or ASN1_item_d2i_fp() and ASN1_item_d2i_bio(). These
318 replace the old function pointer based I/O routines. Change most of
319 the *_d2i_bio() and *_d2i_fp() functions to use these.
320 [Steve Henson]
321
3f07fe09
RL
322 *) Enhance mkdef.pl to be more accepting about spacing in C preprocessor
323 lines, recognice more "algorithms" that can be deselected, and make
324 it complain about algorithm deselection that isn't recognised.
325 [Richard Levitte]
326
78d3b819 327 *) New ASN1 functions to handle dup, sign, verify, digest, pack and
73e92de5
DSH
328 unpack operations in terms of ASN1_ITEM. Modify existing wrappers
329 to use new functions. Add NO_ASN1_OLD which can be set to remove
330 some old style ASN1 functions: this can be used to determine if old
331 code will still work when these eventually go away.
09ab755c
DSH
332 [Steve Henson]
333
ec558b65
DSH
334 *) New extension functions for OCSP structures, these follow the
335 same conventions as certificates and CRLs.
336 [Steve Henson]
337
57d2f217
DSH
338 *) New function X509V3_add1_i2d(). This automatically encodes and
339 adds an extension. Its behaviour can be customised with various
340 flags to append, replace or delete. Various wrappers added for
341 certifcates and CRLs.
342 [Steve Henson]
343
5755cab4
DSH
344 *) Fix to avoid calling the underlying ASN1 print routine when
345 an extension cannot be parsed. Correct a typo in the
346 OCSP_SERVICELOC extension. Tidy up print OCSP format.
347 [Steve Henson]
348
3880cd35
BM
349 *) Increase s2->wbuf allocation by one byte in ssl2_new (ssl/s2_lib.c).
350 Otherwise do_ssl_write (ssl/s2_pkt.c) will write beyond buffer limits
351 when writing a 32767 byte record.
352 [Bodo Moeller; problem reported by Eric Day <eday@concentric.net>]
353
f640ee90 354 *) In RSA_eay_public_{en,ed}crypt and RSA_eay_mod_exp (rsa_eay.c),
126fe085 355 obtain lock CRYPTO_LOCK_RSA before setting rsa->_method_mod_{n,p,q}.
f640ee90
BM
356
357 (RSA objects have a reference count access to which is protected
358 by CRYPTO_LOCK_RSA [see rsa_lib.c, s3_srvr.c, ssl_cert.c, ssl_rsa.c],
359 so they are meant to be shared between threads.)
126fe085
BM
360 [Bodo Moeller, Geoff Thorpe; original patch submitted by
361 "Reddie, Steven" <Steven.Reddie@ca.com>]
f640ee90 362
9c67ab2f
DSH
363 *) Make mkdef.pl parse some of the ASN1 macros and add apropriate
364 entries for variables.
5755cab4 365 [Steve Henson]
9c67ab2f 366
1456d186
BM
367 *) Fix a deadlock in CRYPTO_mem_leaks().
368 [Bodo Moeller]
369
3ac82faa
BM
370 *) Add functionality to apps/openssl.c for detecting locking
371 problems: As the program is single-threaded, all we have
372 to do is register a locking callback using an array for
373 storing which locks are currently held by the program.
3ac82faa
BM
374 [Bodo Moeller]
375
376 *) Use a lock around the call to CRYPTO_get_ex_new_index() in
377 SSL_get_ex_data_X509_STORE_idx(), which is used in
378 ssl_verify_cert_chain() and thus can be called at any time
379 during TLS/SSL handshakes so that thread-safety is essential.
380 Unfortunately, the ex_data design is not at all suited
381 for multi-threaded use, so it probably should be abolished.
382 [Bodo Moeller]
383
2a86064f
GT
384 *) Added Broadcom "ubsec" ENGINE to OpenSSL.
385 [Broadcom, tweaked and integrated by Geoff Thorpe]
386
2c15d426
DSH
387 *) Move common extension printing code to new function
388 X509V3_print_extensions(). Reorganise OCSP print routines and
c08523d8 389 implement some needed OCSP ASN1 functions. Add OCSP extensions.
2c15d426
DSH
390 [Steve Henson]
391
de487514
DSH
392 *) New function X509_signature_print() to remove duplication in some
393 print routines.
394 [Steve Henson]
395
06db4253
DSH
396 *) Add a special meaning when SET OF and SEQUENCE OF flags are both
397 set (this was treated exactly the same as SET OF previously). This
398 is used to reorder the STACK representing the structure to match the
399 encoding. This will be used to get round a problem where a PKCS7
400 structure which was signed could not be verified because the STACK
401 order did not reflect the encoded order.
402 [Steve Henson]
403
36f554d4
DSH
404 *) Reimplement the OCSP ASN1 module using the new code.
405 [Steve Henson]
406
2aff7727
DSH
407 *) Update the X509V3 code to permit the use of an ASN1_ITEM structure
408 for its ASN1 operations. The old style function pointers still exist
409 for now but they will eventually go away.
410 [Steve Henson]
411
9d6b1ce6 412 *) Merge in replacement ASN1 code from the ASN1 branch. This almost
5755cab4
DSH
413 completely replaces the old ASN1 functionality with a table driven
414 encoder and decoder which interprets an ASN1_ITEM structure describing
415 the ASN1 module. Compatibility with the existing ASN1 API (i2d,d2i) is
416 largely maintained. Almost all of the old asn1_mac.h macro based ASN1
417 has also been converted to the new form.
9d6b1ce6
DSH
418 [Steve Henson]
419
8dea52fa
BM
420 *) Change BN_mod_exp_recp so that negative moduli are tolerated
421 (the sign is ignored). Similarly, ignore the sign in BN_MONT_CTX_set
422 so that BN_mod_exp_mont and BN_mod_exp_mont_word work
423 for negative moduli.
424 [Bodo Moeller]
425
426 *) Fix BN_uadd and BN_usub: Always return non-negative results instead
427 of not touching the result's sign bit.
428 [Bodo Moeller]
429
80d89e6a
BM
430 *) BN_div bugfix: If the result is 0, the sign (res->neg) must not be
431 set.
432 [Bodo Moeller]
433
f1919c3d
GT
434 *) Changed the LHASH code to use prototypes for callbacks, and created
435 macros to declare and implement thin (optionally static) functions
436 that provide type-safety and avoid function pointer casting for the
437 type-specific callbacks.
438 [Geoff Thorpe]
439
1946cd8b
UM
440 *) Use better test patterns in bntest.
441