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