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