]> git.ipfire.org Git - thirdparty/openssl.git/blame - CHANGES
OpenSSL copyright notices ...
[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
BM
7 OpenSSL 0.9.6a/0.9.6b (bugfix releases, 5 Apr 2001 and 9 July 2001)
8 and OpenSSL 0.9.7 were developped in parallel, based on OpenSSL 0.9.6.
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
5b166395
GT
15 *) Make it possible to unload ranges of ERR strings with a new
16 "ERR_unload_strings" function.
17 [Geoff Thorpe]
18
983495c4
BM
19 *) Rabin-Miller test analyses assume uniformly distributed witnesses,
20 so use BN_pseudo_rand_range() instead of using BN_pseudo_rand()
21 followed by modular reduction.
22 [Bodo Moeller; pointed out by Adam Young <AYoung1@NCSUS.JNJ.COM>]
23
24 *) Add BN_pseudo_rand_range() with obvious functionality: BN_rand_range()
25 requivalent based on BN_pseudo_rand() instead of BN_rand().
26 [Bodo Moeller]
27
26188931
BL
28 +) Add a copy() function to EVP_MD.
29 [Ben Laurie]
30
31 +) Make EVP_MD routines take a context pointer instead of just the
32 md_data voud pointer.
33 [Ben Laurie]
34
35 +) Add flags to EVP_MD and EVP_MD_CTX. EVP_MD_FLAG_ONESHOT indicates
36 that the digest can only process a single chunk of data
37 (typically because it is provided by a piece of
38 hardware). EVP_MD_CTX_FLAG_ONESHOT indicates that the application
39 is only going to provide a single chunk of data, and hence the
40 framework needn't accumulate the data for oneshot drivers.
41 [Ben Laurie]
42
36026dfc
GT
43 +) As with "ERR", make it possible to replace the underlying "ex_data"
44 functions. This change also alters the storage and management of global
45 ex_data state - it's now all inside ex_data.c and all "class" code (eg.
46 RSA, BIO, SSL_CTX, etc) no longer stores its own STACKS and per-class
47 index counters. The API functions that use this state have been changed
48 to take a "class_index" rather than pointers to the class's local STACK
49 and counter, and there is now an API function to dynamically create new
50 classes. This centralisation allows us to (a) plug a lot of the
51 thread-safety problems that existed, and (b) makes it possible to clean
52 up all allocated state using "CRYPTO_cleanup_all_ex_data()". W.r.t. (b)
53 such data would previously have always leaked in application code and
54 workarounds were in place to make the memory debugging turn a blind eye
55 to it. Application code that doesn't use this new function will still
56 leak as before, but their memory debugging output will announce it now
57 rather than letting it slide.
58 [Geoff Thorpe]
59
0783bf15
GT
60 +) Make it possible to replace the underlying "ERR" functions such that the
61 global state (2 LHASH tables and 2 locks) is only used by the "default"
62 implementation. This change also adds two functions to "get" and "set"
63 the implementation prior to it being automatically set the first time
64 any other ERR function takes place. Ie. an application can call "get",
65 pass the return value to a module it has just loaded, and that module
66 can call its own "set" function using that value. This means the
67 module's "ERR" operations will use (and modify) the error state in the
68 application and not in its own statically linked copy of OpenSSL code.
69 [Geoff Thorpe]
70
eb6dc02b
GT
71 +) Give DH, DSA, and RSA types their own "**_up()" function to increment
72 reference counts. This performs normal REF_PRINT/REF_CHECK macros on
73 the operation, and provides a more encapsulated way for external code
74 (crypto/evp/ and ssl/) to do this. Also changed the evp and ssl code
75 to use these functions rather than manually incrementing the counts.
76 [Geoff Thorpe]
77
e7cf7fcd
LJ
78 *) s3_srvr.c: allow sending of large client certificate lists (> 16 kB).
79 This function was broken, as the check for a new client hello message
80 to handle SGC did not allow these large messages.
81 (Tracked down by "Douglas E. Engert" <deengert@anl.gov>.)
82 [Lutz Jaenicke]
83
a403188f
LJ
84 *) Add alert descriptions for TLSv1 to SSL_alert_desc_string[_long]().
85 [Lutz Jaenicke]
86
0e360199
BL
87 +) Add EVP test program.
88 [Ben Laurie]
89
354c3ace
BL
90 +) Add symmetric cipher support to ENGINE. Expect the API to change!
91 [Ben Laurie]
92
35bf3541
DSH
93 +) New CRL functions: X509_CRL_set_version(), X509_CRL_set_issuer_name()
94 X509_CRL_set_lastUpdate(), X509_CRL_set_nextUpdate(), X509_CRL_sort(),
95 X509_REVOKED_set_serialNumber(), and X509_REVOKED_set_revocationDate().
96 These allow a CRL to be built without having to access X509_CRL fields
97 directly. Modify 'ca' application to use new functions.
98 [Steve Henson]
99
54fbc77d
LJ
100 *) Fix buggy behaviour of BIO_get_num_renegotiates() and BIO_ctrl()
101 for BIO_C_GET_WRITE_BUF_SIZE ("Stephen Hinton" <shinton@netopia.com>).
102 [Lutz Jaenicke]
103
6bc847e4
RL
104 *) Rework the configuration and shared library support for Tru64 Unix.
105 The configuration part makes use of modern compiler features and
106 still retains old compiler behavior for those that run older versions
107 of the OS. The shared library support part includes a variant that
108 uses the RPATH feature, and is available through the speciel
109 configuration target "alpha-cc-rpath", which will never be selected
110 automatically.
111 [Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu> via Richard Levitte]
112
37a7cd1a
BM
113 *) In ssl3_get_key_exchange (ssl/s3_clnt.c), call ssl3_get_message()
114 with the same message size as in ssl3_get_certificate_request().
115 Otherwise, if no ServerKeyExchange message occurs, CertificateRequest
116 messages might inadvertently be reject as too long.
117 [Petr Lampa <lampa@fee.vutbr.cz>]
118
06da6e49
LJ
119 +) Move SSL_OP_TLS_ROLLBACK_BUG out of the SSL_OP_ALL list of recommended
120 bug workarounds. Rollback attack detection is a security feature.
6383bbe5 121 The problem will only arise on OpenSSL servers when TLSv1 is not
06da6e49
LJ
122 available (sslv3_server_method() or SSL_OP_NO_TLSv1).
123 Software authors not wanting to support TLSv1 will have special reasons
124 for their choice and can explicitly enable this option.
125 [Bodo Moeller, Lutz Jaenicke]
126
dbad1690
BL
127 +) Rationalise EVP so it can be extended: don't include a union of
128 cipher/digest structures, add init/cleanup functions. This also reduces
129 the number of header dependencies.
130 [Ben Laurie]
131
8408f4fb
BL
132 +) Make DES key schedule conform to the usual scheme, as well as
133 correcting its structure. This means that calls to DES functions
134 now have to pass a pointer to a des_key_schedule instead of a
135 plain des_key_schedule (which was actually always a pointer
136 anyway).
dbad1690
BL
137 [Ben Laurie]
138
6d03b73e
AP
139 +) Enhanced support for IA-64 Unix platforms (well, Linux and HP-UX).
140 [Andy Polyakov]
141
1f0c9ad7
LJ
142 *) Modified SSL library such that the verify_callback that has been set
143 specificly for an SSL object with SSL_set_verify() is actually being
144 used. Before the change, a verify_callback set with this function was
145 ignored and the verify_callback() set in the SSL_CTX at the time of
146 the call was used. New function X509_STORE_CTX_set_verify_cb() introduced
147 to allow the necessary settings.
148 [Lutz Jaenicke]
149
19da1300
DSH
150 +) Initial reduction of linker bloat: the use of some functions, such as
151 PEM causes large amounts of unused functions to be linked in due to
152 poor organisation. For example pem_all.c contains every PEM function
153 which has a knock on effect of linking in large amounts of (unused)
154 ASN1 code. Grouping together similar functions and splitting unrelated
155 functions prevents this.
156 [Steve Henson]
157
06efc222
LJ
158 *) Initialize static variable in crypto/dsa/dsa_lib.c and crypto/dh/dh_lib.c
159 explicitely to NULL, as at least on Solaris 8 this seems not always to be
160 done automatically (in contradiction to the requirements of the C
161 standard). This made problems when used from OpenSSH.
a75b1915
LJ
162 [Lutz Jaenicke]
163
6aecef81
BM
164 *) In OpenSSL 0.9.6a and 0.9.6b, crypto/dh/dh_key.c ignored
165 dh->length and always used
166
167 BN_rand_range(priv_key, dh->p).
168
169 BN_rand_range() is not necessary for Diffie-Hellman, and this
170 specific range makes Diffie-Hellman unnecessarily inefficient if
171 dh->length (recommended exponent length) is much smaller than the
172 length of dh->p. We could use BN_rand_range() if the order of
173 the subgroup was stored in the DH structure, but we only have
174 dh->length.
175
176 So switch back to
177
178 BN_rand(priv_key, l, ...)
179
180 where 'l' is dh->length if this is defined, or BN_num_bits(dh->p)-1
181 otherwise.
182 [Bodo Moeller]
183
24cff6ce
BM
184 *) In
185
186 RSA_eay_public_encrypt
187 RSA_eay_private_decrypt
188 RSA_eay_private_encrypt (signing)
189 RSA_eay_public_decrypt (signature verification)
190
191 (default implementations for RSA_public_encrypt,
192 RSA_private_decrypt, RSA_private_encrypt, RSA_public_decrypt),
193 always reject numbers >= n.
194 [Bodo Moeller]
195
daba492c
BM
196 *) In crypto/rand/md_rand.c, use a new short-time lock CRYPTO_LOCK_RAND2
197 to synchronize access to 'locking_thread'. This is necessary on
198 systems where access to 'locking_thread' (an 'unsigned long'
199 variable) is not atomic.
200 [Bodo Moeller]
201
badb910f
BM
202 *) In crypto/rand/md_rand.c, set 'locking_thread' to current thread's ID
203 *before* setting the 'crypto_lock_rand' flag. The previous code had
204 a race condition if 0 is a valid thread ID.
205 [Travis Vitek <vitek@roguewave.com>]
206
c518ade1
BL
207 +) Cleanup of EVP macros.
208 [Ben Laurie]
209
210 +) Change historical references to {NID,SN,LN}_des_ede and ede3 to add the
211 correct _ecb suffix.
212 [Ben Laurie]
213
ee306a13
DSH
214 +) Add initial OCSP responder support to ocsp application. The
215 revocation information is handled using the text based index
216 use by the ca application. The responder can either handle
217 requests generated internally, supplied in files (for example
218 via a CGI script) or using an internal minimal server.
219 [Steve Henson]
220
e452de9d
RL
221 +) Add configuration choices to get zlib compression for TLS.
222 [Richard Levitte]
223
0665dd68
RL
224 +) Changes to Kerberos SSL for RFC 2712 compliance:
225 1. Implemented real KerberosWrapper, instead of just using
226 KRB5 AP_REQ message. [Thanks to Simon Wilkinson <sxw@sxw.org.uk>]
227 2. Implemented optional authenticator field of KerberosWrapper.
228
229 Added openssl-style ASN.1 macros for Kerberos ticket, ap_req,
230 and authenticator structs; see crypto/krb5/.
231
232 Generalized Kerberos calls to support multiple Kerberos libraries.
233 [Vern Staats <staatsvr@asc.hpc.mil>,
234 Jeffrey Altman <jaltman@columbia.edu>
235 via Richard Levitte]
236
af436bc1
GT
237 +) Cause 'openssl speed' to use fully hard-coded DSA keys as it
238 already does with RSA. testdsa.h now has 'priv_key/pub_key'
239 values for each of the key sizes rather than having just
240 parameters (and 'speed' generating keys each time).
241 [Geoff Thorpe]
242
e9ad0d2c
BM
243 -) OpenSSL 0.9.6b released [9 July 2001]
244
245 *) Change ssleay_rand_bytes (crypto/rand/md_rand.c)
246 to avoid a SSLeay/OpenSSL PRNG weakness pointed out by
247 Markku-Juhani O. Saarinen <markku-juhani.saarinen@nokia.com>:
248 PRNG state recovery was possible based on the output of
249 one PRNG request appropriately sized to gain knowledge on
250 'md' followed by enough consecutive 1-byte PRNG requests
251 to traverse all of 'state'.
252
253 1. When updating 'md_local' (the current thread's copy of 'md')
254 during PRNG output generation, hash all of the previous
255 'md_local' value, not just the half used for PRNG output.
256
257 2. Make the number of bytes from 'state' included into the hash
258 independent from the number of PRNG bytes requested.
259
260 The first measure alone would be sufficient to avoid
261 Markku-Juhani's attack. (Actually it had never occurred
262 to me that the half of 'md_local' used for chaining was the
263 half from which PRNG output bytes were taken -- I had always
264 assumed that the secret half would be used.) The second
265 measure makes sure that additional data from 'state' is never
266 mixed into 'md_local' in small portions; this heuristically
267 further strengthens the PRNG.
268 [Bodo Moeller]
269
f31b1250
BL
270 +) Speed up EVP routines.
271 Before:
272encrypt
273type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
274des-cbc 4408.85k 5560.51k 5778.46k 5862.20k 5825.16k
275des-cbc 4389.55k 5571.17k 5792.23k 5846.91k 5832.11k
276des-cbc 4394.32k 5575.92k 5807.44k 5848.37k 5841.30k
277decrypt
278des-cbc 3482.66k 5069.49k 5496.39k 5614.16k 5639.28k
279des-cbc 3480.74k 5068.76k 5510.34k 5609.87k 5635.52k
280des-cbc 3483.72k 5067.62k 5504.60k 5708.01k 5724.80k
281 After:
282encrypt
c148d709 283des-cbc 4660.16k 5650.19k 5807.19k 5827.13k 5783.32k
f31b1250 284decrypt
c148d709 285des-cbc 3624.96k 5258.21k 5530.91k 5624.30k 5628.26k
f31b1250
BL
286 [Ben Laurie]
287
93dbd835
BM
288 *) Fix crypto/bn/asm/mips3.s.
289 [Andy Polyakov]
290
43f9391b
LJ
291 *) When only the key is given to "enc", the IV is undefined. Print out
292 an error message in this case.
293 [Lutz Jaenicke]
294
c80410c5
RL
295 +) Added the OS2-EMX target.
296 ["Brian Havard" <brianh@kheldar.apana.org.au> and Richard Levitte]
297
b7a26e6d
DSH
298 +) Rewrite apps to use NCONF routines instead of the old CONF. New functions
299 to support NCONF routines in extension code. New function CONF_set_nconf()
300 to allow functions which take an NCONF to also handle the old LHASH
301 structure: this means that the old CONF compatible routines can be
302 retained (in particular wrt extensions) without having to duplicate the
303 code. New function X509V3_add_ext_nconf_sk to add extensions to a stack.
304 [Steve Henson]
305
1e325f61
DSH
306 *) Handle special case when X509_NAME is empty in X509 printing routines.
307 [Steve Henson]
308
c458a331
BM
309 *) In dsa_do_verify (crypto/dsa/dsa_ossl.c), verify that r and s are
310 positive and less than q.
311 [Bodo Moeller]
312
fd3e027f 313 +) Enhance the general user interface with mechanisms for inner control
235dd0a2
RL
314 and with pssibilities to have yes/no kind of prompts.
315 [Richard Levitte]
316
d63c6bd3 317 +) Change all calls to low level digest routines in the library and
323f289c
DSH
318 applications to use EVP. Add missing calls to HMAC_cleanup() and
319 don't assume HMAC_CTX can be copied using memcpy().
320 [Verdon Walker <VWalker@novell.com>, Steve Henson]
321
839590f5
RL
322 +) Add the possibility to control engines through control names but with
323 arbitrary arguments instead of just a string.
324 Change the key loaders to take a UI_METHOD instead of a callback
325 function pointer. NOTE: this breaks binary compatibility with earlier
326 versions of OpenSSL [engine].
327 Addapt the nCipher code for these new conditions and add a card insertion
328 callback.
329 [Richard Levitte]
330
9ad0f681
RL
331 +) Enhance the general user interface with mechanisms to better support
332 dialog box interfaces, application-defined prompts, the possibility
333 to use defaults (for example default passwords from somewhere else)
334 and interrupts/cancelations.
335 [Richard Levitte]
336
3cc1f498
DSH
337 *) Don't change *pointer in CRYPTO_add_lock() is add_lock_callback is
338 used: it isn't thread safe and the add_lock_callback should handle
339 that itself.
340 [Paul Rose <Paul.Rose@bridge.com>]
341
285b4275
BM
342 *) Verify that incoming data obeys the block size in
343 ssl3_enc (ssl/s3_enc.c) and tls1_enc (ssl/t1_enc.c).
344 [Bodo Moeller]
345
f2a253e0
DSH
346 +) Tidy up PKCS#12 attribute handling. Add support for the CSP name
347 attribute in PKCS#12 files, add new -CSP option to pkcs12 utility.
348 [Steve Henson]
349
ecf18606
BM
350 *) Fix OAEP check.
351