]> git.ipfire.org Git - thirdparty/openssl.git/blame - CHANGES
Add -keyform. Document -engine.
[thirdparty/openssl.git] / CHANGES
CommitLineData
81a6c781 1
f1c236f8 2 OpenSSL CHANGES
651d0aff
RE
3 _______________
4
a9d2bc49 5 Changes between 0.9.6 and 0.9.7 [xx XXX 2001]
a43cf9fa 6
e9ad0d2c 7 OpenSSL 0.9.6a/0.9.6b (bugfix releases, 5 Apr 2001 and 9 July 2001)
e3fefbfd 8 and OpenSSL 0.9.7 were developed in parallel, based on OpenSSL 0.9.6.
e9ad0d2c 9
a9d2bc49 10 Change log entries are tagged as follows:
daba492c
BM
11 -) applies to 0.9.6a/0.9.6b/0.9.6c only
12 *) applies to 0.9.6a/0.9.6b/0.9.6c and 0.9.7
a9d2bc49
BM
13 +) applies to 0.9.7 only
14
a14e2d9d
BM
15 +) Change BIO_new_file (crypto/bio/bss_file.c) to use new
16 BIO_R_NO_SUCH_FILE error code rather than the generic
17 ERR_R_SYS_LIB error code if fopen() fails with ENOENT.
18 [Ben Laurie]
19
20 +) Add new functions
21 ERR_peek_last_error
22 ERR_peek_last_error_line
23 ERR_peek_last_error_line_data.
24 These are similar to
25 ERR_peek_error
26 ERR_peek_error_line
27 ERR_peek_error_line_data,
28 but report on the latest error recorded rather than the first one
29 still in the error queue.
30 [Ben Laurie, Bodo Moeller]
31
df5eaa8a
DSH
32 +) default_algorithms option in ENGINE config module. This allows things
33 like:
34 default_algorithms = ALL
35 default_algorithms = RSA, DSA, RAND, CIPHERS, DIGESTS
36 [Steve Henson]
37
c9501c22
DSH
38 +) Prelminary ENGINE config module.
39 [Steve Henson]
40
8c74b5e5
BM
41 *) The earlier bugfix for the SSL3_ST_SW_HELLO_REQ_C case of
42 ssl3_accept (ssl/s3_srvr.c) incorrectly used a local flag
43 variable as an indication that a ClientHello message has been
44 received. As the flag value will be lost between multiple
45 invocations of ssl3_accept when using non-blocking I/O, the
46 function may not be aware that a handshake has actually taken
47 place, thus preventing a new session from being added to the
48 session cache.
49
50 To avoid this problem, we now set s->new_session to 2 instead of
51 using a local variable.
52 [Lutz Jaenicke, Bodo Moeller]
53
c59ba5b5
BM
54 *) Bugfix: Return -1 from ssl3_get_server_done (ssl3/s3_clnt.c)
55 if the SSL_R_LENGTH_MISMATCH error is detected.
56 [Geoff Thorpe, Bodo Moeller]
57
bc37d996
DSH
58 +) New experimental application configuration code.
59 [Steve Henson]
60
d59fb0dd
BM
61 *) New 'shared_ldflag' column in Configure platform table.
62 [Richard Levitte]
63
e5d6528a
BM
64 *) Fix EVP_CIPHER_mode macro.
65 ["Dan S. Camper" <dan@bti.net>]
66
6f9079fd
RL
67 +) Change the AES code to follow the same name structure as all other
68 symmetric ciphers, and behave the same way. Move everything to
69 the directory crypto/aes, thereby obsoleting crypto/rijndael.
70 [Stephen Sprunk <stephen@sprunk.org> and Richard Levitte]
71
dcbbf83d
UM
72 *) Fix ssl3_read_bytes (ssl/s3_pkt.c): To ignore messages of unknown
73 type, we must throw them away by setting rr->length to 0.
74 [D P Chang <dpc@qualys.com>]
75
3c89d78d
BM
76 -) OpenSSL 0.9.6c released [21 dec 2001]
77
7c517a04
BL
78 +) SECURITY: remove unsafe setjmp/signal interaction from ui_openssl.c.
79 [Ben Laurie and Theo de Raadt]
80
66df02fd
BM
81 *) Fix BN_rand_range bug pointed out by Dominikus Scherkl
82 <Dominikus.Scherkl@biodata.com>. (The previous implementation
83 worked incorrectly for those cases where range = 10..._2 and
84 3*range is two bits longer than range.)
85 [Bodo Moeller]
86
b5348a09
BM
87 *) Only add signing time to PKCS7 structures if it is not already
88 present.
f3e24bad
DSH
89 [Steve Henson]
90
35e25255
BM
91 *) Fix crypto/objects/objects.h: "ld-ce" should be "id-ce",
92 OBJ_ld_ce should be OBJ_id_ce.
93 Also some ip-pda OIDs in crypto/objects/objects.txt were
94 incorrect (cf. RFC 3039).
95 [Matt Cooper, Frederic Giudicelli, Bodo Moeller]
96
21a85f19
DSH
97 +) Add option to output public keys in req command.
98 [Massimiliano Pala madwolf@openca.org]
99
883b0c22
BM
100 *) Release CRYPTO_LOCK_DYNLOCK when CRYPTO_destroy_dynlockid()
101 returns early because it has nothing to do.
102 [Andy Schneider <andy.schneider@bjss.co.uk>]
103
104 *) [In 0.9.6c-engine and 0.9.7 release:]
105 Fix mutex callback return values in crypto/engine/hw_ncipher.c.
106 [Andy Schneider <andy.schneider@bjss.co.uk>]
107
898f856c
BM
108 -) [In 0.9.6c-engine release:]
109 Add support for Cryptographic Appliance's keyserver technology.
110 (Use engine 'keyclient')
111 [Cryptographic Appliances and Geoff Thorpe]
112
1d4581c2
BM
113 *) Add a configuration entry for OS/390 Unix. The C compiler 'c89'
114 is called via tools/c89.sh because arguments have to be
115 rearranged (all '-L' options must appear before the first object
116 modules).
117 [Richard Shapiro <rshapiro@abinitio.com>]
118
76c4336c
BM
119 +) Use wNAFs in EC_POINTs_mul() for improved efficiency
120 (up to about 10% better than before for P-192 and P-224).
3ba1f111
BM
121 [Bodo Moeller]
122
83978bd3
BM
123 -) [In 0.9.6c-engine release:]
124 Add support for Broadcom crypto accelerator cards, backported
125 from 0.9.7.
126 [Broadcom, Nalin Dahyabhai <nalin@redhat.com>, Mark Cox]
127
128 -) [In 0.9.6c-engine release:]
129 Add support for SureWare crypto accelerator cards from
130 Baltimore Technologies. (Use engine 'sureware')
131 [Baltimore Technologies and Mark Cox]
132
133 -) [In 0.9.6c-engine release:]
134 Add support for crypto accelerator cards from Accelerated
135 Encryption Processing, www.aep.ie. (Use engine 'aep')
136 [AEP Inc. and Mark Cox]
137
c5571db0
BM
138 *) Add a configuration entry for gcc on UnixWare.
139 [Gary Benson <gbenson@redhat.com>]
140
7aa983c6
BM
141 +) New functions/macros
142
143 SSL_CTX_set_msg_callback(ctx, cb)
144 SSL_CTX_set_msg_callback_arg(ctx, arg)
145 SSL_set_msg_callback(ssl, cb)
146 SSL_set_msg_callback_arg(ssl, arg)
147
148 to request calling a callback function
149
150 void cb(int write_p, int version, int content_type,
151 const void *buf, size_t len, SSL *ssl, void *arg)
152
153 whenever a protocol message has been completely received
154 (write_p == 0) or sent (write_p == 1). Here 'version' is the
155 protocol version according to which the SSL library interprets
156 the current protocol message (SSL2_VERSION, SSL3_VERSION, or
157 TLS1_VERSION). 'content_type' is 0 in the case of SSL 2.0, or
158 the content type as defined in the SSL 3.0/TLS 1.0 protocol
159 specification (change_cipher_spec(20), alert(21), handshake(22)).
160 'buf' and 'len' point to the actual message, 'ssl' to the
161 SSL object, and 'arg' is the application-defined value set by
162 SSL[_CTX]_set_msg_callback_arg().
163
164 'openssl s_client' and 'openssl s_server' have new '-msg' options
165 to enable a callback that displays all protocol messages.
166 [Bodo Moeller]
167
168 *) Change ssl/s2_clnt.c and ssl/s2_srvr.c so that received handshake
169 messages are stored in a single piece (fixed-length part and
170 variable-length part combined) and fix various bugs found on the way.
171 [Bodo Moeller]
172
a7b42009
RL
173 +) Change the shared library support so shared libraries are built as
174 soon as the corresponding static library is finished, and thereby get
175 openssl and the test programs linked against the shared library.
176 This still only happens when the keyword "shard" has been given to
177 the configuration scripts.
178
179 NOTE: shared library support is still an experimental thing, and
180 backward binary compatibility is still not guaranteed.
181 ["Maciej W. Rozycki" <macro@ds2.pg.gda.pl> and Richard Levitte]
182
7d5b04db
DSH
183 +) Add support for Subject Information Access extension.
184 [Peter Sylvester <Peter.Sylvester@EdelWeb.fr>]
185
48b0cf8b
BM
186 +) Make BUF_MEM_grow() behaviour more consistent: Initialise to zero
187 additional bytes when new memory had to be allocated, not just
188 when reusing an existing buffer.
189 [Bodo Moeller]
190
c602e7f4
BM
191 *) Disable caching in BIO_gethostbyname(), directly use gethostbyname()
192 instead. BIO_gethostbyname() does not know what timeouts are
48b0cf8b 193 appropriate, so entries would stay in cache even when they have
c602e7f4
BM
194 become invalid.
195 [Bodo Moeller; problem pointed out by Rich Salz <rsalz@zolera.com>
196
1fc6d41b
DSH
197 +) New command line and configuration option 'utf8' for the req command.
198 This allows field values to be specified as UTF8 strings.
199 [Steve Henson]
200
0e211563
BL
201 +) Add -multi and -mr options to "openssl speed" - giving multiple parallel
202 runs for the former and machine-readable output for the latter.
203 [Ben Laurie]
204
89da653f
BM
205 +) Add '-noemailDN' option to 'openssl ca'. This prevents inclusion
206 of the e-mail address in the DN (i.e., it will go into a certificate
207 extension only). The new configuration file option 'email_in_dn = no'
208 has the same effect.
209 [Massimiliano Pala madwolf@openca.org]
210
ba1c6022
BM
211 *) Change ssl23_get_client_hello (ssl/s23_srvr.c) behaviour when
212 faced with a pathologically small ClientHello fragment that does
213 not contain client_version: Instead of aborting with an error,
214 simply choose the highest available protocol version (i.e.,
215 TLS 1.0 unless it is disabled). In practice, ClientHello
216 messages are never sent like this, but this change gives us
217 strictly correct behaviour at least for TLS.
218 [Bodo Moeller]
219
c2e4f17c 220 +) Change all functions with names starting with des_ to be starting
12852213
RL
221 with DES_ instead. Add wrappers that are compatible with libdes,
222 but are named _old_des_*. Finally, add macros that map the des_*
223 symbols to the corresponding _old_des_*.
224
225 All this is done because there are increasing clashes with libdes
a8b94d64
BM
226 and other DES libraries that are currently used by other projects.
227 The old libdes interface (including crypt()) is provided if
228 <openssl/des_old.h> is included. For now, this automatically
a14e2d9d 229 happens in <openssl/des.h> unless OPENSSL_DISABLE_OLD_DES_SUPPORT is
a8b94d64 230 defined. Note that crypt() is no longer declared in <openssl/des.h>.
c2e4f17c
RL
231
232 NOTE: This is a major break of an old API into a new one. Software
233 authors are encouraged to switch to the DES_ style functions. Some
234 time in the future, des_old.h and the libdes compatibility functions
235 will be completely removed.
236 [Richard Levitte]
237
979689aa
BM
238 *) Fix SSL handshake functions and SSL_clear() such that SSL_clear()
239 never resets s->method to s->ctx->method when called from within
240 one of the SSL handshake functions.
241 [Bodo Moeller; problem pointed out by Niko Baric]
242
f1558bb4
DSH
243 +) Test for certificates which contain unsupported critical extensions.
244 If such a certificate is found during a verify operation it is
245 rejected by default: this behaviour can be overridden by either
246 handling the new error X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION or
247 by setting the verify flag X509_V_FLAG_IGNORE_CRITICAL. A new function
248 X509_supported_extension() has also been added which returns 1 if a
249 particular extension is supported.
250 [Steve Henson]
251
a661b653
BM
252 *) In ssl3_get_client_hello (ssl/s3_srvr.c), generate a fatal alert
253 (sent using the client's version number) if client_version is
254 smaller than the protocol version in use. Also change
255 ssl23_get_client_hello (ssl/s23_srvr.c) to select TLS 1.0 if
256 the client demanded SSL 3.0 but only TLS 1.0 is enabled; then
257 the client will at least see that alert.
258 [Bodo Moeller]
259
581f1c84
DSH
260 +) Modify the behaviour of EVP cipher functions in similar way to digests
261 to retain compatibility with existing code.
262 [Steve Henson]
263
20d2186c 264 +) Modify the behaviour of EVP_DigestInit() and EVP_DigestFinal() to retain
50d194af
DSH
265 compatibility with existing code. In particular the 'ctx' parameter does
266 not have to be to be initialized before the call to EVP_DigestInit() and
267 it is tidied up after a call to EVP_DigestFinal(). New function
268 EVP_DigestFinal_ex() which does not tidy up the ctx. Similarly function
269 EVP_MD_CTX_copy() changed to not require the destination to be
270 initialized valid and new function EVP_MD_CTX_copy_ex() added which
271 requires the destination to be valid.
272
273 Modify all the OpenSSL digest calls to use EVP_DigestInit_ex(),
274 EVP_DigestFinal_ex() and EVP_MD_CTX_copy_ex().
20d2186c
DSH
275 [Steve Henson]
276
48948d53
BM
277 +) Change ssl3_get_message (ssl/s3_both.c) and the functions using it
278 so that complete 'Handshake' protocol structures are kept in memory
279 instead of overwriting 'msg_type' and 'length' with 'body' data.
280 [Bodo Moeller]
281
282 *) Fix ssl3_get_message (ssl/s3_both.c) to handle message fragmentation
283 correctly.
284 [Bodo Moeller]
285
285046ec
RL
286 +) Add an implementation of SSL_add_dir_cert_subjects_to_stack for Win32.
287 [Massimo Santin via Richard Levitte]
288
07cee702
GT
289 +) Major restructuring to the underlying ENGINE code. This includes
290 reduction of linker bloat, separation of pure "ENGINE" manipulation
291 (initialisation, etc) from functionality dealing with implementations
292 of specific crypto iterfaces. This change also introduces integrated
293 support for symmetric ciphers and digest implementations - so ENGINEs
294 can now accelerate these by providing EVP_CIPHER and EVP_MD
295 implementations of their own. This is detailed in crypto/engine/README
296 as it couldn't be adequately described here. However, there are a few
297 API changes worth noting - some RSA, DSA, DH, and RAND functions that
298 were changed in the original introduction of ENGINE code have now
299 reverted back - the hooking from this code to ENGINE is now a good
300 deal more passive and at run-time, operations deal directly with
301 RSA_METHODs, DSA_METHODs (etc) as they did before, rather than
302 dereferencing through an ENGINE pointer any more. Also, the ENGINE
303 functions dealing with BN_MOD_EXP[_CRT] handlers have been removed -
304 they were not being used by the framework as there is no concept of a
305 BIGNUM_METHOD and they could not be generalised to the new
306 'ENGINE_TABLE' mechanism that underlies the new code. Similarly,
307 ENGINE_cpy() has been removed as it cannot be consistently defined in
308 the new code.
309 [Geoff Thorpe]
310
d46c1a81
DSH
311 +) Change ASN1_GENERALIZEDTIME_check() to allow fractional seconds.
312 [Steve Henson]
313
89eeccac
RL
314 +) Change mkdef.pl to sort symbols that get the same entry number,
315 and make sure the automatically generated functions ERR_load_*
316 become part of libeay.num as well.
317 [Richard Levitte]
318
3b0b5aba
BM
319 *) Avoid infinite loop in ssl3_get_message (ssl/s3_both.c) if a
320 client receives HelloRequest while in a handshake.
321 [Bodo Moeller; bug noticed by Andy Schneider <andy.schneider@bjss.co.uk>]
322
6b0e9fac
BM
323 +) New function SSL_renegotiate_pending(). This returns true once
324 renegotiation has been requested (either SSL_renegotiate() call
325 or HelloRequest/ClientHello receveived from the peer) and becomes
326 false once a handshake has been completed.
327 (For servers, SSL_renegotiate() followed by SSL_do_handshake()
328 sends a HelloRequest, but does not ensure that a handshake takes
329 place. SSL_renegotiate_pending() is useful for checking if the
330 client has followed the request.)
331 [Bodo Moeller]
332
333 +) New SSL option SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION.
334 By default, clients may request session resumption even during
335 renegotiation (if session ID contexts permit); with this option,
336 session resumption is possible only in the first handshake.
337 [Bodo Moeller]
338
2260ad21
BM
339 *) Bugfix in ssl3_accept (ssl/s3_srvr.c): Case SSL3_ST_SW_HELLO_REQ_C
340 should end in 'break', not 'goto end' which circuments various
b49124f6
BM
341 cleanups done in state SSL_ST_OK. But session related stuff
342 must be disabled for SSL_ST_OK in the case that we just sent a
343 HelloRequest.
2260ad21
BM
344
345 Also avoid some overhead by not calling ssl_init_wbio_buffer()
346 before just sending a HelloRequest.
b49124f6 347 [Bodo Moeller, Eric Rescorla <ekr@rtfm.com>]
8e2f6b79 348
ee60d9fb
BM
349 *) Fix ssl/s3_enc.c, ssl/t1_enc.c and ssl/s3_pkt.c so that we don't
350 reveal whether illegal block cipher padding was found or a MAC
351 verification error occured. (Neither SSLerr() codes nor alerts
352 are directly visible to potential attackers, but the information
353 may leak via logfiles.)
354
355 Similar changes are not required for the SSL 2.0 implementation
356 because the number of padding bytes is sent in clear for SSL 2.0,
357 and the extra bytes are just ignored. However ssl/s2_pkt.c
358 failed to verify that the purported number of padding bytes is in
359 the legal range.
360 [Bodo Moeller]
361
96bd6f73
DSH
362 +) Add some demos for certificate and certificate request creation.
363 [Steve Henson]
364
c0f5dd07
LJ
365 +) Make maximum certificate chain size accepted from the peer application
366 settable (SSL*_get/set_max_cert_list()), as proposed by
367 "Douglas E. Engert" <deengert@anl.gov>.
368 [Lutz Jaenicke]
369
b26ca340
BM
370 +) Add support for shared libraries for Unixware-7
371 (Boyd Lynn Gerber <gerberb@zenez.com>).
6c36f7a9
LJ
372 [Lutz Jaenicke]
373
b26ca340
BM
374 *) Add OpenUNIX-8 support including shared libraries
375 (Boyd Lynn Gerber <gerberb@zenez.com>).
c5571db0
BM
376 [Lutz Jaenicke]
377
a9ed4da8
BM
378 *) Improve RSA_padding_check_PKCS1_OAEP() check again to avoid
379 'wristwatch attack' using huge encoding parameters (cf.
380 James H. Manger's CRYPTO 2001 paper). Note that the
381 RSA_PKCS1_OAEP_PADDING case of RSA_private_decrypt() does not use
e3fefbfd 382 encoding parameters and hence was not vulnerable.
a9ed4da8
BM
383 [Bodo Moeller]
384
4450107a 385 +) Add a "destroy" handler to ENGINEs that allows structural cleanup to
908efd3b
GT
386 be done prior to destruction. Use this to unload error strings from
387 ENGINEs that load their own error strings. NB: This adds two new API
388 functions to "get" and "set" this destroy handler in an ENGINE.
a9ed4da8 389 [Geoff Thorpe]
908efd3b 390
4450107a 391 +) Alter all existing ENGINE implementations (except "openssl" and
541814c4
GT
392 "openbsd") to dynamically instantiate their own error strings. This
393 makes them more flexible to be built both as statically-linked ENGINEs
394 and self-contained shared-libraries loadable via the "dynamic" ENGINE.
395 Also, add stub code to each that makes building them as self-contained
396 shared-libraries easier (see README.ENGINE).
397 [Geoff Thorpe]
398
4450107a 399 +) Add a "dynamic" ENGINE that provides a mechanism for binding ENGINE
541814c4
GT
400 implementations into applications that are completely implemented in
401 self-contained shared-libraries. The "dynamic" ENGINE exposes control
402 commands that can be used to configure what shared-library to load and
403 to control aspects of the way it is handled. Also, made an update to
404 the README.ENGINE file that brings its information up-to-date and
405 provides some information and instructions on the "dynamic" ENGINE
406 (ie. how to use it, how to build "dynamic"-loadable ENGINEs, etc).
407 [Geoff Thorpe]
408
d98a4b73
UM
409 *) BN_sqr() bug fix.
410