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