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