aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErlang/OTP <[email protected]>2014-10-13 09:38:47 +0200
committerErlang/OTP <[email protected]>2014-10-13 09:38:47 +0200
commitaebab2324285d3751c1ce73ad803be487ceb3a16 (patch)
treecf47b0a7e846325451e93bfd9573f4831f037cdd
parentee24a87a779d8d10461cadd47b3eb276e70baef8 (diff)
parent770000806112916bebbddf370f49ec501c0b8e69 (diff)
downloadotp-aebab2324285d3751c1ce73ad803be487ceb3a16.tar.gz
otp-aebab2324285d3751c1ce73ad803be487ceb3a16.tar.bz2
otp-aebab2324285d3751c1ce73ad803be487ceb3a16.zip
Merge branch 'ia/17-patch/ssl/empty-sni-from-server/OTP-12198' into maint-17
* ia/17-patch/ssl/empty-sni-from-server/OTP-12198: ssl: Prepare for release ssl: Servers may include an empty SNI-extension
-rw-r--r--lib/ssl/src/ssl.appup.src2
-rw-r--r--lib/ssl/src/ssl_handshake.erl3
-rw-r--r--lib/ssl/test/ssl_handshake_SUITE.erl8
-rw-r--r--lib/ssl/vsn.mk2
4 files changed, 14 insertions, 1 deletions
diff --git a/lib/ssl/src/ssl.appup.src b/lib/ssl/src/ssl.appup.src
index 650901ef54..9d692379b4 100644
--- a/lib/ssl/src/ssl.appup.src
+++ b/lib/ssl/src/ssl.appup.src
@@ -1,6 +1,7 @@
%% -*- erlang -*-
{"%VSN%",
[
+ {"5.3.6", [{load_module, ssl_handshake, soft_purge, soft_purge, [ssl_connection]}]},
{"5.3.5", [{load_module, ssl, soft_purge, soft_purge, [ssl_connection]},
{load_module, ssl_handshake, soft_purge, soft_purge, [ssl_certificate]},
{load_module, ssl_certificate, soft_purge, soft_purge, []},
@@ -12,6 +13,7 @@
{<<"3\\..*">>, [{restart_application, ssl}]}
],
[
+ {"5.3.6", [{load_module, ssl_handshake, soft_purge, soft_purge, [ssl_connection]}]},
{"5.3.5", [{load_module, ssl, soft_purge, soft_purge,[ssl_certificate]},
{load_module, ssl_handshake, soft_purge, soft_purge,[ssl_certificate]},
{load_module, ssl_certificate, soft_purge, soft_purge,[]},
diff --git a/lib/ssl/src/ssl_handshake.erl b/lib/ssl/src/ssl_handshake.erl
index 22673e46e2..88ccb94e0b 100644
--- a/lib/ssl/src/ssl_handshake.erl
+++ b/lib/ssl/src/ssl_handshake.erl
@@ -1732,6 +1732,9 @@ dec_hello_extensions(<<?UINT16(?EC_POINT_FORMATS_EXT), ?UINT16(Len),
#ec_point_formats{ec_point_format_list =
ECPointFormats}});
+dec_hello_extensions(<<?UINT16(?SNI_EXT), ?UINT16(Len), Rest/binary>>, Acc) when Len == 0 ->
+ dec_hello_extensions(Rest, Acc#hello_extensions{sni = ""}); %% Server may send an empy SNI
+
dec_hello_extensions(<<?UINT16(?SNI_EXT), ?UINT16(Len),
ExtData:Len/binary, Rest/binary>>, Acc) ->
<<?UINT16(_), NameList/binary>> = ExtData,
diff --git a/lib/ssl/test/ssl_handshake_SUITE.erl b/lib/ssl/test/ssl_handshake_SUITE.erl
index e5e942ce1b..8dca733526 100644
--- a/lib/ssl/test/ssl_handshake_SUITE.erl
+++ b/lib/ssl/test/ssl_handshake_SUITE.erl
@@ -39,6 +39,7 @@ all() -> [decode_hello_handshake,
decode_unknown_hello_extension_correctly,
encode_single_hello_sni_extension_correctly,
decode_single_hello_sni_extension_correctly,
+ decode_empty_server_sni_correctly,
select_proper_tls_1_2_rsa_default_hashsign].
%%--------------------------------------------------------------------
@@ -106,6 +107,13 @@ decode_single_hello_sni_extension_correctly(_Config) ->
Decoded = ssl_handshake:decode_hello_extensions(SNI),
Exts = Decoded.
+decode_empty_server_sni_correctly(_Config) ->
+ Exts = #hello_extensions{sni = ""},
+ SNI = <<?UINT16(?SNI_EXT),?UINT16(0)>>,
+ Decoded = ssl_handshake:decode_hello_extensions(SNI),
+ Exts = Decoded.
+
+
select_proper_tls_1_2_rsa_default_hashsign(_Config) ->
% RFC 5246 section 7.4.1.4.1 tells to use {sha1,rsa} as default signature_algorithm for RSA key exchanges
{sha, rsa} = ssl_handshake:select_hashsign_algs(undefined, ?rsaEncryption, {3,3}),
diff --git a/lib/ssl/vsn.mk b/lib/ssl/vsn.mk
index 404b71374f..da20ed8593 100644
--- a/lib/ssl/vsn.mk
+++ b/lib/ssl/vsn.mk
@@ -1 +1 @@
-SSL_VSN = 5.3.6
+SSL_VSN = 5.3.7