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