]> git.ipfire.org Git - thirdparty/openssl.git/blame - CHANGES
Fix for partial chain notification.
[thirdparty/openssl.git] / CHANGES
CommitLineData
81a6c781 1
f1c236f8 2 OpenSSL CHANGES
651d0aff
RE
3 _______________
4
7d3ba88a 5 Changes between 1.0.2 and 1.1.0 [xx XXX xxxx]
785da0e6 6
0467ea68
DSH
7 *) Experimental workaround TLS filler (WTF) extension. Based on a suggested
8 workaround for the "TLS hang bug" (see FAQ and PR#2771): if the TLS client
9 Hello record length value would otherwise be > 255 and less that 512
10 pad with a dummy extension containing zeroes so it is at least 512 bytes
11 long.
12
13 To enable it use an unused extension number (for example 0x4242) using
14 e.g. -DTLSEXT_TYPE_wtf=0x4242
15
16 WARNING: EXPERIMENTAL, SUBJECT TO CHANGE.
17
18 [Steve Henson]
19
5e3ff62c
DSH
20 *) Experimental encrypt-then-mac support.
21
22 Experimental support for encrypt then mac from
23 draft-gutmann-tls-encrypt-then-mac-02.txt
a6e7d1c0 24
5fdeb58c
DSH
25 To enable it set the appropriate extension number (0x42 for the test
26 server) using e.g. -DTLSEXT_TYPE_encrypt_then_mac=0x42
a6e7d1c0 27
5e3ff62c
DSH
28 For non-compliant peers (i.e. just about everything) this should have no
29 effect.
30
31 WARNING: EXPERIMENTAL, SUBJECT TO CHANGE.
a6e7d1c0 32
5e3ff62c
DSH
33 [Steve Henson]
34
36086186
SD
35 *) Add callbacks supporting generation and retrieval of supplemental
36 data entries.
37 [Scott Deboy <sdeboy@apache.org>, Trevor Perrin and Ben Laurie]
38
97cf1f6c
DSH
39 *) Add EVP support for key wrapping algorithms, to avoid problems with
40 existing code the flag EVP_CIPHER_CTX_WRAP_ALLOW has to be set in
41 the EVP_CIPHER_CTX or an error is returned. Add AES and DES3 wrap
42 algorithms and include tests cases.
43 [Steve Henson]
44
5c84d2f5
DSH
45 *) Extend CMS code to support RSA-PSS signatures and RSA-OAEP for
46 enveloped data.
47 [Steve Henson]
48
271fef0e
DSH
49 *) Extended RSA OAEP support via EVP_PKEY API. Options to specify digest,
50 MGF1 digest and OAEP label.
51 [Steve Henson]
52
c6913eeb
DSH
53 *) Support for DTLS 1.2. This adds two sets of DTLS methods: DTLS_*_method()
54 supports both DTLS 1.2 and 1.0 and should use whatever version the peer
55 supports and DTLSv1_2_*_method() which supports DTLS 1.2 only.
56 [Steve Henson]
57
fefc111a
BL
58 *) Make openssl verify return errors.
59 [Chris Palmer <palmer@google.com> and Ben Laurie]
60
1c455bc0
DSH
61 *) New function ASN1_TIME_diff to calculate the difference between two
62 ASN1_TIME structures or one structure and the current time.
63 [Steve Henson]
64
a98b8ce6
DSH
65 *) Update fips_test_suite to support multiple command line options. New
66 test to induce all self test errors in sequence and check expected
67 failures.
68 [Steve Henson]
69
f4324e51
DSH
70 *) Add FIPS_{rsa,dsa,ecdsa}_{sign,verify} functions which digest and
71 sign or verify all in one operation.
72 [Steve Henson]
73
3ec9dceb
DSH
74 *) Add fips_algvs: a multicall fips utility incorporaing all the algorithm
75 test programs and fips_test_suite. Includes functionality to parse
76 the minimal script output of fipsalgest.pl directly.
f4324e51 77 [Steve Henson]
3ec9dceb 78
5e4eb995
DSH
79 *) Add authorisation parameter to FIPS_module_mode_set().
80 [Steve Henson]
81
2bfeb7dc
DSH
82 *) Add FIPS selftest for ECDH algorithm using P-224 and B-233 curves.
83 [Steve Henson]
84
4420b3b1 85 *) Use separate DRBG fields for internal and external flags. New function
cb71870d
DSH
86 FIPS_drbg_health_check() to perform on demand health checking. Add
87 generation tests to fips_test_suite with reduced health check interval to
4420b3b1
DSH
88 demonstrate periodic health checking. Add "nodh" option to
89 fips_test_suite to skip very slow DH test.
90 [Steve Henson]
91
15094852
DSH
92 *) New function FIPS_get_cipherbynid() to lookup FIPS supported ciphers
93 based on NID.
94 [Steve Henson]
95
a11f06b2
DSH
96 *) More extensive health check for DRBG checking many more failure modes.
97 New function FIPS_selftest_drbg_all() to handle every possible DRBG
98 combination: call this in fips_test_suite.
99 [Steve Henson]
100
7fdcb457
DSH
101 *) Add support for Dual EC DRBG from SP800-90. Update DRBG algorithm test
102 and POST to handle Dual EC cases.
103 [Steve Henson]
104
f55f5f77
DSH
105 *) Add support for canonical generation of DSA parameter 'g'. See
106 FIPS 186-3 A.2.3.
107
7fdcb457
DSH
108 *) Add support for HMAC DRBG from SP800-90. Update DRBG algorithm test and
109 POST to handle HMAC cases.
20f12e63
DSH
110 [Steve Henson]
111
01a9a759 112 *) Add functions FIPS_module_version() and FIPS_module_version_text()
3d7bf77f 113 to return numerical and string versions of the FIPS module number.
01a9a759
DSH
114 [Steve Henson]
115
c2fd5989 116 *) Rename FIPS_mode_set and FIPS_mode to FIPS_module_mode_set and
3d7bf77f 117 FIPS_module_mode. FIPS_mode and FIPS_mode_set will be implemented
c2fd5989
DSH
118 outside the validated module in the FIPS capable OpenSSL.
119 [Steve Henson]
120
e0d1a2f8 121 *) Minor change to DRBG entropy callback semantics. In some cases
3d7bf77f 122 there is no multiple of the block length between min_len and
e0d1a2f8
DSH
123 max_len. Allow the callback to return more than max_len bytes
124 of entropy but discard any extra: it is the callback's responsibility
125 to ensure that the extra data discarded does not impact the
126 requested amount of entropy.
127 [Steve Henson]
128
cac4fb58
DSH
129 *) Add PRNG security strength checks to RSA, DSA and ECDSA using
130 information in FIPS186-3, SP800-57 and SP800-131A.
131 [Steve Henson]
132
b5dd1787
DSH
133 *) CCM support via EVP. Interface is very similar to GCM case except we
134 must supply all data in one chunk (i.e. no update, final) and the
135 message length must be supplied if AAD is used. Add algorithm test
136 support.
23916810
DSH
137 [Steve Henson]
138
ac892b7a
DSH
139 *) Initial version of POST overhaul. Add POST callback to allow the status
140 of POST to be monitored and/or failures induced. Modify fips_test_suite
141 to use callback. Always run all selftests even if one fails.
142 [Steve Henson]
143
06b7e5a0
DSH
144 *) XTS support including algorithm test driver in the fips_gcmtest program.
145 Note: this does increase the maximum key length from 32 to 64 bytes but
146 there should be no binary compatibility issues as existing applications
147 will never use XTS mode.
32a2d8dd
DSH
148 [Steve Henson]
149
05e24c87
DSH
150 *) Extensive reorganisation of FIPS PRNG behaviour. Remove all dependencies
151 to OpenSSL RAND code and replace with a tiny FIPS RAND API which also
152 performs algorithm blocking for unapproved PRNG types. Also do not
153 set PRNG type in FIPS_mode_set(): leave this to the application.
154 Add default OpenSSL DRBG handling: sets up FIPS PRNG and seeds with
d7a3ce98 155 the standard OpenSSL PRNG: set additional data to a date time vector.
05e24c87
DSH
156 [Steve Henson]
157
cab0595c
DSH
158 *) Rename old X9.31 PRNG functions of the form FIPS_rand* to FIPS_x931*.
159 This shouldn't present any incompatibility problems because applications
160 shouldn't be using these directly and any that are will need to rethink
161 anyway as the X9.31 PRNG is now deprecated by FIPS 140-2
162 [Steve Henson]
163
96ec46f7
DSH
164 *) Extensive self tests and health checking required by SP800-90 DRBG.
165 Remove strength parameter from FIPS_drbg_instantiate and always
166 instantiate at maximum supported strength.
167 [Steve Henson]
168
8857b380
DSH
169 *) Add ECDH code to fips module and fips_ecdhvs for primitives only testing.
170 [Steve Henson]
171
11e80de3
DSH
172 *) New algorithm test program fips_dhvs to handle DH primitives only testing.
173 [Steve Henson]
174
175 *) New function DH_compute_key_padded() to compute a DH key and pad with
176 leading zeroes if needed: this complies with SP800-56A et al.
177 [Steve Henson]
178
591cbfae
DSH
179 *) Initial implementation of SP800-90 DRBGs for Hash and CTR. Not used by
180 anything, incomplete, subject to change and largely untested at present.
181 [Steve Henson]
182
eead69f5
DSH
183 *) Modify fipscanisteronly build option to only build the necessary object
184 files by filtering FIPS_EX_OBJ through a perl script in crypto/Makefile.
185 [Steve Henson]
186
017bc57b
DSH
187 *) Add experimental option FIPSSYMS to give all symbols in
188 fipscanister.o and FIPS or fips prefix. This will avoid
5d439d69
DSH
189 conflicts with future versions of OpenSSL. Add perl script
190 util/fipsas.pl to preprocess assembly language source files
191 and rename any affected symbols.
017bc57b
DSH
192 [Steve Henson]
193
25c65429
DSH
194 *) Add selftest checks and algorithm block of non-fips algorithms in
195 FIPS mode. Remove DES2 from selftests.
196 [Steve Henson]
197
fe26d066
DSH
198 *) Add ECDSA code to fips module. Add tiny fips_ecdsa_check to just
199 return internal method without any ENGINE dependencies. Add new
25c65429 200 tiny fips sign and verify functions.
fe26d066
DSH
201 [Steve Henson]
202
b3310161
DSH
203 *) New build option no-ec2m to disable characteristic 2 code.
204 [Steve Henson]
205
30b56225
DSH
206 *) New build option "fipscanisteronly". This only builds fipscanister.o
207 and (currently) associated fips utilities. Uses the file Makefile.fips
208 instead of Makefile.org as the prototype.
209 [Steve Henson]
210
b3d8022e
DSH
211 *) Add some FIPS mode restrictions to GCM. Add internal IV generator.
212 Update fips_gcmtest to use IV generator.
213 [Steve Henson]
214
bdaa5415
DSH
215 *) Initial, experimental EVP support for AES-GCM. AAD can be input by
216 setting output buffer to NULL. The *Final function must be
217 called although it will not retrieve any additional data. The tag
218 can be set or retrieved with a ctrl. The IV length is by default 12
219 bytes (96 bits) but can be set to an alternative value. If the IV
220 length exceeds the maximum IV length (currently 16 bytes) it cannot be
221 set before the key.
222 [Steve Henson]
223
3da0ca79
DSH
224 *) New flag in ciphers: EVP_CIPH_FLAG_CUSTOM_CIPHER. This means the
225 underlying do_cipher function handles all cipher semantics itself
226 including padding and finalisation. This is useful if (for example)
227 an ENGINE cipher handles block padding itself. The behaviour of
228 do_cipher is subtly changed if this flag is set: the return value
229 is the number of characters written to the output buffer (zero is
230 no longer an error code) or a negative error code. Also if the
d45087c6 231 input buffer is NULL and length 0 finalisation should be performed.
3da0ca79
DSH
232 [Steve Henson]
233
2b3936e8
DSH
234 *) If a candidate issuer certificate is already part of the constructed
235 path ignore it: new debug notification X509_V_ERR_PATH_LOOP for this case.
236 [Steve Henson]
237
7c2d4fee
BM
238 *) Improve forward-security support: add functions
239
240 void SSL_CTX_set_not_resumable_session_callback(SSL_CTX *ctx, int (*cb)(SSL *ssl, int is_forward_secure))
241 void SSL_set_not_resumable_session_callback(SSL *ssl, int (*cb)(SSL *ssl, int is_forward_secure))
242
243 for use by SSL/TLS servers; the callback function will be called whenever a
244 new session is created, and gets to decide whether the session may be
245 cached to make it resumable (return 0) or not (return 1). (As by the
246 SSL/TLS protocol specifications, the session_id sent by the server will be
247 empty to indicate that the session is not resumable; also, the server will
248 not generate RFC 4507 (RFC 5077) session tickets.)
249
250 A simple reasonable callback implementation is to return is_forward_secure.
251 This parameter will be set to 1 or 0 depending on the ciphersuite selected
252 by the SSL/TLS server library, indicating whether it can provide forward
253 security.
254