]> git.ipfire.org Git - thirdparty/openssl.git/blame - CHANGES
Fix OCSP checking.
[thirdparty/openssl.git] / CHANGES
CommitLineData
81a6c781 1
f1c236f8 2 OpenSSL CHANGES
651d0aff
RE
3 _______________
4
0e1f390b 5 Changes between 1.0.x and 1.1.0 [xx XXX xxxx]
30c278aa
BL
6 *) Fix OCSP checking.
7 [Rob Stradling <rob.stradling@comodo.com> and Ben Laurie]
aaf35f11 8
0090a686
DSH
9 *) New option -crl_download in several openssl utilities to download CRLs
10 from CRLDP extension in certificates.
11 [Steve Henson]
12
3bf15e29
DSH
13 *) Integrate hostname, email address and IP address checking with certificate
14 verification. New verify options supporting checking in opensl utility.
15 [Steve Henson]
16
2e8cb108
DSH
17 *) New function X509_CRL_diff to generate a delta CRL from the difference
18 of two full CRLs. Add support to "crl" utility.
19 [Steve Henson]
20
fdb78f3d
DSH
21 *) New options -CRL and -CRLform for s_client and s_server for CRLs.
22 [Steve Henson]
23
6f9076ff
DSH
24 *) Extend OCSP I/O functions so they can be used for simple general purpose
25 HTTP as well as OCSP. New wrapper function which can be used to download
26 CRLs using the OCSP API.
27 [Steve Henson]
28
29 *) New functions to set lookup_crls callback and to retrieve
2c340864
DSH
30 X509_STORE from X509_STORE_CTX.
31 [Steve Henson]
32
20b431e3 33 *) New ctrl and macro to retrieve supported points extensions.
2c340864 34 Print out extension in s_server and s_client.
20b431e3
DSH
35 [Steve Henson]
36
1c455bc0
DSH
37 *) New function ASN1_TIME_diff to calculate the difference between two
38 ASN1_TIME structures or one structure and the current time.
39 [Steve Henson]
40
d88926f1
DSH
41 *) Fixes and wildcard matching support to hostname and email checking
42 functions. Add manual page.
43 [Florian Weimer (Red Hat Product Security Team)]
44
3db935a9
DSH
45 *) New experimental SSL_CONF* functions. These provide a common framework
46 for application configuration using configuration files or command lines.
47 [Steve Henson]
48
a70da5b3
DSH
49 *) New functions to check a hostname email or IP address against a
50 certificate. Add options to s_client, s_server and x509 utilities
51 to print results of checks against a certificate.
52 [Steve Henson]
53
4f3df8be
DSH
54 *) Add -rev test option to s_server to just reverse order of characters
55 received by client and send back to server. Also prints an abbreviated
56 summary of the connection parameters.
57 [Steve Henson]
58
2a7cbe77
DSH
59 *) New option -brief for s_client and s_server to print out a brief summary
60 of connection parameters.
61 [Steve Henson]
62
94a209d8
DSH
63 *) Add functions to retrieve and manipulate the raw cipherlist sent by a
64 client to OpenSSL.
65 [Steve Henson]
66
2ea80354
DSH
67 *) New Suite B modes for TLS code. These use and enforce the requirements
68 of RFC6460: restrict ciphersuites, only permit Suite B algorithms and
69 only use Suite B curves. The Suite B modes can be set by using the
70 strings "SUITEB128", "SUITEB192" or "SUITEB128ONLY" for the cipherstring.
71 [Steve Henson]
72
3ad344a5
DSH
73 *) New chain verification flags for Suite B levels of security. Check
74 algorithms are acceptable when flags are set in X509_verify_cert.
75 [Steve Henson]
76
6dbb6219
DSH
77 *) Make tls1_check_chain return a set of flags indicating checks passed
78 by a certificate chain. Add additional tests to handle client
79 certificates: checks for matching certificate type and issuer name
80 comparison.
81 [Steve Henson]
82
ec4a50b3
DSH
83 *) If an attempt is made to use a signature algorithm not in the peer
84 preference list abort the handshake. If client has no suitable
85 signature algorithms in response to a certificate request do not
86 use the certificate.
87 [Steve Henson]
88
d18b716d
DSH
89 *) If server EC tmp key is not in client preference list abort handshake.
90 [Steve Henson]
91
74ecfab4
DSH
92 *) Add support for certificate stores in CERT structure. This makes it
93 possible to have different stores per SSL structure or one store in
94 the parent SSL_CTX. Include distint stores for certificate chain
95 verification and chain building. New ctrl SSL_CTRL_BUILD_CERT_CHAIN
96 to build and store a certificate chain in CERT structure: returing
97 an error if the chain cannot be built: this will allow applications
98 to test if a chain is correctly configured.
99
100 Note: if the CERT based stores are not set then the parent SSL_CTX
101 store is used to retain compatibility with existing behaviour.
102
103 [Steve Henson]
104
b7bfe69b
DSH
105 *) New function ssl_set_client_disabled to set a ciphersuite disabled
106 mask based on the current session, check mask when sending client
107 hello and checking the requested ciphersuite.
108 [Steve Henson]
109
9f27b1ee
DSH
110 *) New ctrls to retrieve and set certificate types in a certificate
111 request message. Print out received values in s_client. If certificate
112 types is not set with custom values set sensible values based on
113 supported signature algorithms.
114 [Steve Henson]
115
3dbc46df
DSH
116 *) Support for distinct client and server supported signature algorithms.
117 [Steve Henson]
118
18d71588
DSH
119 *) Add certificate callback. If set this is called whenever a certificate
120 is required by client or server. An application can decide which
121 certificate chain to present based on arbitrary criteria: for example
122 supported signature algorithms. Add very simple example to s_server.
123 This fixes many of the problems and restrictions of the existing client
124 certificate callback: for example you can now clear an existing
125 certificate and specify the whole chain.
126 [Steve Henson]
127
d61ff83b
DSH
128 *) Add new "valid_flags" field to CERT_PKEY structure which determines what
129 the certificate can be used for (if anything). Set valid_flags field
130 in new tls1_check_chain function. Simplify ssl_set_cert_masks which used
131 to have similar checks in it.
132
133 Add new "cert_flags" field to CERT structure and include a "strict mode".
134 This enforces some TLS certificate requirements (such as only permitting
135 certificate signature algorithms contained in the supported algorithms
136 extension) which some implementations ignore: this option should be used
137 with caution as it could cause interoperability issues.
138 [Steve Henson]
139
4453cd8c
DSH
140 *) Update and tidy signature algorithm extension processing. Work out
141 shared signature algorithms based on preferences and peer algorithms
142 and print them out in s_client and s_server. Abort handshake if no
143 shared signature algorithms.
144 [Steve Henson]
145
0f229cce
DSH
146 *) Add new functions to allow customised supported signature algorithms
147 for SSL and SSL_CTX structures. Add options to s_client and s_server
148 to support them.
149 [Steve Henson]
150
a5ee80b9
DSH
151 *) New function SSL_certs_clear() to delete all references to certificates
152 from an SSL structure. Before this once a certificate had been added
153 it couldn't be removed.
154 [Steve Henson]
155
93ab9e42
DSH
156 *) Initial SSL tracing code. This parses out SSL/TLS records using the
157 message callback and prints the results. Needs compile time option
158 "enable-ssl-trace". New options to s_client and s_server to enable
159 tracing.
160 [Steve Henson]
161
dfcf48f4
DSH
162 *) New functions to retrieve certificate signature and signature
163 OID NID.
164 [Steve Henson]
165
4b9e0b5f
DSH
166 *) Print out deprecated issuer and subject unique ID fields in
167 certificates.
168 [Steve Henson]
169
a98b8ce6
DSH
170 *) Update fips_test_suite to support multiple command line options. New
171 test to induce all self test errors in sequence and check expected
172 failures.
173 [Steve Henson]
174
f4324e51
DSH
175 *) Add FIPS_{rsa,dsa,ecdsa}_{sign,verify} functions which digest and
176 sign or verify all in one operation.
177 [Steve Henson]
178
3ec9dceb
DSH
179 *) Add fips_algvs: a multicall fips utility incorporaing all the algorithm
180 test programs and fips_test_suite. Includes functionality to parse
181 the minimal script output of fipsalgest.pl directly.
f4324e51 182 [Steve Henson]
3ec9dceb 183
5e4eb995
DSH
184 *) Add authorisation parameter to FIPS_module_mode_set().
185 [Steve Henson]
186
2bfeb7dc
DSH
187 *) Add FIPS selftest for ECDH algorithm using P-224 and B-233 curves.
188 [Steve Henson]
189
4420b3b1 190 *) Use separate DRBG fields for internal and external flags. New function
cb71870d
DSH
191 FIPS_drbg_health_check() to perform on demand health checking. Add
192 generation tests to fips_test_suite with reduced health check interval to
4420b3b1
DSH
193 demonstrate periodic health checking. Add "nodh" option to
194 fips_test_suite to skip very slow DH test.
195 [Steve Henson]
196
15094852
DSH
197 *) New function FIPS_get_cipherbynid() to lookup FIPS supported ciphers
198 based on NID.
199 [Steve Henson]
200
a11f06b2
DSH
201 *) More extensive health check for DRBG checking many more failure modes.
202 New function FIPS_selftest_drbg_all() to handle every possible DRBG
203 combination: call this in fips_test_suite.
204 [Steve Henson]
205
7fdcb457
DSH
206 *) Add support for Dual EC DRBG from SP800-90. Update DRBG algorithm test
207 and POST to handle Dual EC cases.
208 [Steve Henson]
209
f55f5f77
DSH
210 *) Add support for canonical generation of DSA parameter 'g'. See
211 FIPS 186-3 A.2.3.
212
7fdcb457
DSH
213 *) Add support for HMAC DRBG from SP800-90. Update DRBG algorithm test and
214 POST to handle HMAC cases.
20f12e63
DSH
215 [Steve Henson]
216
01a9a759
DSH
217 *) Add functions FIPS_module_version() and FIPS_module_version_text()
218 to return numberical and string versions of the FIPS module number.
219 [Steve Henson]
220
c2fd5989
DSH
221 *) Rename FIPS_mode_set and FIPS_mode to FIPS_module_mode_set and
222 FIPS_module_mode. FIPS_mode and FIPS_mode_set will be implmeneted
223 outside the validated module in the FIPS capable OpenSSL.
224 [Steve Henson]
225
e0d1a2f8
DSH
226 *) Minor change to DRBG entropy callback semantics. In some cases
227 there is no mutiple of the block length between min_len and
228 max_len. Allow the callback to return more than max_len bytes
229 of entropy but discard any extra: it is the callback's responsibility
230 to ensure that the extra data discarded does not impact the
231 requested amount of entropy.
232 [Steve Henson]
233
cac4fb58
DSH
234 *) Add PRNG security strength checks to RSA, DSA and ECDSA using
235 information in FIPS186-3, SP800-57 and SP800-131A.
236 [Steve Henson]
237
b5dd1787
DSH
238 *) CCM support via EVP. Interface is very similar to GCM case except we
239 must supply all data in one chunk (i.e. no update, final) and the
240 message length must be supplied if AAD is used. Add algorithm test
241 support.
23916810
DSH
242 [Steve Henson]
243
ac892b7a
DSH
244 *) Initial version of POST overhaul. Add POST callback to allow the status
245 of POST to be monitored and/or failures induced. Modify fips_test_suite
246 to use callback. Always run all selftests even if one fails.
247 [Steve Henson]
248
06b7e5a0
DSH
249 *) XTS support including algorithm test driver in the fips_gcmtest program.
250 Note: this does increase the maximum key length from 32 to 64 bytes but
251 there should be no binary compatibility issues as existing applications
252 will never use XTS mode.
32a2d8dd
DSH
253 [Steve Henson]
254
05e24c87
DSH
255 *) Extensive reorganisation of FIPS PRNG behaviour. Remove all dependencies
256 to OpenSSL RAND code and replace with a tiny FIPS RAND API which also
257 performs algorithm blocking for unapproved PRNG types. Also do not
258 set PRNG type in FIPS_mode_set(): leave this to the application.
259 Add default OpenSSL DRBG handling: sets up FIPS PRNG and seeds with
d7a3ce98 260 the standard OpenSSL PRNG: set additional data to a date time vector.
05e24c87
DSH
261 [Steve Henson]
262
cab0595c
DSH
263 *) Rename old X9.31 PRNG functions of the form FIPS_rand* to FIPS_x931*.
264 This shouldn't present any incompatibility problems because applications
265 shouldn't be using these directly and any that are will need to rethink
266 anyway as the X9.31 PRNG is now deprecated by FIPS 140-2
267 [Steve Henson]
268
96ec46f7
DSH
269 *) Extensive self tests and health checking required by SP800-90 DRBG.
270 Remove strength parameter from FIPS_drbg_instantiate and always
271 instantiate at maximum supported strength.
272 [Steve Henson]
273
8857b380
DSH
274 *) Add ECDH code to fips module and fips_ecdhvs for primitives only testing.
275 [Steve Henson]
276
11e80de3
DSH
277 *) New algorithm test program fips_dhvs to handle DH primitives only testing.
278 [Steve Henson]
279
280 *) New function DH_compute_key_padded() to compute a DH key and pad with
281 leading zeroes if needed: this complies with SP800-56A et al.
282 [Steve Henson]
283
591cbfae
DSH
284 *) Initial implementation of SP800-90 DRBGs for Hash and CTR. Not used by
285 anything, incomplete, subject to change and largely untested at present.
286 [Steve Henson]
287
eead69f5
DSH
288 *) Modify fipscanisteronly build option to only build the necessary object
289 files by filtering FIPS_EX_OBJ through a perl script in crypto/Makefile.
290 [Steve Henson]
291
017bc57b
DSH
292 *) Add experimental option FIPSSYMS to give all symbols in
293 fipscanister.o and FIPS or fips prefix. This will avoid
5d439d69
DSH
294 conflicts with future versions of OpenSSL. Add perl script
295 util/fipsas.pl to preprocess assembly language source files
296 and rename any affected symbols.
017bc57b
DSH
297 [Steve Henson]
298
25c65429
DSH
299 *) Add selftest checks and algorithm block of non-fips algorithms in
300 FIPS mode. Remove DES2 from selftests.
301 [Steve Henson]
302
fe26d066
DSH
303 *) Add ECDSA code to fips module. Add tiny fips_ecdsa_check to just
304 return internal method without any ENGINE dependencies. Add new
25c65429 305 tiny fips sign and verify functions.
fe26d066
DSH
306 [Steve Henson]
307
b3310161
DSH
308 *) New build option no-ec2m to disable characteristic 2 code.
309 [Steve Henson]
310
30b56225
DSH
311 *) New build option "fipscanisteronly". This only builds fipscanister.o
312 and (currently) associated fips utilities. Uses the file Makefile.fips
313 instead of Makefile.org as the prototype.
314 [Steve Henson]
315
b3d8022e
DSH
316 *) Add some FIPS mode restrictions to GCM. Add internal IV generator.
317 Update fips_gcmtest to use IV generator.
318 [Steve Henson]
319
bdaa5415
DSH
320 *) Initial, experimental EVP support for AES-GCM. AAD can be input by
321 setting output buffer to NULL. The *Final function must be
322 called although it will not retrieve any additional data. The tag
323 can be set or retrieved with a ctrl. The IV length is by default 12
324 bytes (96 bits) but can be set to an alternative value. If the IV
325 length exceeds the maximum IV length (currently 16 bytes) it cannot be
326 set before the key.
327 [Steve Henson]
328
3da0ca79
DSH
329 *) New flag in ciphers: EVP_CIPH_FLAG_CUSTOM_CIPHER. This means the
330 underlying do_cipher function handles all cipher semantics itself
331 including padding and finalisation. This is useful if (for example)
332 an ENGINE cipher handles block padding itself. The behaviour of
333 do_cipher is subtly changed if this flag is set: the return value
334 is the number of characters written to the output buffer (zero is
335 no longer an error code) or a negative error code. Also if the
d45087c6 336 input buffer is NULL and length 0 finalisation should be performed.
3da0ca79
DSH
337 [Steve Henson]
338
2b3936e8
DSH
339 *) If a candidate issuer certificate is already part of the constructed
340 path ignore it: new debug notification X509_V_ERR_PATH_LOOP for this case.
341 [Steve Henson]
342
7c2d4fee
BM
343 *) Improve forward-security support: add functions
344
345 void SSL_CTX_set_not_resumable_session_callback(SSL_CTX *ctx, int (*cb)(SSL *ssl, int is_forward_secure))
346 void SSL_set_not_resumable_session_callback(SSL *ssl, int (*cb)(SSL *ssl, int is_forward_secure))
347
348 for use by SSL/TLS servers; the callback function will be called whenever a
349 new session is created, and gets to decide whether the session may be
350 cached to make it resumable (return 0) or not (return 1). (As by the
351 SSL/TLS protocol specifications, the session_id sent by the server will be
352 empty to indicate that the session is not resumable; also, the server will
353 not generate RFC 4507 (RFC 5077) session tickets.)
354
355 A simple reasonable callback implementation is to return is_forward_secure.
356 This parameter will be set to 1 or 0 depending on the ciphersuite selected
357 by the SSL/TLS server library, indicating whether it can provide forward
358 security.
359