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