blob: fa21e4c140c927a535e65f4dca5d01a73c0ee50e [file] [log] [blame]
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001#!/bin/sh
2
3# Test various options that are not covered by compat.sh
4#
5# Here the goal is not to cover every ciphersuite/version, but
6# rather specific options (max fragment length, truncated hmac, etc)
7# or procedures (session resumption from cache or ticket, renego, etc).
8#
9# Assumes all options are compiled in.
10
11PROGS_DIR='../programs/ssl'
12SRV_CMD="$PROGS_DIR/ssl_server2"
13CLI_CMD="$PROGS_DIR/ssl_client2"
14
15# Usage: run_test name srv_args cli_args cli_exit [option [...]]
16# Options: -s pattern pattern that must be present in server output
17# -c pattern pattern that must be present in client output
18# -S pattern pattern that must be absent in server output
19# -C pattern pattern that must be absent in client output
20run_test() {
21 echo -n "$1: "
22 shift
23
24 # run the commands
25 $SRV_CMD $1 > srv_out &
26 SRV_PID=$!
27 sleep 1
28 $CLI_CMD $2 > cli_out
29 CLI_EXIT=$?
30 echo SERVERQUIT | openssl s_client >/dev/null 2>&1
31 wait $SRV_PID
32 shift 2
33
34 # check client exit code
35 if [ "$1" = 0 -a "$CLI_EXIT" != 0 ]; then
36 echo "FAIL - client exit"
37 return
38 fi
39 shift
40
41 # check options
42 while [ $# -gt 0 ]
43 do
44 case $1 in
45 "-s")
46 if grep "$2" srv_out >/dev/null; then :; else
47 echo "FAIL - -s $2"
48 return
49 fi
50 ;;
51
52 "-c")
53 if grep "$2" cli_out >/dev/null; then :; else
54 echo "FAIL - -c $2"
55 return
56 fi
57 ;;
58
59 "-S")
60 if grep "$2" srv_out >/dev/null; then
61 echo "FAIL - -S $2"
62 return
63 fi
64 ;;
65
66 "-C")
67 if grep "$2" cli_out >/dev/null; then
68 echo "FAIL - -C $2"
69 return
70 fi
71 ;;
72
73 *)
74 echo "Unkown test: $1" >&2
75 exit 1
76 esac
77 shift 2
78 done
79
80 # if we're here, everything is ok
81 echo "PASS"
82 rm -r srv_out cli_out
83}
84
85killall -q openssl ssl_server ssl_server2
86
87run_test "Truncated HMAC" \
88 "debug_level=5" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +010089 "trunc_hmac=1 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +010090 0 \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +010091 -s "dumping 'computed mac' (10 bytes)"
92
93run_test "Session resume using tickets" \
94 "debug_level=4 tickets=1" \
95 "debug_level=4 reconnect=1 tickets=1" \
96 0 \
97 -S "session successfully restored from cache" \
98 -s "session successfully restored from ticket" \
99 -s "a session has been resumed" \
100 -c "a session has been resumed"
101
102run_test "Session resume using cache #1" \
103 "debug_level=4 tickets=0" \
104 "debug_level=4 reconnect=1 tickets=1" \
105 0 \
106 -s "session successfully restored from cache" \
107 -S "session successfully restored from ticket" \
108 -s "a session has been resumed" \
109 -c "a session has been resumed"
110
111run_test "Session resume using cache #2" \
112 "debug_level=4 tickets=1" \
113 "debug_level=4 reconnect=1 tickets=0" \
114 0 \
115 -s "session successfully restored from cache" \
116 -S "session successfully restored from ticket" \
117 -s "a session has been resumed" \
118 -c "a session has been resumed"