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