]> git.ipfire.org Git - thirdparty/openssl.git/blame - CHANGES
update error library for EC... changes
[thirdparty/openssl.git] / CHANGES
CommitLineData
81a6c781 1
f1c236f8 2 OpenSSL CHANGES
651d0aff
RE
3 _______________
4
7a1c6aa2 5 Changes between 0.9.7 and 0.9.8 [xx XXX xxxx]
4d94ae00 6
0e4aa0d2
GT
7 *) Key-generation can now be implemented in RSA_METHOD, DSA_METHOD
8 and DH_METHOD (eg. by ENGINE implementations) to override the normal
9 software implementations. For DSA and DH, parameter generation can
10 also be overriden by providing the appropriate method callbacks.
11 [Geoff Thorpe]
12
e9224c71
GT
13 *) Change the "progress" mechanism used in key-generation and
14 primality testing to functions that take a new BN_GENCB pointer in
15 place of callback/argument pairs. The new API functions have "_ex"
16 postfixes and the older functions are reimplemented as wrappers for
17 the new ones. The OPENSSL_NO_DEPRECATED symbol can be used to hide
18 declarations of the old functions to help (graceful) attempts to
19 migrate to the new functions. Also, the new key-generation API
20 functions operate on a caller-supplied key-structure and return
21 success/failure rather than returning a key or NULL - this is to
22 help make "keygen" another member function of RSA_METHOD etc.
9d5390a0
BM
23
24 Example for using the new callback interface:
25
26 int (*my_callback)(int a, int b, BN_GENCB *cb) = ...;
27 void *my_arg = ...;
28 BN_GENCB my_cb;
29
30 BN_GENCB_set(&my_cb, my_callback, my_arg);
31
32 return BN_is_prime_ex(some_bignum, BN_prime_checks, NULL, &cb);
33 /* For the meaning of a, b in calls to my_callback(), see the
34 * documentation of the function that calls the callback.
35 * cb will point to my_cb; my_arg can be retrieved as cb->arg.
36 * my_callback should return 1 if it wants BN_is_prime_ex()
37 * to continue, or 0 to stop.
38 */
39
e9224c71
GT
40 [Geoff Thorpe]
41
fdaea9ed
RL
42 *) Change the ZLIB compression method to be stateful, and make it
43 available to TLS with the number defined in
44 draft-ietf-tls-compression-04.txt.
45 [Richard Levitte]
46
20199ca8
RL
47 *) Add the ASN.1 structures and functions for CertificatePair, which
48 is defined as follows (according to X.509_4thEditionDraftV6.pdf):
49
50 CertificatePair ::= SEQUENCE {
9d5390a0
BM
51 forward [0] Certificate OPTIONAL,
52 reverse [1] Certificate OPTIONAL,
53 -- at least one of the pair shall be present -- }
20199ca8
RL
54
55 Also implement the PEM functions to read and write certificate
56 pairs, and defined the PEM tag as "CERTIFICATE PAIR".
57
58 This needed to be defined, mostly for the sake of the LDAP
59 attribute crossCertificatePair, but may prove useful elsewhere as
60 well.
61 [Richard Levitte]
62
6f17f16f
RL
63 *) Make it possible to inhibit symlinking of shared libraries in
64 Makefile.shared, for Cygwin's sake.
65 [Richard Levitte]
66
b53e44e5
BM
67 *) Extend the BIGNUM API by creating new macros that behave like
68 functions
69
70 void BN_set_sign(BIGNUM *a, int neg);
71 int BN_get_sign(const BIGNUM *a);
72
73 and avoid the need to access 'a->neg' directly in applications.
74 [Nils Larsch <nla@trustcenter.de>]
75
5c6bf031
BM
76 *) Implement fast modular reduction for pseudo-Mersenne primes
77 used in NIST curves (crypto/bn/bn_nist.c, crypto/ec/ecp_nist.c).
78 EC_GROUP_new_curve_GFp() will now automatically use this
79 if applicable.
80 [Nils Larsch <nla@trustcenter.de>]
81
19b8d06a
BM
82 *) Add new lock type (CRYPTO_LOCK_BN).
83 [Bodo Moeller]
84
6f7c2cb3
RL
85 *) Change the ENGINE framework to automatically load engines
86 dynamically from specific directories unless they could be
87 found to already be built in or loaded. Move all the
88 current engines except for the cryptodev one to a new
89 directory engines/.
90 The engines in engines/ are built as shared libraries if
91 the "shared" options was given to ./Configure or ./config.
92 Otherwise, they are inserted in libcrypto.a.
93 /usr/local/ssl/engines is the default directory for dynamic
874fee47
RL
94 engines, but that can be overriden at configure time through
95 the usual use of --prefix and/or --openssldir, and at run
96 time with the environment variable OPENSSL_ENGINES.
6f7c2cb3
RL
97 [Geoff Thorpe and Richard Levitte]
98
30afcc07
RL
99 *) Add Makefile.shared, a helper makefile to build shared
100 libraries. Addapt Makefile.org.
101 [Richard Levitte]
102
fc6a6a10
DSH
103 *) Add version info to Win32 DLLs.
104 [Peter 'Luna' Runestig" <peter@runestig.com>]
105
9a48b07e
DSH
106 *) Add new 'medium level' PKCS#12 API. Certificates and keys
107 can be added using this API to created arbitrary PKCS#12
108 files while avoiding the low level API.
109
110 New options to PKCS12_create(), key or cert can be NULL and
111 will then be omitted from the output file. The encryption
112 algorithm NIDs can be set to -1 for no encryption, the mac
113 iteration count can be set to 0 to omit the mac.
114
115 Enhance pkcs12 utility by making the -nokeys and -nocerts
116 options work when creating a PKCS#12 file. New option -nomac
117 to omit the mac, NONE can be set for an encryption algorithm.
118 New code is modified to use the enhanced PKCS12_create()
119 instead of the low level API.
120 [Steve Henson]
121
230fd6b7
DSH
122 *) Extend ASN1 encoder to support indefinite length constructed
123 encoding. This can output sequences tags and octet strings in
124 this form. Modify pk7_asn1.c to support indefinite length
125 encoding. This is experimental and needs additional code to
126 be useful, such as an ASN1 bio and some enhanced streaming
127 PKCS#7 code.
128
129 Extend template encode functionality so that tagging is passed
130 down to the template encoder.
131 [Steve Henson]
132
9226e218
BM
133 *) Let 'openssl req' fail if an argument to '-newkey' is not
134 recognized instead of using RSA as a default.
135 [Bodo Moeller]
136
ea262260
BM
137 *) Add support for ECC-based ciphersuites from draft-ietf-tls-ecc-01.txt.
138 As these are not official, they are not included in "ALL";
139 the "ECCdraft" ciphersuite group alias can be used to select them.
140 [Vipul Gupta and Sumit Gupta (Sun Microsystems Laboratories)]
141
e172d60d
BM
142 *) Add ECDH engine support.
143 [Nils Gura and Douglas Stebila (Sun Microsystems Laboratories)]
144
145 *) Add ECDH in new directory crypto/ecdh/.
49a0f778
BM
146TODO: more general interface (return x coordinate, not its hash)
147TODO: bug: pad x with leading zeros if necessary
e172d60d
BM
148 [Douglas Stebila (Sun Microsystems Laboratories)]
149
95ecacf8
BM
150 *) Let BN_rand_range() abort with an error after 100 iterations
151 without success (which indicates a broken PRNG).
152 [Bodo Moeller]
153
6fb60a84
BM
154 *) Change BN_mod_sqrt() so that it verifies that the input value
155 is really the square of the return value. (Previously,
156 BN_mod_sqrt would show GIGO behaviour.)
157 [Bodo Moeller]
158
7793f30e
BM
159 *) Add named elliptic curves over binary fields from X9.62, SECG,
160 and WAP/WTLS; add OIDs that were still missing.
161
162 [Sheueling Chang Shantz and Douglas Stebila
163 (Sun Microsystems Laboratories)]
164
165 *) Extend the EC library for elliptic curves over binary fields
166 (new files ec2_smpl.c, ec2_smpt.c, ec2_mult.c in crypto/ec/).
167 New EC_METHOD:
168
169 EC_GF2m_simple_method
170
171 New API functions:
172
173 EC_GROUP_new_curve_GF2m
174 EC_GROUP_set_curve_GF2m
175 EC_GROUP_get_curve_GF2m
7793f30e
BM
176 EC_POINT_set_affine_coordinates_GF2m
177 EC_POINT_get_affine_coordinates_GF2m
178 EC_POINT_set_compressed_coordinates_GF2m
179
180 Point compression for binary fields is disabled by default for
181 patent reasons (compile with OPENSSL_EC_BIN_PT_COMP defined to
182 enable it).
183
184 As binary polynomials are represented as BIGNUMs, various members
185 of the EC_GROUP and EC_POINT data structures can be shared
186 between the implementations for prime fields and binary fields;
187 the above ..._GF2m functions (except for EX_GROUP_new_curve_GF2m)
188 are essentially identical to their ..._GFp counterparts.
9e4f9b36
BM
189 (For simplicity, the '..._GFp' prefix has been dropped from
190 various internal method names.)
7793f30e
BM
191
192 An internal 'field_div' method (similar to 'field_mul' and
193 'field_sqr') has been added; this is used only for binary fields.
194
195 [Sheueling Chang Shantz and Douglas Stebila
196 (Sun Microsystems Laboratories)]
197
9e4f9b36 198 *) Optionally dispatch EC_POINT_mul(), EC_POINT_precompute_mult()
7793f30e
BM
199 through methods ('mul', 'precompute_mult').
200
201 The generic implementations (now internally called 'ec_wNAF_mul'
202 and 'ec_wNAF_precomputed_mult') remain the default if these
203 methods are undefined.
204
205 [Sheueling Chang Shantz and Douglas Stebila
206 (Sun Microsystems Laboratories)]
207
208 *) New function EC_GROUP_get_degree, which is defined through
209 EC_METHOD. For curves over prime fields, this returns the bit
210 length of the modulus.
211
212 [Sheueling Chang Shantz and Douglas Stebila
213 (Sun Microsystems Laboratories)]
214
215 *) New functions EC_GROUP_dup, EC_POINT_dup.
216 (These simply call ..._new and ..._copy).
217
218 [Sheueling Chang Shantz and Douglas Stebila
219 (Sun Microsystems Laboratories)]
220
1dc920c8
BM
221 *) Add binary polynomial arithmetic software in crypto/bn/bn_gf2m.c.
222 Polynomials are represented as BIGNUMs (where the sign bit is not
223 used) in the following functions [macros]:
224
225 BN_GF2m_add
226 BN_GF2m_sub [= BN_GF2m_add]
227 BN_GF2m_mod [wrapper for BN_GF2m_mod_arr]
228 BN_GF2m_mod_mul [wrapper for BN_GF2m_mod_mul_arr]
229 BN_GF2m_mod_sqr [wrapper for BN_GF2m_mod_sqr_arr]
230 BN_GF2m_mod_inv
231 BN_GF2m_mod_exp [wrapper for BN_GF2m_mod_exp_arr]
232 BN_GF2m_mod_sqrt [wrapper for BN_GF2m_mod_sqrt_arr]
233 BN_GF2m_mod_solve_quad [wrapper for BN_GF2m_mod_solve_quad_arr]
234 BN_GF2m_cmp [= BN_ucmp]
235
236 (Note that only the 'mod' functions are actually for fields GF(2^m).
237 BN_GF2m_add() is misnomer, but this is for the sake of consistency.)
238
239 For some functions, an the irreducible polynomial defining a
240 field can be given as an 'unsigned int[]' with strictly
241 decreasing elements giving the indices of those bits that are set;
242 i.e., p[] represents the polynomial
243 f(t) = t^p[0] + t^p[1] + ... + t^p[k]
244 where
245 p[0] > p[1] > ... > p[k] = 0.
246 This applies to the following functions:
247
248 BN_GF2m_mod_arr
249 BN_GF2m_mod_mul_arr
250 BN_GF2m_mod_sqr_arr
251 BN_GF2m_mod_inv_arr [wrapper for BN_GF2m_mod_inv]
252 BN_GF2m_mod_div_arr [wrapper for BN_GF2m_mod_div]
253 BN_GF2m_mod_exp_arr
254 BN_GF2m_mod_sqrt_arr
255 BN_GF2m_mod_solve_quad_arr
256 BN_GF2m_poly2arr
257 BN_GF2m_arr2poly
258
259 Conversion can be performed by the following functions:
260
261 BN_GF2m_poly2arr
262 BN_GF2m_arr2poly
263
264 bntest.c has additional tests for binary polynomial arithmetic.
265
909abce8
BM
266 Two implementations for BN_GF2m_mod_div() are available.
267 The default algorithm simply uses BN_GF2m_mod_inv() and
268 BN_GF2m_mod_mul(). The alternative algorithm is compiled in only
269 if OPENSSL_SUN_GF2M_DIV is defined (patent pending; read the
270 copyright notice in crypto/bn/bn_gf2m.c before enabling it).
1dc920c8
BM
271
272 [Sheueling Chang Shantz and Douglas Stebila
273 (Sun Microsystems Laboratories)]
274
16dc1cfb
BM
275 *) Add new error code 'ERR_R_DISABLED' that can be used when some
276 functionality is disabled at compile-time.
277 [Douglas Stebila <douglas.stebila@sun.com>]
278
ea4f109c
BM
279 *) Change default behaviour of 'openssl asn1parse' so that more
280 information is visible when viewing, e.g., a certificate:
281
282 Modify asn1_parse2 (crypto/asn1/asn1_par.c) so that in non-'dump'
283 mode the content of non-printable OCTET STRINGs is output in a
284 style similar to INTEGERs, but with '[HEX DUMP]' prepended to
285 avoid the appearance of a printable string.
286 [Nils Larsch <nla@trustcenter.de>]
287
254ef80d
BM
288 *) Add 'asn1_flag' and 'asn1_form' member to EC_GROUP with access
289 functions
290 EC_GROUP_set_asn1_flag()
291 EC_GROUP_get_asn1_flag()
292 EC_GROUP_set_point_conversion_form()
293 EC_GROUP_get_point_conversion_form()
294 These control ASN1 encoding details:
b8e0e123
BM
295 - Curves (i.e., groups) are encoded explicitly unless asn1_flag
296 has been set to OPENSSL_EC_NAMED_CURVE.
5f3d6f70 297 - Points are encoded in uncompressed form by default; options for
254ef80d
BM
298 asn1_for are as for point2oct, namely
299 POINT_CONVERSION_COMPRESSED
300 POINT_CONVERSION_UNCOMPRESSED
301 POINT_CONVERSION_HYBRID
5f3d6f70
BM
302
303 Also add 'seed' and 'seed_len' members to EC_GROUP with access
304 functions
305 EC_GROUP_set_seed()
306 EC_GROUP_get0_seed()
307 EC_GROUP_get_seed_len()
308 This is used only for ASN1 purposes (so far).
458c2917
BM
309 [Nils Larsch <nla@trustcenter.de>]
310
311 *) Add 'field_type' member to EC_METHOD, which holds the NID
312 of the appropriate field type OID. The new function
313 EC_METHOD_get_field_type() returns this value.
314 [Nils Larsch <nla@trustcenter.de>]
315
6cbe6382
BM
316 *) Add functions
317 EC_POINT_point2bn()
318 EC_POINT_bn2point()
319 EC_POINT_point2hex()
320 EC_POINT_hex2point()
321 providing useful interfaces to EC_POINT_point2oct() and
322 EC_POINT_oct2point().
323 [Nils Larsch <nla@trustcenter.de>]
324
b6db386f
BM
325 *) Change internals of the EC library so that the functions
326 EC_GROUP_set_generator()
327 EC_GROUP_get_generator()
328 EC_GROUP_get_order()
329 EC_GROUP_get_cofactor()
330 are implemented directly in crypto/ec/ec_lib.c and not dispatched
331 to methods, which would lead to unnecessary code duplication when
332 adding different types of curves.
6cbe6382 333 [Nils Larsch <nla@trustcenter.de> with input by Bodo Moeller]
b6db386f 334
47234cd3
BM
335 *) Implement compute_wNAF (crypto/ec/ec_mult.c) without BIGNUM
336 arithmetic, and such that modified wNAFs are generated
337 (which avoid length expansion in many cases).
338 [Bodo Moeller]
339
82652aaf
BM
340 *) Add a function EC_GROUP_check_discriminant() (defined via
341 EC_METHOD) that verifies that the curve discriminant is non-zero.
342
343 Add a function EC_GROUP_check() that makes some sanity tests
344 on a EC_GROUP, its generator and order. This includes
345 EC_GROUP_check_discriminant().
346 [Nils Larsch <nla@trustcenter.de>]
347
4d94ae00
BM
348 *) Add ECDSA in new directory crypto/ecdsa/.
349
5dbd3efc
BM
350 Add applications 'openssl ecparam' and 'openssl ecdsa'
351 (these are based on 'openssl dsaparam' and 'openssl dsa').
4d94ae00
BM
352
353 ECDSA support is also included in various other files across the
354 library. Most notably,
355 - 'openssl req' now has a '-newkey ecdsa:file' option;
356 - EVP_PKCS82PKEY (crypto/evp/evp_pkey.c) now can handle ECDSA;
357 - X509_PUBKEY_get (crypto/asn1/x_pubkey.c) and
358 d2i_PublicKey (crypto/asn1/d2i_pu.c) have been modified to make
359 them suitable for ECDSA where domain parameters must be
e172d60d
BM
360 extracted before the specific public key;
361 - ECDSA engine support has been added.
f8e21776 362 [Nils Larsch <nla@trustcenter.de>]
4d94ae00 363
af28dd6c 364 *) Include some named elliptic curves, and add OIDs from X9.62,
ed5e37c3 365 SECG, and WAP/WTLS. Each curve can be obtained from the new
7eb18f12 366 function
ed5e37c3
BM
367 EC_GROUP_new_by_nid(),
368 and the list of available named curves can be obtained with
369 EC_get_builtin_curves().
254ef80d
BM
370 Also add a 'curve_name' member to EC_GROUP objects, which can be
371 accessed via
4d94ae00
BM
372 EC_GROUP_set_nid()
373 EC_GROUP_get_nid()
374 [Nils Larsch <nla@trustcenter.de, Bodo Moeller]
375
7a1c6aa2 376 Changes between 0.9.7 and 0.9.7a [XX xxx 2003]
948dcdb8 377
8ec16ce7
LJ
378 *) Another fix for SSLv2 session ID handling: the session ID was incorrectly
379 checked on reconnect on the client side, therefore session resumption
380 could still fail with a "ssl session id is different" error. This
381 behaviour is masked when SSL_OP_ALL is used due to
382 SSL_OP_MICROSOFT_SESS_ID_BUG being set.
383 Behaviour observed by Crispin Flowerday <crispin@flowerday.cx> as
384 followup to PR #377.
385 [Lutz Jaenicke]
386
04aff67d
RL
387 *) IA-32 assembler support enhancements: unified ELF targets, support
388 for SCO/Caldera platforms, fix for Cygwin shared build.
389 [Andy Polyakov]
390
afd41c9f
RL
391 *) Add support for FreeBSD on sparc64. As a consequence, support for
392 FreeBSD on non-x86 processors is separate from x86 processors on
393 the config script, much like the NetBSD support.
394 [Richard Levitte & Kris Kennaway <kris@obsecurity.org>]
948dcdb8 395
08101d72 396 Changes between 0.9.6h and 0.9.7 [31 Dec 2002]
3e06fb75 397
21cde7a4
LJ
398 *) Fix session ID handling in SSLv2 client code: the SERVER FINISHED
399 code (06) was taken as the first octet of the session ID and the last
400 octet was ignored consequently. As a result SSLv2 client side session
401 caching could not have worked due to the session ID mismatch between
402 client and server.
403 Behaviour observed by Crispin Flowerday <crispin@flowerday.cx> as
404 PR #377.
405 [Lutz Jaenicke]
406
9cd16b1d
RL
407 *) Change the declaration of needed Kerberos libraries to use EX_LIBS
408 instead of the special (and badly supported) LIBKRB5. LIBKRB5 is
409 removed entirely.
410 [Richard Levitte]
411
14676ffc 412 *) The hw_ncipher.c engine requires dynamic locks. Unfortunately, it
a1457874
RL
413 seems that in spite of existing for more than a year, many application
414 author have done nothing to provide the necessary callbacks, which
14676ffc
RL
415 means that this particular engine will not work properly anywhere.
416 This is a very unfortunate situation which forces us, in the name
417 of usability, to give the hw_ncipher.c a static lock, which is part
418 of libcrypto.
419 NOTE: This is for the 0.9.7 series ONLY. This hack will never
420 appear in 0.9.8 or later. We EXPECT application authors to have
421 dealt properly with this when 0.9.8 is released (unless we actually
422 make such changes in the libcrypto locking code that changes will
423 have to be made anyway).
424 [Richard Levitte]
425
2053c43d
DSH
426 *) In asn1_d2i_read_bio() repeatedly call BIO_read() until all content
427 octets have been read, EOF or an error occurs. Without this change
428 some truncated ASN1 structures will not produce an error.
429 [Steve Henson]
430
17582ccf
RL
431 *) Disable Heimdal support, since it hasn't been fully implemented.
432 Still give the possibility to force the use of Heimdal, but with
433 warnings and a request that patches get sent to openssl-dev.
434 [Richard Levitte]
435
0bf23d9b
RL
436 *) Add the VC-CE target, introduce the WINCE sysname, and add
437 INSTALL.WCE and appropriate conditionals to make it build.
438 [Steven Reddie <smr@essemer.com.au> via Richard Levitte]
439
6f17f16f
RL
440 *) Change the DLL names for Cygwin to cygcrypto-x.y.z.dll and
441 cygssl-x.y.z.dll, where x, y and z are the major, minor and
442 edit numbers of the version.
443 [Corinna Vinschen <vinschen@redhat.com> and Richard Levitte]
444
54a656ef
BL
445 *) Introduce safe string copy and catenation functions
446 (BUF_strlcpy() and BUF_strlcat()).
447 [Ben Laurie (CHATS) and Richard Levitte]
448
449 *) Avoid using fixed-size buffers for one-line DNs.
450 [Ben Laurie (CHATS)]
451
452 *) Add BUF_MEM_grow_clean() to avoid information leakage when
453 resizing buffers containing secrets, and use where appropriate.
454 [Ben Laurie (CHATS)]
455
456 *) Avoid using fixed size buffers for configuration file location.
457 [Ben Laurie (CHATS)]
458
459 *) Avoid filename truncation for various CA files.
460 [Ben Laurie (CHATS)]
461
462 *) Use sizeof in preference to magic numbers.
463 [Ben Laurie (CHATS)]
464
465 *) Avoid filename truncation in cert requests.
466 [Ben Laurie (CHATS)]
467
54a656ef
BL
468 *) Add assertions to check for (supposedly impossible) buffer
469 overflows.
470 [Ben Laurie (CHATS)]
471
472 *) Don't cache truncated DNS entries in the local cache (this could
473 potentially lead to a spoofing attack).
474 [Ben Laurie (CHATS)]
475
476 *) Fix various buffers to be large enough for hex/decimal
477 representations in a platform independent manner.
478 [Ben Laurie (CHATS)]
479
480 *) Add CRYPTO_realloc_clean() to avoid information leakage when
481 resizing buffers containing secrets, and use where appropriate.
482 [Ben Laurie (CHATS)]
483
484 *) Add BIO_indent() to avoid much slightly worrying code to do
485 indents.
486 [Ben Laurie (CHATS)]
487
488 *) Convert sprintf()/BIO_puts() to BIO_printf().
489 [Ben Laurie (CHATS)]
490
491 *) buffer_gets() could terminate with the buffer only half
492 full. Fixed.
493 [Ben Laurie (CHATS)]
494
495 *) Add assertions to prevent user-supplied crypto functions from
496 overflowing internal buffers by having large block sizes, etc.
497 [Ben Laurie (CHATS)]
498
2b2ab523
BM
499 *) New OPENSSL_assert() macro (similar to assert(), but enabled
500 unconditionally).
501 [Ben Laurie (CHATS)]
502
54a656ef
BL
503 *) Eliminate unused copy of key in RC4.
504 [Ben Laurie (CHATS)]
505
506 *) Eliminate unused and incorrectly sized buffers for IV in pem.h.
507 [Ben Laurie (CHATS)]
508
509 *) Fix off-by-one error in EGD path.
510 [Ben Laurie (CHATS)]
511
512 *) If RANDFILE path is too long, ignore instead of truncating.
513 [Ben Laurie (CHATS)]
514
515 *) Eliminate unused and incorrectly sized X.509 structure
516 CBCParameter.
517 [Ben Laurie (CHATS)]
518
519 *) Eliminate unused and dangerous function knumber().
520 [Ben Laurie (CHATS)]
521
522 *) Eliminate unused and dangerous structure, KSSL_ERR.
523 [Ben Laurie (CHATS)]
524
525 *) Protect against overlong session ID context length in an encoded
526 session object. Since these are local, this does not appear to be
527 exploitable.
528 [Ben Laurie (CHATS)]
529
3e06fb75
BM
530 *) Change from security patch (see 0.9.6e below) that did not affect
531 the 0.9.6 release series:
532
533 Remote buffer overflow in SSL3 protocol - an attacker could
534 supply an oversized master key in Kerberos-enabled versions.
535 (CAN-2002-0657)
536 [Ben Laurie (CHATS)]
dc014d43 537
7ba3a4c3
RL
538 *) Change the SSL kerb5 codes to match RFC 2712.
539 [Richard Levitte]
540
ba111217
BM
541 *) Make -nameopt work fully for req and add -reqopt switch.
542 [Michael Bell <michael.bell@rz.hu-berlin.de>, Steve Henson]
543
3f6db7f5
DSH
544 *) The "block size" for block ciphers in CFB and OFB mode should be 1.
545 [Steve Henson, reported by Yngve Nysaeter Pettersen <yngve@opera.com>]
546
f013c7f2
RL
547 *) Make sure tests can be performed even if the corresponding algorithms
548 have been removed entirely. This was also the last step to make
549 OpenSSL compilable with DJGPP under all reasonable conditions.
550 [Richard Levitte, Doug Kaufman <dkaufman@rahul.net>]
551
648765ba 552 *) Add cipher selection rules COMPLEMENTOFALL and COMPLEMENTOFDEFAULT
c6ccf055
LJ
553 to allow version independent disabling of normally unselected ciphers,
554 which may be activated as a side-effect of selecting a single cipher.
648765ba
BM
555
556 (E.g., cipher list string "RSA" enables ciphersuites that are left
557 out of "ALL" because they do not provide symmetric encryption.
558 "RSA:!COMPLEMEMENTOFALL" avoids these unsafe ciphersuites.)
c6ccf055
LJ
559 [Lutz Jaenicke, Bodo Moeller]
560
041843e4
RL
561 *) Add appropriate support for separate platform-dependent build
562 directories. The recommended way to make a platform-dependent
563 build directory is the following (tested on Linux), maybe with
564 some local tweaks:
565
566 # Place yourself outside of the OpenSSL source tree. In
567 # this example, the environment variable OPENSSL_SOURCE
568 # is assumed to contain the absolute OpenSSL source directory.
3e06fb75
BM
569 mkdir -p objtree/"`uname -s`-`uname -r`-`uname -m`"
570 cd objtree/"`uname -s`-`uname -r`-`uname -m`"
4a9476dd 571 (cd $OPENSSL_SOURCE; find . -type f) | while read F; do
041843e4
RL
572 mkdir -p `dirname $F`
573 ln -s $OPENSSL_SOURCE/$F $F
574 done
575
576 To be absolutely sure not to disturb the source tree, a "make clean"
577 is a good thing. If it isn't successfull, don't worry about it,
578 it probably means the source directory is very clean.
579 [Richard Levitte]
580
a6c6874a
GT
581 *) Make sure any ENGINE control commands make local copies of string
582 pointers passed to them whenever necessary. Otherwise it is possible
583 the caller may have overwritten (or deallocated) the original string
584 data when a later ENGINE operation tries to use the stored values.
585