|
1 | 1 | #!/bin/bash |
| 2 | +#set -x |
2 | 3 |
|
3 | 4 | # Run this script from the wolfSSL root |
4 | 5 | if [ ! -f wolfssl/ssl.h ]; then |
5 | 6 | echo "Run from the wolfssl root" |
6 | 7 | exit 1 |
7 | 8 | fi |
8 | 9 |
|
9 | | -run_sequence() { |
10 | | - if [ "$1" == "dh" ] || [ "$1" == "ecc" ]; then |
11 | | - # TLS v1.3 |
12 | | - ./examples/server/server -v 4 -l TLS13-AES128-GCM-SHA256 & |
13 | | - sleep 0.1 |
14 | | - ./examples/client/client -v 4 -l TLS13-AES128-GCM-SHA256 |
15 | | - |
16 | | - ./examples/server/server -v 4 -l TLS13-AES256-GCM-SHA384 & |
17 | | - sleep 0.1 |
18 | | - ./examples/client/client -v 4 -l TLS13-AES256-GCM-SHA384 |
19 | | - |
20 | | - ./examples/server/server -v 4 -l TLS13-CHACHA20-POLY1305-SHA256 & |
21 | | - sleep 0.1 |
22 | | - ./examples/client/client -v 4 -l TLS13-CHACHA20-POLY1305-SHA256 |
23 | | - fi |
24 | | - if [ "$1" == "dh-resume" ] || [ "$1" == "ecc-resume" ]; then |
25 | | - # TLS v1.3 Resumption |
26 | | - ./examples/server/server -v 4 -l TLS13-AES128-GCM-SHA256 -r & |
27 | | - sleep 0.1 |
28 | | - ./examples/client/client -v 4 -l TLS13-AES128-GCM-SHA256 -r |
| 10 | +server_pid=0 |
| 11 | +tcpdump_pid=0 |
29 | 12 |
|
30 | | - ./examples/server/server -v 4 -l TLS13-AES256-GCM-SHA384 -r & |
31 | | - sleep 0.1 |
32 | | - ./examples/client/client -v 4 -l TLS13-AES256-GCM-SHA384 -r |
33 | | - |
34 | | - ./examples/server/server -v 4 -l TLS13-CHACHA20-POLY1305-SHA256 -r & |
35 | | - sleep 0.1 |
36 | | - ./examples/client/client -v 4 -l TLS13-CHACHA20-POLY1305-SHA256 -r |
37 | | - fi |
38 | | - |
39 | | - if [ "$1" == "x25519" ]; then |
40 | | - # TLS v1.3 |
41 | | - ./examples/server/server -v 4 -l TLS13-AES128-GCM-SHA256 -c ./certs/ed25519/server-ed25519.pem -k ./certs/ed25519/server-ed25519-priv.pem -A ./certs/ed25519/client-ed25519.pem & |
42 | | - sleep 0.1 |
43 | | - ./examples/client/client -v 4 -l TLS13-AES128-GCM-SHA256 -c ./certs/ed25519/client-ed25519.pem -k ./certs/ed25519/client-ed25519-priv.pem -A ./certs/ed25519/root-ed25519.pem |
| 13 | +cleanup() { |
| 14 | + if [ "$server_pid" -ne 0 ]; then kill $server_pid; server_pid=0; fi |
| 15 | + if [ "$tcpdump_pid" -ne 0 ]; then sleep 1; kill -15 $tcpdump_pid; tcpdump_pid=0; fi |
| 16 | +} |
| 17 | +trap cleanup EXIT INT TERM HUP |
44 | 18 |
|
45 | | - ./examples/server/server -v 4 -l TLS13-AES256-GCM-SHA384 -c ./certs/ed25519/server-ed25519.pem -k ./certs/ed25519/server-ed25519-priv.pem -A ./certs/ed25519/client-ed25519.pem & |
46 | | - sleep 0.1 |
47 | | - ./examples/client/client -v 4 -l TLS13-AES256-GCM-SHA384 -c ./certs/ed25519/client-ed25519.pem -k ./certs/ed25519/client-ed25519-priv.pem -A ./certs/ed25519/root-ed25519.pem |
| 19 | +set -o pipefail |
| 20 | +prepend() { # Usage: cmd 2>&1 | prepend "sometext " |
| 21 | + while read line; do echo "${1}${line}"; done |
| 22 | +} |
48 | 23 |
|
49 | | - ./examples/server/server -v 4 -l TLS13-CHACHA20-POLY1305-SHA256 -c ./certs/ed25519/server-ed25519.pem -k ./certs/ed25519/server-ed25519-priv.pem -A ./certs/ed25519/client-ed25519.pem & |
50 | | - sleep 0.1 |
51 | | - ./examples/client/client -v 4 -l TLS13-CHACHA20-POLY1305-SHA256 -c ./certs/ed25519/client-ed25519.pem -k ./certs/ed25519/client-ed25519-priv.pem -A ./certs/ed25519/root-ed25519.pem |
| 24 | +run_test() { # Usage: run_test <cipher> [serverArgs [clientArgs]] |
| 25 | + echo "Running test $1" |
| 26 | + CIPHER=$1 |
| 27 | + if [ "$CIPHER" != "" ]; then |
| 28 | + CIPHER="-l $CIPHER" |
52 | 29 | fi |
53 | | - # Run: with x25519_resume |
54 | | - if [ "$1" == "x25519-resume" ]; then |
55 | | - # TLS v1.3 Resumption |
56 | | - ./examples/server/server -v 4 -l TLS13-AES128-GCM-SHA256 -r -c ./certs/ed25519/server-ed25519.pem -k ./certs/ed25519/server-ed25519-priv.pem -A ./certs/ed25519/client-ed25519.pem & |
57 | | - sleep 0.1 |
58 | | - ./examples/client/client -v 4 -l TLS13-AES128-GCM-SHA256 -r -c ./certs/ed25519/client-ed25519.pem -k ./certs/ed25519/client-ed25519-priv.pem -A ./certs/ed25519/root-ed25519.pem |
59 | | - |
60 | | - ./examples/server/server -v 4 -l TLS13-AES256-GCM-SHA384 -r -c ./certs/ed25519/server-ed25519.pem -k ./certs/ed25519/server-ed25519-priv.pem -A ./certs/ed25519/client-ed25519.pem & |
61 | | - sleep 0.1 |
62 | | - ./examples/client/client -v 4 -l TLS13-AES256-GCM-SHA384 -r -c ./certs/ed25519/client-ed25519.pem -k ./certs/ed25519/client-ed25519-priv.pem -A ./certs/ed25519/root-ed25519.pem |
63 | | - |
64 | | - ./examples/server/server -v 4 -l TLS13-CHACHA20-POLY1305-SHA256 -r -c ./certs/ed25519/server-ed25519.pem -k ./certs/ed25519/server-ed25519-priv.pem -A ./certs/ed25519/client-ed25519.pem & |
65 | | - sleep 0.1 |
66 | | - ./examples/client/client -v 4 -l TLS13-CHACHA20-POLY1305-SHA256 -r -c ./certs/ed25519/client-ed25519.pem -k ./certs/ed25519/client-ed25519-priv.pem -A ./certs/ed25519/root-ed25519.pem |
| 30 | + stdbuf -oL -eL ./examples/server/server -i -x $CIPHER $2 2>&1 | prepend "[server] " & |
| 31 | + server_pid=$! |
| 32 | + ((server_pid--)) # Get the first PID in the pipe |
| 33 | + sleep 0.1 |
| 34 | + stdbuf -oL -eL ./examples/client/client $CIPHER $3 2>&1 | prepend "[client] " |
| 35 | + RET=$? |
| 36 | + if [ "$RET" != 0 ]; then |
| 37 | + echo "Error in test: $RET" |
| 38 | + exit $RET |
67 | 39 | fi |
| 40 | + kill $server_pid; server_pid=0 |
| 41 | + echo "Test passed: $1" |
| 42 | +} |
68 | 43 |
|
69 | | - # TLS v1.3 Hello Retry Request |
70 | | - if [ "$1" == "hrr" ]; then |
71 | | - # TLS v1.3 Hello Retry Request |
72 | | - ./examples/server/server -v 4 -i -x -g & |
73 | | - server_pid=$! |
74 | | - sleep 0.1 |
75 | | - ./examples/client/client -v 4 -J |
76 | | - kill $server_pid |
| 44 | +run_sequence() { |
| 45 | + if [ "$1" == "tls13-dh" ] || [ "$1" == "tls13-ecc" ]; then # TLS v1.3 |
| 46 | + run_test "TLS13-AES128-GCM-SHA256" "-v 4" "-v 4" |
| 47 | + run_test "TLS13-AES256-GCM-SHA384" "-v 4" "-v 4" |
| 48 | + run_test "TLS13-CHACHA20-POLY1305-SHA256" "-v 4" "-v 4" |
| 49 | + elif [ "$1" == "tls12" ]; then # TLS v1.2 |
| 50 | + run_test "ECDHE-ECDSA-AES128-GCM-SHA256" "-v 3 -A ./certs/ca-ecc-cert.pem -k ./certs/ecc-key.pem -c ./certs/intermediate/server-chain-ecc.pem -V" "-v 3 -A ./certs/ca-ecc-cert.pem -k ./certs/ecc-client-key.pem -c ./certs/intermediate/client-chain-ecc.pem -C" |
| 51 | + run_test "ECDHE-ECDSA-AES256-GCM-SHA384" "-v 3 -A ./certs/ca-ecc-cert.pem -k ./certs/ecc-key.pem -c ./certs/intermediate/server-chain-ecc.pem -V" "-v 3 -A ./certs/ca-ecc-cert.pem -k ./certs/ecc-client-key.pem -c ./certs/intermediate/client-chain-ecc.pem -C" |
| 52 | + elif [ "$1" == "tls13-dh-resume" ] || [ "$1" == "tls13-ecc-resume" ]; then # TLS v1.3 Resumption |
| 53 | + run_test "TLS13-AES128-GCM-SHA256" "-v 4 -r" "-v 4 -r" |
| 54 | + run_test "TLS13-AES256-GCM-SHA384" "-v 4 -r" "-v 4 -r" |
| 55 | + run_test "TLS13-CHACHA20-POLY1305-SHA256" "-v 4 -r" "-v 4 -r" |
| 56 | + elif [ "$1" == "tls13-x25519" ]; then # TLS v1.3 |
| 57 | + run_test "TLS13-AES128-GCM-SHA256" "-v 4 -c ./certs/ed25519/server-ed25519.pem -k ./certs/ed25519/server-ed25519-priv.pem -A ./certs/ed25519/client-ed25519.pem" "-v 4 -c ./certs/ed25519/client-ed25519.pem -k ./certs/ed25519/client-ed25519-priv.pem -A ./certs/ed25519/root-ed25519.pem" |
| 58 | + run_test "TLS13-AES256-GCM-SHA384" "-v 4 -c ./certs/ed25519/server-ed25519.pem -k ./certs/ed25519/server-ed25519-priv.pem -A ./certs/ed25519/client-ed25519.pem" "-v 4 -c ./certs/ed25519/client-ed25519.pem -k ./certs/ed25519/client-ed25519-priv.pem -A ./certs/ed25519/root-ed25519.pem" |
| 59 | + run_test "TLS13-CHACHA20-POLY1305-SHA256" "-v 4 -c ./certs/ed25519/server-ed25519.pem -k ./certs/ed25519/server-ed25519-priv.pem -A ./certs/ed25519/client-ed25519.pem" "-v 4 -c ./certs/ed25519/client-ed25519.pem -k ./certs/ed25519/client-ed25519-priv.pem -A ./certs/ed25519/root-ed25519.pem" |
| 60 | + elif [ "$1" == "tls13-x25519-resume" ]; then # TLS v1.3 x25519 Resumption |
| 61 | + run_test "TLS13-AES128-GCM-SHA256" "-v 4 -r -c ./certs/ed25519/server-ed25519.pem -k ./certs/ed25519/server-ed25519-priv.pem -A ./certs/ed25519/client-ed25519.pem" "-v 4 -r -c ./certs/ed25519/client-ed25519.pem -k ./certs/ed25519/client-ed25519-priv.pem -A ./certs/ed25519/root-ed25519.pem" |
| 62 | + run_test "TLS13-AES256-GCM-SHA384" "-v 4 -r -c ./certs/ed25519/server-ed25519.pem -k ./certs/ed25519/server-ed25519-priv.pem -A ./certs/ed25519/client-ed25519.pem" "-v 4 -r -c ./certs/ed25519/client-ed25519.pem -k ./certs/ed25519/client-ed25519-priv.pem -A ./certs/ed25519/root-ed25519.pem" |
| 63 | + run_test "TLS13-CHACHA20-POLY1305-SHA256" "-v 4 -r -c ./certs/ed25519/server-ed25519.pem -k ./certs/ed25519/server-ed25519-priv.pem -A ./certs/ed25519/client-ed25519.pem" "-v 4 -r -c ./certs/ed25519/client-ed25519.pem -k ./certs/ed25519/client-ed25519-priv.pem -A ./certs/ed25519/root-ed25519.pem" |
| 64 | + elif [ "$1" == "tls13-hrr" ]; then # TLS v1.3 Hello Retry Request |
| 65 | + run_test "" "-v 4 -g" "-v 4 -J" |
| 66 | + else |
| 67 | + echo "Invalid test" |
| 68 | + exit -1 |
77 | 69 | fi |
78 | | - sleep 1 |
79 | 70 | } |
80 | 71 |
|
81 | 72 | run_capture(){ |
82 | | - echo -e "\nconfiguring and building wolfssl..." |
| 73 | + echo -e "\nconfiguring and building wolfssl ($1)..." |
83 | 74 | ./configure --enable-sniffer $2 1>/dev/null || exit $? |
84 | 75 | make 1>/dev/null || exit $? |
85 | 76 | echo "starting capture" |
86 | | - tcpdump -i lo0 -nn port 11111 -w ./scripts/sniffer-tls13-$1.pcap & |
| 77 | + tcpdump -i lo -n port 11111 -w ./scripts/sniffer-${1}.pcap -U & |
87 | 78 | tcpdump_pid=$! |
88 | 79 | run_sequence $1 |
89 | | - kill $tcpdump_pid |
| 80 | + sleep 1 |
| 81 | + kill -15 $tcpdump_pid; tcpdump_pid=0 |
90 | 82 | } |
91 | 83 |
|
92 | | -run_capture "ecc" "" |
93 | | -run_capture "ecc-resume" "--enable-session-ticket" |
94 | | -run_capture "dh" "--disable-ecc" |
95 | | -run_capture "dh-resume" "--disable-ecc --enable-session-ticket" |
96 | | -run_capture "x25519" "--enable-curve25519 --disable-dh --disable-ecc" |
97 | | -run_capture "x25519-resume" "--enable-curve25519 --disable-dh --disable-ecc --enable-session-ticket" |
98 | | -run_capture "hrr" "--disable-dh CFLAGS=-DWOLFSSL_SNIFFER_WATCH" |
| 84 | +run_capture "tls12" "" |
| 85 | +run_capture "tls13-ecc" "" |
| 86 | +run_capture "tls13-ecc-resume" "--enable-session-ticket" |
| 87 | +run_capture "tls13-dh" "--disable-ecc" |
| 88 | +run_capture "tls13-dh-resume" "--disable-ecc --enable-session-ticket" |
| 89 | +run_capture "tls13-x25519" "--enable-curve25519 --disable-dh --disable-ecc" |
| 90 | +run_capture "tls13-x25519-resume" "--enable-curve25519 --disable-dh --disable-ecc --enable-session-ticket" |
| 91 | +run_capture "tls13-hrr" "--disable-dh CFLAGS=-DWOLFSSL_SNIFFER_WATCH" |
| 92 | + |
| 93 | +echo "Tests passed in $SECONDS seconds" |
0 commit comments