From 23a3ead758c2ba1c1866aa313a691fffea2016ac Mon Sep 17 00:00:00 2001 From: David Garske Date: Fri, 17 Jul 2020 15:56:56 -0700 Subject: [PATCH] Framework for new TLS v1.3 sniffer tests. --- scripts/include.am | 3 +++ scripts/sniffer-testsuite.test | 18 ++++++++++++++++++ scripts/sniffer-tls13-dh.pcap | Bin 0 -> 49100 bytes scripts/sniffer-tls13-ecc.pcap | Bin 0 -> 47396 bytes scripts/sniffer-tls13-gen.sh | 24 ++++++++++++++++++++++++ sslSniffer/sslSnifferTest/snifftest.c | 2 +- 6 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 scripts/sniffer-tls13-dh.pcap create mode 100644 scripts/sniffer-tls13-ecc.pcap create mode 100755 scripts/sniffer-tls13-gen.sh diff --git a/scripts/include.am b/scripts/include.am index 195dae78a..50eeed9a3 100644 --- a/scripts/include.am +++ b/scripts/include.am @@ -85,6 +85,9 @@ endif EXTRA_DIST += scripts/testsuite.pcap \ scripts/sniffer-ipv6.pcap \ + scripts/sniffer-tls13-dh.pcap \ + scripts/sniffer-tls13-ecc.pcap \ + scripts/sniffer-tls13-gen.sh \ scripts/ping.test # leave openssl.test as extra until non bash works diff --git a/scripts/sniffer-testsuite.test b/scripts/sniffer-testsuite.test index 491c1197e..312549921 100755 --- a/scripts/sniffer-testsuite.test +++ b/scripts/sniffer-testsuite.test @@ -8,7 +8,25 @@ echo -e "\nStaring snifftest on testsuite.pcap...\n" RESULT=$? [ $RESULT -ne 0 ] && echo -e "\nsnifftest failed\n" && exit 1 +# TLS v1.3 sniffer test ECC (and resumption) +if test $# -ne 0 +then + ./sslSniffer/sslSnifferTest/snifftest ./scripts/sniffer-tls13-ecc.pcap ./certs/statickeys/ecc-secp256r1.pem 127.0.0.1 11111 + RESULT=$? + [ $RESULT -ne 0 ] && echo -e "\nsnifftest TLS v1.3 ECC\n" && exit 1 +fi + +# TLS v1.3 sniffer test DH (and resumption) +if test $# -ne 0 +then + ./sslSniffer/sslSnifferTest/snifftest ./scripts/sniffer-tls13-dh.pcap ./certs/statickeys/dh-ffdhe2048.pem 127.0.0.1 11111 + + RESULT=$? + [ $RESULT -ne 0 ] && echo -e "\nsnifftest TLS v1.3 DH\n" && exit 1 +fi + +# IPv6 if test $# -ne 0 && test "x$1" = "x-6"; then echo -e "\nStaring snifftest on sniffer-ipv6.pcap...\n" diff --git a/scripts/sniffer-tls13-dh.pcap b/scripts/sniffer-tls13-dh.pcap new file mode 100644 index 0000000000000000000000000000000000000000..e1ca556a098eacb2eb58d1f916426bc120a53b44 GIT binary patch literal 49100 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 a7^lx)WLfYrfoE=j6M-C9z%%MV%J>(Q08n=T literal 0 HcmV?d00001 diff --git a/scripts/sniffer-tls13-ecc.pcap b/scripts/sniffer-tls13-ecc.pcap new file mode 100644 index 0000000000000000000000000000000000000000..371eec3ddaa043902ec778f832be19d1ee75f433 GIT binary patch literal 47396 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 WcTYed+`SymGYS+!-2L$aVEiA_*o%Vz literal 0 HcmV?d00001 diff --git a/scripts/sniffer-tls13-gen.sh b/scripts/sniffer-tls13-gen.sh new file mode 100755 index 000000000..7f7f537c9 --- /dev/null +++ b/scripts/sniffer-tls13-gen.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# Run these configures and the example server/client below +# Script to generate wireshark trace for sniffer-tls13-ecc.pcap +#./configure --enable-sniffer --enable-session-ticket && make + +# Script to generate wireshark trace for sniffer-tls13-dh.pcap +#./configure --enable-sniffer --enable-session-ticket --disable-ecc && make + +# TLS v1.3 +./examples/server/server -v 4 -l TLS13-AES128-GCM-SHA256 & +./examples/client/client -v 4 -l TLS13-AES128-GCM-SHA256 +./examples/server/server -v 4 -l TLS13-AES256-GCM-SHA384 & +./examples/client/client -v 4 -l TLS13-AES256-GCM-SHA384 +./examples/server/server -v 4 -l TLS13-CHACHA20-POLY1305-SHA256 & +./examples/client/client -v 4 -l TLS13-CHACHA20-POLY1305-SHA256 + +# TLS v1.3 Resumption +./examples/server/server -v 4 -l TLS13-AES128-GCM-SHA256 -r & +./examples/client/client -v 4 -l TLS13-AES128-GCM-SHA256 -r +./examples/server/server -v 4 -l TLS13-AES256-GCM-SHA384 -r & +./examples/client/client -v 4 -l TLS13-AES256-GCM-SHA384 -r +./examples/server/server -v 4 -l TLS13-CHACHA20-POLY1305-SHA256 -r & +./examples/client/client -v 4 -l TLS13-CHACHA20-POLY1305-SHA256 -r diff --git a/sslSniffer/sslSnifferTest/snifftest.c b/sslSniffer/sslSnifferTest/snifftest.c index 7d42f0bd1..e0cc0c939 100644 --- a/sslSniffer/sslSnifferTest/snifftest.c +++ b/sslSniffer/sslSnifferTest/snifftest.c @@ -521,7 +521,7 @@ int main(int argc, char** argv) else { /* usage error */ printf( "usage: ./snifftest or ./snifftest dump pemKey" - " [server] [port] [password]\n"); + " [server] [port] [password] [isEphemeral]\n"); exit(EXIT_FAILURE); }