]> git.ipfire.org Git - thirdparty/openssl.git/blame - CHANGES
Reject zero length ec point format list.
[thirdparty/openssl.git] / CHANGES
CommitLineData
81a6c781 1
f1c236f8 2 OpenSSL CHANGES
651d0aff
RE
3 _______________
4
b9115239
DSH
5 Changes between 1.0.1 and 1.0.2 [xx XXX xxxx]
6
78b5d89d
DSH
7 *) New ctrl and macro to retrieve supported points extensions.
8 Print out extension in s_server.
9 [Steve Henson]
10
bd9fc1d6
DSH
11 *) New functions to retrieve certificate signature and signature
12 OID NID.
13 [Steve Henson]
14
1520e6c0
DSH
15 *) Add functions to retrieve and manipulate the raw cipherlist sent by a
16 client to OpenSSL.
17 [Steve Henson]
18
ccf6a19e
DSH
19 *) New Suite B modes for TLS code. These use and enforce the requirements
20 of RFC6460: restrict ciphersuites, only permit Suite B algorithms and
21 only use Suite B curves. The Suite B modes can be set by using the
22 strings "SUITEB128", "SUITEB192" or "SUITEB128ONLY" for the cipherstring.
23 [Steve Henson]
24
ba8bdea7
DSH
25 *) New chain verification flags for Suite B levels of security. Check
26 algorithms are acceptable when flags are set in X509_verify_cert.
27 [Steve Henson]
28
6660baee
DSH
29 *) Make tls1_check_chain return a set of flags indicating checks passed
30 by a certificate chain. Add additional tests to handle client
31 certificates: checks for matching certificate type and issuer name
32 comparison.
33 [Steve Henson]
34
25d4c925
DSH
35 *) If an attempt is made to use a signature algorithm not in the peer
36 preference list abort the handshake. If client has no suitable
37 signature algorithms in response to a certificate request do not
38 use the certificate.
39 [Steve Henson]
40
44adfeb6
DSH
41 *) If server EC tmp key is not in client preference list abort handshake.
42 [Steve Henson]
43
b762acad
DSH
44 *) Add support for certificate stores in CERT structure. This makes it
45 possible to have different stores per SSL structure or one store in
46 the parent SSL_CTX. Include distint stores for certificate chain
47 verification and chain building. New ctrl SSL_CTRL_BUILD_CERT_CHAIN
48 to build and store a certificate chain in CERT structure: returing
49 an error if the chain cannot be built: this will allow applications
50 to test if a chain is correctly configured.
51
52 Note: if the CERT based stores are not set then the parent SSL_CTX
53 store is used to retain compatibility with existing behaviour.
54
55 [Steve Henson]
56
b28fbdfa
DSH
57 *) New function ssl_set_client_disabled to set a ciphersuite disabled
58 mask based on the current session, check mask when sending client
59 hello and checking the requested ciphersuite.
60 [Steve Henson]
61
a897502c
DSH
62 *) New ctrls to retrieve and set certificate types in a certificate
63 request message. Print out received values in s_client. If certificate
64 types is not set with custom values set sensible values based on
65 supported signature algorithms.
66 [Steve Henson]
67
04c32cdd
DSH
68 *) Support for distinct client and server supported signature algorithms.
69 [Steve Henson]
70
623a5e24
DSH
71 *) Add certificate callback. If set this is called whenever a certificate
72 is required by client or server. An application can decide which
73 certificate chain to present based on arbitrary criteria: for example
74 supported signature algorithms. Add very simple example to s_server.
75 This fixes many of the problems and restrictions of the existing client
76 certificate callback: for example you can now clear an existing
77 certificate and specify the whole chain.
78 [Steve Henson]
79
484f8762
DSH
80 *) Add new "valid_flags" field to CERT_PKEY structure which determines what
81 the certificate can be used for (if anything). Set valid_flags field
82 in new tls1_check_chain function. Simplify ssl_set_cert_masks which used
83 to have similar checks in it.
84
85 Add new "cert_flags" field to CERT structure and include a "strict mode".
86 This enforces some TLS certificate requirements (such as only permitting
87 certificate signature algorithms contained in the supported algorithms
88 extension) which some implementations ignore: this option should be used
89 with caution as it could cause interoperability issues.
90 [Steve Henson]
91
c70a1fee
DSH
92 *) Update and tidy signature algorithm extension processing. Work out
93 shared signature algorithms based on preferences and peer algorithms
94 and print them out in s_client and s_server. Abort handshake if no
95 shared signature algorithms.
96 [Steve Henson]
97
0b362de5
DSH
98 *) Add new functions to allow customised supported signature algorithms
99 for SSL and SSL_CTX structures. Add options to s_client and s_server
100 to support them.
101 [Steve Henson]
102
d312f7be
DSH
103 *) New function SSL_certs_clear() to delete all references to certificates
104 from an SSL structure. Before this once a certificate had been added
105 it couldn't be removed.
106 [Steve Henson]
107
70cd3c6b
DSH
108 *) Integrate hostname, email address and IP address checking with certificate
109 verification. New verify options supporting checking in opensl utility.
110 [Steve Henson]
111
45da1efc
DSH
112 *) Fixes and wildcard matching support to hostname and email checking
113 functions. Add manual page.
114 [Florian Weimer (Red Hat Product Security Team)]
115
116 *) New functions to check a hostname email or IP address against a
117 certificate. Add options x509 utility to print results of checks against
118 a certificate.
119 [Steve Henson]
120
d65b8b21
BL
121 *) Fix OCSP checking.
122 [Rob Stradling <rob.stradling@comodo.com> and Ben Laurie]
123
124 *) Backport support for partial chain verification: if an intermediate
125 certificate is explicitly trusted (using -addtrust option to x509
126 utility for example) the verification is sucessful even if the chain
127 is not complete.
128 The OCSP checking fix depends on this backport.
129 [Steve Henson and Rob Stradling <rob.stradling@comodo.com>]
130
9d2006d8
DSH
131 *) Add -trusted_first option which attempts to find certificates in the
132 trusted store even if an untrusted chain is also supplied.
133 [Steve Henson]
134
988037fe
AP
135 *) MIPS assembly pack updates: support for MIPS32r2 and SmartMIPS ASE,
136 platform support for Linux and Android.
137 [Andy Polyakov]
138
da8512aa 139 *) Call OCSP Stapling callback after ciphersuite has been chosen, so
dc144417
DSH
140 the right response is stapled. Also change current certificate to
141 the certificate actually sent.
da8512aa
BL
142 See http://rt.openssl.org/Ticket/Display.html?id=2836.
143 [Rob Stradling <rob.stradling@comodo.com>]
144
0e05b51f
AP
145 *) Support for linux-x32, ILP32 environment in x86_64 framework.
146 [Andy Polyakov]
147
4e14996e
BL
148 *) RFC 5878 support.
149 [Emilia Kasper, Adam Langley, Ben Laurie (Google)]
150
1dded7f7
DSH
151 *) Experimental multi-implementation support for FIPS capable OpenSSL.
152 When in FIPS mode the approved implementations are used as normal,
153 when not in FIPS mode the internal unapproved versions are used instead.
154 This means that the FIPS capable OpenSSL isn't forced to use the
155 (often lower perfomance) FIPS implementations outside FIPS mode.
156 [Steve Henson]
157
c3cb0691
DSH
158 *) Transparently support X9.42 DH parameters when calling
159 PEM_read_bio_DHparameters. This means existing applications can handle
160 the new parameter format automatically.
161 [Steve Henson]
162
491734eb
DSH
163 *) Initial experimental support for X9.42 DH parameter format: mainly
164 to support use of 'q' parameter for RFC5114 parameters.
165 [Steve Henson]
166
e811eff5
DSH
167 *) Add DH parameters from RFC5114 including test data to dhtest.
168 [Steve Henson]
169
e46c807e
DSH
170 *) Support for automatic EC temporary key parameter selection. If enabled
171 the most preferred EC parameters are automatically used instead of
172 hardcoded fixed parameters. Now a server just has to call:
173 SSL_CTX_set_ecdh_auto(ctx, 1) and the server will automatically
174 support ECDH and use the most appropriate parameters.
175 [Steve Henson]
176
6b870763
DSH
177 *) Enhance and tidy EC curve and point format TLS extension code. Use
178 static structures instead of allocation if default values are used.
179 New ctrls to set curves we wish to support and to retrieve shared curves.
180 Print out shared curves in s_server. New options to s_server and s_client
181 to set list of supported curves.
182 [Steve Henson]
183
55058181
DSH
184 *) New ctrls to retrieve supported signature algorithms and
185 supported curve values as an array of NIDs. Extend openssl utility
186 to print out received values.
187 [Steve Henson]
188
a068a1d0
DSH
189 *) Add new APIs EC_curve_nist2nid and EC_curve_nid2nist which convert
190 between NIDs and the more common NIST names such as "P-256". Enhance
191 ecparam utility and ECC method to recognise the NIST names for curves.
192 [Steve Henson]
193
37b16c84
DSH
194 *) Enhance SSL/TLS certificate chain handling to support different
195 chains for each certificate instead of one chain in the parent SSL_CTX.
196 [Steve Henson]
197
c523eb98
DSH
198 *) Support for fixed DH ciphersuite client authentication: where both
199 server and client use DH certificates with common parameters.
200 [Steve Henson]
201
0ffa4997
DSH
202 *) Support for fixed DH ciphersuites: those requiring DH server
203 certificates.
204 [Steve Henson]
b9115239 205
5e145e54
DSH
206 Changes between 1.0.1c and 1.0.1d [xx XXX xxxx]
207
5f4cf088
BL
208 *) Make openssl verify return errors.
209 [Chris Palmer <palmer@google.com> and Ben Laurie]
210
482f2380
DSH
211 *) Fix possible deadlock when decoding public keys.
212 [Steve Henson]
213
5e145e54
DSH
214 *) Don't use TLS 1.0 record version number in initial client hello
215 if renegotiating.
216 [Steve Henson]
217
218 Changes between 1.0.1b and 1.0.1c [10 May 2012]
a56f9a61 219
e7c84838
DSH
220 *) Sanity check record length before skipping explicit IV in TLS
221 1.2, 1.1 and DTLS to avoid DoS attack.
222
223 Thanks to Codenomicon for discovering this issue using Fuzz-o-Matic
224 fuzzing as a service testing platform.
225 (CVE-2012-2333)
226 [Steve Henson]
227
24547c23
DSH
228 *) Initialise tkeylen properly when encrypting CMS messages.
229 Thanks to Solar Designer of Openwall for reporting this issue.
230 [Steve Henson]
231
a56f9a61
DSH
232 *) In FIPS mode don't try to use composite ciphers as they are not
233 approved.
234 [Steve Henson]
235
236 Changes between 1.0.1a and 1.0.1b [26 Apr 2012]
f69abd53 237
7e0c9630 238 *) OpenSSL 1.0.0 sets SSL_OP_ALL to 0x80000FFFL and OpenSSL 1.0.1 and
a6df6702
DSH
239 1.0.1a set SSL_OP_NO_TLSv1_1 to 0x00000400L which would unfortunately
240 mean any application compiled against OpenSSL 1.0.0 headers setting
241 SSL_OP_ALL would also set SSL_OP_NO_TLSv1_1, unintentionally disablng
7e0c9630 242 TLS 1.1 also. Fix this by changing the value of SSL_OP_NO_TLSv1_1 to
a6df6702
DSH
243 0x10000000L Any application which was previously compiled against
244 OpenSSL 1.0.1 or 1.0.1a headers and which cares about SSL_OP_NO_TLSv1_1
7e0c9630
AP
245 will need to be recompiled as a result. Letting be results in
246 inability to disable specifically TLS 1.1 and in client context,
247 in unlike event, limit maximum offered version to TLS 1.0 [see below].
a6df6702
DSH
248 [Steve Henson]
249
f69abd53
AP
250 *) In order to ensure interoperabilty SSL_OP_NO_protocolX does not
251 disable just protocol X, but all protocols above X *if* there are
252 protocols *below* X still enabled. In more practical terms it means
253 that if application wants to disable TLS1.0 in favor of TLS1.1 and
254 above, it's not sufficient to pass SSL_OP_NO_TLSv1, one has to pass
0ae89cf3
AP
255 SSL_OP_NO_TLSv1|SSL_OP_NO_SSLv3|SSL_OP_NO_SSLv2. This applies to
256 client side.
f69abd53
AP
257 [Andy Polyakov]
258
d6ef8165 259 Changes between 1.0.1 and 1.0.1a [19 Apr 2012]
54543b95 260
564a503b
DSH
261 *) Check for potentially exploitable overflows in asn1_d2i_read_bio
262 BUF_mem_grow and BUF_mem_grow_clean. Refuse attempts to shrink buffer
263 in CRYPTO_realloc_clean.
264
265 Thanks to Tavis Ormandy, Google Security Team, for discovering this
266 issue and to Adam Langley <agl@chromium.org> for fixing it.
267 (CVE-2012-2110)
268 [Adam Langley (Google), Tavis Ormandy, Google Security Team]
269
bb3add20
BM
270 *) Don't allow TLS 1.2 SHA-256 ciphersuites in TLS 1.0, 1.1 connections.
271 [Adam Langley]
272
48e0f666
DSH
273 *) Workarounds for some broken servers that "hang" if a client hello
274 record length exceeds 255 bytes:
275
276 1. Do not use record version number > TLS 1.0 in initial client
277 hello: some (but not all) hanging servers will now work.
278 2. If we set OPENSSL_MAX_TLS1_2_CIPHER_LENGTH this will truncate
279 the number of ciphers sent in the client hello. This should be
280 set to an even number, such as 50, for example by passing:
281 -DOPENSSL_MAX_TLS1_2_CIPHER_LENGTH=50 to config or Configure.
282 Most broken servers should now work.
283 3. If all else fails setting OPENSSL_NO_TLS1_2_CLIENT will disable
284 TLS 1.2 client support entirely.
a6df6702 285 [Steve Henson]
48e0f666 286
54543b95
AP
287 *) Fix SEGV in Vector Permutation AES module observed in OpenSSH.
288 [Andy Polyakov]
289
f3dcae15 290 Changes between 1.0.0h and 1.0.1 [14 Mar 2012]
9472baae 291
0cd7a032
DSH
292 *) Add compatibility with old MDC2 signatures which use an ASN1 OCTET
293 STRING form instead of a DigestInfo.
294 [Steve Henson]
295
16b7c81d
DSH
296 *) The format used for MDC2 RSA signatures is inconsistent between EVP
297 and the RSA_sign/RSA_verify functions. This was made more apparent when
298 OpenSSL used RSA_sign/RSA_verify for some RSA signatures in particular
299 those which went through EVP_PKEY_METHOD in 1.0.0 and later. Detect
300 the correct format in RSA_verify so both forms transparently work.
301 [Steve Henson]
302
fc6800d1
DSH
303 *) Some servers which support TLS 1.0 can choke if we initially indicate
304 support for TLS 1.2 and later renegotiate using TLS 1.0 in the RSA
305 encrypted premaster secret. As a workaround use the maximum pemitted
306 client version in client hello, this should keep such servers happy
307 and still work with previous versions of OpenSSL.
308 [Steve Henson]
309
bd6941cf
DSH
310 *) Add support for TLS/DTLS heartbeats.
311 [Robin Seggelmann <seggelmann@fh-muenster.de>]
312
6e750fcb
DSH
313 *) Add support for SCTP.
314 [Robin Seggelmann <seggelmann@fh-muenster.de>]
315
62308f3f
DSH
316 *) Improved PRNG seeding for VOS.
317 [Paul Green <Paul.Green@stratus.com>]
318
cecafcce
AP
319 *) Extensive assembler packs updates, most notably:
320
321 - x86[_64]: AES-NI, PCLMULQDQ, RDRAND support;
322 - x86[_64]: SSSE3 support (SHA1, vector-permutation AES);
323 - x86_64: bit-sliced AES implementation;
324 - ARM: NEON support, contemporary platforms optimizations;
325 - s390x: z196 support;
326 - *: GHASH and GF(2^m) multiplication implementations;
327
328 [Andy Polyakov]
329
ca0efb75
DSH
330 *) Make TLS-SRP code conformant with RFC 5054 API cleanup
331 (removal of unnecessary code)
332 [Peter Sylvester <peter.sylvester@edelweb.fr>]
333
b1d74291
BL
334 *) Add TLS key material exporter from RFC 5705.
335 [Eric Rescorla]
336
060a38a2
BL
337 *) Add DTLS-SRTP negotiation from RFC 5764.
338 [Eric Rescorla]
339
e2809bfb
BL
340 *) Add Next Protocol Negotiation,
341 http://tools.ietf.org/html/draft-agl-tls-nextprotoneg-00. Can be
342 disabled with a no-npn flag to config or Configure. Code donated
343 by Google.
344 [Adam Langley <agl@google.com> and Ben Laurie]
345
9c37519b
BM
346 *) Add optional 64-bit optimized implementations of elliptic curves NIST-P224,
347 NIST-P256, NIST-P521, with constant-time single point multiplication on
348 typical inputs. Compiler support for the nonstandard type __uint128_t is
3d520f7c
BM
349 required to use this (present in gcc 4.4 and later, for 64-bit builds).
350 Code made available under Apache License version 2.0.
9c37519b 351
3d520f7c
BM
352 Specify "enable-ec_nistp_64_gcc_128" on the Configure (or config) command
353 line to include this in your build of OpenSSL, and run "make depend" (or
354 "make update"). This enables the following EC_METHODs:
9c37519b
BM
355
356 EC_GFp_nistp224_method()
357 EC_GFp_nistp256_method()
358 EC_GFp_nistp521_method()
359
360 EC_GROUP_new_by_curve_name() will automatically use these (while
361 EC_GROUP_new_curve_GFp() currently prefers the more flexible
362 implementations).
363