boringssl/ssl
David Benjamin c7ce977fb9 Ignore all extensions but renegotiation_info in SSL 3.0.
SSL 3.0 used to have a nice and simple rule around extensions. They don't
exist. And then RFC 5746 came along and made this all extremely confusing.

In an SSL 3.0 server, rather than blocking ServerHello extension
emission when renegotiation_info is missing, ignore all ClientHello
extensions but renegotiation_info. This avoids a mismatch between local
state and the extensions with emit.

Notably if, for some reason, a ClientHello includes the session_ticket
extension, does NOT include renegotiation_info or the SCSV, and yet the
client or server are decrepit enough to negotiate SSL 3.0, the
connection will fail due to unexpected NewSessionTicket message.

See https://crbug.com/425979#c9 for a discussion of something similar
that came up in diagnosing https://poodle.io/'s buggy POODLE check.
This is analogous to upstream's
5a3d8eebb7667b32af0ccc3f12f314df6809d32d.

(Not supporting renego as a server in any form anyway, we may as well
completely ignore extensions, but then our extensions callbacks can't
assume the parse hooks are always called. This way the various NULL
handlers still function.)

Change-Id: Ie689a0e9ffb0369ef7a20ab4231005e87f32d5f8
Reviewed-on: https://boringssl-review.googlesource.com/6180
Reviewed-by: Adam Langley <agl@google.com>
2015-10-11 20:47:19 +00:00
..
pqueue Fix some malloc test crashs. 2015-05-21 18:00:10 +00:00
test Ignore all extensions but renegotiation_info in SSL 3.0. 2015-10-11 20:47:19 +00:00
CMakeLists.txt Rename ssl_sess.c to ssl_session.c. 2015-09-14 23:37:52 +00:00
custom_extensions.c Align the SSL stack on #include style. 2015-09-15 23:32:07 +00:00
d1_both.c Align the SSL stack on #include style. 2015-09-15 23:32:07 +00:00
d1_clnt.c Align the SSL stack on #include style. 2015-09-15 23:32:07 +00:00
d1_lib.c Align the SSL stack on #include style. 2015-09-15 23:32:07 +00:00
d1_meth.c Align the SSL stack on #include style. 2015-09-15 23:32:07 +00:00
d1_pkt.c Align the SSL stack on #include style. 2015-09-15 23:32:07 +00:00
d1_srtp.c Align the SSL stack on #include style. 2015-09-15 23:32:07 +00:00
d1_srvr.c Align the SSL stack on #include style. 2015-09-15 23:32:07 +00:00
dtls_record.c Reject empty records of unexpected type. 2015-08-28 22:03:00 +00:00
internal.h Don't pretend to account for RSA_PSK. 2015-09-23 23:18:44 +00:00
s3_both.c Align the SSL stack on #include style. 2015-09-15 23:32:07 +00:00
s3_clnt.c Adding more options for signing digest fallback. 2015-09-23 21:55:01 +00:00
s3_enc.c Change some "int" variables to "size_t" in ssl3_handshake_mac(). 2015-09-24 00:04:59 +00:00
s3_lib.c Align the SSL stack on #include style. 2015-09-15 23:32:07 +00:00
s3_meth.c Align the SSL stack on #include style. 2015-09-15 23:32:07 +00:00
s3_pkt.c Align the SSL stack on #include style. 2015-09-15 23:32:07 +00:00
s3_srvr.c Don't record handshake hashes if no Channel ID 2015-09-29 21:47:05 +00:00
ssl_aead_ctx.c Align the SSL stack on #include style. 2015-09-15 23:32:07 +00:00
ssl_asn1.c Align the SSL stack on #include style. 2015-09-15 23:32:07 +00:00
ssl_buffer.c Fix buffer size computation. 2015-09-01 20:18:21 +00:00
ssl_cert.c Document certificate verification functions in SSL. 2015-09-23 23:31:18 +00:00
ssl_cipher.c Upstream Android-specific things under |BORINGSSL_ANDROID_SYSTEM| 2015-09-23 16:41:33 -07:00
ssl_file.c Document certificate verification functions in SSL. 2015-09-23 23:31:18 +00:00
ssl_lib.c Bitwise-or, not logical-or, when hashing. 2015-09-30 20:50:18 +00:00
ssl_rsa.c Adding more options for signing digest fallback. 2015-09-23 21:55:01 +00:00
ssl_session.c Ignore all extensions but renegotiation_info in SSL 3.0. 2015-10-11 20:47:19 +00:00
ssl_stat.c Align the SSL stack on #include style. 2015-09-15 23:32:07 +00:00
ssl_test.cc Make SSL_get_client_CA_list slightly more OpenSSL-compatible. 2015-09-11 22:30:55 +00:00
ssl_txt.c Align the SSL stack on #include style. 2015-09-15 23:32:07 +00:00
t1_enc.c Align the SSL stack on #include style. 2015-09-15 23:32:07 +00:00
t1_lib.c Ignore all extensions but renegotiation_info in SSL 3.0. 2015-10-11 20:47:19 +00:00
tls_record.c Fix MSVC build. 2015-08-28 22:27:33 +00:00