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