summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2016-12-02 09:14:15 +0000
committerMatt Caswell <matt@openssl.org>2017-01-06 10:25:13 +0000
commite96e0f8e420c42f28b0e86c9cf757f152f696321 (patch)
treeaa40a232274c0948c52af07df051ea75ecb37218 /test
parentf97d4c370844081e5e735711bd8b91979313ce7b (diff)
Create Certificate messages in TLS1.3 format
Also updates TLSProxy to be able to understand the format and parse the contained extensions. Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/2020)
Diffstat (limited to 'test')
-rwxr-xr-xtest/recipes/70-test_tls13messages.t6
-rw-r--r--test/testlib/checkhandshake.pm16
2 files changed, 17 insertions, 5 deletions
diff --git a/test/recipes/70-test_tls13messages.t b/test/recipes/70-test_tls13messages.t
index 15dfa9f8d2..7286a67b60 100755
--- a/test/recipes/70-test_tls13messages.t
+++ b/test/recipes/70-test_tls13messages.t
@@ -87,10 +87,12 @@ $ENV{CTLOG_FILE} = srctop_file("test", "ct", "log_list.conf");
[TLSProxy::Message::MT_ENCRYPTED_EXTENSIONS, TLSProxy::Message::EXT_SERVER_NAME,
checkhandshake::SERVER_NAME_SRV_EXTENSION],
- [TLSProxy::Message::MT_ENCRYPTED_EXTENSIONS, TLSProxy::Message::EXT_STATUS_REQUEST,
- checkhandshake::STATUS_REQUEST_SRV_EXTENSION],
[TLSProxy::Message::MT_ENCRYPTED_EXTENSIONS, TLSProxy::Message::EXT_ALPN,
checkhandshake::ALPN_SRV_EXTENSION],
+
+ [TLSProxy::Message::MT_CERTIFICATE, TLSProxy::Message::EXT_STATUS_REQUEST,
+ checkhandshake::STATUS_REQUEST_SRV_EXTENSION],
+
[0,0,0]
);
diff --git a/test/testlib/checkhandshake.pm b/test/testlib/checkhandshake.pm
index 9529b949bd..0c3df6fde2 100644
--- a/test/testlib/checkhandshake.pm
+++ b/test/testlib/checkhandshake.pm
@@ -73,8 +73,14 @@ sub checkhandshake($$$$)
if (($handtype & RENEG_HANDSHAKE) != 0) {
$numtests += $#extensions + 2;
}
- #In TLS1.3 there are 3 messages with extensions (and no renegotiations)
- $numtests += 1 if ($proxy->is_tls13());
+ #In TLS1.3 there are 4 messages with extensions (i.e. 2 extra) and no
+ #renegotiations: 1 ClientHello, 1 ServerHello, 1 EncryptedExtensions,
+ #1 Certificate
+ $numtests += 2 if ($proxy->is_tls13());
+ #Except in Client auth where we have an extra Certificate message, and
+ #one extension gets checked twice (once in each Certificate message)
+ $numtests += 2 if ($proxy->is_tls13()
+ && ($handtype & CLIENT_AUTH_HANDSHAKE) != 0);
plan tests => $numtests;
@@ -101,7 +107,11 @@ sub checkhandshake($$$$)
next if ($message->mt() != TLSProxy::Message::MT_CLIENT_HELLO
&& $message->mt() != TLSProxy::Message::MT_SERVER_HELLO
&& $message->mt() !=
- TLSProxy::Message::MT_ENCRYPTED_EXTENSIONS);
+ TLSProxy::Message::MT_ENCRYPTED_EXTENSIONS
+ && $message->mt() != TLSProxy::Message::MT_CERTIFICATE);
+
+ next if $message->mt() == TLSProxy::Message::MT_CERTIFICATE
+ && !TLSProxy::Proxy::is_tls13();
if ($message->mt() == TLSProxy::Message::MT_CLIENT_HELLO) {
#Add renegotiate extension we will expect if renegotiating