]> git.ipfire.org Git - thirdparty/openssl.git/blame - CHANGES
Avoid assert() in the library.
[thirdparty/openssl.git] / CHANGES
CommitLineData
81a6c781 1
f1c236f8 2 OpenSSL CHANGES
651d0aff
RE
3 _______________
4
c5e8580e 5 Changes between 0.9.6 and 0.9.7 [xx XXX 2000]
a43cf9fa 6
4ac881ed
RL
7 *) Fix a couple of memory leaks in PKCS7_dataDecode()
8 [Steve Henson, reported by Heyun Zheng <hzheng@atdsprint.com>]
9
967d95f0
RL
10 *) Change Configure and Makefiles to provide EXE_EXT, which will contain
11 the default extension for executables, if any. Also, make the perl
12 scripts that use symlink() to test if it really exists and use "cp"
13 if it doesn't. All this made OpenSSL compilable and installable in
14 CygWin.
15 [Richard Levitte]
16
722ca278
DSH
17 *) Rewrite CHOICE field setting in ASN1_item_ex_d2i(). The old code
18 could not support the combine flag in choice fields.
19 [Steve Henson]
20
884e2608
BM
21 *) Change bctest to avoid here-documents inside command substitution
22 (workaround for FreeBSD /bin/sh bug).
6186ef93
BM
23 For compatibility with Ultrix, avoid shell functions (introduced
24 in the bctest version that searches along $PATH).
884e2608
BM
25 [Bodo Moeller]
26
080b8cad
RL
27 *) Rename 'des_encrypt' to 'des_encrypt1'. This avoids the clashes
28 with des_encrypt() defined on some operating systems, like Solaris
29 and UnixWare.
30 [Richard Levitte]
31
6a5b52ef
UM
32 *) Check the result of RSA-CRT (see D. Boneh, R. DeMillo, R. Lipton:
33 On the Importance of Eliminating Errors in Cryptographic
080b8cad
RL
34 Computations, J. Cryptology 14 (2001) 2, 101-119,
35 http://theory.stanford.edu/~dabo/papers/faults.ps.gz).
36 [Ulf Moeller]
6a5b52ef
UM
37
38 *) MIPS assembler BIGNUM division bug fix.
6d864b70
UM
39 [Andy Polyakov]
40
c9fd9152
UM
41 *) Disabled incorrect Alpha assembler code.
42 [Richard Levitte]
43
02ee8626
DSH
44 *) Fix bug in PKCS#12 key generation routines. This was triggered
45 if a 3DES key was generated with a 0 initial byte. Include
46 PKCS12_BROKEN_KEYGEN compilation option to retain the old
47 (but broken) behaviour.
48 [Steve Henson]
49
6e678305
RL
50 *) Enhance bctest to search for a working bc along $PATH and print
51 it when found.
52 [Tim Rice <tim@multitalents.net> via Richard Levitte]
53
791bd0cd
DSH
54 *) Add a 'copy_extensions' option to the 'ca' utility. This copies
55 extensions from a certificate request to the certificate.
56 [Steve Henson]
57
535d79da
DSH
58 *) Allow multiple 'certopt' and 'nameopt' options to be separated
59 by commas. Add 'namopt' and 'certopt' options to the 'ca' config
60 file: this allows the display of the certificate about to be
61 signed to be customised, to allow certain fields to be included
62 or excluded and extension details. The old system didn't display
63 multicharacter strings properly, omitted fields not in the policy
64 and couldn't display additional details such as extensions.
65 [Steve Henson]
66
5d809414
BM
67 *) Fix memory leaks in err.c: free err_data string if necessary;
68 don't write to the wrong index in ERR_set_error_data.
f51cf14b
BM
69 [Bodo Moeller]
70
48fe4d62 71 *) Function EC_POINTs_mul for simultaneous scalar multiplication
38374911
BM
72 of an arbitrary number of elliptic curve points, optionally
73 including the generator defined for the EC_GROUP.
74 EC_POINT_mul is a simple wrapper function for the typical case
75 that the point list has just one item (besides the optional
76 generator).
48fe4d62
BM
77 [Bodo Moeller]
78
79 *) First EC_METHODs for curves over GF(p):
80
81 EC_GFp_simple_method() uses the basic BN_mod_mul and BN_mod_sqr
82 operations and provides various method functions that can also
83 operate with faster implementations of modular arithmetic.
84
85 EC_GFp_mont_method() reuses most functions that are part of
86 EC_GFp_simple_method, but uses Montgomery arithmetic.
87
88 [Bodo Moeller; point addition and point doubling
89 implementation directly derived from source code provided by
90 Lenka Fibikova <fibikova@exp-math.uni-essen.de>]
91
92 *) Framework for elliptic curves (crypto/ec/ec.h, crypto/ec/ec_lcl.h,
93 crypto/ec/ec_lib.c):
94
6f8f4431
BM
95 Curves are EC_GROUP objects (with an optional group generator)
96 based on EC_METHODs that are built into the library.
48fe4d62
BM
97
98 Points are EC_POINT objects based on EC_GROUP objects.
99
100 Most of the framework would be able to handle curves over arbitrary
6f8f4431
BM
101 finite fields, but as there are no obvious types for fields other
102 than GF(p), some functions are limited to that for now.
48fe4d62
BM
103 [Bodo Moeller]
104
251cb4cf
RL
105 *) Add the -HTTP option to s_server. It is similar to -WWW, but requires
106 that the file contains a complete HTTP response.
107 [Richard Levitte]
108
b4f682d3
DSH
109 *) Add the ec directory to mkdef.pl and mkfiles.pl. In mkdef.pl
110 change the def and num file printf format specifier from "%-40sXXX"
111 to "%-39s XXX". The latter will always guarantee a space after the
112 field while the former will cause them to run together if the field
113 is 40 of more characters long.
114 [Steve Henson]
115
13588350
DSH
116 *) Constify the cipher and digest 'method' functions and structures
117 and modify related functions to take constant EVP_MD and EVP_CIPHER
118 pointers.
119 [Steve Henson]
120
c1081080
BM
121 *) Implement ssl23_peek (analogous to ssl23_read), which previously
122 did not exist.
123 [Bodo Moeller]
124
bb62a8b0
BM
125 *) Replace rdtsc with _emit statements for VC++ version 5.
126 [Jeremy Cooper <jeremy@baymoo.org>]
bd9e2e4c 127
c62b26fd 128 *) Hide BN_CTX structure details in bn_lcl.h instead of publishing them
48fe4d62 129 in <openssl/bn.h>. Also further increase BN_CTX_NUM to 32.
c62b26fd
BM
130 [Bodo Moeller]
131
2dc769a1
DSH
132 *) Modify EVP_Digest*() routines so they now return values. Although the
133 internal software routines can never fail additional hardware versions
134 might.
135 [Steve Henson]
136
5277d7cb
BM
137 *) Clean up crypto/err/err.h and change some error codes to avoid conflicts:
138
139 Previously ERR_R_FATAL was too small and coincided with ERR_LIB_PKCS7
140 (= ERR_R_PKCS7_LIB); it is now 64 instead of 32.
141
142 ASN1 error codes
143 ERR_R_NESTED_ASN1_ERROR
144 ...
145 ERR_R_MISSING_ASN1_EOS
146 were 4 .. 9, conflicting with
147 ERR_LIB_RSA (= ERR_R_RSA_LIB)
148 ...
149 ERR_LIB_PEM (= ERR_R_PEM_LIB).
150 They are now 58 .. 63 (i.e., just below ERR_R_FATAL).
151
152 Add new error code 'ERR_R_INTERNAL_ERROR'.
153 [Bodo Moeller]
154
155 *) Don't overuse locks in crypto/err/err.c: For data retrieval, CRYPTO_r_lock
156 suffices.
157 [Bodo Moeller]
158
bad40585
BM
159 *) New option '-subj arg' for 'openssl req' and 'openssl ca'. This
160 sets the subject name for a new request or supersedes the
161 subject name in a given request. Formats that can be parsed are
162 'CN=Some Name, OU=myOU, C=IT'
163 and
164 'CN=Some Name/OU=myOU/C=IT'.
165
166 Add options '-batch' and '-verbose' to 'openssl req'.
167 [Massimiliano Pala <madwolf@hackmasters.net>]
168
757a8b46
RL
169 *) Make it possible to reuse SSLv2 sessions.
170 [Richard Levitte]
171
62dc5aad
RL
172 *) Introduce the possibility to access global variables through
173 functions on platform were that's the best way to handle exporting
174 global variables in shared libraries. To enable this functionality,
175 one must configure with "EXPORT_VAR_AS_FN" or defined the C macro
176 "OPENSSL_EXPORT_VAR_AS_FUNCTION" in crypto/opensslconf.h (the latter
177 is normally done by Configure or something similar).
178
179 To implement a global variable, use the macro OPENSSL_IMPLEMENT_GLOBAL
180 in the source file (foo.c) like this:
181
182 OPENSSL_IMPLEMENT_GLOBAL(int,foo)=1;
183 OPENSSL_IMPLEMENT_GLOBAL(double,bar);
184
185 To declare a global variable, use the macros OPENSSL_DECLARE_GLOBAL
186 and OPENSSL_GLOBAL_REF in the header file (foo.h) like this:
187
188 OPENSSL_DECLARE_GLOBAL(int,foo);
189 #define foo OPENSSL_GLOBAL_REF(foo)
190 OPENSSL_DECLARE_GLOBAL(double,bar);
191 #define bar OPENSSL_GLOBAL_REF(bar)
192
193 The #defines are very important, and therefore so is including the
194 header file everywere where the defined globals are used.
195
196 The macro OPENSSL_EXPORT_VAR_AS_FUNCTION also affects the definition
197 of ASN.1 items, but that structure is a bt different.
198
199 The largest change is in util/mkdef.pl which has been enhanced with
200 better and easier to understand logic to choose which symbols should
201 go into the Windows .def files as well as a number of fixes and code
202 cleanup (among others, algorithm keywords are now sorted
203 lexicographically to avoid constant rewrites).
204 [Richard Levitte]
205
f23478c3
DSH
206 *) In copy_email() check for >= 0 as a return value for
207 X509_NAME_get_index_by_NID() since 0 is a valid index.
208 [Steve Henson reported by Massimiliano Pala <madwolf@opensca.org>]
209
3d2e469c
DSH
210 *) In BN_div() keep a copy of the sign of 'num' before writing the
211 result to 'rm' because if rm==num the value will be overwritten
212 and produce the wrong result if 'num' is negative: this caused
213 problems with BN_mod() and BN_nnmod().
214 [Steve Henson]
215
fafc7f98
DSH
216 *) Function OCSP_request_verify(). This checks the signature on an
217 OCSP request and verifies the signer certificate. The signer
218 certificate is just checked for a generic purpose and OCSP request
219 trust settings.
220 [Steve Henson]
221
f1965221
DSH
222 *) Add OCSP_check_validity() function to check the validity of OCSP
223 responses. OCSP responses are prepared in real time and may only
224 be a few seconds old. Simply checking that the current time lies
225 between thisUpdate and nextUpdate max reject otherwise valid responses
226 caused by either OCSP responder or client clock innacuracy. Instead
227 we allow thisUpdate and nextUpdate to fall within a certain period of
228 the current time. The age of the response can also optionally be
229 checked. Two new options -validity_period and -status_age added to
230 ocsp utility.
231 [Steve Henson]
232
4ff18c8c
DSH
233 *) If signature or public key algorithm is unrecognized print out its
234 OID rather that just UNKOWN.
235 [Steve Henson]
236
db4a4659
DSH
237 *) Avoid coredump with unsupported or invalid public keys by checking if
238 X509_get_pubkey() fails in PKCS7_verify(). Fix memory leak when
239 PKCS7_verify() fails with non detached data.
240 [Steve Henson]
241
d7c06e9e
DSH
242 *) Change OCSP_cert_to_id() to tolerate a NULL subject certificate and
243 OCSP_cert_id_new() a NULL serialNumber. This allows a partial certificate
244 ID to be generated from the issuer certificate alone which can then be
245 passed to OCSP_id_issuer_cmp().
246 [Steve Henson]
247
386828d0
DSH
248 *) New compilation option ASN1_ITEM_FUNCTIONS. This causes the new
249 ASN1 modules to export functions returning ASN1_ITEM pointers
250 instead of the ASN1_ITEM structures themselves. This adds several
251 new macros which allow the underlying ASN1 function/structure to
252 be accessed transparently. As a result code should not use ASN1_ITEM
253 references directly (such as &X509_it) but instead use the relevant
254 macros (such as ASN1_ITEM_rptr(X509)). This option is to allow
255 use of the new ASN1 code on platforms where exporting structures
256 is problematical (for example in shared libraries) but exporting
257 functions returning pointers to structures is not.
258 [Steve Henson]
259
fa2b8db4
GT
260 *) Add support for overriding the generation of SSL/TLS session IDs.
261 These callbacks can be registered either in an SSL_CTX or per SSL.
262 The purpose of this is to allow applications to control, if they wish,
263 the arbitrary values chosen for use as session IDs, particularly as it
264 can be useful for session caching in multiple-server environments. A
265 command-line switch for testing this (and any client code that wishes
266 to use such a feature) has been added to "s_server".
267 [Geoff Thorpe, Lutz Jaenicke]
268
d399fdf8
RL
269 *) Modify mkdef.pl to recognise and parse prprocessor conditionals
270 of the form '#if defined(...) || defined(...) || ...' and
271 '#if !defined(...) && !defined(...) && ...'. This also avoids
272 the growing number of special cases it was previously handling.
273 [Richard Levitte]
274
5003a61b
UM
275 *) Don't use getenv in library functions when run as setuid/setgid.
276 New function OPENSSL_issetugid().
277 [Ulf Moeller]
278
cf1b7d96
RL
279 *) Make all configuration macros available for application by making
280 sure they are available in opensslconf.h, by giving them names starting
281 with "OPENSSL_" to avoid conflicts with other packages and by making
282 sure e_os2.h will cover all platform-specific cases together with
283 opensslconf.h.
2affbab9
RL
284 Additionally, it is now possible to define configuration/platform-
285 specific names (called "system identities"). In the C code, these
286 are prefixed with "OPENSSL_SYSNAME_". e_os2.h will create another
287 macro with the name beginning with "OPENSSL_SYS_", which is determined
288 from "OPENSSL_SYSNAME_*" or compiler-specific macros depending on
289 what is available.
cf1b7d96
RL
290 [Richard Levitte]
291
acba75c5
DSH
292 *) New option -set_serial to 'req' and 'x509' this allows the serial
293 number to use to be specified on the command line. Previously self
294 signed certificates were hard coded with serial number 0 and the
295 CA options of 'x509' had to use a serial number in a file which was
296 auto incremented.
297 [Steve Henson]
298
934397ec
BM
299 *) Avoid false positives in memory leak detection code (crypto/mem_dbg.c)
300 due to incorrect handling of multi-threading:
301
302 1. Fix timing glitch in the MemCheck_off() portion of CRYPTO_mem_ctrl().
303
304 2. Fix logical glitch in is_MemCheck_on() aka CRYPTO_is_mem_check_on().
305
306 3. Count how many times MemCheck_off() has been called so that
307 nested use can be treated correctly. This also avoids
308 inband-signalling in the previous code (which relied on the
309 assumption that thread ID 0 is impossible).
310 [Bodo Moeller]
311
a6b7ffdd
DSH
312 *) New options to 'ca' utility to support V2 CRL entry extensions.
313 Currently CRL reason, invalidity date and hold instruction are
314 supported. Add new CRL extensions to V3 code and some new objects.
315 [Steve Henson]
316
f30d34f3
LJ
317 *) Add "-rand" option also to s_client and s_server.
318 [Lutz Jaenicke]
319
f2e5ca84
DSH
320 *) New function EVP_CIPHER_CTX_set_padding() this is used to
321 disable standard block padding (aka PKCS#5 padding) in the EVP
322 API, which was previously mandatory. This means that the data is
323 not padded in any way and so the total length much be a multiple
324 of the block size, otherwise an error occurs.
325 [Steve Henson]
326
cdc7b8cc
DSH
327 *) Initial (incomplete) OCSP SSL support.
328 [Steve Henson]
329
720235ee
UM
330 *) Fix CPU detection on Irix 6.x.
331 [Kurt Hockenbury <khockenb@stevens-tech.edu> and
332 "Bruce W. Forsberg" <bruce.forsberg@baesystems.com>]
333
67c18019
DSH
334 *) New function OCSP_parse_url(). This splits up a URL into its host,
335 port and path components: primarily to parse OCSP URLs. New -url
336 option to ocsp utility.
337 [Steve Henson]
338
46a58ab9
DSH
339 *) New nonce behavior. The return value of OCSP_check_nonce() now
340 reflects the various checks performed. Applications can decide
341 whether to tolerate certain situations such as an absent nonce
342 in a response when one was present in a request: the ocsp application
343 just prints out a warning. New function OCSP_add1_basic_nonce()
344 this is to allow responders to include a nonce in a response even if
345 the request is nonce-less.
346 [Steve Henson]
347
94fcd013
DSH
348 *) Use the cached encoding of an X509_NAME structure rather than
349 copying it. This is apparently the reason for the libsafe "errors"
350 but the code is actually correct.
351 [Steve Henson]
352
620cea37
BM
353 *) Disable stdin buffering in load_cert (apps/apps.c) so that no certs are
354 skipped when using openssl x509 multiple times on a single input file,
355 e.g. "(openssl x509 -out cert1; openssl x509 -out cert2) <certs".
356 [Bodo Moeller]
357
ccb08f98
DSH
358 *) Make ASN1_UTCTIME_set_string() and ASN1_GENERALIZEDTIME_set_string()
359 set string type: to handle setting ASN1_TIME structures. Fix ca
360 utility to correctly initialize revocation date of CRLs.
361 [Steve Henson]
362
836f9960
LJ
363 *) New option SSL_OP_CIPHER_SERVER_PREFERENCE allows the server to override
364 the clients preferred ciphersuites and rather use its own preferences.
365 Should help to work around M$ SGC (Server Gated Cryptography) bug in
366 Internet Explorer by ensuring unchanged hash method during stepup.
367 [Lutz Jaenicke]
368
c47c6196
DSH
369 *) Make mkdef.pl recognise all DECLARE_ASN1 macros, change rijndael
370 to aes and add a new 'exist' option to print out symbols that don't
371 appear to exist.
372 [Steve Henson]
373
8c950429
DSH
374 *) Additional options to ocsp utility to allow flags to be set and
375 additional certificates supplied.
376 [Steve Henson]
377
9235adbf
RL
378 *) Add the option -VAfile to 'openssl ocsp', so the user can give the
379 OCSP client a number of certificate to only verify the response
380 signature against.
381 [Richard Levitte]
382
57e7d3ce
UM
383 *) Add new function BN_rand_range(), and fix DSA_sign_setup() to prevent
384 Bleichenbacher's DSA attack.
f2bc6684
BM
385 Extend BN_[pseudo_]rand: As before, top=1 forces the highest two bits
386 to be set and top=0 forces the highest bit to be set; top=-1 is new
387 and leaves the highest bit random.
35ed8cb8 388 [Ulf Moeller, Bodo Moeller]
57e7d3ce 389
deb2c1a1
DSH
390 *) Update Rijndael code to version 3.0 and change EVP AES ciphers to
391 handle the new API. Currently only ECB, CBC modes supported. Add new
392 AES OIDs. Add TLS AES ciphersuites as described in the "AES Ciphersuites
393 for TLS" draft-ietf-tls-ciphersuite-03.txt.
394 [Ben Laurie, Steve Henson]
395
9eea2be6
BM
396 *) In the NCONF_...-based implementations for CONF_... queries
397 (crypto/conf/conf_lib.c), if the input LHASH is NULL, avoid using
398 a temporary CONF structure with the data component set to NULL
399 (which gives segmentation faults in lh_retrieve).
400 Instead, use NULL for the CONF pointer in CONF_get_string and
401 CONF_get_number (which may use environment variables) and directly
402 return NULL from CONF_get_section.
403 [Bodo Moeller]
404
741a9690
UM
405 *) Fix potential buffer overrun for EBCDIC.
406 [Ulf Moeller]
407
26e083cc
DSH
408 *) New function OCSP_copy_nonce() to copy nonce value (if present) from
409 request to response.
410 [Steve Henson]
411
02e4fbed
DSH
412 *) Functions for OCSP responders. OCSP_request_onereq_count(),
413 OCSP_request_onereq_get0(), OCSP_onereq_get0_id() and OCSP_id_get0_info()
414 extract information from a certificate request. OCSP_response_create()
415 creates a response and optionally adds a basic response structure.
416 OCSP_basic_add1_status() adds a complete single response to a basic
417 reponse and returns the OCSP_SINGLERESP structure just added (to allow
418 extensions to be included for example). OCSP_basic_add1_cert() adds a
419 certificate to a basic response and OCSP_basic_sign() signs a basic
420 response with various flags. New helper functions ASN1_TIME_check()
421 (checks validity of ASN1_TIME structure) and ASN1_TIME_to_generalizedtime()
422 (converts ASN1_TIME to GeneralizedTime).
423 [Steve Henson]
424
88ce56f8
DSH
425 *) Various new functions. EVP_Digest() combines EVP_Digest{Init,Update,Final}()
426 in a single operation. X509_get0_pubkey_bitstr() extracts the public_key
427 structure from a certificate. X509_pubkey_digest() digests tha public_key
428 contents: this is used in various key identifiers.
429 [Steve Henson]
430
8cff6331
DSH
431 *) Tolerate nonRepudiation as being valid for S/MIME signing and certSign
432 keyUsage if basicConstraints absent for a CA.
433 [Steve Henson]
434
903872d6
RL
435 *) Make SMIME_write_PKCS7() write mail header values with a format that
436 is more generally accepted (no spaces before the semicolon), since
437 some programs can't parse those values properly otherwise. Also make
438 sure BIO's that break lines after each write do not create invalid
439 headers.
440 [Richard Levitte]
441
b8470240
DSH
442 *) Make sk_sort() tolerate a NULL argument.
443 [Steve Henson reported by Massimiliano Pala <madwolf@comune.modena.it>]
444
50d51991
DSH
445 *) New OCSP verify flag OCSP_TRUSTOTHER. When set the "other" certificates
446 passed by the function are trusted implicitly. If any of them signed the
447 reponse then it is assumed to be valid and is not verified.
448 [Steve Henson]
449
a342cc5a
DSH
450 *) Zero the premaster secret after deriving the master secret in
451 DH ciphersuites.
452 [Steve Henson]
453
a43cf9fa
DSH
454 *) In PKCS7_set_type() initialise content_type in PKCS7_ENC_CONTENT
455 to data. This was previously part of the PKCS7 ASN1 code. This
456 was causing problems with OpenSSL created PKCS#12 and PKCS#7 structures.
457 [Steve Henson, reported by Kenneth R. Robinette
458 <support@securenetterm.com>]
459
460 *) Add CRYPTO_push_info() and CRYPTO_pop_info() calls to new ASN1
461 routines: without these tracing memory leaks is very painful.
462 Fix leaks in PKCS12 and PKCS7 routines.
463 [Steve Henson]
464
ae0665b8 465 *) Add some EVP_add_digest_alias registrations (as found in
81a6c781 466 OpenSSL_add_all_digests()) to SSL_library_init()
ae0665b8
BM
467 aka OpenSSL_add_ssl_algorithms(). This provides improved
468 compatibility with peers using X.509 certificates
469 with unconventional AlgorithmIdentifier OIDs.
470 [Bodo Moeller]
471
81a6c781
BM
472 *) Fix for Irix with NO_ASM.
473 ["Bruce W. Forsberg" <bruce.forsberg@baesystems.com>]
474
893b76c5
UM
475 *) ./config script fixes.
476 [Ulf Moeller, Richard Levitte]
477
ba8e2824
DSH
478 *) Make X509_time_adj() cope with the new behaviour of ASN1_TIME_new().
479 Previously it initialised the 'type' argument to V_ASN1_UTCTIME which
480 effectively meant GeneralizedTime would never be used. Now it
481 is initialised to -1 but X509_time_adj() now has to check the value
482 and use ASN1_TIME_set() if the value is not V_ASN1_UTCTIME or
483 V_ASN1_GENERALIZEDTIME, without this it always uses GeneralizedTime.
484 [Steve Henson, reported by Kenneth R. Robinette
485 <support@securenetterm.com>]
486
8e8972bb
DSH
487 *) Fixes to BN_to_ASN1_INTEGER when bn is zero. This would previously
488 result in a zero length in the ASN1_INTEGER structure which was
489 not consistent with the structure when d2i_ASN1_INTEGER() was used
490 and would cause ASN1_INTEGER_cmp() to fail. Enhance s2i_ASN1_INTEGER()
491 to cope with hex and negative integers. Fix bug in i2a_ASN1_INTEGER()
492 where it did not print out a minus for negative ASN1_INTEGER.
493 [Steve Henson]
494
57108f0a
BM
495 *) Fix 'openssl passwd -1'.
496 [Bodo Moeller]
497
73758d43
DSH
498 *) Add summary printout to ocsp utility. The various functions which
499 convert status values to strings have been renamed to:
500 OCSP_response_status_str(), OCSP_cert_status_str() and
501 OCSP_crl_reason_str() and are no longer static. New options
502 to verify nonce values and to disable verification. OCSP response
503 printout format cleaned up.
504 [Steve Henson]
505
e8af92fc
DSH
506 *) Add additional OCSP certificate checks. These are those specified
507 in RFC2560. This consists of two separate checks: the CA of the
508 certificate being checked must either be the OCSP signer certificate
509 or the issuer of the OCSP signer certificate. In the latter case the
510 OCSP signer certificate must contain the OCSP signing extended key
511 usage. This check is performed by attempting to match the OCSP
512 signer or the OCSP signer CA to the issuerNameHash and issuerKeyHash
513 in the OCSP_CERTID structures of the response.
514 [Steve Henson]
515
81f169e9
DSH
516 *) Initial OCSP certificate verification added to OCSP_basic_verify()
517 and related routines. This uses the standard OpenSSL certificate
518 verify routines to perform initial checks (just CA validity) and
519 to obtain the certificate chain. Then additional checks will be
520 performed on the chain. Currently the root CA is checked to see
521 if it is explicitly trusted for OCSP signing. This is used to set
522 a root CA as a global signing root: that is any certificate that
523 chains to that CA is an acceptable OCSP signing certificate.
524 [Steve Henson]
525
dfebac32
BM
526 *) New '-extfile ...' option to 'openssl ca' for reading X.509v3
527 extensions from a separate configuration file.
528 As when reading extensions from the main configuration file,
529 the '-extensions ...' option may be used for specifying the
530 section to use.
531 [Massimiliano Pala <madwolf@comune.modena.it>]
532
6308af19
DSH
533 *) Change PKCS12_key_gen_asc() so it can cope with non null
534 terminated strings whose length is passed in the passlen
535 parameter, for example from PEM callbacks. This was done
536 by adding an extra length parameter to asc2uni().
537 [Steve Henson, reported by <oddissey@samsung.co.kr>]
538
5782ceb2
DSH
539 *) New OCSP utility. Allows OCSP requests to be generated or
540 read. The request can be sent to a responder and the output
541 parsed, outputed or printed in text form. Not complete yet:
542 still needs to check the OCSP response validity.
543 [Steve Henson]
544
c67cdb50
BM
545 *) New subcommands for 'openssl ca':
546 'openssl ca -status <serial>' prints the status of the cert with
547 the given serial number (according to the index file).
548 'openssl ca -updatedb' updates the expiry status of certificates
549 in the index file.
550 [Massimiliano Pala <madwolf@comune.modena.it>]
551
d199858e
BM
552 *) New '-newreq-nodes' command option to CA.pl. This is like
553 '-newreq', but calls 'openssl req' with the '-nodes' option
554 so that the resulting key is not encrypted.
555 [Damien Miller <djm@mindrot.org>]
556
10a2975a
RL
557 *) New configuration for the GNU Hurd.
558 [Jonathan Bartlett <johnnyb@wolfram.com> via Richard Levitte]
559
9b4dc830
DSH
560 *) Initial code to implement OCSP basic response verify. This
561 is currently incomplete. Currently just finds the signer's
562 certificate and verifies the signature on the response.
563 [Steve Henson]
564
673b3fde
BM
565 *) New SSLeay_version code SSLEAY_DIR to determine the compiled-in
566 value of OPENSSLDIR. This is available via the new '-d' option
567 to 'openssl version', and is also included in 'openssl version -a'.
568 [Bodo Moeller]
569
c06648f7
BM
570 *) Fix C code generated by 'openssl dsaparam -C': If a BN_bin2bn
571 call failed, free the DSA structure.
572 [Bodo Moeller]
573
a5435e8b
BM
574 *) Allowing defining memory allocation callbacks that will be given
575 file name and line number information in additional arguments
576 (a const char* and an int). The basic functionality remains, as
577 well as the original possibility to just replace malloc(),
578 realloc() and free() by functions that do not know about these
579 additional arguments. To register and find out the current
580 settings for extended allocation functions, the following
581 functions are provided:
65a22e8e
RL
582
583 CRYPTO_set_mem_ex_functions
584 CRYPTO_set_locked_mem_ex_functions
585 CRYPTO_get_mem_ex_functions
586 CRYPTO_get_locked_mem_ex_functions
587
a5435e8b
BM
588 These work the same way as CRYPTO_set_mem_functions and friends.
589 CRYPTO_get_[locked_]mem_functions now writes 0 where such an
590 extended allocation function is enabled.
591 Similarly, CRYPTO_get_[locked_]mem_ex_functions writes 0 where
592 a conventional allocation function is enabled.
593 [Richard Levitte, Bodo Moeller]
65a22e8e 594
cbf0f45f
DSH
595 *) Fix to uni2asc() to cope with zero length Unicode strings.
596 These are present in some PKCS#12 files.
597 [Steve Henson]
598
3c914840
GT
599 *) Finish off removing the remaining LHASH function pointer casts.
600 There should no longer be any prototype-casting required when using
56a67adb
GT
601 the LHASH abstraction, and any casts that remain are "bugs". See
602 the callback types and macros at the head of lhash.h for details
603 (and "OBJ_cleanup" in crypto/objects/obj_dat.c as an example).
3c914840
GT
604 [Geoff Thorpe]
605
599c0353
LJ
606 *) Add automatic query of EGD sockets in RAND_poll() for the unix variant.
607 If an EGD or PRNGD is running and enough entropy is returned, automatic
608 seeding like with /dev/[u]random will be performed.
609 Positions tried are: /etc/entropy, /var/run/egd-pool.
610 [Lutz Jaenicke]
611
0c61e299 612 *) Change the Unix RAND_poll() variant to be able to poll several
361ef5f4
RL
613 random devices, as specified by DEVRANDOM, until a sufficient amount
614 of data has been collected. We spend at most 10 ms on each file
615 (select timeout) and read in non-blocking mode. DEVRANDOM now
616 defaults to the list "/dev/urandom", "/dev/random", "/dev/srandom"
617 (previously it was just the string "/dev/urandom"), so on typical
618 platforms the 10 ms delay will never occur.
619 Also separate out the Unix variant to its own file, rand_unix.c.
620 For VMS, there's a currently-empty rand_vms.c.
0c61e299
RL
621 [Richard Levitte]
622
0b33bc65
DSH
623 *) Move OCSP client related routines to ocsp_cl.c. These
624 provide utility functions which an application needing
625 to issue a request to an OCSP responder and analyse the
626 response will typically need: as opposed to those which an
627 OCSP responder itself would need which will be added later.
628
629 OCSP_request_sign() signs an OCSP request with an API similar
630 to PKCS7_sign(). OCSP_response_status() returns status of OCSP
631 response. OCSP_response_get1_basic() extracts basic response
632 from response. OCSP_resp_find_status(): finds and extracts status
633 information from an OCSP_CERTID structure (which will be created
634 when the request structure is built). These are built from lower
635 level functions which work on OCSP_SINGLERESP structures but
636 wont normally be used unless the application wishes to examine
637 extensions in the OCSP response for example.
638
639 Replace nonce routines with a pair of functions.
640 OCSP_request_add1_nonce() adds a nonce value and optionally
641 generates a random value. OCSP_check_nonce() checks the
642 validity of the nonce in an OCSP response.
643 [Steve Henson]
644
645 *) Change function OCSP_request_add() to OCSP_request_add0_id().
8e961835
DSH
646 This doesn't copy the supplied OCSP_CERTID and avoids the
647 need to free up the newly created id. Change return type
648 to OCSP_ONEREQ to return the internal OCSP_ONEREQ structure.
649 This can then be used to add extensions to the request.
650 Deleted OCSP_request_new(), since most of its functionality
651 is now in OCSP_REQUEST_new() (and the case insensitive name
652 clash) apart from the ability to set the request name which
653 will be added elsewhere.
654 [Steve Henson]
655
bf0d176e
DSH
656 *) Update OCSP API. Remove obsolete extensions argument from
657 various functions. Extensions are now handled using the new
658 OCSP extension code. New simple OCSP HTTP function which
659 can be used to send requests and parse the response.
660 [Steve Henson]
661
ec5add87
DSH
662 *) Fix the PKCS#7 (S/MIME) code to work with new ASN1. Two new
663 ASN1_ITEM structures help with sign and verify. PKCS7_ATTR_SIGN
664 uses the special reorder version of SET OF to sort the attributes
665 and reorder them to match the encoded order. This resolves a long
666 standing problem: a verify on a PKCS7 structure just after signing
667 it used to fail because the attribute order did not match the
668 encoded order. PKCS7_ATTR_VERIFY does not reorder the attributes:
669 it uses the received order. This is necessary to tolerate some broken
670 software that does not order SET OF. This is handled by encoding
671 as a SEQUENCE OF but using implicit tagging (with UNIVERSAL class)
672 to produce the required SET OF.
673 [Steve Henson]
674
a6574c21
RL
675 *) Have mk1mf.pl generate the macros OPENSSL_BUILD_SHLIBCRYPTO and
676 OPENSSL_BUILD_SHLIBSSL and use them appropriately in the header
677 files to get correct declarations of the ASN.1 item variables.
678 [Richard Levitte]
679
ecbe0781
DSH
680 *) Rewrite of PKCS#12 code to use new ASN1 functionality. Replace many
681 PKCS#12 macros with real functions. Fix two unrelated ASN1 bugs:
682 asn1_check_tlen() would sometimes attempt to use 'ctx' when it was
683 NULL and ASN1_TYPE was not dereferenced properly in asn1_ex_c2i().
684 New ASN1 macro: DECLARE_ASN1_ITEM() which just declares the relevant
685 ASN1_ITEM and no wrapper functions.
686 [Steve Henson]
687
4e1209eb
DSH
688 *) New functions or ASN1_item_d2i_fp() and ASN1_item_d2i_bio(). These
689 replace the old function pointer based I/O routines. Change most of
690 the *_d2i_bio() and *_d2i_fp() functions to use these.
691 [Steve Henson]
692
3f07fe09
RL
693 *) Enhance mkdef.pl to be more accepting about spacing in C preprocessor
694 lines, recognice more "algorithms" that can be deselected, and make
695 it complain about algorithm deselection that isn't recognised.
696 [Richard Levitte]
697
78d3b819 698 *) New ASN1 functions to handle dup, sign, verify, digest, pack and
73e92de5
DSH
699 unpack operations in terms of ASN1_ITEM. Modify existing wrappers
700 to use new functions. Add NO_ASN1_OLD which can be set to remove
701 some old style ASN1 functions: this can be used to determine if old
702 code will still work when these eventually go away.
09ab755c
DSH
703 [Steve Henson]
704
ec558b65
DSH
705 *) New extension functions for OCSP structures, these follow the
706 same conventions as certificates and CRLs.
707 [Steve Henson]
708
57d2f217
DSH
709 *) New function X509V3_add1_i2d(). This automatically encodes and
710 adds an extension. Its behaviour can be customised with various
711 flags to append, replace or delete. Various wrappers added for
712 certifcates and CRLs.
713 [Steve Henson]
714
5755cab4
DSH
715 *) Fix to avoid calling the underlying ASN1 print routine when
716 an extension cannot be parsed. Correct a typo in the
717 OCSP_SERVICELOC extension. Tidy up print OCSP format.
718 [Steve Henson]
719
3880cd35
BM
720 *) Increase s2->wbuf allocation by one byte in ssl2_new (ssl/s2_lib.c).
721 Otherwise do_ssl_write (ssl/s2_pkt.c) will write beyond buffer limits
722 when writing a 32767 byte record.
723 [Bodo Moeller; problem reported by Eric Day <eday@concentric.net>]
724
f640ee90 725 *) In RSA_eay_public_{en,ed}crypt and RSA_eay_mod_exp (rsa_eay.c),
126fe085 726 obtain lock CRYPTO_LOCK_RSA before setting rsa->_method_mod_{n,p,q}.
f640ee90
BM
727
728 (RSA objects have a reference count access to which is protected
729 by CRYPTO_LOCK_RSA [see rsa_lib.c, s3_srvr.c, ssl_cert.c, ssl_rsa.c],
730 so they are meant to be shared between threads.)
126fe085
BM
731 [Bodo Moeller, Geoff Thorpe; original patch submitted by
732 "Reddie, Steven" <Steven.Reddie@ca.com>]
f640ee90 733
9c67ab2f
DSH
734 *) Make mkdef.pl parse some of the ASN1 macros and add apropriate
735 entries for variables.
5755cab4 736 [Steve Henson]
9c67ab2f 737
1456d186
BM
738 *) Fix a deadlock in CRYPTO_mem_leaks().
739 [Bodo Moeller]
740
3ac82faa
BM
741 *) Add functionality to apps/openssl.c for detecting locking
742 problems: As the program is single-threaded, all we have
743 to do is register a locking callback using an array for
744 storing which locks are currently held by the program.
3ac82faa
BM
745 [Bodo Moeller]
746
747 *) Use a lock around the call to CRYPTO_get_ex_new_index() in
748 SSL_get_ex_data_X509_STORE_idx(), which is used in
749 ssl_verify_cert_chain() and thus can be called at any time
750 during TLS/SSL handshakes so that thread-safety is essential.
751 Unfortunately, the ex_data design is not at all suited
752 for multi-threaded use, so it probably should be abolished.
753 [Bodo Moeller]
754
2a86064f
GT
755 *) Added Broadcom "ubsec" ENGINE to OpenSSL.
756 [Broadcom, tweaked and integrated by Geoff Thorpe]
757
2c15d426
DSH
758 *) Move common extension printing code to new function
759 X509V3_print_extensions(). Reorganise OCSP print routines and
c08523d8 760 implement some needed OCSP ASN1 functions. Add OCSP extensions.
2c15d426
DSH
761 [Steve Henson]
762
de487514
DSH
763 *) New function X509_signature_print() to remove duplication in some
764 print routines.
765 [Steve Henson]
766
06db4253
DSH
767 *) Add a special meaning when SET OF and SEQUENCE OF flags are both
768 set (this was treated exactly the same as SET OF previously). This
769 is used to reorder the STACK representing the structure to match the
770 encoding. This will be used to get round a problem where a PKCS7
771 structure which was signed could not be verified because the STACK
772 order did not reflect the encoded order.
773 [Steve Henson]
774
36f554d4
DSH
775 *) Reimplement the OCSP ASN1 module using the new code.
776 [Steve Henson]
777
2aff7727
DSH
778 *) Update the X509V3 code to permit the use of an ASN1_ITEM structure
779 for its ASN1 operations. The old style function pointers still exist
780 for now but they will eventually go away.
781 [Steve Henson]
782
9d6b1ce6 783 *) Merge in replacement ASN1 code from the ASN1 branch. This almost
5755cab4
DSH
784 completely replaces the old ASN1 functionality with a table driven
785 encoder and decoder which interprets an ASN1_ITEM structure describing
786 the ASN1 module. Compatibility with the existing ASN1 API (i2d,d2i) is
787 largely maintained. Almost all of the old asn1_mac.h macro based ASN1
788 has also been converted to the new form.
9d6b1ce6
DSH
789 [Steve Henson]
790
8dea52fa
BM
791 *) Change BN_mod_exp_recp so that negative moduli are tolerated
792 (the sign is ignored). Similarly, ignore the sign in BN_MONT_CTX_set
793 so that BN_mod_exp_mont and BN_mod_exp_mont_word work
794 for negative moduli.
795 [Bodo Moeller]
796
797 *) Fix BN_uadd and BN_usub: Always return non-negative results instead
798 of not touching the result's sign bit.
799 [Bodo Moeller]
800
80d89e6a
BM
801 *) BN_div bugfix: If the result is 0, the sign (res->neg) must not be
802 set.
803 [Bodo Moeller]
804
f1919c3d
GT
805 *) Changed the LHASH code to use prototypes for callbacks, and created
806 macros to declare and implement thin (optionally static) functions
807 that provide type-safety and avoid function pointer casting for the
808 type-specific callbacks.
809 [Geoff Thorpe]
810
1946cd8b
UM
811 *) Use better test patterns in bntest.
812