]> git.ipfire.org Git - thirdparty/openssl.git/blame - CHANGES
make update
[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
f1965221
DSH
6 *) Add OCSP_check_validity() function to check the validity of OCSP
7 responses. OCSP responses are prepared in real time and may only
8 be a few seconds old. Simply checking that the current time lies
9 between thisUpdate and nextUpdate max reject otherwise valid responses
10 caused by either OCSP responder or client clock innacuracy. Instead
11 we allow thisUpdate and nextUpdate to fall within a certain period of
12 the current time. The age of the response can also optionally be
13 checked. Two new options -validity_period and -status_age added to
14 ocsp utility.
15 [Steve Henson]
16
4ff18c8c
DSH
17 *) If signature or public key algorithm is unrecognized print out its
18 OID rather that just UNKOWN.
19 [Steve Henson]
20
db4a4659
DSH
21 *) Avoid coredump with unsupported or invalid public keys by checking if
22 X509_get_pubkey() fails in PKCS7_verify(). Fix memory leak when
23 PKCS7_verify() fails with non detached data.
24 [Steve Henson]
25
d7c06e9e
DSH
26 *) Change OCSP_cert_to_id() to tolerate a NULL subject certificate and
27 OCSP_cert_id_new() a NULL serialNumber. This allows a partial certificate
28 ID to be generated from the issuer certificate alone which can then be
29 passed to OCSP_id_issuer_cmp().
30 [Steve Henson]
31
386828d0
DSH
32 *) New compilation option ASN1_ITEM_FUNCTIONS. This causes the new
33 ASN1 modules to export functions returning ASN1_ITEM pointers
34 instead of the ASN1_ITEM structures themselves. This adds several
35 new macros which allow the underlying ASN1 function/structure to
36 be accessed transparently. As a result code should not use ASN1_ITEM
37 references directly (such as &X509_it) but instead use the relevant
38 macros (such as ASN1_ITEM_rptr(X509)). This option is to allow
39 use of the new ASN1 code on platforms where exporting structures
40 is problematical (for example in shared libraries) but exporting
41 functions returning pointers to structures is not.
42 [Steve Henson]
43
fa2b8db4
GT
44 *) Add support for overriding the generation of SSL/TLS session IDs.
45 These callbacks can be registered either in an SSL_CTX or per SSL.
46 The purpose of this is to allow applications to control, if they wish,
47 the arbitrary values chosen for use as session IDs, particularly as it
48 can be useful for session caching in multiple-server environments. A
49 command-line switch for testing this (and any client code that wishes
50 to use such a feature) has been added to "s_server".
51 [Geoff Thorpe, Lutz Jaenicke]
52
d399fdf8
RL
53 *) Modify mkdef.pl to recognise and parse prprocessor conditionals
54 of the form '#if defined(...) || defined(...) || ...' and
55 '#if !defined(...) && !defined(...) && ...'. This also avoids
56 the growing number of special cases it was previously handling.
57 [Richard Levitte]
58
5003a61b
UM
59 *) Don't use getenv in library functions when run as setuid/setgid.
60 New function OPENSSL_issetugid().
61 [Ulf Moeller]
62
cf1b7d96
RL
63 *) Make all configuration macros available for application by making
64 sure they are available in opensslconf.h, by giving them names starting
65 with "OPENSSL_" to avoid conflicts with other packages and by making
66 sure e_os2.h will cover all platform-specific cases together with
67 opensslconf.h.
2affbab9
RL
68 Additionally, it is now possible to define configuration/platform-
69 specific names (called "system identities"). In the C code, these
70 are prefixed with "OPENSSL_SYSNAME_". e_os2.h will create another
71 macro with the name beginning with "OPENSSL_SYS_", which is determined
72 from "OPENSSL_SYSNAME_*" or compiler-specific macros depending on
73 what is available.
cf1b7d96
RL
74 [Richard Levitte]
75
acba75c5
DSH
76 *) New option -set_serial to 'req' and 'x509' this allows the serial
77 number to use to be specified on the command line. Previously self
78 signed certificates were hard coded with serial number 0 and the
79 CA options of 'x509' had to use a serial number in a file which was
80 auto incremented.
81 [Steve Henson]
82
934397ec
BM
83 *) Avoid false positives in memory leak detection code (crypto/mem_dbg.c)
84 due to incorrect handling of multi-threading:
85
86 1. Fix timing glitch in the MemCheck_off() portion of CRYPTO_mem_ctrl().
87
88 2. Fix logical glitch in is_MemCheck_on() aka CRYPTO_is_mem_check_on().
89
90 3. Count how many times MemCheck_off() has been called so that
91 nested use can be treated correctly. This also avoids
92 inband-signalling in the previous code (which relied on the
93 assumption that thread ID 0 is impossible).
94 [Bodo Moeller]
95
a6b7ffdd
DSH
96 *) New options to 'ca' utility to support V2 CRL entry extensions.
97 Currently CRL reason, invalidity date and hold instruction are
98 supported. Add new CRL extensions to V3 code and some new objects.
99 [Steve Henson]
100
f30d34f3
LJ
101 *) Add "-rand" option also to s_client and s_server.
102 [Lutz Jaenicke]
103
f2e5ca84
DSH
104 *) New function EVP_CIPHER_CTX_set_padding() this is used to
105 disable standard block padding (aka PKCS#5 padding) in the EVP
106 API, which was previously mandatory. This means that the data is
107 not padded in any way and so the total length much be a multiple
108 of the block size, otherwise an error occurs.
109 [Steve Henson]
110
cdc7b8cc
DSH
111 *) Initial (incomplete) OCSP SSL support.
112 [Steve Henson]
113
720235ee
UM
114 *) Fix CPU detection on Irix 6.x.
115 [Kurt Hockenbury <khockenb@stevens-tech.edu> and
116 "Bruce W. Forsberg" <bruce.forsberg@baesystems.com>]
117
67c18019
DSH
118 *) New function OCSP_parse_url(). This splits up a URL into its host,
119 port and path components: primarily to parse OCSP URLs. New -url
120 option to ocsp utility.
121 [Steve Henson]
122
46a58ab9
DSH
123 *) New nonce behavior. The return value of OCSP_check_nonce() now
124 reflects the various checks performed. Applications can decide
125 whether to tolerate certain situations such as an absent nonce
126 in a response when one was present in a request: the ocsp application
127 just prints out a warning. New function OCSP_add1_basic_nonce()
128 this is to allow responders to include a nonce in a response even if
129 the request is nonce-less.
130 [Steve Henson]
131
94fcd013
DSH
132 *) Use the cached encoding of an X509_NAME structure rather than
133 copying it. This is apparently the reason for the libsafe "errors"
134 but the code is actually correct.
135 [Steve Henson]
136
620cea37
BM
137 *) Disable stdin buffering in load_cert (apps/apps.c) so that no certs are
138 skipped when using openssl x509 multiple times on a single input file,
139 e.g. "(openssl x509 -out cert1; openssl x509 -out cert2) <certs".
140 [Bodo Moeller]
141
ccb08f98
DSH
142 *) Make ASN1_UTCTIME_set_string() and ASN1_GENERALIZEDTIME_set_string()
143 set string type: to handle setting ASN1_TIME structures. Fix ca
144 utility to correctly initialize revocation date of CRLs.
145 [Steve Henson]
146
836f9960
LJ
147 *) New option SSL_OP_CIPHER_SERVER_PREFERENCE allows the server to override
148 the clients preferred ciphersuites and rather use its own preferences.
149 Should help to work around M$ SGC (Server Gated Cryptography) bug in
150 Internet Explorer by ensuring unchanged hash method during stepup.
151 [Lutz Jaenicke]
152
c47c6196
DSH
153 *) Make mkdef.pl recognise all DECLARE_ASN1 macros, change rijndael
154 to aes and add a new 'exist' option to print out symbols that don't
155 appear to exist.
156 [Steve Henson]
157
8c950429
DSH
158 *) Additional options to ocsp utility to allow flags to be set and
159 additional certificates supplied.
160 [Steve Henson]
161
9235adbf
RL
162 *) Add the option -VAfile to 'openssl ocsp', so the user can give the
163 OCSP client a number of certificate to only verify the response
164 signature against.
165 [Richard Levitte]
166
57e7d3ce
UM
167 *) Add new function BN_rand_range(), and fix DSA_sign_setup() to prevent
168 Bleichenbacher's DSA attack.
f2bc6684
BM
169 Extend BN_[pseudo_]rand: As before, top=1 forces the highest two bits
170 to be set and top=0 forces the highest bit to be set; top=-1 is new
171 and leaves the highest bit random.
35ed8cb8 172 [Ulf Moeller, Bodo Moeller]
57e7d3ce 173
deb2c1a1
DSH
174 *) Update Rijndael code to version 3.0 and change EVP AES ciphers to
175 handle the new API. Currently only ECB, CBC modes supported. Add new
176 AES OIDs. Add TLS AES ciphersuites as described in the "AES Ciphersuites
177 for TLS" draft-ietf-tls-ciphersuite-03.txt.
178 [Ben Laurie, Steve Henson]
179
9eea2be6
BM
180 *) In the NCONF_...-based implementations for CONF_... queries
181 (crypto/conf/conf_lib.c), if the input LHASH is NULL, avoid using
182 a temporary CONF structure with the data component set to NULL
183 (which gives segmentation faults in lh_retrieve).
184 Instead, use NULL for the CONF pointer in CONF_get_string and
185 CONF_get_number (which may use environment variables) and directly
186 return NULL from CONF_get_section.
187 [Bodo Moeller]
188
741a9690
UM
189 *) Fix potential buffer overrun for EBCDIC.
190 [Ulf Moeller]
191
26e083cc
DSH
192 *) New function OCSP_copy_nonce() to copy nonce value (if present) from
193 request to response.
194 [Steve Henson]
195
02e4fbed
DSH
196 *) Functions for OCSP responders. OCSP_request_onereq_count(),
197 OCSP_request_onereq_get0(), OCSP_onereq_get0_id() and OCSP_id_get0_info()
198 extract information from a certificate request. OCSP_response_create()
199 creates a response and optionally adds a basic response structure.
200 OCSP_basic_add1_status() adds a complete single response to a basic
201 reponse and returns the OCSP_SINGLERESP structure just added (to allow
202 extensions to be included for example). OCSP_basic_add1_cert() adds a
203 certificate to a basic response and OCSP_basic_sign() signs a basic
204 response with various flags. New helper functions ASN1_TIME_check()
205 (checks validity of ASN1_TIME structure) and ASN1_TIME_to_generalizedtime()
206 (converts ASN1_TIME to GeneralizedTime).
207 [Steve Henson]
208
88ce56f8
DSH
209 *) Various new functions. EVP_Digest() combines EVP_Digest{Init,Update,Final}()
210 in a single operation. X509_get0_pubkey_bitstr() extracts the public_key
211 structure from a certificate. X509_pubkey_digest() digests tha public_key
212 contents: this is used in various key identifiers.
213 [Steve Henson]
214
8cff6331
DSH
215 *) Tolerate nonRepudiation as being valid for S/MIME signing and certSign
216 keyUsage if basicConstraints absent for a CA.
217 [Steve Henson]
218
903872d6
RL
219 *) Make SMIME_write_PKCS7() write mail header values with a format that
220 is more generally accepted (no spaces before the semicolon), since
221 some programs can't parse those values properly otherwise. Also make
222 sure BIO's that break lines after each write do not create invalid
223 headers.
224 [Richard Levitte]
225
b8470240
DSH
226 *) Make sk_sort() tolerate a NULL argument.
227 [Steve Henson reported by Massimiliano Pala <madwolf@comune.modena.it>]
228
50d51991
DSH
229 *) New OCSP verify flag OCSP_TRUSTOTHER. When set the "other" certificates
230 passed by the function are trusted implicitly. If any of them signed the
231 reponse then it is assumed to be valid and is not verified.
232 [Steve Henson]
233
a342cc5a
DSH
234 *) Zero the premaster secret after deriving the master secret in
235 DH ciphersuites.
236 [Steve Henson]
237
a43cf9fa
DSH
238 *) In PKCS7_set_type() initialise content_type in PKCS7_ENC_CONTENT
239 to data. This was previously part of the PKCS7 ASN1 code. This
240 was causing problems with OpenSSL created PKCS#12 and PKCS#7 structures.
241 [Steve Henson, reported by Kenneth R. Robinette
242 <support@securenetterm.com>]
243
244 *) Add CRYPTO_push_info() and CRYPTO_pop_info() calls to new ASN1
245 routines: without these tracing memory leaks is very painful.
246 Fix leaks in PKCS12 and PKCS7 routines.
247 [Steve Henson]
248
75802000
UM
249 *) Fix for Irix with NO_ASM.
250 ["Bruce W. Forsberg" <bruce.forsberg@baesystems.com>]
251
ae0665b8
BM
252 *) Add some EVP_add_digest_alias registrations (as found in
253 OpenSSL_add_all_digests()), to SSL_library_init()
254 aka OpenSSL_add_ssl_algorithms(). This provides improved
255 compatibility with peers using X.509 certificates
256 with unconventional AlgorithmIdentifier OIDs.
257 [Bodo Moeller]
258
893b76c5
UM
259 *) ./config script fixes.
260 [Ulf Moeller, Richard Levitte]
261
ba8e2824
DSH
262 *) Make X509_time_adj() cope with the new behaviour of ASN1_TIME_new().
263 Previously it initialised the 'type' argument to V_ASN1_UTCTIME which
264 effectively meant GeneralizedTime would never be used. Now it
265 is initialised to -1 but X509_time_adj() now has to check the value
266 and use ASN1_TIME_set() if the value is not V_ASN1_UTCTIME or
267 V_ASN1_GENERALIZEDTIME, without this it always uses GeneralizedTime.
268 [Steve Henson, reported by Kenneth R. Robinette
269 <support@securenetterm.com>]
270
8e8972bb
DSH
271 *) Fixes to BN_to_ASN1_INTEGER when bn is zero. This would previously
272 result in a zero length in the ASN1_INTEGER structure which was
273 not consistent with the structure when d2i_ASN1_INTEGER() was used
274 and would cause ASN1_INTEGER_cmp() to fail. Enhance s2i_ASN1_INTEGER()
275 to cope with hex and negative integers. Fix bug in i2a_ASN1_INTEGER()
276 where it did not print out a minus for negative ASN1_INTEGER.
277 [Steve Henson]
278
57108f0a
BM
279 *) Fix 'openssl passwd -1'.
280 [Bodo Moeller]
281
73758d43
DSH
282 *) Add summary printout to ocsp utility. The various functions which
283 convert status values to strings have been renamed to:
284 OCSP_response_status_str(), OCSP_cert_status_str() and
285 OCSP_crl_reason_str() and are no longer static. New options
286 to verify nonce values and to disable verification. OCSP response
287 printout format cleaned up.
288 [Steve Henson]
289
e8af92fc
DSH
290 *) Add additional OCSP certificate checks. These are those specified
291 in RFC2560. This consists of two separate checks: the CA of the
292 certificate being checked must either be the OCSP signer certificate
293 or the issuer of the OCSP signer certificate. In the latter case the
294 OCSP signer certificate must contain the OCSP signing extended key
295 usage. This check is performed by attempting to match the OCSP
296 signer or the OCSP signer CA to the issuerNameHash and issuerKeyHash
297 in the OCSP_CERTID structures of the response.
298 [Steve Henson]
299
81f169e9
DSH
300 *) Initial OCSP certificate verification added to OCSP_basic_verify()
301 and related routines. This uses the standard OpenSSL certificate
302 verify routines to perform initial checks (just CA validity) and
303 to obtain the certificate chain. Then additional checks will be
304 performed on the chain. Currently the root CA is checked to see
305 if it is explicitly trusted for OCSP signing. This is used to set
306 a root CA as a global signing root: that is any certificate that
307 chains to that CA is an acceptable OCSP signing certificate.
308 [Steve Henson]
309
dfebac32
BM
310 *) New '-extfile ...' option to 'openssl ca' for reading X.509v3
311 extensions from a separate configuration file.
312 As when reading extensions from the main configuration file,
313 the '-extensions ...' option may be used for specifying the
314 section to use.
315 [Massimiliano Pala <madwolf@comune.modena.it>]
316
6308af19
DSH
317 *) Change PKCS12_key_gen_asc() so it can cope with non null
318 terminated strings whose length is passed in the passlen
319 parameter, for example from PEM callbacks. This was done
320 by adding an extra length parameter to asc2uni().
321 [Steve Henson, reported by <oddissey@samsung.co.kr>]
322
5782ceb2
DSH
323 *) New OCSP utility. Allows OCSP requests to be generated or
324 read. The request can be sent to a responder and the output
325 parsed, outputed or printed in text form. Not complete yet:
326 still needs to check the OCSP response validity.
327 [Steve Henson]
328
c67cdb50
BM
329 *) New subcommands for 'openssl ca':
330 'openssl ca -status <serial>' prints the status of the cert with
331 the given serial number (according to the index file).
332 'openssl ca -updatedb' updates the expiry status of certificates
333 in the index file.
334 [Massimiliano Pala <madwolf@comune.modena.it>]
335
d199858e
BM
336 *) New '-newreq-nodes' command option to CA.pl. This is like
337 '-newreq', but calls 'openssl req' with the '-nodes' option
338 so that the resulting key is not encrypted.
339 [Damien Miller <djm@mindrot.org>]
340
10a2975a
RL
341 *) New configuration for the GNU Hurd.
342 [Jonathan Bartlett <johnnyb@wolfram.com> via Richard Levitte]
343
9b4dc830
DSH
344 *) Initial code to implement OCSP basic response verify. This
345 is currently incomplete. Currently just finds the signer's
346 certificate and verifies the signature on the response.
347 [Steve Henson]
348
673b3fde
BM
349 *) New SSLeay_version code SSLEAY_DIR to determine the compiled-in
350 value of OPENSSLDIR. This is available via the new '-d' option
351 to 'openssl version', and is also included in 'openssl version -a'.
352 [Bodo Moeller]
353
c06648f7
BM
354 *) Fix C code generated by 'openssl dsaparam -C': If a BN_bin2bn
355 call failed, free the DSA structure.
356 [Bodo Moeller]
357
a5435e8b
BM
358 *) Allowing defining memory allocation callbacks that will be given
359 file name and line number information in additional arguments
360 (a const char* and an int). The basic functionality remains, as
361 well as the original possibility to just replace malloc(),
362 realloc() and free() by functions that do not know about these
363 additional arguments. To register and find out the current
364 settings for extended allocation functions, the following
365 functions are provided:
65a22e8e
RL
366
367 CRYPTO_set_mem_ex_functions
368 CRYPTO_set_locked_mem_ex_functions
369 CRYPTO_get_mem_ex_functions
370 CRYPTO_get_locked_mem_ex_functions
371
a5435e8b
BM
372 These work the same way as CRYPTO_set_mem_functions and friends.
373 CRYPTO_get_[locked_]mem_functions now writes 0 where such an
374 extended allocation function is enabled.
375 Similarly, CRYPTO_get_[locked_]mem_ex_functions writes 0 where
376 a conventional allocation function is enabled.
377 [Richard Levitte, Bodo Moeller]
65a22e8e 378
cbf0f45f
DSH
379 *) Fix to uni2asc() to cope with zero length Unicode strings.
380 These are present in some PKCS#12 files.
381 [Steve Henson]
382
3c914840
GT
383 *) Finish off removing the remaining LHASH function pointer casts.
384 There should no longer be any prototype-casting required when using
56a67adb
GT
385 the LHASH abstraction, and any casts that remain are "bugs". See
386 the callback types and macros at the head of lhash.h for details
387 (and "OBJ_cleanup" in crypto/objects/obj_dat.c as an example).
3c914840
GT
388 [Geoff Thorpe]
389
599c0353
LJ
390 *) Add automatic query of EGD sockets in RAND_poll() for the unix variant.
391 If an EGD or PRNGD is running and enough entropy is returned, automatic
392 seeding like with /dev/[u]random will be performed.
393 Positions tried are: /etc/entropy, /var/run/egd-pool.
394 [Lutz Jaenicke]
395
0c61e299 396 *) Change the Unix RAND_poll() variant to be able to poll several
361ef5f4
RL
397 random devices, as specified by DEVRANDOM, until a sufficient amount
398 of data has been collected. We spend at most 10 ms on each file
399 (select timeout) and read in non-blocking mode. DEVRANDOM now
400 defaults to the list "/dev/urandom", "/dev/random", "/dev/srandom"
401 (previously it was just the string "/dev/urandom"), so on typical
402 platforms the 10 ms delay will never occur.
403 Also separate out the Unix variant to its own file, rand_unix.c.
404 For VMS, there's a currently-empty rand_vms.c.
0c61e299
RL
405 [Richard Levitte]
406
0b33bc65
DSH
407 *) Move OCSP client related routines to ocsp_cl.c. These
408 provide utility functions which an application needing
409 to issue a request to an OCSP responder and analyse the
410 response will typically need: as opposed to those which an
411 OCSP responder itself would need which will be added later.
412
413 OCSP_request_sign() signs an OCSP request with an API similar
414 to PKCS7_sign(). OCSP_response_status() returns status of OCSP
415 response. OCSP_response_get1_basic() extracts basic response
416 from response. OCSP_resp_find_status(): finds and extracts status
417 information from an OCSP_CERTID structure (which will be created
418 when the request structure is built). These are built from lower
419 level functions which work on OCSP_SINGLERESP structures but
420 wont normally be used unless the application wishes to examine
421 extensions in the OCSP response for example.
422
423 Replace nonce routines with a pair of functions.
424 OCSP_request_add1_nonce() adds a nonce value and optionally
425 generates a random value. OCSP_check_nonce() checks the
426 validity of the nonce in an OCSP response.
427 [Steve Henson]
428
429 *) Change function OCSP_request_add() to OCSP_request_add0_id().
8e961835
DSH
430 This doesn't copy the supplied OCSP_CERTID and avoids the
431 need to free up the newly created id. Change return type
432 to OCSP_ONEREQ to return the internal OCSP_ONEREQ structure.
433 This can then be used to add extensions to the request.
434 Deleted OCSP_request_new(), since most of its functionality
435 is now in OCSP_REQUEST_new() (and the case insensitive name
436 clash) apart from the ability to set the request name which
437 will be added elsewhere.
438 [Steve Henson]
439
bf0d176e
DSH
440 *) Update OCSP API. Remove obsolete extensions argument from
441 various functions. Extensions are now handled using the new
442 OCSP extension code. New simple OCSP HTTP function which
443 can be used to send requests and parse the response.
444 [Steve Henson]
445
ec5add87
DSH
446 *) Fix the PKCS#7 (S/MIME) code to work with new ASN1. Two new
447 ASN1_ITEM structures help with sign and verify. PKCS7_ATTR_SIGN
448 uses the special reorder version of SET OF to sort the attributes
449 and reorder them to match the encoded order. This resolves a long
450 standing problem: a verify on a PKCS7 structure just after signing
451 it used to fail because the attribute order did not match the
452 encoded order. PKCS7_ATTR_VERIFY does not reorder the attributes:
453 it uses the received order. This is necessary to tolerate some broken
454 software that does not order SET OF. This is handled by encoding
455 as a SEQUENCE OF but using implicit tagging (with UNIVERSAL class)
456 to produce the required SET OF.
457 [Steve Henson]
458
a6574c21
RL
459 *) Have mk1mf.pl generate the macros OPENSSL_BUILD_SHLIBCRYPTO and
460 OPENSSL_BUILD_SHLIBSSL and use them appropriately in the header
461 files to get correct declarations of the ASN.1 item variables.
462 [Richard Levitte]
463
ecbe0781
DSH
464 *) Rewrite of PKCS#12 code to use new ASN1 functionality. Replace many
465 PKCS#12 macros with real functions. Fix two unrelated ASN1 bugs:
466 asn1_check_tlen() would sometimes attempt to use 'ctx' when it was
467 NULL and ASN1_TYPE was not dereferenced properly in asn1_ex_c2i().
468 New ASN1 macro: DECLARE_ASN1_ITEM() which just declares the relevant
469 ASN1_ITEM and no wrapper functions.
470 [Steve Henson]
471
4e1209eb
DSH
472 *) New functions or ASN1_item_d2i_fp() and ASN1_item_d2i_bio(). These
473 replace the old function pointer based I/O routines. Change most of
474 the *_d2i_bio() and *_d2i_fp() functions to use these.
475 [Steve Henson]
476
3f07fe09
RL
477 *) Enhance mkdef.pl to be more accepting about spacing in C preprocessor
478 lines, recognice more "algorithms" that can be deselected, and make
479 it complain about algorithm deselection that isn't recognised.
480 [Richard Levitte]
481
78d3b819 482 *) New ASN1 functions to handle dup, sign, verify, digest, pack and
73e92de5
DSH
483 unpack operations in terms of ASN1_ITEM. Modify existing wrappers
484 to use new functions. Add NO_ASN1_OLD which can be set to remove
485 some old style ASN1 functions: this can be used to determine if old
486 code will still work when these eventually go away.
09ab755c
DSH
487 [Steve Henson]
488
ec558b65
DSH
489 *) New extension functions for OCSP structures, these follow the
490 same conventions as certificates and CRLs.
491 [Steve Henson]
492
57d2f217
DSH
493 *) New function X509V3_add1_i2d(). This automatically encodes and
494 adds an extension. Its behaviour can be customised with various
495 flags to append, replace or delete. Various wrappers added for
496 certifcates and CRLs.
497 [Steve Henson]
498
5755cab4
DSH
499 *) Fix to avoid calling the underlying ASN1 print routine when
500 an extension cannot be parsed. Correct a typo in the
501 OCSP_SERVICELOC extension. Tidy up print OCSP format.
502 [Steve Henson]
503
3880cd35
BM
504 *) Increase s2->wbuf allocation by one byte in ssl2_new (ssl/s2_lib.c).
505 Otherwise do_ssl_write (ssl/s2_pkt.c) will write beyond buffer limits
506 when writing a 32767 byte record.
507 [Bodo Moeller; problem reported by Eric Day <eday@concentric.net>]
508
f640ee90 509 *) In RSA_eay_public_{en,ed}crypt and RSA_eay_mod_exp (rsa_eay.c),
126fe085 510 obtain lock CRYPTO_LOCK_RSA before setting rsa->_method_mod_{n,p,q}.
f640ee90
BM
511
512 (RSA objects have a reference count access to which is protected
513 by CRYPTO_LOCK_RSA [see rsa_lib.c, s3_srvr.c, ssl_cert.c, ssl_rsa.c],
514 so they are meant to be shared between threads.)
126fe085
BM
515 [Bodo Moeller, Geoff Thorpe; original patch submitted by
516 "Reddie, Steven" <Steven.Reddie@ca.com>]
f640ee90 517
9c67ab2f
DSH
518 *) Make mkdef.pl parse some of the ASN1 macros and add apropriate
519 entries for variables.
5755cab4 520 [Steve Henson]
9c67ab2f 521
1456d186
BM
522 *) Fix a deadlock in CRYPTO_mem_leaks().
523 [Bodo Moeller]
524
3ac82faa
BM
525 *) Add functionality to apps/openssl.c for detecting locking
526 problems: As the program is single-threaded, all we have
527 to do is register a locking callback using an array for
528 storing which locks are currently held by the program.
3ac82faa
BM
529 [Bodo Moeller]
530
531 *) Use a lock around the call to CRYPTO_get_ex_new_index() in
532 SSL_get_ex_data_X509_STORE_idx(), which is used in
533 ssl_verify_cert_chain() and thus can be called at any time
534 during TLS/SSL handshakes so that thread-safety is essential.
535 Unfortunately, the ex_data design is not at all suited
536 for multi-threaded use, so it probably should be abolished.
537 [Bodo Moeller]
538
2a86064f
GT
539 *) Added Broadcom "ubsec" ENGINE to OpenSSL.
540 [Broadcom, tweaked and integrated by Geoff Thorpe]
541
2c15d426
DSH
542 *) Move common extension printing code to new function
543 X509V3_print_extensions(). Reorganise OCSP print routines and
c08523d8 544 implement some needed OCSP ASN1 functions. Add OCSP extensions.
2c15d426
DSH
545 [Steve Henson]
546
de487514
DSH
547 *) New function X509_signature_print() to remove duplication in some
548 print routines.
549 [Steve Henson]
550
06db4253
DSH
551 *) Add a special meaning when SET OF and SEQUENCE OF flags are both
552 set (this was treated exactly the same as SET OF previously). This
553 is used to reorder the STACK representing the structure to match the
554 encoding. This will be used to get round a problem where a PKCS7
555 structure which was signed could not be verified because the STACK
556 order did not reflect the encoded order.
557 [Steve Henson]
558
36f554d4
DSH
559 *) Reimplement the OCSP ASN1 module using the new code.
560 [Steve Henson]
561
2aff7727
DSH
562 *) Update the X509V3 code to permit the use of an ASN1_ITEM structure
563 for its ASN1 operations. The old style function pointers still exist
564 for now but they will eventually go away.
565 [Steve Henson]
566
9d6b1ce6 567 *) Merge in replacement ASN1 code from the ASN1 branch. This almost
5755cab4
DSH
568 completely replaces the old ASN1 functionality with a table driven
569 encoder and decoder which interprets an ASN1_ITEM structure describing
570 the ASN1 module. Compatibility with the existing ASN1 API (i2d,d2i) is
571 largely maintained. Almost all of the old asn1_mac.h macro based ASN1
572 has also been converted to the new form.
9d6b1ce6
DSH
573 [Steve Henson]
574
8dea52fa
BM
575 *) Change BN_mod_exp_recp so that negative moduli are tolerated
576 (the sign is ignored). Similarly, ignore the sign in BN_MONT_CTX_set
577 so that BN_mod_exp_mont and BN_mod_exp_mont_word work
578 for negative moduli.
579 [Bodo Moeller]
580
581 *) Fix BN_uadd and BN_usub: Always return non-negative results instead
582 of not touching the result's sign bit.
583 [Bodo Moeller]
584
80d89e6a
BM
585 *) BN_div bugfix: If the result is 0, the sign (res->neg) must not be
586 set.
587 [Bodo Moeller]
588
f1919c3d
GT
589 *) Changed the LHASH code to use prototypes for callbacks, and created
590 macros to declare and implement thin (optionally static) functions
591 that provide type-safety and avoid function pointer casting for the
592 type-specific callbacks.
593 [Geoff Thorpe]
594
1946cd8b
UM
595 *) Use better test patterns in bntest.
596