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