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