]> git.ipfire.org Git - thirdparty/openssl.git/blame - CHANGES
Consistency fix in BUF_MEM_grow: Initialise to zero when new memory
[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
c602e7f4
BM
15 *) Disable caching in BIO_gethostbyname(), directly use gethostbyname()
16 instead. BIO_gethostbyname() does not know what timeouts are
17 appropriate, so entries would stay in cache even when they hade
18 become invalid.
19 [Bodo Moeller; problem pointed out by Rich Salz <rsalz@zolera.com>
20
1fc6d41b
DSH
21 +) New command line and configuration option 'utf8' for the req command.
22 This allows field values to be specified as UTF8 strings.
23 [Steve Henson]
24
0e211563
BL
25 +) Add -multi and -mr options to "openssl speed" - giving multiple parallel
26 runs for the former and machine-readable output for the latter.
27 [Ben Laurie]
28
89da653f
BM
29 +) Add '-noemailDN' option to 'openssl ca'. This prevents inclusion
30 of the e-mail address in the DN (i.e., it will go into a certificate
31 extension only). The new configuration file option 'email_in_dn = no'
32 has the same effect.
33 [Massimiliano Pala madwolf@openca.org]
34
ba1c6022
BM
35 *) Change ssl23_get_client_hello (ssl/s23_srvr.c) behaviour when
36 faced with a pathologically small ClientHello fragment that does
37 not contain client_version: Instead of aborting with an error,
38 simply choose the highest available protocol version (i.e.,
39 TLS 1.0 unless it is disabled). In practice, ClientHello
40 messages are never sent like this, but this change gives us
41 strictly correct behaviour at least for TLS.
42 [Bodo Moeller]
43
c2e4f17c
RL
44 +) Change all functions with names starting with des_ to be starting
45 with DES_ instead. This because there are increasing clashes with
46 libdes and other des libraries that are currently used by other
47 projects. The old libdes interface is provided, as well as crypt(),
48 if openssl/des_old.h is included. Note that crypt() is no longer
49 declared in openssl/des.h.
50
51 NOTE: This is a major break of an old API into a new one. Software
52 authors are encouraged to switch to the DES_ style functions. Some
53 time in the future, des_old.h and the libdes compatibility functions
54 will be completely removed.
55 [Richard Levitte]
56
979689aa
BM
57 *) Fix SSL handshake functions and SSL_clear() such that SSL_clear()
58 never resets s->method to s->ctx->method when called from within
59 one of the SSL handshake functions.
60 [Bodo Moeller; problem pointed out by Niko Baric]
61
f1558bb4
DSH
62 +) Test for certificates which contain unsupported critical extensions.
63 If such a certificate is found during a verify operation it is
64 rejected by default: this behaviour can be overridden by either
65 handling the new error X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION or
66 by setting the verify flag X509_V_FLAG_IGNORE_CRITICAL. A new function
67 X509_supported_extension() has also been added which returns 1 if a
68 particular extension is supported.
69 [Steve Henson]
70
a661b653
BM
71 +) New functions/macros
72
73 SSL_CTX_set_msg_callback(ctx, cb)
74 SSL_CTX_set_msg_callback_arg(ctx, arg)
75 SSL_set_msg_callback(ssl, cb)
76 SSL_set_msg_callback_arg(ssl, arg)
77
78 to request calling a callback function
79
80 void cb(int write_p, int version, int content_type,
81 const void *buf, size_t len, SSL *ssl, void *arg)
82
83 whenever a protocol message has been completely received
84 (write_p == 0) or sent (write_p == 1). Here 'version' is the
85 protocol version according to which the SSL library interprets
86 the current protocol message (SSL2_VERSION, SSL3_VERSION, or
87 TLS1_VERSION). 'content_type' is 0 in the case of SSL 2.0, or
88 the content type as defined in the SSL 3.0/TLS 1.0 protocol
89 specification (change_cipher_spec(20), alert(21), handshake(22)).
90 'buf' and 'len' point to the actual message, 'ssl' to the
91 SSL object, and 'arg' is the application-defined value set by
92 SSL[_CTX]_set_msg_callback_arg().
93
94 'openssl s_client' and 'openssl s_server' have new '-msg' options
95 to enable a callback that displays all protocol messages.
96
97 TODO: SSL 2.0, doc/ssl/, doc/apps/
98 [Bodo Moeller]
99
100 *) In ssl3_get_client_hello (ssl/s3_srvr.c), generate a fatal alert
101 (sent using the client's version number) if client_version is
102 smaller than the protocol version in use. Also change
103 ssl23_get_client_hello (ssl/s23_srvr.c) to select TLS 1.0 if
104 the client demanded SSL 3.0 but only TLS 1.0 is enabled; then
105 the client will at least see that alert.
106 [Bodo Moeller]
107
581f1c84
DSH
108 +) Modify the behaviour of EVP cipher functions in similar way to digests
109 to retain compatibility with existing code.
110 [Steve Henson]
111
20d2186c 112 +) Modify the behaviour of EVP_DigestInit() and EVP_DigestFinal() to retain
50d194af
DSH
113 compatibility with existing code. In particular the 'ctx' parameter does
114 not have to be to be initialized before the call to EVP_DigestInit() and
115 it is tidied up after a call to EVP_DigestFinal(). New function
116 EVP_DigestFinal_ex() which does not tidy up the ctx. Similarly function
117 EVP_MD_CTX_copy() changed to not require the destination to be
118 initialized valid and new function EVP_MD_CTX_copy_ex() added which
119 requires the destination to be valid.
120
121 Modify all the OpenSSL digest calls to use EVP_DigestInit_ex(),
122 EVP_DigestFinal_ex() and EVP_MD_CTX_copy_ex().
20d2186c
DSH
123 [Steve Henson]
124
48948d53
BM
125 +) Change ssl3_get_message (ssl/s3_both.c) and the functions using it
126 so that complete 'Handshake' protocol structures are kept in memory
127 instead of overwriting 'msg_type' and 'length' with 'body' data.
128 [Bodo Moeller]
129
130 *) Fix ssl3_get_message (ssl/s3_both.c) to handle message fragmentation
131 correctly.
132 [Bodo Moeller]
133
285046ec
RL
134 +) Add an implementation of SSL_add_dir_cert_subjects_to_stack for Win32.
135 [Massimo Santin via Richard Levitte]
136
07cee702
GT
137 +) Major restructuring to the underlying ENGINE code. This includes
138 reduction of linker bloat, separation of pure "ENGINE" manipulation
139 (initialisation, etc) from functionality dealing with implementations
140 of specific crypto iterfaces. This change also introduces integrated
141 support for symmetric ciphers and digest implementations - so ENGINEs
142 can now accelerate these by providing EVP_CIPHER and EVP_MD
143 implementations of their own. This is detailed in crypto/engine/README
144 as it couldn't be adequately described here. However, there are a few
145 API changes worth noting - some RSA, DSA, DH, and RAND functions that
146 were changed in the original introduction of ENGINE code have now
147 reverted back - the hooking from this code to ENGINE is now a good
148 deal more passive and at run-time, operations deal directly with
149 RSA_METHODs, DSA_METHODs (etc) as they did before, rather than
150 dereferencing through an ENGINE pointer any more. Also, the ENGINE
151 functions dealing with BN_MOD_EXP[_CRT] handlers have been removed -
152 they were not being used by the framework as there is no concept of a
153 BIGNUM_METHOD and they could not be generalised to the new
154 'ENGINE_TABLE' mechanism that underlies the new code. Similarly,
155 ENGINE_cpy() has been removed as it cannot be consistently defined in
156 the new code.
157 [Geoff Thorpe]
158
d46c1a81
DSH
159 +) Change ASN1_GENERALIZEDTIME_check() to allow fractional seconds.
160 [Steve Henson]
161
89eeccac
RL
162 +) Change mkdef.pl to sort symbols that get the same entry number,
163 and make sure the automatically generated functions ERR_load_*
164 become part of libeay.num as well.
165 [Richard Levitte]
166
3b0b5aba
BM
167 *) Avoid infinite loop in ssl3_get_message (ssl/s3_both.c) if a
168 client receives HelloRequest while in a handshake.
169 [Bodo Moeller; bug noticed by Andy Schneider <andy.schneider@bjss.co.uk>]
170
6b0e9fac
BM
171 +) New function SSL_renegotiate_pending(). This returns true once
172 renegotiation has been requested (either SSL_renegotiate() call
173 or HelloRequest/ClientHello receveived from the peer) and becomes
174 false once a handshake has been completed.
175 (For servers, SSL_renegotiate() followed by SSL_do_handshake()
176 sends a HelloRequest, but does not ensure that a handshake takes
177 place. SSL_renegotiate_pending() is useful for checking if the
178 client has followed the request.)
179 [Bodo Moeller]
180
181 +) New SSL option SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION.
182 By default, clients may request session resumption even during
183 renegotiation (if session ID contexts permit); with this option,
184 session resumption is possible only in the first handshake.
185 [Bodo Moeller]
186
2260ad21
BM
187 *) Bugfix in ssl3_accept (ssl/s3_srvr.c): Case SSL3_ST_SW_HELLO_REQ_C
188 should end in 'break', not 'goto end' which circuments various
b49124f6
BM
189 cleanups done in state SSL_ST_OK. But session related stuff
190 must be disabled for SSL_ST_OK in the case that we just sent a
191 HelloRequest.
2260ad21
BM
192
193 Also avoid some overhead by not calling ssl_init_wbio_buffer()
194 before just sending a HelloRequest.
b49124f6 195 [Bodo Moeller, Eric Rescorla <ekr@rtfm.com>]
8e2f6b79 196
ee60d9fb
BM
197 *) Fix ssl/s3_enc.c, ssl/t1_enc.c and ssl/s3_pkt.c so that we don't
198 reveal whether illegal block cipher padding was found or a MAC
199 verification error occured. (Neither SSLerr() codes nor alerts
200 are directly visible to potential attackers, but the information
201 may leak via logfiles.)
202
203 Similar changes are not required for the SSL 2.0 implementation
204 because the number of padding bytes is sent in clear for SSL 2.0,
205 and the extra bytes are just ignored. However ssl/s2_pkt.c
206 failed to verify that the purported number of padding bytes is in
207 the legal range.
208 [Bodo Moeller]
209
96bd6f73
DSH
210 +) Add some demos for certificate and certificate request creation.
211 [Steve Henson]
212
c0f5dd07
LJ
213 +) Make maximum certificate chain size accepted from the peer application
214 settable (SSL*_get/set_max_cert_list()), as proposed by
215 "Douglas E. Engert" <deengert@anl.gov>.
216 [Lutz Jaenicke]
217
6c36f7a9
LJ
218 +) Add support for shared libraries for Unixware-7 and support including
219 shared libraries for OpenUNIX-8 (Boyd Lynn Gerber <gerberb@zenez.com>).
220 [Lutz Jaenicke]
221
a9ed4da8
BM
222 *) Improve RSA_padding_check_PKCS1_OAEP() check again to avoid
223 'wristwatch attack' using huge encoding parameters (cf.
224 James H. Manger's CRYPTO 2001 paper). Note that the
225 RSA_PKCS1_OAEP_PADDING case of RSA_private_decrypt() does not use
e3fefbfd 226 encoding parameters and hence was not vulnerable.
a9ed4da8
BM
227 [Bodo Moeller]
228
4450107a 229 +) Add a "destroy" handler to ENGINEs that allows structural cleanup to
908efd3b
GT
230 be done prior to destruction. Use this to unload error strings from
231 ENGINEs that load their own error strings. NB: This adds two new API
232 functions to "get" and "set" this destroy handler in an ENGINE.
a9ed4da8 233 [Geoff Thorpe]
908efd3b 234
4450107a 235 +) Alter all existing ENGINE implementations (except "openssl" and
541814c4
GT
236 "openbsd") to dynamically instantiate their own error strings. This
237 makes them more flexible to be built both as statically-linked ENGINEs
238 and self-contained shared-libraries loadable via the "dynamic" ENGINE.
239 Also, add stub code to each that makes building them as self-contained
240 shared-libraries easier (see README.ENGINE).
241 [Geoff Thorpe]
242
4450107a 243 +) Add a "dynamic" ENGINE that provides a mechanism for binding ENGINE
541814c4
GT
244 implementations into applications that are completely implemented in
245 self-contained shared-libraries. The "dynamic" ENGINE exposes control
246 commands that can be used to configure what shared-library to load and
247 to control aspects of the way it is handled. Also, made an update to
248 the README.ENGINE file that brings its information up-to-date and
249 provides some information and instructions on the "dynamic" ENGINE
250 (ie. how to use it, how to build "dynamic"-loadable ENGINEs, etc).
251 [Geoff Thorpe]
252
d98a4b73
UM
253 *) BN_sqr() bug fix.
254