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