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