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