]> git.ipfire.org Git - thirdparty/openssl.git/blame - CHANGES
It's silly to use a different default for PERL than in the top
[thirdparty/openssl.git] / CHANGES
CommitLineData
f1c236f8 1 OpenSSL CHANGES
651d0aff
RE
2 _______________
3
c5e8580e
RL
4 Changes between 0.9.6 and 0.9.7 [xx XXX 2000]
5
673b3fde
BM
6 *) New SSLeay_version code SSLEAY_DIR to determine the compiled-in
7 value of OPENSSLDIR. This is available via the new '-d' option
8 to 'openssl version', and is also included in 'openssl version -a'.
9 [Bodo Moeller]
10
c06648f7
BM
11 *) Fix C code generated by 'openssl dsaparam -C': If a BN_bin2bn
12 call failed, free the DSA structure.
13 [Bodo Moeller]
14
65a22e8e
RL
15 *) Add another call level for memory allocation routines, thereby
16 allowing memory allocation callbacks that can be given file
17 name and line number information. The basic functionality
18 remains, as well as the original possibility to just replace
19 malloc(), realloc() and free(). The new functions that can be
20 registered help users provide variants of malloc(), realloc()
21 and free() that take two extra arguments, a const char* and an
22 int. To register and find out the current settings for those
23 hooks, the following functions are provided:
24
25 CRYPTO_set_mem_ex_functions
26 CRYPTO_set_locked_mem_ex_functions
27 CRYPTO_get_mem_ex_functions
28 CRYPTO_get_locked_mem_ex_functions
29
30 They work the same way as the corresponding CRYPTO_set_mem_functions
31 and friends with one exception: giving NULL as arguments will restore
32 the internal hooks to internal routines and will still make the above
33 functions return 1 and not 0.
34
35 This functionality was created as a direct request to add the
36 possibility to interface with the Windows debugging routines
37 _malloc_dbg, _realloc_dbg and _free_dbg.
38 [Richard Levitte]
39
cbf0f45f
DSH
40 *) Fix to uni2asc() to cope with zero length Unicode strings.
41 These are present in some PKCS#12 files.
42 [Steve Henson]
43
3c914840
GT
44 *) Finish off removing the remaining LHASH function pointer casts.
45 There should no longer be any prototype-casting required when using
56a67adb
GT
46 the LHASH abstraction, and any casts that remain are "bugs". See
47 the callback types and macros at the head of lhash.h for details
48 (and "OBJ_cleanup" in crypto/objects/obj_dat.c as an example).
3c914840
GT
49 [Geoff Thorpe]
50
599c0353
LJ
51 *) Add automatic query of EGD sockets in RAND_poll() for the unix variant.
52 If an EGD or PRNGD is running and enough entropy is returned, automatic
53 seeding like with /dev/[u]random will be performed.
54 Positions tried are: /etc/entropy, /var/run/egd-pool.
55 [Lutz Jaenicke]
56
0c61e299
RL
57 *) Change the Unix RAND_poll() variant to be able to poll several
58 random devices and only read data for a small fragment of time
59 to avoid hangs. Also separate out the Unix variant to it's own
60 file, rand_unix.c. For VMS, there's a currently-empty rand_vms.c.
61 [Richard Levitte]
62
0b33bc65
DSH
63 *) Move OCSP client related routines to ocsp_cl.c. These
64 provide utility functions which an application needing
65 to issue a request to an OCSP responder and analyse the
66 response will typically need: as opposed to those which an
67 OCSP responder itself would need which will be added later.
68
69 OCSP_request_sign() signs an OCSP request with an API similar
70 to PKCS7_sign(). OCSP_response_status() returns status of OCSP
71 response. OCSP_response_get1_basic() extracts basic response
72 from response. OCSP_resp_find_status(): finds and extracts status
73 information from an OCSP_CERTID structure (which will be created
74 when the request structure is built). These are built from lower
75 level functions which work on OCSP_SINGLERESP structures but
76 wont normally be used unless the application wishes to examine
77 extensions in the OCSP response for example.
78
79 Replace nonce routines with a pair of functions.
80 OCSP_request_add1_nonce() adds a nonce value and optionally
81 generates a random value. OCSP_check_nonce() checks the
82 validity of the nonce in an OCSP response.
83 [Steve Henson]
84
85 *) Change function OCSP_request_add() to OCSP_request_add0_id().
8e961835
DSH
86 This doesn't copy the supplied OCSP_CERTID and avoids the
87 need to free up the newly created id. Change return type
88 to OCSP_ONEREQ to return the internal OCSP_ONEREQ structure.
89 This can then be used to add extensions to the request.
90 Deleted OCSP_request_new(), since most of its functionality
91 is now in OCSP_REQUEST_new() (and the case insensitive name
92 clash) apart from the ability to set the request name which
93 will be added elsewhere.
94 [Steve Henson]
95
bf0d176e
DSH
96 *) Update OCSP API. Remove obsolete extensions argument from
97 various functions. Extensions are now handled using the new
98 OCSP extension code. New simple OCSP HTTP function which
99 can be used to send requests and parse the response.
100 [Steve Henson]
101
ec5add87
DSH
102 *) Fix the PKCS#7 (S/MIME) code to work with new ASN1. Two new
103 ASN1_ITEM structures help with sign and verify. PKCS7_ATTR_SIGN
104 uses the special reorder version of SET OF to sort the attributes
105 and reorder them to match the encoded order. This resolves a long
106 standing problem: a verify on a PKCS7 structure just after signing
107 it used to fail because the attribute order did not match the
108 encoded order. PKCS7_ATTR_VERIFY does not reorder the attributes:
109 it uses the received order. This is necessary to tolerate some broken
110 software that does not order SET OF. This is handled by encoding
111 as a SEQUENCE OF but using implicit tagging (with UNIVERSAL class)
112 to produce the required SET OF.
113 [Steve Henson]
114
a6574c21
RL
115 *) Have mk1mf.pl generate the macros OPENSSL_BUILD_SHLIBCRYPTO and
116 OPENSSL_BUILD_SHLIBSSL and use them appropriately in the header
117 files to get correct declarations of the ASN.1 item variables.
118 [Richard Levitte]
119
ecbe0781
DSH
120 *) Rewrite of PKCS#12 code to use new ASN1 functionality. Replace many
121 PKCS#12 macros with real functions. Fix two unrelated ASN1 bugs:
122 asn1_check_tlen() would sometimes attempt to use 'ctx' when it was
123 NULL and ASN1_TYPE was not dereferenced properly in asn1_ex_c2i().
124 New ASN1 macro: DECLARE_ASN1_ITEM() which just declares the relevant
125 ASN1_ITEM and no wrapper functions.
126 [Steve Henson]
127
4e1209eb
DSH
128 *) New functions or ASN1_item_d2i_fp() and ASN1_item_d2i_bio(). These
129 replace the old function pointer based I/O routines. Change most of
130 the *_d2i_bio() and *_d2i_fp() functions to use these.
131 [Steve Henson]
132
3f07fe09
RL
133 *) Enhance mkdef.pl to be more accepting about spacing in C preprocessor
134 lines, recognice more "algorithms" that can be deselected, and make
135 it complain about algorithm deselection that isn't recognised.
136 [Richard Levitte]
137
78d3b819 138 *) New ASN1 functions to handle dup, sign, verify, digest, pack and
73e92de5
DSH
139 unpack operations in terms of ASN1_ITEM. Modify existing wrappers
140 to use new functions. Add NO_ASN1_OLD which can be set to remove
141 some old style ASN1 functions: this can be used to determine if old
142 code will still work when these eventually go away.
09ab755c
DSH
143 [Steve Henson]
144
ec558b65
DSH
145 *) New extension functions for OCSP structures, these follow the
146 same conventions as certificates and CRLs.
147 [Steve Henson]
148
57d2f217
DSH
149 *) New function X509V3_add1_i2d(). This automatically encodes and
150 adds an extension. Its behaviour can be customised with various
151 flags to append, replace or delete. Various wrappers added for
152 certifcates and CRLs.
153 [Steve Henson]
154
5755cab4
DSH
155 *) Fix to avoid calling the underlying ASN1 print routine when
156 an extension cannot be parsed. Correct a typo in the
157 OCSP_SERVICELOC extension. Tidy up print OCSP format.
158 [Steve Henson]
159
3880cd35
BM
160 *) Increase s2->wbuf allocation by one byte in ssl2_new (ssl/s2_lib.c).
161 Otherwise do_ssl_write (ssl/s2_pkt.c) will write beyond buffer limits
162 when writing a 32767 byte record.
163 [Bodo Moeller; problem reported by Eric Day <eday@concentric.net>]
164
f640ee90 165 *) In RSA_eay_public_{en,ed}crypt and RSA_eay_mod_exp (rsa_eay.c),
126fe085 166 obtain lock CRYPTO_LOCK_RSA before setting rsa->_method_mod_{n,p,q}.
f640ee90
BM
167
168 (RSA objects have a reference count access to which is protected
169 by CRYPTO_LOCK_RSA [see rsa_lib.c, s3_srvr.c, ssl_cert.c, ssl_rsa.c],
170 so they are meant to be shared between threads.)
126fe085
BM
171 [Bodo Moeller, Geoff Thorpe; original patch submitted by
172 "Reddie, Steven" <Steven.Reddie@ca.com>]
f640ee90 173
9c67ab2f
DSH
174 *) Make mkdef.pl parse some of the ASN1 macros and add apropriate
175 entries for variables.
5755cab4 176 [Steve Henson]
9c67ab2f 177
1456d186
BM
178 *) Fix a deadlock in CRYPTO_mem_leaks().
179 [Bodo Moeller]
180
3ac82faa
BM
181 *) Add functionality to apps/openssl.c for detecting locking
182 problems: As the program is single-threaded, all we have
183 to do is register a locking callback using an array for
184 storing which locks are currently held by the program.
3ac82faa
BM
185 [Bodo Moeller]
186
187 *) Use a lock around the call to CRYPTO_get_ex_new_index() in
188 SSL_get_ex_data_X509_STORE_idx(), which is used in
189 ssl_verify_cert_chain() and thus can be called at any time
190 during TLS/SSL handshakes so that thread-safety is essential.
191 Unfortunately, the ex_data design is not at all suited
192 for multi-threaded use, so it probably should be abolished.
193 [Bodo Moeller]
194
2a86064f
GT
195 *) Added Broadcom "ubsec" ENGINE to OpenSSL.
196 [Broadcom, tweaked and integrated by Geoff Thorpe]
197
2c15d426
DSH
198 *) Move common extension printing code to new function
199 X509V3_print_extensions(). Reorganise OCSP print routines and
c08523d8 200 implement some needed OCSP ASN1 functions. Add OCSP extensions.
2c15d426
DSH
201 [Steve Henson]
202
de487514
DSH
203 *) New function X509_signature_print() to remove duplication in some
204 print routines.
205 [Steve Henson]
206
06db4253
DSH
207 *) Add a special meaning when SET OF and SEQUENCE OF flags are both
208 set (this was treated exactly the same as SET OF previously). This
209 is used to reorder the STACK representing the structure to match the
210 encoding. This will be used to get round a problem where a PKCS7
211 structure which was signed could not be verified because the STACK
212 order did not reflect the encoded order.
213 [Steve Henson]
214
36f554d4
DSH
215 *) Reimplement the OCSP ASN1 module using the new code.
216 [Steve Henson]
217
2aff7727
DSH
218 *) Update the X509V3 code to permit the use of an ASN1_ITEM structure
219 for its ASN1 operations. The old style function pointers still exist
220 for now but they will eventually go away.
221 [Steve Henson]
222
9d6b1ce6 223 *) Merge in replacement ASN1 code from the ASN1 branch. This almost
5755cab4
DSH
224 completely replaces the old ASN1 functionality with a table driven
225 encoder and decoder which interprets an ASN1_ITEM structure describing
226 the ASN1 module. Compatibility with the existing ASN1 API (i2d,d2i) is
227 largely maintained. Almost all of the old asn1_mac.h macro based ASN1
228 has also been converted to the new form.
9d6b1ce6
DSH
229 [Steve Henson]
230
8dea52fa
BM
231 *) Change BN_mod_exp_recp so that negative moduli are tolerated
232 (the sign is ignored). Similarly, ignore the sign in BN_MONT_CTX_set
233 so that BN_mod_exp_mont and BN_mod_exp_mont_word work
234 for negative moduli.
235 [Bodo Moeller]
236
237 *) Fix BN_uadd and BN_usub: Always return non-negative results instead
238 of not touching the result's sign bit.
239 [Bodo Moeller]
240
80d89e6a
BM
241 *) BN_div bugfix: If the result is 0, the sign (res->neg) must not be
242 set.
243 [Bodo Moeller]
244
f1919c3d
GT
245 *) Changed the LHASH code to use prototypes for callbacks, and created
246 macros to declare and implement thin (optionally static) functions
247 that provide type-safety and avoid function pointer casting for the
248 type-specific callbacks.
249 [Geoff Thorpe]
250
1946cd8b
UM
251 *) Use better test patterns in bntest.
252