blob: ea9cafc74c578cd87e066a4df7fd7096d71c52c4 [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#
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02009# Assumes a build with default options.
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +010010
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +010011set -u
12
Manuel Pégourié-Gonnardf7a26902014-02-27 12:25:54 +010013# default values, can be overriden by the environment
14: ${P_SRV:=../programs/ssl/ssl_server2}
15: ${P_CLI:=../programs/ssl/ssl_client2}
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +020016: ${P_PXY:=../programs/test/udp_proxy}
Manuel Pégourié-Gonnard74faf3c2014-03-13 18:47:44 +010017: ${OPENSSL_CMD:=openssl} # OPENSSL would conflict with the build system
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +020018: ${GNUTLS_CLI:=gnutls-cli}
19: ${GNUTLS_SERV:=gnutls-serv}
Gilles Peskine39e29812017-05-16 17:53:03 +020020: ${PERL:=perl}
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +010021
Manuel Pégourié-Gonnardfa60f122014-09-26 16:07:29 +020022O_SRV="$OPENSSL_CMD s_server -www -cert data_files/server5.crt -key data_files/server5.key"
Manuel Pégourié-Gonnard74faf3c2014-03-13 18:47:44 +010023O_CLI="echo 'GET / HTTP/1.0' | $OPENSSL_CMD s_client"
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +020024G_SRV="$GNUTLS_SERV --x509certfile data_files/server5.crt --x509keyfile data_files/server5.key"
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +010025G_CLI="echo 'GET / HTTP/1.0' | $GNUTLS_CLI --x509cafile data_files/test-ca_cat12.crt"
Gilles Peskine39e29812017-05-16 17:53:03 +020026TCP_CLIENT="$PERL scripts/tcp_client.pl"
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +010027
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +010028TESTS=0
29FAILS=0
Manuel Pégourié-Gonnard6f4fbbb2014-08-14 14:31:29 +020030SKIPS=0
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +010031
Manuel Pégourié-Gonnard7f809972015-03-09 17:05:11 +000032CONFIG_H='../include/mbedtls/config.h'
Manuel Pégourié-Gonnard83d8c732014-04-07 13:24:21 +020033
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +010034MEMCHECK=0
Manuel Pégourié-Gonnard417d46c2014-03-13 19:17:53 +010035FILTER='.*'
Manuel Pégourié-Gonnard6f4fbbb2014-08-14 14:31:29 +020036EXCLUDE='^$'
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +010037
38print_usage() {
39 echo "Usage: $0 [options]"
Manuel Pégourié-Gonnardf46f1282014-12-11 11:51:28 +010040 printf " -h|--help\tPrint this help.\n"
41 printf " -m|--memcheck\tCheck memory leaks and errors.\n"
42 printf " -f|--filter\tOnly matching tests are executed (default: '$FILTER')\n"
43 printf " -e|--exclude\tMatching tests are excluded (default: '$EXCLUDE')\n"
Gilles Peskinebb4aaf12017-11-30 15:56:20 +010044 printf " --seed\tInteger seed value to use for this test run (default: random)\n"
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +010045}
46
47get_options() {
48 while [ $# -gt 0 ]; do
49 case "$1" in
Manuel Pégourié-Gonnard417d46c2014-03-13 19:17:53 +010050 -f|--filter)
51 shift; FILTER=$1
52 ;;
53 -e|--exclude)
54 shift; EXCLUDE=$1
55 ;;
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +010056 -m|--memcheck)
57 MEMCHECK=1
58 ;;
Gilles Peskinebb4aaf12017-11-30 15:56:20 +010059 --seed)
60 shift; SEED="$1"
61 ;;
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +010062 -h|--help)
63 print_usage
64 exit 0
65 ;;
66 *)
Paul Bakker1ebc0c52014-05-22 15:47:58 +020067 echo "Unknown argument: '$1'"
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +010068 print_usage
69 exit 1
70 ;;
71 esac
72 shift
73 done
74}
75
Manuel Pégourié-Gonnard988209f2015-03-24 10:43:55 +010076# skip next test if the flag is not enabled in config.h
77requires_config_enabled() {
78 if grep "^#define $1" $CONFIG_H > /dev/null; then :; else
79 SKIP_NEXT="YES"
80 fi
81}
82
Manuel Pégourié-Gonnard55393662017-06-08 17:51:08 +020083# skip next test if the flag is enabled in config.h
84requires_config_disabled() {
85 if grep "^#define $1" $CONFIG_H > /dev/null; then
86 SKIP_NEXT="YES"
87 fi
88}
89
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +020090# skip next test if OpenSSL doesn't support FALLBACK_SCSV
91requires_openssl_with_fallback_scsv() {
92 if [ -z "${OPENSSL_HAS_FBSCSV:-}" ]; then
93 if $OPENSSL_CMD s_client -help 2>&1 | grep fallback_scsv >/dev/null
94 then
95 OPENSSL_HAS_FBSCSV="YES"
96 else
97 OPENSSL_HAS_FBSCSV="NO"
98 fi
99 fi
100 if [ "$OPENSSL_HAS_FBSCSV" = "NO" ]; then
101 SKIP_NEXT="YES"
102 fi
103}
104
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +0200105# skip next test if GnuTLS isn't available
106requires_gnutls() {
107 if [ -z "${GNUTLS_AVAILABLE:-}" ]; then
Manuel Pégourié-Gonnard03db6b02015-06-26 15:45:30 +0200108 if ( which "$GNUTLS_CLI" && which "$GNUTLS_SERV" ) >/dev/null 2>&1; then
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +0200109 GNUTLS_AVAILABLE="YES"
110 else
111 GNUTLS_AVAILABLE="NO"
112 fi
113 fi
114 if [ "$GNUTLS_AVAILABLE" = "NO" ]; then
115 SKIP_NEXT="YES"
116 fi
117}
118
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200119# skip next test if IPv6 isn't available on this host
120requires_ipv6() {
121 if [ -z "${HAS_IPV6:-}" ]; then
122 $P_SRV server_addr='::1' > $SRV_OUT 2>&1 &
123 SRV_PID=$!
124 sleep 1
125 kill $SRV_PID >/dev/null 2>&1
126 if grep "NET - Binding of the socket failed" $SRV_OUT >/dev/null; then
127 HAS_IPV6="NO"
128 else
129 HAS_IPV6="YES"
130 fi
131 rm -r $SRV_OUT
132 fi
133
134 if [ "$HAS_IPV6" = "NO" ]; then
135 SKIP_NEXT="YES"
136 fi
137}
138
Manuel Pégourié-Gonnard76fe9e42014-09-24 15:17:31 +0200139# skip the next test if valgrind is in use
140not_with_valgrind() {
141 if [ "$MEMCHECK" -gt 0 ]; then
142 SKIP_NEXT="YES"
143 fi
144}
145
Paul Bakker3b224ff2016-05-13 10:33:25 +0100146# skip the next test if valgrind is NOT in use
147only_with_valgrind() {
148 if [ "$MEMCHECK" -eq 0 ]; then
149 SKIP_NEXT="YES"
150 fi
151}
152
Manuel Pégourié-Gonnarda0719722014-09-20 12:46:27 +0200153# multiply the client timeout delay by the given factor for the next test
154needs_more_time() {
155 CLI_DELAY_FACTOR=$1
156}
157
Manuel Pégourié-Gonnardf8bdbb52014-02-21 09:20:14 +0100158# print_name <name>
159print_name() {
Manuel Pégourié-Gonnardf46f1282014-12-11 11:51:28 +0100160 printf "$1 "
Manuel Pégourié-Gonnard72e51ee2014-08-31 10:22:11 +0200161 LEN=$(( 72 - `echo "$1" | wc -c` ))
Manuel Pégourié-Gonnardf46f1282014-12-11 11:51:28 +0100162 for i in `seq 1 $LEN`; do printf '.'; done
163 printf ' '
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +0100164
Manuel Pégourié-Gonnard72e51ee2014-08-31 10:22:11 +0200165 TESTS=$(( $TESTS + 1 ))
Manuel Pégourié-Gonnardf8bdbb52014-02-21 09:20:14 +0100166}
167
168# fail <message>
169fail() {
170 echo "FAIL"
Manuel Pégourié-Gonnard3eec6042014-02-27 15:37:24 +0100171 echo " ! $1"
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +0100172
Manuel Pégourié-Gonnardc2b00922014-08-31 16:46:04 +0200173 mv $SRV_OUT o-srv-${TESTS}.log
174 mv $CLI_OUT o-cli-${TESTS}.log
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200175 if [ -n "$PXY_CMD" ]; then
176 mv $PXY_OUT o-pxy-${TESTS}.log
177 fi
178 echo " ! outputs saved to o-XXX-${TESTS}.log"
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +0100179
Azim Khan341e3782018-03-29 11:04:20 +0100180 if [ "X${USER:-}" = Xbuildbot -o "X${LOGNAME:-}" = Xbuildbot -o "${LOG_FAILURE_ON_STDOUT:-0}" != 0 ]; then
Manuel Pégourié-Gonnard7fa67722014-08-31 17:42:53 +0200181 echo " ! server output:"
182 cat o-srv-${TESTS}.log
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200183 echo " ! ========================================================"
Manuel Pégourié-Gonnard7fa67722014-08-31 17:42:53 +0200184 echo " ! client output:"
185 cat o-cli-${TESTS}.log
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200186 if [ -n "$PXY_CMD" ]; then
187 echo " ! ========================================================"
188 echo " ! proxy output:"
189 cat o-pxy-${TESTS}.log
190 fi
191 echo ""
Manuel Pégourié-Gonnard7fa67722014-08-31 17:42:53 +0200192 fi
193
Manuel Pégourié-Gonnard72e51ee2014-08-31 10:22:11 +0200194 FAILS=$(( $FAILS + 1 ))
Manuel Pégourié-Gonnardf8bdbb52014-02-21 09:20:14 +0100195}
196
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +0100197# is_polar <cmd_line>
198is_polar() {
199 echo "$1" | grep 'ssl_server2\|ssl_client2' > /dev/null
200}
201
Manuel Pégourié-Gonnardfa60f122014-09-26 16:07:29 +0200202# openssl s_server doesn't have -www with DTLS
203check_osrv_dtls() {
204 if echo "$SRV_CMD" | grep 's_server.*-dtls' >/dev/null; then
205 NEEDS_INPUT=1
206 SRV_CMD="$( echo $SRV_CMD | sed s/-www// )"
207 else
208 NEEDS_INPUT=0
209 fi
210}
211
212# provide input to commands that need it
213provide_input() {
214 if [ $NEEDS_INPUT -eq 0 ]; then
215 return
216 fi
217
218 while true; do
219 echo "HTTP/1.0 200 OK"
220 sleep 1
221 done
222}
223
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100224# has_mem_err <log_file_name>
225has_mem_err() {
226 if ( grep -F 'All heap blocks were freed -- no leaks are possible' "$1" &&
227 grep -F 'ERROR SUMMARY: 0 errors from 0 contexts' "$1" ) > /dev/null
228 then
229 return 1 # false: does not have errors
230 else
231 return 0 # true: has errors
232 fi
233}
234
Gilles Peskine684a5172017-12-14 18:58:42 +0100235# Wait for process $2 to be listening on port $1
236if type lsof >/dev/null 2>/dev/null; then
237 wait_server_start() {
238 START_TIME=$(date +%s)
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200239 if [ "$DTLS" -eq 1 ]; then
Gilles Peskine684a5172017-12-14 18:58:42 +0100240 proto=UDP
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200241 else
Gilles Peskine684a5172017-12-14 18:58:42 +0100242 proto=TCP
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200243 fi
Gilles Peskine684a5172017-12-14 18:58:42 +0100244 # Make a tight loop, server normally takes less than 1s to start.
245 while ! lsof -a -n -b -i "$proto:$1" -p "$2" >/dev/null 2>/dev/null; do
246 if [ $(( $(date +%s) - $START_TIME )) -gt $DOG_DELAY ]; then
247 echo "SERVERSTART TIMEOUT"
248 echo "SERVERSTART TIMEOUT" >> $SRV_OUT
249 break
250 fi
251 # Linux and *BSD support decimal arguments to sleep. On other
252 # OSes this may be a tight loop.
253 sleep 0.1 2>/dev/null || true
254 done
255 }
256else
Gilles Peskine2cc7ad42018-06-29 15:48:13 +0200257 echo "Warning: lsof not available, wait_server_start = sleep"
Gilles Peskine684a5172017-12-14 18:58:42 +0100258 wait_server_start() {
Manuel Pégourié-Gonnard0c1ec472014-06-20 18:41:11 +0200259 sleep "$START_DELAY"
Gilles Peskine684a5172017-12-14 18:58:42 +0100260 }
261fi
Manuel Pégourié-Gonnard0c1ec472014-06-20 18:41:11 +0200262
Manuel Pégourié-Gonnardc0f6a692014-08-30 22:41:47 +0200263# wait for client to terminate and set CLI_EXIT
264# must be called right after starting the client
265wait_client_done() {
266 CLI_PID=$!
267
Manuel Pégourié-Gonnarda0719722014-09-20 12:46:27 +0200268 CLI_DELAY=$(( $DOG_DELAY * $CLI_DELAY_FACTOR ))
269 CLI_DELAY_FACTOR=1
270
Manuel Pégourié-Gonnarda365add2015-08-04 20:57:59 +0200271 ( sleep $CLI_DELAY; echo "===CLIENT_TIMEOUT===" >> $CLI_OUT; kill $CLI_PID ) &
Manuel Pégourié-Gonnarda6189f02014-09-20 13:15:43 +0200272 DOG_PID=$!
Manuel Pégourié-Gonnardc0f6a692014-08-30 22:41:47 +0200273
274 wait $CLI_PID
275 CLI_EXIT=$?
276
Manuel Pégourié-Gonnarda6189f02014-09-20 13:15:43 +0200277 kill $DOG_PID >/dev/null 2>&1
278 wait $DOG_PID
Manuel Pégourié-Gonnardc0f6a692014-08-30 22:41:47 +0200279
280 echo "EXIT: $CLI_EXIT" >> $CLI_OUT
281}
282
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200283# check if the given command uses dtls and sets global variable DTLS
284detect_dtls() {
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200285 if echo "$1" | grep 'dtls=1\|-dtls1\|-u' >/dev/null; then
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200286 DTLS=1
287 else
288 DTLS=0
289 fi
290}
291
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200292# Usage: run_test name [-p proxy_cmd] srv_cmd cli_cmd cli_exit [option [...]]
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +0100293# Options: -s pattern pattern that must be present in server output
294# -c pattern pattern that must be present in client output
Janos Follath6d3e3382016-09-07 15:48:48 +0100295# -u pattern lines after pattern must be unique in client output
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +0100296# -S pattern pattern that must be absent in server output
297# -C pattern pattern that must be absent in client output
Janos Follath6d3e3382016-09-07 15:48:48 +0100298# -U pattern lines after pattern must be unique in server output
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +0100299run_test() {
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +0100300 NAME="$1"
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200301 shift 1
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +0100302
Manuel Pégourié-Gonnard417d46c2014-03-13 19:17:53 +0100303 if echo "$NAME" | grep "$FILTER" | grep -v "$EXCLUDE" >/dev/null; then :
304 else
Manuel Pégourié-Gonnard74a13782014-10-14 22:34:08 +0200305 SKIP_NEXT="NO"
Manuel Pégourié-Gonnard417d46c2014-03-13 19:17:53 +0100306 return
307 fi
308
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +0100309 print_name "$NAME"
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +0100310
Manuel Pégourié-Gonnard6f4fbbb2014-08-14 14:31:29 +0200311 # should we skip?
312 if [ "X$SKIP_NEXT" = "XYES" ]; then
313 SKIP_NEXT="NO"
314 echo "SKIP"
Manuel Pégourié-Gonnard72e51ee2014-08-31 10:22:11 +0200315 SKIPS=$(( $SKIPS + 1 ))
Manuel Pégourié-Gonnard6f4fbbb2014-08-14 14:31:29 +0200316 return
317 fi
318
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200319 # does this test use a proxy?
320 if [ "X$1" = "X-p" ]; then
321 PXY_CMD="$2"
322 shift 2
323 else
324 PXY_CMD=""
325 fi
326
327 # get commands and client output
328 SRV_CMD="$1"
329 CLI_CMD="$2"
330 CLI_EXPECT="$3"
331 shift 3
332
333 # fix client port
334 if [ -n "$PXY_CMD" ]; then
335 CLI_CMD=$( echo "$CLI_CMD" | sed s/+SRV_PORT/$PXY_PORT/g )
336 else
337 CLI_CMD=$( echo "$CLI_CMD" | sed s/+SRV_PORT/$SRV_PORT/g )
338 fi
339
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200340 # update DTLS variable
341 detect_dtls "$SRV_CMD"
342
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100343 # prepend valgrind to our commands if active
344 if [ "$MEMCHECK" -gt 0 ]; then
345 if is_polar "$SRV_CMD"; then
346 SRV_CMD="valgrind --leak-check=full $SRV_CMD"
347 fi
348 if is_polar "$CLI_CMD"; then
349 CLI_CMD="valgrind --leak-check=full $CLI_CMD"
350 fi
351 fi
352
Manuel Pégourié-Gonnarda365add2015-08-04 20:57:59 +0200353 TIMES_LEFT=2
354 while [ $TIMES_LEFT -gt 0 ]; do
Manuel Pégourié-Gonnardab5f7b42015-08-04 21:01:37 +0200355 TIMES_LEFT=$(( $TIMES_LEFT - 1 ))
Manuel Pégourié-Gonnarda365add2015-08-04 20:57:59 +0200356
Manuel Pégourié-Gonnardab5f7b42015-08-04 21:01:37 +0200357 # run the commands
358 if [ -n "$PXY_CMD" ]; then
359 echo "$PXY_CMD" > $PXY_OUT
360 $PXY_CMD >> $PXY_OUT 2>&1 &
361 PXY_PID=$!
362 # assume proxy starts faster than server
363 fi
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200364
Manuel Pégourié-Gonnardab5f7b42015-08-04 21:01:37 +0200365 check_osrv_dtls
366 echo "$SRV_CMD" > $SRV_OUT
367 provide_input | $SRV_CMD >> $SRV_OUT 2>&1 &
368 SRV_PID=$!
Gilles Peskine684a5172017-12-14 18:58:42 +0100369 wait_server_start "$SRV_PORT" "$SRV_PID"
Manuel Pégourié-Gonnardc0f6a692014-08-30 22:41:47 +0200370
Manuel Pégourié-Gonnardab5f7b42015-08-04 21:01:37 +0200371 echo "$CLI_CMD" > $CLI_OUT
372 eval "$CLI_CMD" >> $CLI_OUT 2>&1 &
373 wait_client_done
Manuel Pégourié-Gonnarde01af4c2014-03-25 14:16:44 +0100374
Manuel Pégourié-Gonnardab5f7b42015-08-04 21:01:37 +0200375 # terminate the server (and the proxy)
376 kill $SRV_PID
377 wait $SRV_PID
378 if [ -n "$PXY_CMD" ]; then
379 kill $PXY_PID >/dev/null 2>&1
380 wait $PXY_PID
381 fi
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +0100382
Manuel Pégourié-Gonnardab5f7b42015-08-04 21:01:37 +0200383 # retry only on timeouts
384 if grep '===CLIENT_TIMEOUT===' $CLI_OUT >/dev/null; then
385 printf "RETRY "
386 else
387 TIMES_LEFT=0
388 fi
Manuel Pégourié-Gonnarda365add2015-08-04 20:57:59 +0200389 done
390
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +0100391 # check if the client and server went at least to the handshake stage
Paul Bakker1ebc0c52014-05-22 15:47:58 +0200392 # (useful to avoid tests with only negative assertions and non-zero
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +0100393 # expected client exit to incorrectly succeed in case of catastrophic
394 # failure)
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +0100395 if is_polar "$SRV_CMD"; then
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +0200396 if grep "Performing the SSL/TLS handshake" $SRV_OUT >/dev/null; then :;
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +0100397 else
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +0100398 fail "server or client failed to reach handshake stage"
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +0100399 return
400 fi
401 fi
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +0100402 if is_polar "$CLI_CMD"; then
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +0200403 if grep "Performing the SSL/TLS handshake" $CLI_OUT >/dev/null; then :;
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +0100404 else
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +0100405 fail "server or client failed to reach handshake stage"
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +0100406 return
407 fi
408 fi
409
Manuel Pégourié-Gonnardf8bdbb52014-02-21 09:20:14 +0100410 # check server exit code
411 if [ $? != 0 ]; then
412 fail "server fail"
413 return
414 fi
415
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +0100416 # check client exit code
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +0100417 if [ \( "$CLI_EXPECT" = 0 -a "$CLI_EXIT" != 0 \) -o \
418 \( "$CLI_EXPECT" != 0 -a "$CLI_EXIT" = 0 \) ]
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +0100419 then
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200420 fail "bad client exit code (expected $CLI_EXPECT, got $CLI_EXIT)"
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +0100421 return
422 fi
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +0100423
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100424 # check other assertions
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +0200425 # lines beginning with == are added by valgrind, ignore them
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +0100426 while [ $# -gt 0 ]
427 do
428 case $1 in
429 "-s")
Janos Follath6d3e3382016-09-07 15:48:48 +0100430 if grep -v '^==' $SRV_OUT | grep -v 'Serious error when reading debug info' | grep "$2" >/dev/null; then :; else
431 fail "pattern '$2' MUST be present in the Server output"
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +0100432 return
433 fi
434 ;;
435
436 "-c")
Janos Follath6d3e3382016-09-07 15:48:48 +0100437 if grep -v '^==' $CLI_OUT | grep -v 'Serious error when reading debug info' | grep "$2" >/dev/null; then :; else
438 fail "pattern '$2' MUST be present in the Client output"
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +0100439 return
440 fi
441 ;;
442
443 "-S")
Janos Follath6d3e3382016-09-07 15:48:48 +0100444 if grep -v '^==' $SRV_OUT | grep -v 'Serious error when reading debug info' | grep "$2" >/dev/null; then
445 fail "pattern '$2' MUST NOT be present in the Server output"
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +0100446 return
447 fi
448 ;;
449
450 "-C")
Janos Follath6d3e3382016-09-07 15:48:48 +0100451 if grep -v '^==' $CLI_OUT | grep -v 'Serious error when reading debug info' | grep "$2" >/dev/null; then
452 fail "pattern '$2' MUST NOT be present in the Client output"
453 return
454 fi
455 ;;
456
457 # The filtering in the following two options (-u and -U) do the following
458 # - ignore valgrind output
459 # - filter out everything but lines right after the pattern occurances
460 # - keep one of each non-unique line
461 # - count how many lines remain
462 # A line with '--' will remain in the result from previous outputs, so the number of lines in the result will be 1
463 # if there were no duplicates.
464 "-U")
465 if [ $(grep -v '^==' $SRV_OUT | grep -v 'Serious error when reading debug info' | grep -A1 "$2" | grep -v "$2" | sort | uniq -d | wc -l) -gt 1 ]; then
466 fail "lines following pattern '$2' must be unique in Server output"
467 return
468 fi
469 ;;
470
471 "-u")
472 if [ $(grep -v '^==' $CLI_OUT | grep -v 'Serious error when reading debug info' | grep -A1 "$2" | grep -v "$2" | sort | uniq -d | wc -l) -gt 1 ]; then
473 fail "lines following pattern '$2' must be unique in Client output"
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +0100474 return
475 fi
476 ;;
477
478 *)
Paul Bakker1ebc0c52014-05-22 15:47:58 +0200479 echo "Unknown test: $1" >&2
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +0100480 exit 1
481 esac
482 shift 2
483 done
484
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100485 # check valgrind's results
486 if [ "$MEMCHECK" -gt 0 ]; then
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +0200487 if is_polar "$SRV_CMD" && has_mem_err $SRV_OUT; then
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100488 fail "Server has memory errors"
489 return
490 fi
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +0200491 if is_polar "$CLI_CMD" && has_mem_err $CLI_OUT; then
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100492 fail "Client has memory errors"
493 return
494 fi
495 fi
496
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +0100497 # if we're here, everything is ok
498 echo "PASS"
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200499 rm -f $SRV_OUT $CLI_OUT $PXY_OUT
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +0100500}
501
Manuel Pégourié-Gonnarda9062e92014-02-25 16:21:22 +0100502cleanup() {
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200503 rm -f $CLI_OUT $SRV_OUT $PXY_OUT $SESSION
Manuel Pégourié-Gonnarda6189f02014-09-20 13:15:43 +0200504 test -n "${SRV_PID:-}" && kill $SRV_PID >/dev/null 2>&1
505 test -n "${PXY_PID:-}" && kill $PXY_PID >/dev/null 2>&1
506 test -n "${CLI_PID:-}" && kill $CLI_PID >/dev/null 2>&1
507 test -n "${DOG_PID:-}" && kill $DOG_PID >/dev/null 2>&1
Manuel Pégourié-Gonnarda9062e92014-02-25 16:21:22 +0100508 exit 1
509}
510
Manuel Pégourié-Gonnard9dea8bd2014-02-26 18:21:02 +0100511#
512# MAIN
513#
514
Manuel Pégourié-Gonnard19db8ea2015-03-10 13:41:04 +0000515if cd $( dirname $0 ); then :; else
516 echo "cd $( dirname $0 ) failed" >&2
517 exit 1
518fi
519
Manuel Pégourié-Gonnard913030c2014-03-28 10:12:38 +0100520get_options "$@"
521
Manuel Pégourié-Gonnardf7a26902014-02-27 12:25:54 +0100522# sanity checks, avoid an avalanche of errors
523if [ ! -x "$P_SRV" ]; then
524 echo "Command '$P_SRV' is not an executable file"
525 exit 1
526fi
527if [ ! -x "$P_CLI" ]; then
528 echo "Command '$P_CLI' is not an executable file"
529 exit 1
530fi
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200531if [ ! -x "$P_PXY" ]; then
532 echo "Command '$P_PXY' is not an executable file"
533 exit 1
534fi
Manuel Pégourié-Gonnard74faf3c2014-03-13 18:47:44 +0100535if which $OPENSSL_CMD >/dev/null 2>&1; then :; else
536 echo "Command '$OPENSSL_CMD' not found"
Manuel Pégourié-Gonnardf7a26902014-02-27 12:25:54 +0100537 exit 1
538fi
539
Manuel Pégourié-Gonnard32f8f4d2014-05-29 11:31:20 +0200540# used by watchdog
541MAIN_PID="$$"
542
Manuel Pégourié-Gonnard3f69e542018-01-22 10:22:09 +0100543# We use somewhat arbitrary delays for tests:
544# - how long do we wait for the server to start (when lsof not available)?
545# - how long do we allow for the client to finish?
546# (not to check performance, just to avoid waiting indefinitely)
547# Things are slower with valgrind, so give extra time here.
548#
549# Note: without lsof, there is a trade-off between the running time of this
550# script and the risk of spurious errors because we didn't wait long enough.
551# The watchdog delay on the other hand doesn't affect normal running time of
552# the script, only the case where a client or server gets stuck.
Manuel Pégourié-Gonnard0c1ec472014-06-20 18:41:11 +0200553if [ "$MEMCHECK" -gt 0 ]; then
Manuel Pégourié-Gonnard3f69e542018-01-22 10:22:09 +0100554 START_DELAY=6
555 DOG_DELAY=60
Manuel Pégourié-Gonnard0c1ec472014-06-20 18:41:11 +0200556else
Manuel Pégourié-Gonnard3f69e542018-01-22 10:22:09 +0100557 START_DELAY=2
558 DOG_DELAY=20
Manuel Pégourié-Gonnard0c1ec472014-06-20 18:41:11 +0200559fi
Manuel Pégourié-Gonnard3f69e542018-01-22 10:22:09 +0100560
561# some particular tests need more time:
562# - for the client, we multiply the usual watchdog limit by a factor
563# - for the server, we sleep for a number of seconds after the client exits
564# see client_need_more_time() and server_needs_more_time()
Manuel Pégourié-Gonnarda0719722014-09-20 12:46:27 +0200565CLI_DELAY_FACTOR=1
Manuel Pégourié-Gonnard0c1ec472014-06-20 18:41:11 +0200566
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200567# Pick a "unique" server port in the range 10000-19999, and a proxy port
568PORT_BASE="0000$$"
Manuel Pégourié-Gonnard3a173f42015-01-22 13:30:33 +0000569PORT_BASE="$( printf $PORT_BASE | tail -c 4 )"
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200570SRV_PORT="1$PORT_BASE"
571PXY_PORT="2$PORT_BASE"
572unset PORT_BASE
Manuel Pégourié-Gonnard8066b812014-05-28 22:59:30 +0200573
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200574# fix commands to use this port, force IPv4 while at it
Manuel Pégourié-Gonnard0af1ba32015-01-21 11:44:33 +0000575# +SRV_PORT will be replaced by either $SRV_PORT or $PXY_PORT later
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200576P_SRV="$P_SRV server_addr=127.0.0.1 server_port=$SRV_PORT"
577P_CLI="$P_CLI server_addr=127.0.0.1 server_port=+SRV_PORT"
Gilles Peskinebb4aaf12017-11-30 15:56:20 +0100578P_PXY="$P_PXY server_addr=127.0.0.1 server_port=$SRV_PORT listen_addr=127.0.0.1 listen_port=$PXY_PORT ${SEED:+"seed=$SEED"}"
Manuel Pégourié-Gonnard61957672015-06-18 17:54:58 +0200579O_SRV="$O_SRV -accept $SRV_PORT -dhparam data_files/dhparams.pem"
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200580O_CLI="$O_CLI -connect localhost:+SRV_PORT"
581G_SRV="$G_SRV -p $SRV_PORT"
Manuel Pégourié-Gonnard0af1ba32015-01-21 11:44:33 +0000582G_CLI="$G_CLI -p +SRV_PORT localhost"
Manuel Pégourié-Gonnard8066b812014-05-28 22:59:30 +0200583
Gilles Peskine35db5ba2017-05-10 10:13:59 +0200584# Allow SHA-1, because many of our test certificates use it
585P_SRV="$P_SRV allow_sha1=1"
586P_CLI="$P_CLI allow_sha1=1"
587
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +0200588# Also pick a unique name for intermediate files
589SRV_OUT="srv_out.$$"
590CLI_OUT="cli_out.$$"
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200591PXY_OUT="pxy_out.$$"
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +0200592SESSION="session.$$"
593
Manuel Pégourié-Gonnard6f4fbbb2014-08-14 14:31:29 +0200594SKIP_NEXT="NO"
595
Manuel Pégourié-Gonnarda9062e92014-02-25 16:21:22 +0100596trap cleanup INT TERM HUP
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +0100597
Manuel Pégourié-Gonnarde73b2632014-07-12 04:00:00 +0200598# Basic test
599
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +0200600# Checks that:
601# - things work with all ciphersuites active (used with config-full in all.sh)
602# - the expected (highest security) parameters are selected
603# ("signature_algorithm ext: 6" means SHA-512 (highest common hash))
Manuel Pégourié-Gonnarde73b2632014-07-12 04:00:00 +0200604run_test "Default" \
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +0200605 "$P_SRV debug_level=3" \
Manuel Pégourié-Gonnarde73b2632014-07-12 04:00:00 +0200606 "$P_CLI" \
607 0 \
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +0200608 -s "Protocol is TLSv1.2" \
609 -s "Ciphersuite is TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384" \
610 -s "client hello v3, signature_algorithm ext: 6" \
611 -s "ECDHE curve: secp521r1" \
612 -S "error" \
613 -C "error"
Manuel Pégourié-Gonnarde73b2632014-07-12 04:00:00 +0200614
Manuel Pégourié-Gonnard3bb08012015-01-22 13:34:21 +0000615run_test "Default, DTLS" \
616 "$P_SRV dtls=1" \
617 "$P_CLI dtls=1" \
618 0 \
619 -s "Protocol is DTLSv1.2" \
620 -s "Ciphersuite is TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384"
621
Janos Follath6d3e3382016-09-07 15:48:48 +0100622# Test for uniqueness of IVs in AEAD ciphersuites
623run_test "Unique IV in GCM" \
624 "$P_SRV exchanges=20 debug_level=4" \
625 "$P_CLI exchanges=20 debug_level=4 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384" \
626 0 \
627 -u "IV used" \
628 -U "IV used"
629
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +0100630# Tests for rc4 option
631
Simon Butcher6eb066e2016-05-19 22:12:18 +0100632requires_config_enabled MBEDTLS_REMOVE_ARC4_CIPHERSUITES
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +0100633run_test "RC4: server disabled, client enabled" \
634 "$P_SRV" \
635 "$P_CLI force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
636 1 \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +0100637 -s "SSL - The server has no ciphersuites in common"
638
Simon Butcher6eb066e2016-05-19 22:12:18 +0100639requires_config_enabled MBEDTLS_REMOVE_ARC4_CIPHERSUITES
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +0100640run_test "RC4: server half, client enabled" \
641 "$P_SRV arc4=1" \
642 "$P_CLI force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
643 1 \
644 -s "SSL - The server has no ciphersuites in common"
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +0100645
646run_test "RC4: server enabled, client disabled" \
647 "$P_SRV force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
648 "$P_CLI" \
649 1 \
650 -s "SSL - The server has no ciphersuites in common"
651
652run_test "RC4: both enabled" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +0100653 "$P_SRV force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +0100654 "$P_CLI force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
655 0 \
Manuel Pégourié-Gonnard51d81662015-01-14 17:20:46 +0100656 -S "SSL - None of the common ciphersuites is usable" \
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +0100657 -S "SSL - The server has no ciphersuites in common"
658
Hanno Beckera24ed192018-08-17 09:54:10 +0100659# Test empty CA list in CertificateRequest in TLS 1.1 and earlier
660
661requires_gnutls
662requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1
663run_test "CertificateRequest with empty CA list, TLS 1.1 (GnuTLS server)" \
664 "$G_SRV"\
665 "$P_CLI force_version=tls1_1" \
666 0
667
668requires_gnutls
669requires_config_enabled MBEDTLS_SSL_PROTO_TLS1
670run_test "CertificateRequest with empty CA list, TLS 1.0 (GnuTLS server)" \
671 "$G_SRV"\
672 "$P_CLI force_version=tls1" \
673 0
674
Gilles Peskineae765992017-05-09 15:59:24 +0200675# Tests for SHA-1 support
676
Manuel Pégourié-Gonnard55393662017-06-08 17:51:08 +0200677requires_config_disabled MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_CERTIFICATES
Gilles Peskineae765992017-05-09 15:59:24 +0200678run_test "SHA-1 forbidden by default in server certificate" \
679 "$P_SRV key_file=data_files/server2.key crt_file=data_files/server2.crt" \
680 "$P_CLI debug_level=2 allow_sha1=0" \
681 1 \
682 -c "The certificate is signed with an unacceptable hash"
683
Manuel Pégourié-Gonnard55393662017-06-08 17:51:08 +0200684requires_config_enabled MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_CERTIFICATES
685run_test "SHA-1 forbidden by default in server certificate" \
686 "$P_SRV key_file=data_files/server2.key crt_file=data_files/server2.crt" \
687 "$P_CLI debug_level=2 allow_sha1=0" \
688 0
689
Gilles Peskineae765992017-05-09 15:59:24 +0200690run_test "SHA-1 explicitly allowed in server certificate" \
691 "$P_SRV key_file=data_files/server2.key crt_file=data_files/server2.crt" \
692 "$P_CLI allow_sha1=1" \
693 0
694
695run_test "SHA-256 allowed by default in server certificate" \
696 "$P_SRV key_file=data_files/server2.key crt_file=data_files/server2-sha256.crt" \
697 "$P_CLI allow_sha1=0" \
698 0
699
Manuel Pégourié-Gonnard55393662017-06-08 17:51:08 +0200700requires_config_disabled MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_CERTIFICATES
Gilles Peskineae765992017-05-09 15:59:24 +0200701run_test "SHA-1 forbidden by default in client certificate" \
702 "$P_SRV auth_mode=required allow_sha1=0" \
703 "$P_CLI key_file=data_files/cli-rsa.key crt_file=data_files/cli-rsa-sha1.crt" \
704 1 \
705 -s "The certificate is signed with an unacceptable hash"
706
Manuel Pégourié-Gonnard55393662017-06-08 17:51:08 +0200707requires_config_enabled MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_CERTIFICATES
708run_test "SHA-1 forbidden by default in client certificate" \
709 "$P_SRV auth_mode=required allow_sha1=0" \
710 "$P_CLI key_file=data_files/cli-rsa.key crt_file=data_files/cli-rsa-sha1.crt" \
711 0
712
Gilles Peskineae765992017-05-09 15:59:24 +0200713run_test "SHA-1 explicitly allowed in client certificate" \
714 "$P_SRV auth_mode=required allow_sha1=1" \
715 "$P_CLI key_file=data_files/cli-rsa.key crt_file=data_files/cli-rsa-sha1.crt" \
716 0
717
718run_test "SHA-256 allowed by default in client certificate" \
719 "$P_SRV auth_mode=required allow_sha1=0" \
720 "$P_CLI key_file=data_files/cli-rsa.key crt_file=data_files/cli-rsa-sha256.crt" \
721 0
722
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +0100723# Tests for Truncated HMAC extension
724
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +0100725run_test "Truncated HMAC: client default, server default" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +0200726 "$P_SRV debug_level=4" \
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +0100727 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +0100728 0 \
Hanno Beckerce516ff2017-11-09 18:57:39 +0000729 -s "dumping 'expected mac' (20 bytes)" \
730 -S "dumping 'expected mac' (10 bytes)"
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +0100731
Hanno Beckera83fafa2017-11-10 08:42:54 +0000732requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +0100733run_test "Truncated HMAC: client disabled, server default" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +0200734 "$P_SRV debug_level=4" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +0000735 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=0" \
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +0100736 0 \
Hanno Beckerce516ff2017-11-09 18:57:39 +0000737 -s "dumping 'expected mac' (20 bytes)" \
738 -S "dumping 'expected mac' (10 bytes)"
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +0100739
Hanno Beckera83fafa2017-11-10 08:42:54 +0000740requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +0100741run_test "Truncated HMAC: client enabled, server default" \
742 "$P_SRV debug_level=4" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +0000743 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +0100744 0 \
Hanno Beckerce516ff2017-11-09 18:57:39 +0000745 -s "dumping 'expected mac' (20 bytes)" \
746 -S "dumping 'expected mac' (10 bytes)"
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +0100747
Hanno Beckera83fafa2017-11-10 08:42:54 +0000748requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +0100749run_test "Truncated HMAC: client enabled, server disabled" \
750 "$P_SRV debug_level=4 trunc_hmac=0" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +0000751 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +0100752 0 \
Hanno Beckerce516ff2017-11-09 18:57:39 +0000753 -s "dumping 'expected mac' (20 bytes)" \
754 -S "dumping 'expected mac' (10 bytes)"
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +0100755
Hanno Beckera83fafa2017-11-10 08:42:54 +0000756requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Hanno Beckerd51bec72017-11-17 15:46:24 +0000757run_test "Truncated HMAC: client disabled, server enabled" \
758 "$P_SRV debug_level=4 trunc_hmac=1" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +0000759 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=0" \
Hanno Beckerd51bec72017-11-17 15:46:24 +0000760 0 \
761 -s "dumping 'expected mac' (20 bytes)" \
762 -S "dumping 'expected mac' (10 bytes)"
763
764requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +0100765run_test "Truncated HMAC: client enabled, server enabled" \
766 "$P_SRV debug_level=4 trunc_hmac=1" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +0000767 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +0100768 0 \
Hanno Beckerce516ff2017-11-09 18:57:39 +0000769 -S "dumping 'expected mac' (20 bytes)" \
770 -s "dumping 'expected mac' (10 bytes)"
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +0100771
Hanno Becker02f632e2017-11-10 09:16:05 +0000772run_test "Truncated HMAC, DTLS: client default, server default" \
773 "$P_SRV dtls=1 debug_level=4" \
774 "$P_CLI dtls=1 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
775 0 \
776 -s "dumping 'expected mac' (20 bytes)" \
777 -S "dumping 'expected mac' (10 bytes)"
778
779requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
780run_test "Truncated HMAC, DTLS: client disabled, server default" \
781 "$P_SRV dtls=1 debug_level=4" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +0000782 "$P_CLI dtls=1 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=0" \
Hanno Becker02f632e2017-11-10 09:16:05 +0000783 0 \
784 -s "dumping 'expected mac' (20 bytes)" \
785 -S "dumping 'expected mac' (10 bytes)"
786
787requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
788run_test "Truncated HMAC, DTLS: client enabled, server default" \
789 "$P_SRV dtls=1 debug_level=4" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +0000790 "$P_CLI dtls=1 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=1" \
Hanno Becker02f632e2017-11-10 09:16:05 +0000791 0 \
792 -s "dumping 'expected mac' (20 bytes)" \
793 -S "dumping 'expected mac' (10 bytes)"
794
795requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
796run_test "Truncated HMAC, DTLS: client enabled, server disabled" \
797 "$P_SRV dtls=1 debug_level=4 trunc_hmac=0" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +0000798 "$P_CLI dtls=1 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=1" \
Hanno Becker02f632e2017-11-10 09:16:05 +0000799 0 \
800 -s "dumping 'expected mac' (20 bytes)" \
801 -S "dumping 'expected mac' (10 bytes)"
802
803requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
804run_test "Truncated HMAC, DTLS: client disabled, server enabled" \
805 "$P_SRV dtls=1 debug_level=4 trunc_hmac=1" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +0000806 "$P_CLI dtls=1 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=0" \
Hanno Becker02f632e2017-11-10 09:16:05 +0000807 0 \
808 -s "dumping 'expected mac' (20 bytes)" \
809 -S "dumping 'expected mac' (10 bytes)"
810
811requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
812run_test "Truncated HMAC, DTLS: client enabled, server enabled" \
813 "$P_SRV dtls=1 debug_level=4 trunc_hmac=1" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +0000814 "$P_CLI dtls=1 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +0100815 0 \
816 -S "dumping 'expected mac' (20 bytes)" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +0100817 -s "dumping 'expected mac' (10 bytes)"
818
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +0100819# Tests for Encrypt-then-MAC extension
820
821run_test "Encrypt then MAC: default" \
Manuel Pégourié-Gonnard0098e7d2014-10-28 13:08:59 +0100822 "$P_SRV debug_level=3 \
823 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +0100824 "$P_CLI debug_level=3" \
825 0 \
826 -c "client hello, adding encrypt_then_mac extension" \
827 -s "found encrypt then mac extension" \
828 -s "server hello, adding encrypt then mac extension" \
829 -c "found encrypt_then_mac extension" \
830 -c "using encrypt then mac" \
831 -s "using encrypt then mac"
832
833run_test "Encrypt then MAC: client enabled, server disabled" \
Manuel Pégourié-Gonnard0098e7d2014-10-28 13:08:59 +0100834 "$P_SRV debug_level=3 etm=0 \
835 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +0100836 "$P_CLI debug_level=3 etm=1" \
837 0 \
838 -c "client hello, adding encrypt_then_mac extension" \
839 -s "found encrypt then mac extension" \
840 -S "server hello, adding encrypt then mac extension" \
841 -C "found encrypt_then_mac extension" \
842 -C "using encrypt then mac" \
843 -S "using encrypt then mac"
844
Manuel Pégourié-Gonnard78e745f2014-11-04 15:44:06 +0100845run_test "Encrypt then MAC: client enabled, aead cipher" \
846 "$P_SRV debug_level=3 etm=1 \
847 force_ciphersuite=TLS-RSA-WITH-AES-128-GCM-SHA256" \
848 "$P_CLI debug_level=3 etm=1" \
849 0 \
850 -c "client hello, adding encrypt_then_mac extension" \
851 -s "found encrypt then mac extension" \
852 -S "server hello, adding encrypt then mac extension" \
853 -C "found encrypt_then_mac extension" \
854 -C "using encrypt then mac" \
855 -S "using encrypt then mac"
856
857run_test "Encrypt then MAC: client enabled, stream cipher" \
858 "$P_SRV debug_level=3 etm=1 \
859 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +0100860 "$P_CLI debug_level=3 etm=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnard78e745f2014-11-04 15:44:06 +0100861 0 \
862 -c "client hello, adding encrypt_then_mac extension" \
863 -s "found encrypt then mac extension" \
864 -S "server hello, adding encrypt then mac extension" \
865 -C "found encrypt_then_mac extension" \
866 -C "using encrypt then mac" \
867 -S "using encrypt then mac"
868
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +0100869run_test "Encrypt then MAC: client disabled, server enabled" \
Manuel Pégourié-Gonnard0098e7d2014-10-28 13:08:59 +0100870 "$P_SRV debug_level=3 etm=1 \
871 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +0100872 "$P_CLI debug_level=3 etm=0" \
873 0 \
874 -C "client hello, adding encrypt_then_mac extension" \
875 -S "found encrypt then mac extension" \
876 -S "server hello, adding encrypt then mac extension" \
877 -C "found encrypt_then_mac extension" \
878 -C "using encrypt then mac" \
879 -S "using encrypt then mac"
880
Janos Follath542ee5d2016-03-07 15:57:05 +0000881requires_config_enabled MBEDTLS_SSL_PROTO_SSL3
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +0100882run_test "Encrypt then MAC: client SSLv3, server enabled" \
Manuel Pégourié-Gonnard51d81662015-01-14 17:20:46 +0100883 "$P_SRV debug_level=3 min_version=ssl3 \
Manuel Pégourié-Gonnard0098e7d2014-10-28 13:08:59 +0100884 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +0100885 "$P_CLI debug_level=3 force_version=ssl3" \
886 0 \
887 -C "client hello, adding encrypt_then_mac extension" \
888 -S "found encrypt then mac extension" \
889 -S "server hello, adding encrypt then mac extension" \
890 -C "found encrypt_then_mac extension" \
891 -C "using encrypt then mac" \
892 -S "using encrypt then mac"
893
Janos Follath542ee5d2016-03-07 15:57:05 +0000894requires_config_enabled MBEDTLS_SSL_PROTO_SSL3
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +0100895run_test "Encrypt then MAC: client enabled, server SSLv3" \
Manuel Pégourié-Gonnard0098e7d2014-10-28 13:08:59 +0100896 "$P_SRV debug_level=3 force_version=ssl3 \
897 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
Manuel Pégourié-Gonnard51d81662015-01-14 17:20:46 +0100898 "$P_CLI debug_level=3 min_version=ssl3" \
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +0100899 0 \
900 -c "client hello, adding encrypt_then_mac extension" \
Janos Follathb700c462016-05-06 13:48:23 +0100901 -S "found encrypt then mac extension" \
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +0100902 -S "server hello, adding encrypt then mac extension" \
903 -C "found encrypt_then_mac extension" \
904 -C "using encrypt then mac" \
905 -S "using encrypt then mac"
906
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +0200907# Tests for Extended Master Secret extension
908
909run_test "Extended Master Secret: default" \
910 "$P_SRV debug_level=3" \
911 "$P_CLI debug_level=3" \
912 0 \
913 -c "client hello, adding extended_master_secret extension" \
914 -s "found extended master secret extension" \
915 -s "server hello, adding extended master secret extension" \
916 -c "found extended_master_secret extension" \
917 -c "using extended master secret" \
918 -s "using extended master secret"
919
920run_test "Extended Master Secret: client enabled, server disabled" \
921 "$P_SRV debug_level=3 extended_ms=0" \
922 "$P_CLI debug_level=3 extended_ms=1" \
923 0 \
924 -c "client hello, adding extended_master_secret extension" \
925 -s "found extended master secret extension" \
926 -S "server hello, adding extended master secret extension" \
927 -C "found extended_master_secret extension" \
928 -C "using extended master secret" \
929 -S "using extended master secret"
930
931run_test "Extended Master Secret: client disabled, server enabled" \
932 "$P_SRV debug_level=3 extended_ms=1" \
933 "$P_CLI debug_level=3 extended_ms=0" \
934 0 \
935 -C "client hello, adding extended_master_secret extension" \
936 -S "found extended master secret extension" \
937 -S "server hello, adding extended master secret extension" \
938 -C "found extended_master_secret extension" \
939 -C "using extended master secret" \
940 -S "using extended master secret"
941
Janos Follath542ee5d2016-03-07 15:57:05 +0000942requires_config_enabled MBEDTLS_SSL_PROTO_SSL3
Manuel Pégourié-Gonnardb575b542014-10-24 15:12:31 +0200943run_test "Extended Master Secret: client SSLv3, server enabled" \
Manuel Pégourié-Gonnard51d81662015-01-14 17:20:46 +0100944 "$P_SRV debug_level=3 min_version=ssl3" \
Manuel Pégourié-Gonnardb575b542014-10-24 15:12:31 +0200945 "$P_CLI debug_level=3 force_version=ssl3" \
946 0 \
947 -C "client hello, adding extended_master_secret extension" \
948 -S "found extended master secret extension" \
949 -S "server hello, adding extended master secret extension" \
950 -C "found extended_master_secret extension" \
951 -C "using extended master secret" \
952 -S "using extended master secret"
953
Janos Follath542ee5d2016-03-07 15:57:05 +0000954requires_config_enabled MBEDTLS_SSL_PROTO_SSL3
Manuel Pégourié-Gonnardb575b542014-10-24 15:12:31 +0200955run_test "Extended Master Secret: client enabled, server SSLv3" \
956 "$P_SRV debug_level=3 force_version=ssl3" \
Manuel Pégourié-Gonnard51d81662015-01-14 17:20:46 +0100957 "$P_CLI debug_level=3 min_version=ssl3" \
Manuel Pégourié-Gonnardb575b542014-10-24 15:12:31 +0200958 0 \
959 -c "client hello, adding extended_master_secret extension" \
Janos Follathb700c462016-05-06 13:48:23 +0100960 -S "found extended master secret extension" \
Manuel Pégourié-Gonnardb575b542014-10-24 15:12:31 +0200961 -S "server hello, adding extended master secret extension" \
962 -C "found extended_master_secret extension" \
963 -C "using extended master secret" \
964 -S "using extended master secret"
965
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +0200966# Tests for FALLBACK_SCSV
967
968run_test "Fallback SCSV: default" \
Manuel Pégourié-Gonnard4268ae02015-08-04 12:44:10 +0200969 "$P_SRV debug_level=2" \
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +0200970 "$P_CLI debug_level=3 force_version=tls1_1" \
971 0 \
972 -C "adding FALLBACK_SCSV" \
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +0200973 -S "received FALLBACK_SCSV" \
974 -S "inapropriate fallback" \
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +0200975 -C "is a fatal alert message (msg 86)"
976
977run_test "Fallback SCSV: explicitly disabled" \
Manuel Pégourié-Gonnard4268ae02015-08-04 12:44:10 +0200978 "$P_SRV debug_level=2" \
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +0200979 "$P_CLI debug_level=3 force_version=tls1_1 fallback=0" \
980 0 \
981 -C "adding FALLBACK_SCSV" \
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +0200982 -S "received FALLBACK_SCSV" \
983 -S "inapropriate fallback" \
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +0200984 -C "is a fatal alert message (msg 86)"
985
986run_test "Fallback SCSV: enabled" \
Manuel Pégourié-Gonnard4268ae02015-08-04 12:44:10 +0200987 "$P_SRV debug_level=2" \
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +0200988 "$P_CLI debug_level=3 force_version=tls1_1 fallback=1" \
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +0200989 1 \
990 -c "adding FALLBACK_SCSV" \
991 -s "received FALLBACK_SCSV" \
992 -s "inapropriate fallback" \
993 -c "is a fatal alert message (msg 86)"
994
995run_test "Fallback SCSV: enabled, max version" \
Manuel Pégourié-Gonnard4268ae02015-08-04 12:44:10 +0200996 "$P_SRV debug_level=2" \
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +0200997 "$P_CLI debug_level=3 fallback=1" \
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +0200998 0 \
999 -c "adding FALLBACK_SCSV" \
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +02001000 -s "received FALLBACK_SCSV" \
1001 -S "inapropriate fallback" \
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +02001002 -C "is a fatal alert message (msg 86)"
1003
1004requires_openssl_with_fallback_scsv
1005run_test "Fallback SCSV: default, openssl server" \
1006 "$O_SRV" \
1007 "$P_CLI debug_level=3 force_version=tls1_1 fallback=0" \
1008 0 \
1009 -C "adding FALLBACK_SCSV" \
1010 -C "is a fatal alert message (msg 86)"
1011
1012requires_openssl_with_fallback_scsv
1013run_test "Fallback SCSV: enabled, openssl server" \
1014 "$O_SRV" \
1015 "$P_CLI debug_level=3 force_version=tls1_1 fallback=1" \
1016 1 \
1017 -c "adding FALLBACK_SCSV" \
1018 -c "is a fatal alert message (msg 86)"
1019
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +02001020requires_openssl_with_fallback_scsv
1021run_test "Fallback SCSV: disabled, openssl client" \
Manuel Pégourié-Gonnard4268ae02015-08-04 12:44:10 +02001022 "$P_SRV debug_level=2" \
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +02001023 "$O_CLI -tls1_1" \
1024 0 \
1025 -S "received FALLBACK_SCSV" \
1026 -S "inapropriate fallback"
1027
1028requires_openssl_with_fallback_scsv
1029run_test "Fallback SCSV: enabled, openssl client" \
Manuel Pégourié-Gonnard4268ae02015-08-04 12:44:10 +02001030 "$P_SRV debug_level=2" \
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +02001031 "$O_CLI -tls1_1 -fallback_scsv" \
1032 1 \
1033 -s "received FALLBACK_SCSV" \
1034 -s "inapropriate fallback"
1035
1036requires_openssl_with_fallback_scsv
1037run_test "Fallback SCSV: enabled, max version, openssl client" \
Manuel Pégourié-Gonnard4268ae02015-08-04 12:44:10 +02001038 "$P_SRV debug_level=2" \
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +02001039 "$O_CLI -fallback_scsv" \
1040 0 \
1041 -s "received FALLBACK_SCSV" \
1042 -S "inapropriate fallback"
1043
Andres Amaya Garciadc8b6df2018-07-10 20:08:04 +01001044# Test sending and receiving empty application data records
1045
1046run_test "Encrypt then MAC: empty application data record" \
1047 "$P_SRV auth_mode=none debug_level=4 etm=1" \
1048 "$P_CLI auth_mode=none etm=1 request_size=0 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA" \
1049 0 \
1050 -S "0000: 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f" \
1051 -s "dumping 'input payload after decrypt' (0 bytes)" \
1052 -c "0 bytes written in 1 fragments"
1053
1054run_test "Default, no Encrypt then MAC: empty application data record" \
1055 "$P_SRV auth_mode=none debug_level=4 etm=0" \
1056 "$P_CLI auth_mode=none etm=0 request_size=0" \
1057 0 \
1058 -s "dumping 'input payload after decrypt' (0 bytes)" \
1059 -c "0 bytes written in 1 fragments"
1060
1061run_test "Encrypt then MAC, DTLS: empty application data record" \
1062 "$P_SRV auth_mode=none debug_level=4 etm=1 dtls=1" \
1063 "$P_CLI auth_mode=none etm=1 request_size=0 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA dtls=1" \
1064 0 \
1065 -S "0000: 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f" \
1066 -s "dumping 'input payload after decrypt' (0 bytes)" \
1067 -c "0 bytes written in 1 fragments"
1068
1069run_test "Default, no Encrypt then MAC, DTLS: empty application data record" \
1070 "$P_SRV auth_mode=none debug_level=4 etm=0 dtls=1" \
1071 "$P_CLI auth_mode=none etm=0 request_size=0 dtls=1" \
1072 0 \
1073 -s "dumping 'input payload after decrypt' (0 bytes)" \
1074 -c "0 bytes written in 1 fragments"
1075
Gilles Peskine39e29812017-05-16 17:53:03 +02001076## ClientHello generated with
1077## "openssl s_client -CAfile tests/data_files/test-ca.crt -tls1_1 -connect localhost:4433 -cipher ..."
1078## then manually twiddling the ciphersuite list.
1079## The ClientHello content is spelled out below as a hex string as
1080## "prefix ciphersuite1 ciphersuite2 ciphersuite3 ciphersuite4 suffix".
1081## The expected response is an inappropriate_fallback alert.
1082requires_openssl_with_fallback_scsv
1083run_test "Fallback SCSV: beginning of list" \
1084 "$P_SRV debug_level=2" \
1085 "$TCP_CLIENT localhost $SRV_PORT '160301003e0100003a03022aafb94308dc22ca1086c65acc00e414384d76b61ecab37df1633b1ae1034dbe000008 5600 0031 0032 0033 0100000900230000000f000101' '15030200020256'" \
1086 0 \
1087 -s "received FALLBACK_SCSV" \
1088 -s "inapropriate fallback"
1089
1090requires_openssl_with_fallback_scsv
1091run_test "Fallback SCSV: end of list" \
1092 "$P_SRV debug_level=2" \
1093 "$TCP_CLIENT localhost $SRV_PORT '160301003e0100003a03022aafb94308dc22ca1086c65acc00e414384d76b61ecab37df1633b1ae1034dbe000008 0031 0032 0033 5600 0100000900230000000f000101' '15030200020256'" \
1094 0 \
1095 -s "received FALLBACK_SCSV" \
1096 -s "inapropriate fallback"
1097
1098## Here the expected response is a valid ServerHello prefix, up to the random.
1099requires_openssl_with_fallback_scsv
1100run_test "Fallback SCSV: not in list" \
1101 "$P_SRV debug_level=2" \
1102 "$TCP_CLIENT localhost $SRV_PORT '160301003e0100003a03022aafb94308dc22ca1086c65acc00e414384d76b61ecab37df1633b1ae1034dbe000008 0056 0031 0032 0033 0100000900230000000f000101' '16030200300200002c0302'" \
1103 0 \
1104 -S "received FALLBACK_SCSV" \
1105 -S "inapropriate fallback"
1106
Manuel Pégourié-Gonnard3ff78232015-01-08 11:15:09 +01001107# Tests for CBC 1/n-1 record splitting
1108
1109run_test "CBC Record splitting: TLS 1.2, no splitting" \
1110 "$P_SRV" \
1111 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA \
1112 request_size=123 force_version=tls1_2" \
1113 0 \
1114 -s "Read from client: 123 bytes read" \
1115 -S "Read from client: 1 bytes read" \
1116 -S "122 bytes read"
1117
1118run_test "CBC Record splitting: TLS 1.1, no splitting" \
1119 "$P_SRV" \
1120 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA \
1121 request_size=123 force_version=tls1_1" \
1122 0 \
1123 -s "Read from client: 123 bytes read" \
1124 -S "Read from client: 1 bytes read" \
1125 -S "122 bytes read"
1126
1127run_test "CBC Record splitting: TLS 1.0, splitting" \
1128 "$P_SRV" \
1129 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA \
1130 request_size=123 force_version=tls1" \
1131 0 \
1132 -S "Read from client: 123 bytes read" \
1133 -s "Read from client: 1 bytes read" \
1134 -s "122 bytes read"
1135
Janos Follath542ee5d2016-03-07 15:57:05 +00001136requires_config_enabled MBEDTLS_SSL_PROTO_SSL3
Manuel Pégourié-Gonnard3ff78232015-01-08 11:15:09 +01001137run_test "CBC Record splitting: SSLv3, splitting" \
Manuel Pégourié-Gonnard51d81662015-01-14 17:20:46 +01001138 "$P_SRV min_version=ssl3" \
Manuel Pégourié-Gonnard3ff78232015-01-08 11:15:09 +01001139 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA \
1140 request_size=123 force_version=ssl3" \
1141 0 \
1142 -S "Read from client: 123 bytes read" \
1143 -s "Read from client: 1 bytes read" \
1144 -s "122 bytes read"
1145
1146run_test "CBC Record splitting: TLS 1.0 RC4, no splitting" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01001147 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnard3ff78232015-01-08 11:15:09 +01001148 "$P_CLI force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA \
1149 request_size=123 force_version=tls1" \
1150 0 \
1151 -s "Read from client: 123 bytes read" \
1152 -S "Read from client: 1 bytes read" \
1153 -S "122 bytes read"
1154
1155run_test "CBC Record splitting: TLS 1.0, splitting disabled" \
1156 "$P_SRV" \
1157 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA \
1158 request_size=123 force_version=tls1 recsplit=0" \
1159 0 \
1160 -s "Read from client: 123 bytes read" \
1161 -S "Read from client: 1 bytes read" \
1162 -S "122 bytes read"
1163
Manuel Pégourié-Gonnarda852cf42015-01-13 20:56:15 +01001164run_test "CBC Record splitting: TLS 1.0, splitting, nbio" \
1165 "$P_SRV nbio=2" \
1166 "$P_CLI nbio=2 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA \
1167 request_size=123 force_version=tls1" \
1168 0 \
1169 -S "Read from client: 123 bytes read" \
1170 -s "Read from client: 1 bytes read" \
1171 -s "122 bytes read"
1172
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01001173# Tests for Session Tickets
1174
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001175run_test "Session resume using tickets: basic" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001176 "$P_SRV debug_level=3 tickets=1" \
1177 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01001178 0 \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01001179 -c "client hello, adding session ticket extension" \
1180 -s "found session ticket extension" \
1181 -s "server hello, adding session ticket extension" \
1182 -c "found session_ticket extension" \
1183 -c "parse new session ticket" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01001184 -S "session successfully restored from cache" \
1185 -s "session successfully restored from ticket" \
1186 -s "a session has been resumed" \
1187 -c "a session has been resumed"
1188
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001189run_test "Session resume using tickets: cache disabled" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001190 "$P_SRV debug_level=3 tickets=1 cache_max=0" \
1191 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
Manuel Pégourié-Gonnarddbe1ee12014-02-21 09:18:13 +01001192 0 \
1193 -c "client hello, adding session ticket extension" \
1194 -s "found session ticket extension" \
1195 -s "server hello, adding session ticket extension" \
1196 -c "found session_ticket extension" \
1197 -c "parse new session ticket" \
1198 -S "session successfully restored from cache" \
1199 -s "session successfully restored from ticket" \
1200 -s "a session has been resumed" \
1201 -c "a session has been resumed"
1202
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001203run_test "Session resume using tickets: timeout" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001204 "$P_SRV debug_level=3 tickets=1 cache_max=0 ticket_timeout=1" \
1205 "$P_CLI debug_level=3 tickets=1 reconnect=1 reco_delay=2" \
Manuel Pégourié-Gonnarddbe1ee12014-02-21 09:18:13 +01001206 0 \
1207 -c "client hello, adding session ticket extension" \
1208 -s "found session ticket extension" \
1209 -s "server hello, adding session ticket extension" \
1210 -c "found session_ticket extension" \
1211 -c "parse new session ticket" \
1212 -S "session successfully restored from cache" \
1213 -S "session successfully restored from ticket" \
1214 -S "a session has been resumed" \
1215 -C "a session has been resumed"
1216
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001217run_test "Session resume using tickets: openssl server" \
Manuel Pégourié-Gonnardf7a26902014-02-27 12:25:54 +01001218 "$O_SRV" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001219 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +01001220 0 \
1221 -c "client hello, adding session ticket extension" \
1222 -c "found session_ticket extension" \
1223 -c "parse new session ticket" \
1224 -c "a session has been resumed"
1225
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001226run_test "Session resume using tickets: openssl client" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001227 "$P_SRV debug_level=3 tickets=1" \
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02001228 "( $O_CLI -sess_out $SESSION; \
1229 $O_CLI -sess_in $SESSION; \
1230 rm -f $SESSION )" \
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +01001231 0 \
1232 -s "found session ticket extension" \
1233 -s "server hello, adding session ticket extension" \
1234 -S "session successfully restored from cache" \
1235 -s "session successfully restored from ticket" \
1236 -s "a session has been resumed"
1237
Hanno Becker16fe2fd2018-08-21 13:55:22 +01001238# Tests for Session Tickets with DTLS
1239
1240run_test "Session resume using tickets, DTLS: basic" \
1241 "$P_SRV debug_level=3 dtls=1 tickets=1" \
1242 "$P_CLI debug_level=3 dtls=1 tickets=1 reconnect=1" \
1243 0 \
1244 -c "client hello, adding session ticket extension" \
1245 -s "found session ticket extension" \
1246 -s "server hello, adding session ticket extension" \
1247 -c "found session_ticket extension" \
1248 -c "parse new session ticket" \
1249 -S "session successfully restored from cache" \
1250 -s "session successfully restored from ticket" \
1251 -s "a session has been resumed" \
1252 -c "a session has been resumed"
1253
1254run_test "Session resume using tickets, DTLS: cache disabled" \
1255 "$P_SRV debug_level=3 dtls=1 tickets=1 cache_max=0" \
1256 "$P_CLI debug_level=3 dtls=1 tickets=1 reconnect=1" \
1257 0 \
1258 -c "client hello, adding session ticket extension" \
1259 -s "found session ticket extension" \
1260 -s "server hello, adding session ticket extension" \
1261 -c "found session_ticket extension" \
1262 -c "parse new session ticket" \
1263 -S "session successfully restored from cache" \
1264 -s "session successfully restored from ticket" \
1265 -s "a session has been resumed" \
1266 -c "a session has been resumed"
1267
1268run_test "Session resume using tickets, DTLS: timeout" \
1269 "$P_SRV debug_level=3 dtls=1 tickets=1 cache_max=0 ticket_timeout=1" \
1270 "$P_CLI debug_level=3 dtls=1 tickets=1 reconnect=1 reco_delay=2" \
1271 0 \
1272 -c "client hello, adding session ticket extension" \
1273 -s "found session ticket extension" \
1274 -s "server hello, adding session ticket extension" \
1275 -c "found session_ticket extension" \
1276 -c "parse new session ticket" \
1277 -S "session successfully restored from cache" \
1278 -S "session successfully restored from ticket" \
1279 -S "a session has been resumed" \
1280 -C "a session has been resumed"
1281
1282run_test "Session resume using tickets, DTLS: openssl server" \
1283 "$O_SRV -dtls1" \
1284 "$P_CLI dtls=1 debug_level=3 tickets=1 reconnect=1" \
1285 0 \
1286 -c "client hello, adding session ticket extension" \
1287 -c "found session_ticket extension" \
1288 -c "parse new session ticket" \
1289 -c "a session has been resumed"
1290
1291run_test "Session resume using tickets, DTLS: openssl client" \
1292 "$P_SRV dtls=1 debug_level=3 tickets=1" \
1293 "( $O_CLI -dtls1 -sess_out $SESSION; \
1294 $O_CLI -dtls1 -sess_in $SESSION; \
1295 rm -f $SESSION )" \
1296 0 \
1297 -s "found session ticket extension" \
1298 -s "server hello, adding session ticket extension" \
1299 -S "session successfully restored from cache" \
1300 -s "session successfully restored from ticket" \
1301 -s "a session has been resumed"
1302
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01001303# Tests for Session Resume based on session-ID and cache
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01001304
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001305run_test "Session resume using cache: tickets enabled on client" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001306 "$P_SRV debug_level=3 tickets=0" \
1307 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01001308 0 \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01001309 -c "client hello, adding session ticket extension" \
1310 -s "found session ticket extension" \
1311 -S "server hello, adding session ticket extension" \
1312 -C "found session_ticket extension" \
1313 -C "parse new session ticket" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01001314 -s "session successfully restored from cache" \
1315 -S "session successfully restored from ticket" \
1316 -s "a session has been resumed" \
1317 -c "a session has been resumed"
1318
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001319run_test "Session resume using cache: tickets enabled on server" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001320 "$P_SRV debug_level=3 tickets=1" \
1321 "$P_CLI debug_level=3 tickets=0 reconnect=1" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01001322 0 \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01001323 -C "client hello, adding session ticket extension" \
1324 -S "found session ticket extension" \
1325 -S "server hello, adding session ticket extension" \
1326 -C "found session_ticket extension" \
1327 -C "parse new session ticket" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01001328 -s "session successfully restored from cache" \
1329 -S "session successfully restored from ticket" \
1330 -s "a session has been resumed" \
1331 -c "a session has been resumed"
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01001332
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001333run_test "Session resume using cache: cache_max=0" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001334 "$P_SRV debug_level=3 tickets=0 cache_max=0" \
1335 "$P_CLI debug_level=3 tickets=0 reconnect=1" \
Manuel Pégourié-Gonnard4c883452014-02-20 21:32:41 +01001336 0 \
1337 -S "session successfully restored from cache" \
1338 -S "session successfully restored from ticket" \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01001339 -S "a session has been resumed" \
1340 -C "a session has been resumed"
Manuel Pégourié-Gonnard4c883452014-02-20 21:32:41 +01001341
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001342run_test "Session resume using cache: cache_max=1" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001343 "$P_SRV debug_level=3 tickets=0 cache_max=1" \
1344 "$P_CLI debug_level=3 tickets=0 reconnect=1" \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01001345 0 \
1346 -s "session successfully restored from cache" \
1347 -S "session successfully restored from ticket" \
1348 -s "a session has been resumed" \
1349 -c "a session has been resumed"
1350
Manuel Pégourié-Gonnard6df31962015-05-04 10:55:47 +02001351run_test "Session resume using cache: timeout > delay" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001352 "$P_SRV debug_level=3 tickets=0" \
1353 "$P_CLI debug_level=3 tickets=0 reconnect=1 reco_delay=0" \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01001354 0 \
1355 -s "session successfully restored from cache" \
1356 -S "session successfully restored from ticket" \
1357 -s "a session has been resumed" \
1358 -c "a session has been resumed"
1359
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001360run_test "Session resume using cache: timeout < delay" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001361 "$P_SRV debug_level=3 tickets=0 cache_timeout=1" \
1362 "$P_CLI debug_level=3 tickets=0 reconnect=1 reco_delay=2" \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01001363 0 \
1364 -S "session successfully restored from cache" \
1365 -S "session successfully restored from ticket" \
1366 -S "a session has been resumed" \
1367 -C "a session has been resumed"
1368
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001369run_test "Session resume using cache: no timeout" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001370 "$P_SRV debug_level=3 tickets=0 cache_timeout=0" \
1371 "$P_CLI debug_level=3 tickets=0 reconnect=1 reco_delay=2" \
Manuel Pégourié-Gonnard4c883452014-02-20 21:32:41 +01001372 0 \
1373 -s "session successfully restored from cache" \
1374 -S "session successfully restored from ticket" \
1375 -s "a session has been resumed" \
1376 -c "a session has been resumed"
1377
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001378run_test "Session resume using cache: openssl client" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001379 "$P_SRV debug_level=3 tickets=0" \
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02001380 "( $O_CLI -sess_out $SESSION; \
1381 $O_CLI -sess_in $SESSION; \
1382 rm -f $SESSION )" \
Manuel Pégourié-Gonnarddb735f62014-02-25 17:57:59 +01001383 0 \
1384 -s "found session ticket extension" \
1385 -S "server hello, adding session ticket extension" \
1386 -s "session successfully restored from cache" \
1387 -S "session successfully restored from ticket" \
1388 -s "a session has been resumed"
1389
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001390run_test "Session resume using cache: openssl server" \
Manuel Pégourié-Gonnardf7a26902014-02-27 12:25:54 +01001391 "$O_SRV" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001392 "$P_CLI debug_level=3 tickets=0 reconnect=1" \
Manuel Pégourié-Gonnarddb735f62014-02-25 17:57:59 +01001393 0 \
1394 -C "found session_ticket extension" \
1395 -C "parse new session ticket" \
1396 -c "a session has been resumed"
1397
Hanno Becker16fe2fd2018-08-21 13:55:22 +01001398# Tests for Session Resume based on session-ID and cache, DTLS
1399
1400run_test "Session resume using cache, DTLS: tickets enabled on client" \
1401 "$P_SRV dtls=1 debug_level=3 tickets=0" \
1402 "$P_CLI dtls=1 debug_level=3 tickets=1 reconnect=1" \
1403 0 \
1404 -c "client hello, adding session ticket extension" \
1405 -s "found session ticket extension" \
1406 -S "server hello, adding session ticket extension" \
1407 -C "found session_ticket extension" \
1408 -C "parse new session ticket" \
1409 -s "session successfully restored from cache" \
1410 -S "session successfully restored from ticket" \
1411 -s "a session has been resumed" \
1412 -c "a session has been resumed"
1413
1414run_test "Session resume using cache, DTLS: tickets enabled on server" \
1415 "$P_SRV dtls=1 debug_level=3 tickets=1" \
1416 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1" \
1417 0 \
1418 -C "client hello, adding session ticket extension" \
1419 -S "found session ticket extension" \
1420 -S "server hello, adding session ticket extension" \
1421 -C "found session_ticket extension" \
1422 -C "parse new session ticket" \
1423 -s "session successfully restored from cache" \
1424 -S "session successfully restored from ticket" \
1425 -s "a session has been resumed" \
1426 -c "a session has been resumed"
1427
1428run_test "Session resume using cache, DTLS: cache_max=0" \
1429 "$P_SRV dtls=1 debug_level=3 tickets=0 cache_max=0" \
1430 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1" \
1431 0 \
1432 -S "session successfully restored from cache" \
1433 -S "session successfully restored from ticket" \
1434 -S "a session has been resumed" \
1435 -C "a session has been resumed"
1436
1437run_test "Session resume using cache, DTLS: cache_max=1" \
1438 "$P_SRV dtls=1 debug_level=3 tickets=0 cache_max=1" \
1439 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1" \
1440 0 \
1441 -s "session successfully restored from cache" \
1442 -S "session successfully restored from ticket" \
1443 -s "a session has been resumed" \
1444 -c "a session has been resumed"
1445
1446run_test "Session resume using cache, DTLS: timeout > delay" \
1447 "$P_SRV dtls=1 debug_level=3 tickets=0" \
1448 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 reco_delay=0" \
1449 0 \
1450 -s "session successfully restored from cache" \
1451 -S "session successfully restored from ticket" \
1452 -s "a session has been resumed" \
1453 -c "a session has been resumed"
1454
1455run_test "Session resume using cache, DTLS: timeout < delay" \
1456 "$P_SRV dtls=1 debug_level=3 tickets=0 cache_timeout=1" \
1457 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 reco_delay=2" \
1458 0 \
1459 -S "session successfully restored from cache" \
1460 -S "session successfully restored from ticket" \
1461 -S "a session has been resumed" \
1462 -C "a session has been resumed"
1463
1464run_test "Session resume using cache, DTLS: no timeout" \
1465 "$P_SRV dtls=1 debug_level=3 tickets=0 cache_timeout=0" \
1466 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 reco_delay=2" \
1467 0 \
1468 -s "session successfully restored from cache" \
1469 -S "session successfully restored from ticket" \
1470 -s "a session has been resumed" \
1471 -c "a session has been resumed"
1472
1473run_test "Session resume using cache, DTLS: openssl client" \
1474 "$P_SRV dtls=1 debug_level=3 tickets=0" \
1475 "( $O_CLI -dtls1 -sess_out $SESSION; \
1476 $O_CLI -dtls1 -sess_in $SESSION; \
1477 rm -f $SESSION )" \
1478 0 \
1479 -s "found session ticket extension" \
1480 -S "server hello, adding session ticket extension" \
1481 -s "session successfully restored from cache" \
1482 -S "session successfully restored from ticket" \
1483 -s "a session has been resumed"
1484
1485run_test "Session resume using cache, DTLS: openssl server" \
1486 "$O_SRV -dtls1" \
1487 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1" \
1488 0 \
1489 -C "found session_ticket extension" \
1490 -C "parse new session ticket" \
1491 -c "a session has been resumed"
1492
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01001493# Tests for Max Fragment Length extension
1494
Hanno Becker64691dc2017-09-22 16:58:50 +01001495MAX_CONTENT_LEN_EXPECT='16384'
1496MAX_CONTENT_LEN_CONFIG=$( ../scripts/config.pl get MBEDTLS_SSL_MAX_CONTENT_LEN)
1497
1498if [ -n "$MAX_CONTENT_LEN_CONFIG" ] && [ "$MAX_CONTENT_LEN_CONFIG" -ne "$MAX_CONTENT_LEN_EXPECT" ]; then
1499 printf "The ${CONFIG_H} file contains a value for the configuration of\n"
1500 printf "MBEDTLS_SSL_MAX_CONTENT_LEN that is different from the script’s\n"
1501 printf "test value of ${MAX_CONTENT_LEN_EXPECT}. \n"
1502 printf "\n"
1503 printf "The tests assume this value and if it changes, the tests in this\n"
1504 printf "script should also be adjusted.\n"
1505 printf "\n"
1506
1507 exit 1
1508fi
1509
Hanno Becker05607782017-09-18 15:00:34 +01001510requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Hanno Becker2fabe5f2017-09-18 15:01:50 +01001511run_test "Max fragment length: enabled, default" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001512 "$P_SRV debug_level=3" \
1513 "$P_CLI debug_level=3" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01001514 0 \
Manuel Pégourié-Gonnarda2cda6b2015-08-31 18:30:52 +02001515 -c "Maximum fragment length is 16384" \
1516 -s "Maximum fragment length is 16384" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01001517 -C "client hello, adding max_fragment_length extension" \
1518 -S "found max fragment length extension" \
1519 -S "server hello, max_fragment_length extension" \
1520 -C "found max_fragment_length extension"
1521
Hanno Becker05607782017-09-18 15:00:34 +01001522requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Hanno Becker2fabe5f2017-09-18 15:01:50 +01001523run_test "Max fragment length: enabled, default, larger message" \
1524 "$P_SRV debug_level=3" \
Hanno Becker6ed76f72017-10-18 14:42:01 +01001525 "$P_CLI debug_level=3 request_size=16385" \
Hanno Becker2fabe5f2017-09-18 15:01:50 +01001526 0 \
1527 -c "Maximum fragment length is 16384" \
1528 -s "Maximum fragment length is 16384" \
1529 -C "client hello, adding max_fragment_length extension" \
1530 -S "found max fragment length extension" \
1531 -S "server hello, max_fragment_length extension" \
1532 -C "found max_fragment_length extension" \
Hanno Becker6ed76f72017-10-18 14:42:01 +01001533 -c "16385 bytes written in 2 fragments" \
Hanno Becker2fabe5f2017-09-18 15:01:50 +01001534 -s "16384 bytes read" \
Hanno Becker6ed76f72017-10-18 14:42:01 +01001535 -s "1 bytes read"
Hanno Becker2fabe5f2017-09-18 15:01:50 +01001536
1537requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
1538run_test "Max fragment length, DTLS: enabled, default, larger message" \
1539 "$P_SRV debug_level=3 dtls=1" \
Hanno Becker6ed76f72017-10-18 14:42:01 +01001540 "$P_CLI debug_level=3 dtls=1 request_size=16385" \
Hanno Becker2fabe5f2017-09-18 15:01:50 +01001541 1 \
1542 -c "Maximum fragment length is 16384" \
1543 -s "Maximum fragment length is 16384" \
1544 -C "client hello, adding max_fragment_length extension" \
1545 -S "found max fragment length extension" \
1546 -S "server hello, max_fragment_length extension" \
1547 -C "found max_fragment_length extension" \
1548 -c "fragment larger than.*maximum "
1549
1550requires_config_disabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
1551run_test "Max fragment length: disabled, larger message" \
1552 "$P_SRV debug_level=3" \
Hanno Becker6ed76f72017-10-18 14:42:01 +01001553 "$P_CLI debug_level=3 request_size=16385" \
Hanno Becker2fabe5f2017-09-18 15:01:50 +01001554 0 \
1555 -C "Maximum fragment length is 16384" \
1556 -S "Maximum fragment length is 16384" \
Hanno Becker6ed76f72017-10-18 14:42:01 +01001557 -c "16385 bytes written in 2 fragments" \
Hanno Becker2fabe5f2017-09-18 15:01:50 +01001558 -s "16384 bytes read" \
Hanno Becker6ed76f72017-10-18 14:42:01 +01001559 -s "1 bytes read"
Hanno Becker2fabe5f2017-09-18 15:01:50 +01001560
1561requires_config_disabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
1562run_test "Max fragment length DTLS: disabled, larger message" \
1563 "$P_SRV debug_level=3 dtls=1" \
Hanno Becker6ed76f72017-10-18 14:42:01 +01001564 "$P_CLI debug_level=3 dtls=1 request_size=16385" \
Hanno Becker2fabe5f2017-09-18 15:01:50 +01001565 1 \
1566 -C "Maximum fragment length is 16384" \
1567 -S "Maximum fragment length is 16384" \
1568 -c "fragment larger than.*maximum "
1569
1570requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001571run_test "Max fragment length: used by client" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001572 "$P_SRV debug_level=3" \
1573 "$P_CLI debug_level=3 max_frag_len=4096" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01001574 0 \
Manuel Pégourié-Gonnarda2cda6b2015-08-31 18:30:52 +02001575 -c "Maximum fragment length is 4096" \
1576 -s "Maximum fragment length is 4096" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01001577 -c "client hello, adding max_fragment_length extension" \
1578 -s "found max fragment length extension" \
1579 -s "server hello, max_fragment_length extension" \
1580 -c "found max_fragment_length extension"
1581
Hanno Becker05607782017-09-18 15:00:34 +01001582requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001583run_test "Max fragment length: used by server" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001584 "$P_SRV debug_level=3 max_frag_len=4096" \
1585 "$P_CLI debug_level=3" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01001586 0 \
Manuel Pégourié-Gonnarda2cda6b2015-08-31 18:30:52 +02001587 -c "Maximum fragment length is 16384" \
1588 -s "Maximum fragment length is 4096" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01001589 -C "client hello, adding max_fragment_length extension" \
1590 -S "found max fragment length extension" \
1591 -S "server hello, max_fragment_length extension" \
1592 -C "found max_fragment_length extension"
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01001593
Hanno Becker05607782017-09-18 15:00:34 +01001594requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001595requires_gnutls
1596run_test "Max fragment length: gnutls server" \
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +02001597 "$G_SRV" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001598 "$P_CLI debug_level=3 max_frag_len=4096" \
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +02001599 0 \
Manuel Pégourié-Gonnarda2cda6b2015-08-31 18:30:52 +02001600 -c "Maximum fragment length is 4096" \
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +02001601 -c "client hello, adding max_fragment_length extension" \
1602 -c "found max_fragment_length extension"
1603
Hanno Becker05607782017-09-18 15:00:34 +01001604requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02001605run_test "Max fragment length: client, message just fits" \
1606 "$P_SRV debug_level=3" \
1607 "$P_CLI debug_level=3 max_frag_len=2048 request_size=2048" \
1608 0 \
Manuel Pégourié-Gonnarda2cda6b2015-08-31 18:30:52 +02001609 -c "Maximum fragment length is 2048" \
1610 -s "Maximum fragment length is 2048" \
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02001611 -c "client hello, adding max_fragment_length extension" \
1612 -s "found max fragment length extension" \
1613 -s "server hello, max_fragment_length extension" \
1614 -c "found max_fragment_length extension" \
1615 -c "2048 bytes written in 1 fragments" \
1616 -s "2048 bytes read"
1617
Hanno Becker05607782017-09-18 15:00:34 +01001618requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02001619run_test "Max fragment length: client, larger message" \
1620 "$P_SRV debug_level=3" \
1621 "$P_CLI debug_level=3 max_frag_len=2048 request_size=2345" \
1622 0 \
Manuel Pégourié-Gonnarda2cda6b2015-08-31 18:30:52 +02001623 -c "Maximum fragment length is 2048" \
1624 -s "Maximum fragment length is 2048" \
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02001625 -c "client hello, adding max_fragment_length extension" \
1626 -s "found max fragment length extension" \
1627 -s "server hello, max_fragment_length extension" \
1628 -c "found max_fragment_length extension" \
1629 -c "2345 bytes written in 2 fragments" \
1630 -s "2048 bytes read" \
1631 -s "297 bytes read"
1632
Hanno Becker05607782017-09-18 15:00:34 +01001633requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Manuel Pégourié-Gonnard23eb74d2015-01-21 14:37:13 +00001634run_test "Max fragment length: DTLS client, larger message" \
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02001635 "$P_SRV debug_level=3 dtls=1" \
1636 "$P_CLI debug_level=3 dtls=1 max_frag_len=2048 request_size=2345" \
1637 1 \
Manuel Pégourié-Gonnarda2cda6b2015-08-31 18:30:52 +02001638 -c "Maximum fragment length is 2048" \
1639 -s "Maximum fragment length is 2048" \
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02001640 -c "client hello, adding max_fragment_length extension" \
1641 -s "found max fragment length extension" \
1642 -s "server hello, max_fragment_length extension" \
1643 -c "found max_fragment_length extension" \
1644 -c "fragment larger than.*maximum"
1645
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01001646# Tests for renegotiation
1647
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001648run_test "Renegotiation: none, for reference" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01001649 "$P_SRV debug_level=3 exchanges=2 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001650 "$P_CLI debug_level=3 exchanges=2" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01001651 0 \
1652 -C "client hello, adding renegotiation extension" \
1653 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
1654 -S "found renegotiation extension" \
1655 -s "server hello, secure renegotiation extension" \
1656 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01001657 -C "=> renegotiate" \
1658 -S "=> renegotiate" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01001659 -S "write hello request"
1660
Hanno Becker78891132017-10-24 11:54:55 +01001661requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001662run_test "Renegotiation: client-initiated" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01001663 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001664 "$P_CLI debug_level=3 exchanges=2 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01001665 0 \
1666 -c "client hello, adding renegotiation extension" \
1667 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
1668 -s "found renegotiation extension" \
1669 -s "server hello, secure renegotiation extension" \
1670 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01001671 -c "=> renegotiate" \
1672 -s "=> renegotiate" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01001673 -S "write hello request"
1674
Hanno Becker78891132017-10-24 11:54:55 +01001675requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001676run_test "Renegotiation: server-initiated" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01001677 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional renegotiate=1" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001678 "$P_CLI debug_level=3 exchanges=2 renegotiation=1" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01001679 0 \
1680 -c "client hello, adding renegotiation extension" \
1681 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
1682 -s "found renegotiation extension" \
1683 -s "server hello, secure renegotiation extension" \
1684 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01001685 -c "=> renegotiate" \
1686 -s "=> renegotiate" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01001687 -s "write hello request"
1688
Janos Follath5f1dd802017-10-05 12:29:42 +01001689# Checks that no Signature Algorithm with SHA-1 gets negotiated. Negotiating SHA-1 would mean that
1690# the server did not parse the Signature Algorithm extension. This test is valid only if an MD
1691# algorithm stronger than SHA-1 is enabled in config.h
Hanno Becker78891132017-10-24 11:54:55 +01001692requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Janos Follath5f1dd802017-10-05 12:29:42 +01001693run_test "Renegotiation: Signature Algorithms parsing, client-initiated" \
1694 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional" \
1695 "$P_CLI debug_level=3 exchanges=2 renegotiation=1 renegotiate=1" \
1696 0 \
1697 -c "client hello, adding renegotiation extension" \
1698 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
1699 -s "found renegotiation extension" \
1700 -s "server hello, secure renegotiation extension" \
1701 -c "found renegotiation extension" \
1702 -c "=> renegotiate" \
1703 -s "=> renegotiate" \
1704 -S "write hello request" \
1705 -S "client hello v3, signature_algorithm ext: 2" # Is SHA-1 negotiated?
1706
1707# Checks that no Signature Algorithm with SHA-1 gets negotiated. Negotiating SHA-1 would mean that
1708# the server did not parse the Signature Algorithm extension. This test is valid only if an MD
1709# algorithm stronger than SHA-1 is enabled in config.h
Hanno Becker78891132017-10-24 11:54:55 +01001710requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Janos Follath5f1dd802017-10-05 12:29:42 +01001711run_test "Renegotiation: Signature Algorithms parsing, server-initiated" \
1712 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional renegotiate=1" \
1713 "$P_CLI debug_level=3 exchanges=2 renegotiation=1" \
1714 0 \
1715 -c "client hello, adding renegotiation extension" \
1716 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
1717 -s "found renegotiation extension" \
1718 -s "server hello, secure renegotiation extension" \
1719 -c "found renegotiation extension" \
1720 -c "=> renegotiate" \
1721 -s "=> renegotiate" \
1722 -s "write hello request" \
1723 -S "client hello v3, signature_algorithm ext: 2" # Is SHA-1 negotiated?
1724
Hanno Becker78891132017-10-24 11:54:55 +01001725requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001726run_test "Renegotiation: double" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01001727 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional renegotiate=1" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001728 "$P_CLI debug_level=3 exchanges=2 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01001729 0 \
1730 -c "client hello, adding renegotiation extension" \
1731 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
1732 -s "found renegotiation extension" \
1733 -s "server hello, secure renegotiation extension" \
1734 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01001735 -c "=> renegotiate" \
1736 -s "=> renegotiate" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01001737 -s "write hello request"
1738
Hanno Becker78891132017-10-24 11:54:55 +01001739requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001740run_test "Renegotiation: client-initiated, server-rejected" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01001741 "$P_SRV debug_level=3 exchanges=2 renegotiation=0 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001742 "$P_CLI debug_level=3 exchanges=2 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01001743 1 \
1744 -c "client hello, adding renegotiation extension" \
1745 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
1746 -S "found renegotiation extension" \
1747 -s "server hello, secure renegotiation extension" \
1748 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01001749 -c "=> renegotiate" \
1750 -S "=> renegotiate" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02001751 -S "write hello request" \
Manuel Pégourié-Gonnard65919622014-08-19 12:50:30 +02001752 -c "SSL - Unexpected message at ServerHello in renegotiation" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02001753 -c "failed"
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01001754
Hanno Becker78891132017-10-24 11:54:55 +01001755requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001756run_test "Renegotiation: server-initiated, client-rejected, default" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01001757 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001758 "$P_CLI debug_level=3 exchanges=2 renegotiation=0" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01001759 0 \
1760 -C "client hello, adding renegotiation extension" \
1761 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
1762 -S "found renegotiation extension" \
1763 -s "server hello, secure renegotiation extension" \
1764 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01001765 -C "=> renegotiate" \
1766 -S "=> renegotiate" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01001767 -s "write hello request" \
Manuel Pégourié-Gonnarda9964db2014-07-03 19:29:16 +02001768 -S "SSL - An unexpected message was received from our peer" \
1769 -S "failed"
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +01001770
Hanno Becker78891132017-10-24 11:54:55 +01001771requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001772run_test "Renegotiation: server-initiated, client-rejected, not enforced" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001773 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01001774 renego_delay=-1 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001775 "$P_CLI debug_level=3 exchanges=2 renegotiation=0" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02001776 0 \
1777 -C "client hello, adding renegotiation extension" \
1778 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
1779 -S "found renegotiation extension" \
1780 -s "server hello, secure renegotiation extension" \
1781 -c "found renegotiation extension" \
1782 -C "=> renegotiate" \
1783 -S "=> renegotiate" \
1784 -s "write hello request" \
1785 -S "SSL - An unexpected message was received from our peer" \
1786 -S "failed"
1787
Manuel Pégourié-Gonnarda8c0a0d2014-08-15 12:07:38 +02001788# delay 2 for 1 alert record + 1 application data record
Hanno Becker78891132017-10-24 11:54:55 +01001789requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001790run_test "Renegotiation: server-initiated, client-rejected, delay 2" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001791 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01001792 renego_delay=2 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001793 "$P_CLI debug_level=3 exchanges=2 renegotiation=0" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02001794 0 \
1795 -C "client hello, adding renegotiation extension" \
1796 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
1797 -S "found renegotiation extension" \
1798 -s "server hello, secure renegotiation extension" \
1799 -c "found renegotiation extension" \
1800 -C "=> renegotiate" \
1801 -S "=> renegotiate" \
1802 -s "write hello request" \
1803 -S "SSL - An unexpected message was received from our peer" \
1804 -S "failed"
1805
Hanno Becker78891132017-10-24 11:54:55 +01001806requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001807run_test "Renegotiation: server-initiated, client-rejected, delay 0" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001808 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01001809 renego_delay=0 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001810 "$P_CLI debug_level=3 exchanges=2 renegotiation=0" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02001811 0 \
1812 -C "client hello, adding renegotiation extension" \
1813 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
1814 -S "found renegotiation extension" \
1815 -s "server hello, secure renegotiation extension" \
1816 -c "found renegotiation extension" \
1817 -C "=> renegotiate" \
1818 -S "=> renegotiate" \
1819 -s "write hello request" \
Manuel Pégourié-Gonnarda8c0a0d2014-08-15 12:07:38 +02001820 -s "SSL - An unexpected message was received from our peer"
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02001821
Hanno Becker78891132017-10-24 11:54:55 +01001822requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001823run_test "Renegotiation: server-initiated, client-accepted, delay 0" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001824 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01001825 renego_delay=0 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001826 "$P_CLI debug_level=3 exchanges=2 renegotiation=1" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02001827 0 \
1828 -c "client hello, adding renegotiation extension" \
1829 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
1830 -s "found renegotiation extension" \
1831 -s "server hello, secure renegotiation extension" \
1832 -c "found renegotiation extension" \
1833 -c "=> renegotiate" \
1834 -s "=> renegotiate" \
1835 -s "write hello request" \
1836 -S "SSL - An unexpected message was received from our peer" \
1837 -S "failed"
1838
Hanno Becker78891132017-10-24 11:54:55 +01001839requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01001840run_test "Renegotiation: periodic, just below period" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01001841 "$P_SRV debug_level=3 exchanges=9 renegotiation=1 renego_period=3 auth_mode=optional" \
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01001842 "$P_CLI debug_level=3 exchanges=2 renegotiation=1" \
1843 0 \
1844 -C "client hello, adding renegotiation extension" \
1845 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
1846 -S "found renegotiation extension" \
1847 -s "server hello, secure renegotiation extension" \
1848 -c "found renegotiation extension" \
1849 -S "record counter limit reached: renegotiate" \
1850 -C "=> renegotiate" \
1851 -S "=> renegotiate" \
1852 -S "write hello request" \
1853 -S "SSL - An unexpected message was received from our peer" \
1854 -S "failed"
1855
Manuel Pégourié-Gonnard9835bc02015-01-14 14:41:58 +01001856# one extra exchange to be able to complete renego
Hanno Becker78891132017-10-24 11:54:55 +01001857requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01001858run_test "Renegotiation: periodic, just above period" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01001859 "$P_SRV debug_level=3 exchanges=9 renegotiation=1 renego_period=3 auth_mode=optional" \
Manuel Pégourié-Gonnard9835bc02015-01-14 14:41:58 +01001860 "$P_CLI debug_level=3 exchanges=4 renegotiation=1" \
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01001861 0 \
1862 -c "client hello, adding renegotiation extension" \
1863 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
1864 -s "found renegotiation extension" \
1865 -s "server hello, secure renegotiation extension" \
1866 -c "found renegotiation extension" \
1867 -s "record counter limit reached: renegotiate" \
1868 -c "=> renegotiate" \
1869 -s "=> renegotiate" \
1870 -s "write hello request" \
1871 -S "SSL - An unexpected message was received from our peer" \
1872 -S "failed"
1873
Hanno Becker78891132017-10-24 11:54:55 +01001874requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01001875run_test "Renegotiation: periodic, two times period" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01001876 "$P_SRV debug_level=3 exchanges=9 renegotiation=1 renego_period=3 auth_mode=optional" \
Manuel Pégourié-Gonnard9835bc02015-01-14 14:41:58 +01001877 "$P_CLI debug_level=3 exchanges=7 renegotiation=1" \
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01001878 0 \
1879 -c "client hello, adding renegotiation extension" \
1880 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
1881 -s "found renegotiation extension" \
1882 -s "server hello, secure renegotiation extension" \
1883 -c "found renegotiation extension" \
1884 -s "record counter limit reached: renegotiate" \
1885 -c "=> renegotiate" \
1886 -s "=> renegotiate" \
1887 -s "write hello request" \
1888 -S "SSL - An unexpected message was received from our peer" \
1889 -S "failed"
1890
Hanno Becker78891132017-10-24 11:54:55 +01001891requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01001892run_test "Renegotiation: periodic, above period, disabled" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01001893 "$P_SRV debug_level=3 exchanges=9 renegotiation=0 renego_period=3 auth_mode=optional" \
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01001894 "$P_CLI debug_level=3 exchanges=4 renegotiation=1" \
1895 0 \
1896 -C "client hello, adding renegotiation extension" \
1897 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
1898 -S "found renegotiation extension" \
1899 -s "server hello, secure renegotiation extension" \
1900 -c "found renegotiation extension" \
1901 -S "record counter limit reached: renegotiate" \
1902 -C "=> renegotiate" \
1903 -S "=> renegotiate" \
1904 -S "write hello request" \
1905 -S "SSL - An unexpected message was received from our peer" \
1906 -S "failed"
1907
Hanno Becker78891132017-10-24 11:54:55 +01001908requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001909run_test "Renegotiation: nbio, client-initiated" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01001910 "$P_SRV debug_level=3 nbio=2 exchanges=2 renegotiation=1 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001911 "$P_CLI debug_level=3 nbio=2 exchanges=2 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnardf07f4212014-08-15 19:04:47 +02001912 0 \
1913 -c "client hello, adding renegotiation extension" \
1914 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
1915 -s "found renegotiation extension" \
1916 -s "server hello, secure renegotiation extension" \
1917 -c "found renegotiation extension" \
1918 -c "=> renegotiate" \
1919 -s "=> renegotiate" \
1920 -S "write hello request"
1921
Hanno Becker78891132017-10-24 11:54:55 +01001922requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001923run_test "Renegotiation: nbio, server-initiated" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01001924 "$P_SRV debug_level=3 nbio=2 exchanges=2 renegotiation=1 renegotiate=1 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001925 "$P_CLI debug_level=3 nbio=2 exchanges=2 renegotiation=1" \
Manuel Pégourié-Gonnardf07f4212014-08-15 19:04:47 +02001926 0 \
1927 -c "client hello, adding renegotiation extension" \
1928 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
1929 -s "found renegotiation extension" \
1930 -s "server hello, secure renegotiation extension" \
1931 -c "found renegotiation extension" \
1932 -c "=> renegotiate" \
1933 -s "=> renegotiate" \
1934 -s "write hello request"
1935
Hanno Becker78891132017-10-24 11:54:55 +01001936requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02001937run_test "Renegotiation: openssl server, client-initiated" \
Manuel Pégourié-Gonnarda7756172014-08-31 18:37:01 +02001938 "$O_SRV -www" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001939 "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnard51362962014-08-30 21:22:47 +02001940 0 \
1941 -c "client hello, adding renegotiation extension" \
1942 -c "found renegotiation extension" \
1943 -c "=> renegotiate" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01001944 -C "ssl_hanshake() returned" \
Manuel Pégourié-Gonnard51362962014-08-30 21:22:47 +02001945 -C "error" \
1946 -c "HTTP/1.0 200 [Oo][Kk]"
1947
Paul Bakker539d9722015-02-08 16:18:35 +01001948requires_gnutls
Hanno Becker78891132017-10-24 11:54:55 +01001949requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01001950run_test "Renegotiation: gnutls server strict, client-initiated" \
1951 "$G_SRV --priority=NORMAL:%SAFE_RENEGOTIATION" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02001952 "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnard51362962014-08-30 21:22:47 +02001953 0 \
1954 -c "client hello, adding renegotiation extension" \
1955 -c "found renegotiation extension" \
1956 -c "=> renegotiate" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01001957 -C "ssl_hanshake() returned" \
Manuel Pégourié-Gonnard51362962014-08-30 21:22:47 +02001958 -C "error" \
1959 -c "HTTP/1.0 200 [Oo][Kk]"
1960
Paul Bakker539d9722015-02-08 16:18:35 +01001961requires_gnutls
Hanno Becker78891132017-10-24 11:54:55 +01001962requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01001963run_test "Renegotiation: gnutls server unsafe, client-initiated default" \
1964 "$G_SRV --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION" \
1965 "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1" \
1966 1 \
1967 -c "client hello, adding renegotiation extension" \
1968 -C "found renegotiation extension" \
1969 -c "=> renegotiate" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001970 -c "mbedtls_ssl_handshake() returned" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01001971 -c "error" \
1972 -C "HTTP/1.0 200 [Oo][Kk]"
1973
Paul Bakker539d9722015-02-08 16:18:35 +01001974requires_gnutls
Hanno Becker78891132017-10-24 11:54:55 +01001975requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01001976run_test "Renegotiation: gnutls server unsafe, client-inititated no legacy" \
1977 "$G_SRV --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION" \
1978 "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1 \
1979 allow_legacy=0" \
1980 1 \
1981 -c "client hello, adding renegotiation extension" \
1982 -C "found renegotiation extension" \
1983 -c "=> renegotiate" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02001984 -c "mbedtls_ssl_handshake() returned" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01001985 -c "error" \
1986 -C "HTTP/1.0 200 [Oo][Kk]"
1987
Paul Bakker539d9722015-02-08 16:18:35 +01001988requires_gnutls
Hanno Becker78891132017-10-24 11:54:55 +01001989requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01001990run_test "Renegotiation: gnutls server unsafe, client-inititated legacy" \
1991 "$G_SRV --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION" \
1992 "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1 \
1993 allow_legacy=1" \
1994 0 \
1995 -c "client hello, adding renegotiation extension" \
1996 -C "found renegotiation extension" \
1997 -c "=> renegotiate" \
1998 -C "ssl_hanshake() returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01001999 -C "error" \
2000 -c "HTTP/1.0 200 [Oo][Kk]"
2001
Hanno Becker78891132017-10-24 11:54:55 +01002002requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard30d16eb2014-08-19 17:43:50 +02002003run_test "Renegotiation: DTLS, client-initiated" \
2004 "$P_SRV debug_level=3 dtls=1 exchanges=2 renegotiation=1" \
2005 "$P_CLI debug_level=3 dtls=1 exchanges=2 renegotiation=1 renegotiate=1" \
2006 0 \
2007 -c "client hello, adding renegotiation extension" \
2008 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
2009 -s "found renegotiation extension" \
2010 -s "server hello, secure renegotiation extension" \
2011 -c "found renegotiation extension" \
2012 -c "=> renegotiate" \
2013 -s "=> renegotiate" \
2014 -S "write hello request"
2015
Hanno Becker78891132017-10-24 11:54:55 +01002016requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnardc392b242014-08-19 17:53:11 +02002017run_test "Renegotiation: DTLS, server-initiated" \
2018 "$P_SRV debug_level=3 dtls=1 exchanges=2 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnarddf9a0a82014-10-02 14:17:18 +02002019 "$P_CLI debug_level=3 dtls=1 exchanges=2 renegotiation=1 \
2020 read_timeout=1000 max_resend=2" \
Manuel Pégourié-Gonnardc392b242014-08-19 17:53:11 +02002021 0 \
2022 -c "client hello, adding renegotiation extension" \
2023 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
2024 -s "found renegotiation extension" \
2025 -s "server hello, secure renegotiation extension" \
2026 -c "found renegotiation extension" \
2027 -c "=> renegotiate" \
2028 -s "=> renegotiate" \
2029 -s "write hello request"
2030
Hanno Becker78891132017-10-24 11:54:55 +01002031requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Andres AG9b1927b2017-01-19 16:30:57 +00002032run_test "Renegotiation: DTLS, renego_period overflow" \
2033 "$P_SRV debug_level=3 dtls=1 exchanges=4 renegotiation=1 renego_period=18446462598732840962 auth_mode=optional" \
2034 "$P_CLI debug_level=3 dtls=1 exchanges=4 renegotiation=1" \
2035 0 \
2036 -c "client hello, adding renegotiation extension" \
2037 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
2038 -s "found renegotiation extension" \
2039 -s "server hello, secure renegotiation extension" \
2040 -s "record counter limit reached: renegotiate" \
2041 -c "=> renegotiate" \
2042 -s "=> renegotiate" \
Hanno Becker78891132017-10-24 11:54:55 +01002043 -s "write hello request"
Andres AG9b1927b2017-01-19 16:30:57 +00002044
Manuel Pégourié-Gonnard96999962015-02-17 16:02:37 +00002045requires_gnutls
Hanno Becker78891132017-10-24 11:54:55 +01002046requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnardf1499f62014-08-31 17:13:13 +02002047run_test "Renegotiation: DTLS, gnutls server, client-initiated" \
2048 "$G_SRV -u --mtu 4096" \
2049 "$P_CLI debug_level=3 dtls=1 exchanges=1 renegotiation=1 renegotiate=1" \
2050 0 \
2051 -c "client hello, adding renegotiation extension" \
2052 -c "found renegotiation extension" \
2053 -c "=> renegotiate" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002054 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnardf1499f62014-08-31 17:13:13 +02002055 -C "error" \
2056 -s "Extra-header:"
2057
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01002058# Test for the "secure renegotation" extension only (no actual renegotiation)
2059
Paul Bakker539d9722015-02-08 16:18:35 +01002060requires_gnutls
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01002061run_test "Renego ext: gnutls server strict, client default" \
2062 "$G_SRV --priority=NORMAL:%SAFE_RENEGOTIATION" \
2063 "$P_CLI debug_level=3" \
2064 0 \
2065 -c "found renegotiation extension" \
2066 -C "error" \
2067 -c "HTTP/1.0 200 [Oo][Kk]"
2068
Paul Bakker539d9722015-02-08 16:18:35 +01002069requires_gnutls
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01002070run_test "Renego ext: gnutls server unsafe, client default" \
2071 "$G_SRV --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION" \
2072 "$P_CLI debug_level=3" \
2073 0 \
2074 -C "found renegotiation extension" \
2075 -C "error" \
2076 -c "HTTP/1.0 200 [Oo][Kk]"
2077
Paul Bakker539d9722015-02-08 16:18:35 +01002078requires_gnutls
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01002079run_test "Renego ext: gnutls server unsafe, client break legacy" \
2080 "$G_SRV --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION" \
2081 "$P_CLI debug_level=3 allow_legacy=-1" \
2082 1 \
2083 -C "found renegotiation extension" \
2084 -c "error" \
2085 -C "HTTP/1.0 200 [Oo][Kk]"
2086
Paul Bakker539d9722015-02-08 16:18:35 +01002087requires_gnutls
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01002088run_test "Renego ext: gnutls client strict, server default" \
2089 "$P_SRV debug_level=3" \
2090 "$G_CLI --priority=NORMAL:%SAFE_RENEGOTIATION" \
2091 0 \
2092 -s "received TLS_EMPTY_RENEGOTIATION_INFO\|found renegotiation extension" \
2093 -s "server hello, secure renegotiation extension"
2094
Paul Bakker539d9722015-02-08 16:18:35 +01002095requires_gnutls
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01002096run_test "Renego ext: gnutls client unsafe, server default" \
2097 "$P_SRV debug_level=3" \
2098 "$G_CLI --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION" \
2099 0 \
2100 -S "received TLS_EMPTY_RENEGOTIATION_INFO\|found renegotiation extension" \
2101 -S "server hello, secure renegotiation extension"
2102
Paul Bakker539d9722015-02-08 16:18:35 +01002103requires_gnutls
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01002104run_test "Renego ext: gnutls client unsafe, server break legacy" \
2105 "$P_SRV debug_level=3 allow_legacy=-1" \
2106 "$G_CLI --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION" \
2107 1 \
2108 -S "received TLS_EMPTY_RENEGOTIATION_INFO\|found renegotiation extension" \
2109 -S "server hello, secure renegotiation extension"
2110
Janos Follath365b2262016-02-17 10:11:21 +00002111# Tests for silently dropping trailing extra bytes in .der certificates
2112
2113requires_gnutls
2114run_test "DER format: no trailing bytes" \
2115 "$P_SRV crt_file=data_files/server5-der0.crt \
2116 key_file=data_files/server5.key" \
2117 "$G_CLI " \
2118 0 \
2119 -c "Handshake was completed" \
2120
2121requires_gnutls
2122run_test "DER format: with a trailing zero byte" \
2123 "$P_SRV crt_file=data_files/server5-der1a.crt \
2124 key_file=data_files/server5.key" \
2125 "$G_CLI " \
2126 0 \
2127 -c "Handshake was completed" \
2128
2129requires_gnutls
2130run_test "DER format: with a trailing random byte" \
2131 "$P_SRV crt_file=data_files/server5-der1b.crt \
2132 key_file=data_files/server5.key" \
2133 "$G_CLI " \
2134 0 \
2135 -c "Handshake was completed" \
2136
2137requires_gnutls
2138run_test "DER format: with 2 trailing random bytes" \
2139 "$P_SRV crt_file=data_files/server5-der2.crt \
2140 key_file=data_files/server5.key" \
2141 "$G_CLI " \
2142 0 \
2143 -c "Handshake was completed" \
2144
2145requires_gnutls
2146run_test "DER format: with 4 trailing random bytes" \
2147 "$P_SRV crt_file=data_files/server5-der4.crt \
2148 key_file=data_files/server5.key" \
2149 "$G_CLI " \
2150 0 \
2151 -c "Handshake was completed" \
2152
2153requires_gnutls
2154run_test "DER format: with 8 trailing random bytes" \
2155 "$P_SRV crt_file=data_files/server5-der8.crt \
2156 key_file=data_files/server5.key" \
2157 "$G_CLI " \
2158 0 \
2159 -c "Handshake was completed" \
2160
2161requires_gnutls
2162run_test "DER format: with 9 trailing random bytes" \
2163 "$P_SRV crt_file=data_files/server5-der9.crt \
2164 key_file=data_files/server5.key" \
2165 "$G_CLI " \
2166 0 \
2167 -c "Handshake was completed" \
2168
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01002169# Tests for auth_mode
2170
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002171run_test "Authentication: server badcert, client required" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01002172 "$P_SRV crt_file=data_files/server5-badsign.crt \
2173 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02002174 "$P_CLI debug_level=1 auth_mode=required" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01002175 1 \
2176 -c "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01002177 -c "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002178 -c "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01002179 -c "X509 - Certificate verification failed"
2180
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002181run_test "Authentication: server badcert, client optional" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01002182 "$P_SRV crt_file=data_files/server5-badsign.crt \
2183 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02002184 "$P_CLI debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01002185 0 \
2186 -c "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01002187 -c "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002188 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01002189 -C "X509 - Certificate verification failed"
2190
Hanno Becker61c0c702017-05-15 16:05:15 +01002191run_test "Authentication: server goodcert, client optional, no trusted CA" \
2192 "$P_SRV" \
2193 "$P_CLI debug_level=3 auth_mode=optional ca_file=none ca_path=none" \
2194 0 \
2195 -c "x509_verify_cert() returned" \
2196 -c "! The certificate is not correctly signed by the trusted CA" \
2197 -c "! Certificate verification flags"\
2198 -C "! mbedtls_ssl_handshake returned" \
2199 -C "X509 - Certificate verification failed" \
2200 -C "SSL - No CA Chain is set, but required to operate"
2201
2202run_test "Authentication: server goodcert, client required, no trusted CA" \
2203 "$P_SRV" \
2204 "$P_CLI debug_level=3 auth_mode=required ca_file=none ca_path=none" \
2205 1 \
2206 -c "x509_verify_cert() returned" \
2207 -c "! The certificate is not correctly signed by the trusted CA" \
2208 -c "! Certificate verification flags"\
2209 -c "! mbedtls_ssl_handshake returned" \
2210 -c "SSL - No CA Chain is set, but required to operate"
2211
2212# The purpose of the next two tests is to test the client's behaviour when receiving a server
2213# certificate with an unsupported elliptic curve. This should usually not happen because
2214# the client informs the server about the supported curves - it does, though, in the
2215# corner case of a static ECDH suite, because the server doesn't check the curve on that
2216# occasion (to be fixed). If that bug's fixed, the test needs to be altered to use a
2217# different means to have the server ignoring the client's supported curve list.
2218
2219requires_config_enabled MBEDTLS_ECP_C
2220run_test "Authentication: server ECDH p256v1, client required, p256v1 unsupported" \
2221 "$P_SRV debug_level=1 key_file=data_files/server5.key \
2222 crt_file=data_files/server5.ku-ka.crt" \
2223 "$P_CLI debug_level=3 auth_mode=required curves=secp521r1" \
2224 1 \
2225 -c "bad certificate (EC key curve)"\
2226 -c "! Certificate verification flags"\
2227 -C "bad server certificate (ECDH curve)" # Expect failure at earlier verification stage
2228
2229requires_config_enabled MBEDTLS_ECP_C
2230run_test "Authentication: server ECDH p256v1, client optional, p256v1 unsupported" \
2231 "$P_SRV debug_level=1 key_file=data_files/server5.key \
2232 crt_file=data_files/server5.ku-ka.crt" \
2233 "$P_CLI debug_level=3 auth_mode=optional curves=secp521r1" \
2234 1 \
2235 -c "bad certificate (EC key curve)"\
2236 -c "! Certificate verification flags"\
2237 -c "bad server certificate (ECDH curve)" # Expect failure only at ECDH params check
2238
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002239run_test "Authentication: server badcert, client none" \
Manuel Pégourié-Gonnardc1da6642014-02-25 14:18:30 +01002240 "$P_SRV crt_file=data_files/server5-badsign.crt \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01002241 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02002242 "$P_CLI debug_level=1 auth_mode=none" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01002243 0 \
2244 -C "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01002245 -C "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002246 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01002247 -C "X509 - Certificate verification failed"
2248
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002249run_test "Authentication: client badcert, server required" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02002250 "$P_SRV debug_level=3 auth_mode=required" \
2251 "$P_CLI debug_level=3 crt_file=data_files/server5-badsign.crt \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01002252 key_file=data_files/server5.key" \
2253 1 \
2254 -S "skip write certificate request" \
2255 -C "skip parse certificate request" \
2256 -c "got a certificate request" \
2257 -C "skip write certificate" \
2258 -C "skip write certificate verify" \
2259 -S "skip parse certificate verify" \
2260 -s "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02002261 -s "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002262 -s "! mbedtls_ssl_handshake returned" \
2263 -c "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01002264 -s "X509 - Certificate verification failed"
2265
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002266run_test "Authentication: client badcert, server optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02002267 "$P_SRV debug_level=3 auth_mode=optional" \
2268 "$P_CLI debug_level=3 crt_file=data_files/server5-badsign.crt \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01002269 key_file=data_files/server5.key" \
2270 0 \
2271 -S "skip write certificate request" \
2272 -C "skip parse certificate request" \
2273 -c "got a certificate request" \
2274 -C "skip write certificate" \
2275 -C "skip write certificate verify" \
2276 -S "skip parse certificate verify" \
2277 -s "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01002278 -s "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002279 -S "! mbedtls_ssl_handshake returned" \
2280 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01002281 -S "X509 - Certificate verification failed"
2282
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002283run_test "Authentication: client badcert, server none" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02002284 "$P_SRV debug_level=3 auth_mode=none" \
2285 "$P_CLI debug_level=3 crt_file=data_files/server5-badsign.crt \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01002286 key_file=data_files/server5.key" \
2287 0 \
2288 -s "skip write certificate request" \
2289 -C "skip parse certificate request" \
2290 -c "got no certificate request" \
2291 -c "skip write certificate" \
2292 -c "skip write certificate verify" \
2293 -s "skip parse certificate verify" \
2294 -S "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01002295 -S "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002296 -S "! mbedtls_ssl_handshake returned" \
2297 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01002298 -S "X509 - Certificate verification failed"
2299
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002300run_test "Authentication: client no cert, server optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02002301 "$P_SRV debug_level=3 auth_mode=optional" \
2302 "$P_CLI debug_level=3 crt_file=none key_file=none" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01002303 0 \
2304 -S "skip write certificate request" \
2305 -C "skip parse certificate request" \
2306 -c "got a certificate request" \
2307 -C "skip write certificate$" \
2308 -C "got no certificate to send" \
2309 -S "SSLv3 client has no certificate" \
2310 -c "skip write certificate verify" \
2311 -s "skip parse certificate verify" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01002312 -s "! Certificate was missing" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002313 -S "! mbedtls_ssl_handshake returned" \
2314 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01002315 -S "X509 - Certificate verification failed"
2316
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002317run_test "Authentication: openssl client no cert, server optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02002318 "$P_SRV debug_level=3 auth_mode=optional" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01002319 "$O_CLI" \
2320 0 \
2321 -S "skip write certificate request" \
2322 -s "skip parse certificate verify" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01002323 -s "! Certificate was missing" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002324 -S "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01002325 -S "X509 - Certificate verification failed"
2326
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002327run_test "Authentication: client no cert, openssl server optional" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01002328 "$O_SRV -verify 10" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02002329 "$P_CLI debug_level=3 crt_file=none key_file=none" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01002330 0 \
2331 -C "skip parse certificate request" \
2332 -c "got a certificate request" \
2333 -C "skip write certificate$" \
2334 -c "skip write certificate verify" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002335 -C "! mbedtls_ssl_handshake returned"
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01002336
Janos Follath542ee5d2016-03-07 15:57:05 +00002337requires_config_enabled MBEDTLS_SSL_PROTO_SSL3
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002338run_test "Authentication: client no cert, ssl3" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02002339 "$P_SRV debug_level=3 auth_mode=optional force_version=ssl3" \
Manuel Pégourié-Gonnard448ea502015-01-12 11:40:14 +01002340 "$P_CLI debug_level=3 crt_file=none key_file=none min_version=ssl3" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01002341 0 \
2342 -S "skip write certificate request" \
2343 -C "skip parse certificate request" \
2344 -c "got a certificate request" \
2345 -C "skip write certificate$" \
2346 -c "skip write certificate verify" \
2347 -c "got no certificate to send" \
2348 -s "SSLv3 client has no certificate" \
2349 -s "skip parse certificate verify" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01002350 -s "! Certificate was missing" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002351 -S "! mbedtls_ssl_handshake returned" \
2352 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01002353 -S "X509 - Certificate verification failed"
2354
Manuel Pégourié-Gonnard591035d2017-06-26 10:45:33 +02002355run_test "Authentication: server max_int chain, client default" \
2356 "$P_SRV crt_file=data_files/dir-maxpath/c09.pem \
2357 key_file=data_files/dir-maxpath/09.key" \
2358 "$P_CLI server_name=CA09 ca_file=data_files/dir-maxpath/00.crt" \
2359 0 \
2360 -C "X509 - A fatal error occured"
2361
2362run_test "Authentication: server max_int+1 chain, client default" \
2363 "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \
2364 key_file=data_files/dir-maxpath/10.key" \
2365 "$P_CLI server_name=CA10 ca_file=data_files/dir-maxpath/00.crt" \
2366 1 \
2367 -c "X509 - A fatal error occured"
2368
2369run_test "Authentication: server max_int+1 chain, client optional" \
2370 "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \
2371 key_file=data_files/dir-maxpath/10.key" \
2372 "$P_CLI server_name=CA10 ca_file=data_files/dir-maxpath/00.crt \
2373 auth_mode=optional" \
2374 1 \
2375 -c "X509 - A fatal error occured"
2376
2377run_test "Authentication: server max_int+1 chain, client none" \
2378 "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \
2379 key_file=data_files/dir-maxpath/10.key" \
2380 "$P_CLI server_name=CA10 ca_file=data_files/dir-maxpath/00.crt \
2381 auth_mode=none" \
2382 0 \
2383 -C "X509 - A fatal error occured"
2384
2385run_test "Authentication: client max_int+1 chain, server default" \
2386 "$P_SRV ca_file=data_files/dir-maxpath/00.crt" \
2387 "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \
2388 key_file=data_files/dir-maxpath/10.key" \
2389 0 \
2390 -S "X509 - A fatal error occured"
2391
2392run_test "Authentication: client max_int+1 chain, server optional" \
2393 "$P_SRV ca_file=data_files/dir-maxpath/00.crt auth_mode=optional" \
2394 "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \
2395 key_file=data_files/dir-maxpath/10.key" \
2396 1 \
2397 -s "X509 - A fatal error occured"
2398
2399run_test "Authentication: client max_int+1 chain, server required" \
2400 "$P_SRV ca_file=data_files/dir-maxpath/00.crt auth_mode=required" \
2401 "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \
2402 key_file=data_files/dir-maxpath/10.key" \
2403 1 \
2404 -s "X509 - A fatal error occured"
2405
2406run_test "Authentication: client max_int chain, server required" \
2407 "$P_SRV ca_file=data_files/dir-maxpath/00.crt auth_mode=required" \
2408 "$P_CLI crt_file=data_files/dir-maxpath/c09.pem \
2409 key_file=data_files/dir-maxpath/09.key" \
2410 0 \
2411 -S "X509 - A fatal error occured"
2412
Manuel Pégourié-Gonnarddf331a52015-01-08 16:43:07 +01002413# Tests for certificate selection based on SHA verson
2414
2415run_test "Certificate hash: client TLS 1.2 -> SHA-2" \
2416 "$P_SRV crt_file=data_files/server5.crt \
2417 key_file=data_files/server5.key \
2418 crt_file2=data_files/server5-sha1.crt \
2419 key_file2=data_files/server5.key" \
2420 "$P_CLI force_version=tls1_2" \
2421 0 \
2422 -c "signed using.*ECDSA with SHA256" \
2423 -C "signed using.*ECDSA with SHA1"
2424
2425run_test "Certificate hash: client TLS 1.1 -> SHA-1" \
2426 "$P_SRV crt_file=data_files/server5.crt \
2427 key_file=data_files/server5.key \
2428 crt_file2=data_files/server5-sha1.crt \
2429 key_file2=data_files/server5.key" \
2430 "$P_CLI force_version=tls1_1" \
2431 0 \
2432 -C "signed using.*ECDSA with SHA256" \
2433 -c "signed using.*ECDSA with SHA1"
2434
2435run_test "Certificate hash: client TLS 1.0 -> SHA-1" \
2436 "$P_SRV crt_file=data_files/server5.crt \
2437 key_file=data_files/server5.key \
2438 crt_file2=data_files/server5-sha1.crt \
2439 key_file2=data_files/server5.key" \
2440 "$P_CLI force_version=tls1" \
2441 0 \
2442 -C "signed using.*ECDSA with SHA256" \
2443 -c "signed using.*ECDSA with SHA1"
2444
2445run_test "Certificate hash: client TLS 1.1, no SHA-1 -> SHA-2 (order 1)" \
2446 "$P_SRV crt_file=data_files/server5.crt \
2447 key_file=data_files/server5.key \
2448 crt_file2=data_files/server6.crt \
2449 key_file2=data_files/server6.key" \
2450 "$P_CLI force_version=tls1_1" \
2451 0 \
2452 -c "serial number.*09" \
2453 -c "signed using.*ECDSA with SHA256" \
2454 -C "signed using.*ECDSA with SHA1"
2455
2456run_test "Certificate hash: client TLS 1.1, no SHA-1 -> SHA-2 (order 2)" \
2457 "$P_SRV crt_file=data_files/server6.crt \
2458 key_file=data_files/server6.key \
2459 crt_file2=data_files/server5.crt \
2460 key_file2=data_files/server5.key" \
2461 "$P_CLI force_version=tls1_1" \
2462 0 \
2463 -c "serial number.*0A" \
2464 -c "signed using.*ECDSA with SHA256" \
2465 -C "signed using.*ECDSA with SHA1"
2466
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01002467# tests for SNI
2468
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002469run_test "SNI: no SNI callback" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02002470 "$P_SRV debug_level=3 \
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01002471 crt_file=data_files/server5.crt key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02002472 "$P_CLI server_name=localhost" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02002473 0 \
2474 -S "parse ServerName extension" \
2475 -c "issuer name *: C=NL, O=PolarSSL, CN=Polarssl Test EC CA" \
2476 -c "subject name *: C=NL, O=PolarSSL, CN=localhost"
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01002477
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002478run_test "SNI: matching cert 1" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02002479 "$P_SRV debug_level=3 \
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01002480 crt_file=data_files/server5.crt key_file=data_files/server5.key \
Manuel Pégourié-Gonnard4d6f1782015-06-19 14:40:39 +02002481 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02002482 "$P_CLI server_name=localhost" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02002483 0 \
2484 -s "parse ServerName extension" \
2485 -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
2486 -c "subject name *: C=NL, O=PolarSSL, CN=localhost"
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01002487
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002488run_test "SNI: matching cert 2" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02002489 "$P_SRV debug_level=3 \
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01002490 crt_file=data_files/server5.crt key_file=data_files/server5.key \
Manuel Pégourié-Gonnard4d6f1782015-06-19 14:40:39 +02002491 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02002492 "$P_CLI server_name=polarssl.example" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02002493 0 \
2494 -s "parse ServerName extension" \
2495 -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
2496 -c "subject name *: C=NL, O=PolarSSL, CN=polarssl.example"
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01002497
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002498run_test "SNI: no matching cert" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02002499 "$P_SRV debug_level=3 \
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01002500 crt_file=data_files/server5.crt key_file=data_files/server5.key \
Manuel Pégourié-Gonnard4d6f1782015-06-19 14:40:39 +02002501 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02002502 "$P_CLI server_name=nonesuch.example" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02002503 1 \
2504 -s "parse ServerName extension" \
2505 -s "ssl_sni_wrapper() returned" \
2506 -s "mbedtls_ssl_handshake returned" \
2507 -c "mbedtls_ssl_handshake returned" \
2508 -c "SSL - A fatal alert message was received from our peer"
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01002509
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02002510run_test "SNI: client auth no override: optional" \
2511 "$P_SRV debug_level=3 auth_mode=optional \
2512 crt_file=data_files/server5.crt key_file=data_files/server5.key \
2513 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-" \
2514 "$P_CLI debug_level=3 server_name=localhost" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02002515 0 \
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02002516 -S "skip write certificate request" \
2517 -C "skip parse certificate request" \
2518 -c "got a certificate request" \
2519 -C "skip write certificate" \
2520 -C "skip write certificate verify" \
2521 -S "skip parse certificate verify"
2522
2523run_test "SNI: client auth override: none -> optional" \
2524 "$P_SRV debug_level=3 auth_mode=none \
2525 crt_file=data_files/server5.crt key_file=data_files/server5.key \
2526 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,optional" \
2527 "$P_CLI debug_level=3 server_name=localhost" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02002528 0 \
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02002529 -S "skip write certificate request" \
2530 -C "skip parse certificate request" \
2531 -c "got a certificate request" \
2532 -C "skip write certificate" \
2533 -C "skip write certificate verify" \
2534 -S "skip parse certificate verify"
2535
2536run_test "SNI: client auth override: optional -> none" \
2537 "$P_SRV debug_level=3 auth_mode=optional \
2538 crt_file=data_files/server5.crt key_file=data_files/server5.key \
2539 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,none" \
2540 "$P_CLI debug_level=3 server_name=localhost" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02002541 0 \
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02002542 -s "skip write certificate request" \
2543 -C "skip parse certificate request" \
2544 -c "got no certificate request" \
2545 -c "skip write certificate" \
2546 -c "skip write certificate verify" \
2547 -s "skip parse certificate verify"
2548
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02002549run_test "SNI: CA no override" \
2550 "$P_SRV debug_level=3 auth_mode=optional \
2551 crt_file=data_files/server5.crt key_file=data_files/server5.key \
2552 ca_file=data_files/test-ca.crt \
2553 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,required" \
2554 "$P_CLI debug_level=3 server_name=localhost \
2555 crt_file=data_files/server6.crt key_file=data_files/server6.key" \
2556 1 \
2557 -S "skip write certificate request" \
2558 -C "skip parse certificate request" \
2559 -c "got a certificate request" \
2560 -C "skip write certificate" \
2561 -C "skip write certificate verify" \
2562 -S "skip parse certificate verify" \
2563 -s "x509_verify_cert() returned" \
2564 -s "! The certificate is not correctly signed by the trusted CA" \
2565 -S "The certificate has been revoked (is on a CRL)"
2566
2567run_test "SNI: CA override" \
2568 "$P_SRV debug_level=3 auth_mode=optional \
2569 crt_file=data_files/server5.crt key_file=data_files/server5.key \
2570 ca_file=data_files/test-ca.crt \
2571 sni=localhost,data_files/server2.crt,data_files/server2.key,data_files/test-ca2.crt,-,required" \
2572 "$P_CLI debug_level=3 server_name=localhost \
2573 crt_file=data_files/server6.crt key_file=data_files/server6.key" \
2574 0 \
2575 -S "skip write certificate request" \
2576 -C "skip parse certificate request" \
2577 -c "got a certificate request" \
2578 -C "skip write certificate" \
2579 -C "skip write certificate verify" \
2580 -S "skip parse certificate verify" \
2581 -S "x509_verify_cert() returned" \
2582 -S "! The certificate is not correctly signed by the trusted CA" \
2583 -S "The certificate has been revoked (is on a CRL)"
2584
2585run_test "SNI: CA override with CRL" \
2586 "$P_SRV debug_level=3 auth_mode=optional \
2587 crt_file=data_files/server5.crt key_file=data_files/server5.key \
2588 ca_file=data_files/test-ca.crt \
2589 sni=localhost,data_files/server2.crt,data_files/server2.key,data_files/test-ca2.crt,data_files/crl-ec-sha256.pem,required" \
2590 "$P_CLI debug_level=3 server_name=localhost \
2591 crt_file=data_files/server6.crt key_file=data_files/server6.key" \
2592 1 \
2593 -S "skip write certificate request" \
2594 -C "skip parse certificate request" \
2595 -c "got a certificate request" \
2596 -C "skip write certificate" \
2597 -C "skip write certificate verify" \
2598 -S "skip parse certificate verify" \
2599 -s "x509_verify_cert() returned" \
2600 -S "! The certificate is not correctly signed by the trusted CA" \
2601 -s "The certificate has been revoked (is on a CRL)"
2602
Andres AG52142f12016-12-07 10:01:30 +00002603# Tests for SNI and DTLS
2604
Andres Amaya Garcia0b8eaa82018-05-01 20:27:37 +01002605run_test "SNI: DTLS, no SNI callback" \
2606 "$P_SRV debug_level=3 dtls=1 \
2607 crt_file=data_files/server5.crt key_file=data_files/server5.key" \
2608 "$P_CLI server_name=localhost dtls=1" \
2609 0 \
2610 -S "parse ServerName extension" \
2611 -c "issuer name *: C=NL, O=PolarSSL, CN=Polarssl Test EC CA" \
2612 -c "subject name *: C=NL, O=PolarSSL, CN=localhost"
2613
Andres Amaya Garcia021ad3d2018-05-01 20:26:47 +01002614run_test "SNI: DTLS, matching cert 1" \
Andres AG52142f12016-12-07 10:01:30 +00002615 "$P_SRV debug_level=3 dtls=1 \
2616 crt_file=data_files/server5.crt key_file=data_files/server5.key \
2617 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
2618 "$P_CLI server_name=localhost dtls=1" \
2619 0 \
2620 -s "parse ServerName extension" \
2621 -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
2622 -c "subject name *: C=NL, O=PolarSSL, CN=localhost"
2623
Andres Amaya Garcia0b8eaa82018-05-01 20:27:37 +01002624run_test "SNI: DTLS, matching cert 2" \
2625 "$P_SRV debug_level=3 dtls=1 \
2626 crt_file=data_files/server5.crt key_file=data_files/server5.key \
2627 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
2628 "$P_CLI server_name=polarssl.example dtls=1" \
2629 0 \
2630 -s "parse ServerName extension" \
2631 -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
2632 -c "subject name *: C=NL, O=PolarSSL, CN=polarssl.example"
2633
2634run_test "SNI: DTLS, no matching cert" \
2635 "$P_SRV debug_level=3 dtls=1 \
2636 crt_file=data_files/server5.crt key_file=data_files/server5.key \
2637 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
2638 "$P_CLI server_name=nonesuch.example dtls=1" \
2639 1 \
2640 -s "parse ServerName extension" \
2641 -s "ssl_sni_wrapper() returned" \
2642 -s "mbedtls_ssl_handshake returned" \
2643 -c "mbedtls_ssl_handshake returned" \
2644 -c "SSL - A fatal alert message was received from our peer"
2645
2646run_test "SNI: DTLS, client auth no override: optional" \
2647 "$P_SRV debug_level=3 auth_mode=optional dtls=1 \
2648 crt_file=data_files/server5.crt key_file=data_files/server5.key \
2649 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-" \
2650 "$P_CLI debug_level=3 server_name=localhost dtls=1" \
2651 0 \
2652 -S "skip write certificate request" \
2653 -C "skip parse certificate request" \
2654 -c "got a certificate request" \
2655 -C "skip write certificate" \
2656 -C "skip write certificate verify" \
2657 -S "skip parse certificate verify"
2658
2659run_test "SNI: DTLS, client auth override: none -> optional" \
2660 "$P_SRV debug_level=3 auth_mode=none dtls=1 \
2661 crt_file=data_files/server5.crt key_file=data_files/server5.key \
2662 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,optional" \
2663 "$P_CLI debug_level=3 server_name=localhost dtls=1" \
2664 0 \
2665 -S "skip write certificate request" \
2666 -C "skip parse certificate request" \
2667 -c "got a certificate request" \
2668 -C "skip write certificate" \
2669 -C "skip write certificate verify" \
2670 -S "skip parse certificate verify"
2671
2672run_test "SNI: DTLS, client auth override: optional -> none" \
2673 "$P_SRV debug_level=3 auth_mode=optional dtls=1 \
2674 crt_file=data_files/server5.crt key_file=data_files/server5.key \
2675 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,none" \
2676 "$P_CLI debug_level=3 server_name=localhost dtls=1" \
2677 0 \
2678 -s "skip write certificate request" \
2679 -C "skip parse certificate request" \
2680 -c "got no certificate request" \
2681 -c "skip write certificate" \
2682 -c "skip write certificate verify" \
2683 -s "skip parse certificate verify"
2684
Simon Butcher12826df2018-06-16 19:46:52 +01002685needs_more_time 4
Andres Amaya Garcia0b8eaa82018-05-01 20:27:37 +01002686run_test "SNI: DTLS, CA no override" \
2687 "$P_SRV debug_level=3 auth_mode=optional dtls=1 \
2688 crt_file=data_files/server5.crt key_file=data_files/server5.key \
2689 ca_file=data_files/test-ca.crt \
2690 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,required" \
2691 "$P_CLI debug_level=3 server_name=localhost dtls=1 \
2692 crt_file=data_files/server6.crt key_file=data_files/server6.key" \
2693 1 \
2694 -S "skip write certificate request" \
2695 -C "skip parse certificate request" \
2696 -c "got a certificate request" \
2697 -C "skip write certificate" \
2698 -C "skip write certificate verify" \
2699 -S "skip parse certificate verify" \
2700 -s "x509_verify_cert() returned" \
2701 -s "! The certificate is not correctly signed by the trusted CA" \
2702 -S "The certificate has been revoked (is on a CRL)"
2703
Andres Amaya Garcia021ad3d2018-05-01 20:26:47 +01002704run_test "SNI: DTLS, CA override" \
Andres AG52142f12016-12-07 10:01:30 +00002705 "$P_SRV debug_level=3 auth_mode=optional dtls=1 \
2706 crt_file=data_files/server5.crt key_file=data_files/server5.key \
2707 ca_file=data_files/test-ca.crt \
2708 sni=localhost,data_files/server2.crt,data_files/server2.key,data_files/test-ca2.crt,-,required" \
2709 "$P_CLI debug_level=3 server_name=localhost dtls=1 \
2710 crt_file=data_files/server6.crt key_file=data_files/server6.key" \
2711 0 \
2712 -S "skip write certificate request" \
2713 -C "skip parse certificate request" \
2714 -c "got a certificate request" \
2715 -C "skip write certificate" \
2716 -C "skip write certificate verify" \
2717 -S "skip parse certificate verify" \
2718 -S "x509_verify_cert() returned" \
2719 -S "! The certificate is not correctly signed by the trusted CA" \
2720 -S "The certificate has been revoked (is on a CRL)"
2721
Simon Butcher12826df2018-06-16 19:46:52 +01002722needs_more_time 4
Andres Amaya Garcia021ad3d2018-05-01 20:26:47 +01002723run_test "SNI: DTLS, CA override with CRL" \
Andres AG52142f12016-12-07 10:01:30 +00002724 "$P_SRV debug_level=3 auth_mode=optional \
2725 crt_file=data_files/server5.crt key_file=data_files/server5.key dtls=1 \
2726 ca_file=data_files/test-ca.crt \
2727 sni=localhost,data_files/server2.crt,data_files/server2.key,data_files/test-ca2.crt,data_files/crl-ec-sha256.pem,required" \
2728 "$P_CLI debug_level=3 server_name=localhost dtls=1 \
2729 crt_file=data_files/server6.crt key_file=data_files/server6.key" \
2730 1 \
2731 -S "skip write certificate request" \
2732 -C "skip parse certificate request" \
2733 -c "got a certificate request" \
2734 -C "skip write certificate" \
2735 -C "skip write certificate verify" \
2736 -S "skip parse certificate verify" \
2737 -s "x509_verify_cert() returned" \
2738 -S "! The certificate is not correctly signed by the trusted CA" \
2739 -s "The certificate has been revoked (is on a CRL)"
2740
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01002741# Tests for non-blocking I/O: exercise a variety of handshake flows
2742
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002743run_test "Non-blocking I/O: basic handshake" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01002744 "$P_SRV nbio=2 tickets=0 auth_mode=none" \
2745 "$P_CLI nbio=2 tickets=0" \
2746 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002747 -S "mbedtls_ssl_handshake returned" \
2748 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01002749 -c "Read from server: .* bytes read"
2750
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002751run_test "Non-blocking I/O: client auth" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01002752 "$P_SRV nbio=2 tickets=0 auth_mode=required" \
2753 "$P_CLI nbio=2 tickets=0" \
2754 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002755 -S "mbedtls_ssl_handshake returned" \
2756 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01002757 -c "Read from server: .* bytes read"
2758
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002759run_test "Non-blocking I/O: ticket" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01002760 "$P_SRV nbio=2 tickets=1 auth_mode=none" \
2761 "$P_CLI nbio=2 tickets=1" \
2762 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002763 -S "mbedtls_ssl_handshake returned" \
2764 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01002765 -c "Read from server: .* bytes read"
2766
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002767run_test "Non-blocking I/O: ticket + client auth" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01002768 "$P_SRV nbio=2 tickets=1 auth_mode=required" \
2769 "$P_CLI nbio=2 tickets=1" \
2770 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002771 -S "mbedtls_ssl_handshake returned" \
2772 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01002773 -c "Read from server: .* bytes read"
2774
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002775run_test "Non-blocking I/O: ticket + client auth + resume" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01002776 "$P_SRV nbio=2 tickets=1 auth_mode=required" \
2777 "$P_CLI nbio=2 tickets=1 reconnect=1" \
2778 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002779 -S "mbedtls_ssl_handshake returned" \
2780 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01002781 -c "Read from server: .* bytes read"
2782
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002783run_test "Non-blocking I/O: ticket + resume" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01002784 "$P_SRV nbio=2 tickets=1 auth_mode=none" \
2785 "$P_CLI nbio=2 tickets=1 reconnect=1" \
2786 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002787 -S "mbedtls_ssl_handshake returned" \
2788 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01002789 -c "Read from server: .* bytes read"
2790
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002791run_test "Non-blocking I/O: session-id resume" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01002792 "$P_SRV nbio=2 tickets=0 auth_mode=none" \
2793 "$P_CLI nbio=2 tickets=0 reconnect=1" \
2794 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002795 -S "mbedtls_ssl_handshake returned" \
2796 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01002797 -c "Read from server: .* bytes read"
2798
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02002799# Tests for version negotiation
2800
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002801run_test "Version check: all -> 1.2" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01002802 "$P_SRV" \
2803 "$P_CLI" \
2804 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002805 -S "mbedtls_ssl_handshake returned" \
2806 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01002807 -s "Protocol is TLSv1.2" \
2808 -c "Protocol is TLSv1.2"
2809
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002810run_test "Version check: cli max 1.1 -> 1.1" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01002811 "$P_SRV" \
2812 "$P_CLI max_version=tls1_1" \
2813 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002814 -S "mbedtls_ssl_handshake returned" \
2815 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01002816 -s "Protocol is TLSv1.1" \
2817 -c "Protocol is TLSv1.1"
2818
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002819run_test "Version check: srv max 1.1 -> 1.1" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01002820 "$P_SRV max_version=tls1_1" \
2821 "$P_CLI" \
2822 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002823 -S "mbedtls_ssl_handshake returned" \
2824 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01002825 -s "Protocol is TLSv1.1" \
2826 -c "Protocol is TLSv1.1"
2827
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002828run_test "Version check: cli+srv max 1.1 -> 1.1" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01002829 "$P_SRV max_version=tls1_1" \
2830 "$P_CLI max_version=tls1_1" \
2831 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002832 -S "mbedtls_ssl_handshake returned" \
2833 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01002834 -s "Protocol is TLSv1.1" \
2835 -c "Protocol is TLSv1.1"
2836
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002837run_test "Version check: cli max 1.1, srv min 1.1 -> 1.1" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01002838 "$P_SRV min_version=tls1_1" \
2839 "$P_CLI max_version=tls1_1" \
2840 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002841 -S "mbedtls_ssl_handshake returned" \
2842 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01002843 -s "Protocol is TLSv1.1" \
2844 -c "Protocol is TLSv1.1"
2845
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002846run_test "Version check: cli min 1.1, srv max 1.1 -> 1.1" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01002847 "$P_SRV max_version=tls1_1" \
2848 "$P_CLI min_version=tls1_1" \
2849 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002850 -S "mbedtls_ssl_handshake returned" \
2851 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01002852 -s "Protocol is TLSv1.1" \
2853 -c "Protocol is TLSv1.1"
2854
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002855run_test "Version check: cli min 1.2, srv max 1.1 -> fail" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01002856 "$P_SRV max_version=tls1_1" \
2857 "$P_CLI min_version=tls1_2" \
2858 1 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002859 -s "mbedtls_ssl_handshake returned" \
2860 -c "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01002861 -c "SSL - Handshake protocol not within min/max boundaries"
2862
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002863run_test "Version check: srv min 1.2, cli max 1.1 -> fail" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01002864 "$P_SRV min_version=tls1_2" \
2865 "$P_CLI max_version=tls1_1" \
2866 1 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02002867 -s "mbedtls_ssl_handshake returned" \
2868 -c "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01002869 -s "SSL - Handshake protocol not within min/max boundaries"
2870
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02002871# Tests for ALPN extension
2872
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002873run_test "ALPN: none" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02002874 "$P_SRV debug_level=3" \
2875 "$P_CLI debug_level=3" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02002876 0 \
2877 -C "client hello, adding alpn extension" \
2878 -S "found alpn extension" \
2879 -C "got an alert message, type: \\[2:120]" \
2880 -S "server hello, adding alpn extension" \
2881 -C "found alpn extension " \
2882 -C "Application Layer Protocol is" \
2883 -S "Application Layer Protocol is"
2884
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002885run_test "ALPN: client only" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02002886 "$P_SRV debug_level=3" \
2887 "$P_CLI debug_level=3 alpn=abc,1234" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02002888 0 \
2889 -c "client hello, adding alpn extension" \
2890 -s "found alpn extension" \
2891 -C "got an alert message, type: \\[2:120]" \
2892 -S "server hello, adding alpn extension" \
2893 -C "found alpn extension " \
2894 -c "Application Layer Protocol is (none)" \
2895 -S "Application Layer Protocol is"
2896
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002897run_test "ALPN: server only" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02002898 "$P_SRV debug_level=3 alpn=abc,1234" \
2899 "$P_CLI debug_level=3" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02002900 0 \
2901 -C "client hello, adding alpn extension" \
2902 -S "found alpn extension" \
2903 -C "got an alert message, type: \\[2:120]" \
2904 -S "server hello, adding alpn extension" \
2905 -C "found alpn extension " \
2906 -C "Application Layer Protocol is" \
2907 -s "Application Layer Protocol is (none)"
2908
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002909run_test "ALPN: both, common cli1-srv1" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02002910 "$P_SRV debug_level=3 alpn=abc,1234" \
2911 "$P_CLI debug_level=3 alpn=abc,1234" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02002912 0 \
2913 -c "client hello, adding alpn extension" \
2914 -s "found alpn extension" \
2915 -C "got an alert message, type: \\[2:120]" \
2916 -s "server hello, adding alpn extension" \
2917 -c "found alpn extension" \
2918 -c "Application Layer Protocol is abc" \
2919 -s "Application Layer Protocol is abc"
2920
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002921run_test "ALPN: both, common cli2-srv1" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02002922 "$P_SRV debug_level=3 alpn=abc,1234" \
2923 "$P_CLI debug_level=3 alpn=1234,abc" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02002924 0 \
2925 -c "client hello, adding alpn extension" \
2926 -s "found alpn extension" \
2927 -C "got an alert message, type: \\[2:120]" \
2928 -s "server hello, adding alpn extension" \
2929 -c "found alpn extension" \
2930 -c "Application Layer Protocol is abc" \
2931 -s "Application Layer Protocol is abc"
2932
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002933run_test "ALPN: both, common cli1-srv2" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02002934 "$P_SRV debug_level=3 alpn=abc,1234" \
2935 "$P_CLI debug_level=3 alpn=1234,abcde" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02002936 0 \
2937 -c "client hello, adding alpn extension" \
2938 -s "found alpn extension" \
2939 -C "got an alert message, type: \\[2:120]" \
2940 -s "server hello, adding alpn extension" \
2941 -c "found alpn extension" \
2942 -c "Application Layer Protocol is 1234" \
2943 -s "Application Layer Protocol is 1234"
2944
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002945run_test "ALPN: both, no common" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02002946 "$P_SRV debug_level=3 alpn=abc,123" \
2947 "$P_CLI debug_level=3 alpn=1234,abcde" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02002948 1 \
2949 -c "client hello, adding alpn extension" \
2950 -s "found alpn extension" \
2951 -c "got an alert message, type: \\[2:120]" \
2952 -S "server hello, adding alpn extension" \
2953 -C "found alpn extension" \
2954 -C "Application Layer Protocol is 1234" \
2955 -S "Application Layer Protocol is 1234"
2956
Manuel Pégourié-Gonnard83d8c732014-04-07 13:24:21 +02002957
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02002958# Tests for keyUsage in leaf certificates, part 1:
2959# server-side certificate/suite selection
2960
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002961run_test "keyUsage srv: RSA, digitalSignature -> (EC)DHE-RSA" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02002962 "$P_SRV key_file=data_files/server2.key \
2963 crt_file=data_files/server2.ku-ds.crt" \
2964 "$P_CLI" \
2965 0 \
Manuel Pégourié-Gonnard17cde5f2014-05-22 14:42:39 +02002966 -c "Ciphersuite is TLS-[EC]*DHE-RSA-WITH-"
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02002967
2968
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002969run_test "keyUsage srv: RSA, keyEncipherment -> RSA" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02002970 "$P_SRV key_file=data_files/server2.key \
2971 crt_file=data_files/server2.ku-ke.crt" \
2972 "$P_CLI" \
2973 0 \
2974 -c "Ciphersuite is TLS-RSA-WITH-"
2975
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002976run_test "keyUsage srv: RSA, keyAgreement -> fail" \
Manuel Pégourié-Gonnardf2629b92014-08-30 14:20:14 +02002977 "$P_SRV key_file=data_files/server2.key \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02002978 crt_file=data_files/server2.ku-ka.crt" \
Manuel Pégourié-Gonnardf2629b92014-08-30 14:20:14 +02002979 "$P_CLI" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02002980 1 \
2981 -C "Ciphersuite is "
2982
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002983run_test "keyUsage srv: ECDSA, digitalSignature -> ECDHE-ECDSA" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02002984 "$P_SRV key_file=data_files/server5.key \
2985 crt_file=data_files/server5.ku-ds.crt" \
2986 "$P_CLI" \
2987 0 \
2988 -c "Ciphersuite is TLS-ECDHE-ECDSA-WITH-"
2989
2990
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002991run_test "keyUsage srv: ECDSA, keyAgreement -> ECDH-" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02002992 "$P_SRV key_file=data_files/server5.key \
2993 crt_file=data_files/server5.ku-ka.crt" \
2994 "$P_CLI" \
2995 0 \
2996 -c "Ciphersuite is TLS-ECDH-"
2997
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02002998run_test "keyUsage srv: ECDSA, keyEncipherment -> fail" \
Manuel Pégourié-Gonnardf2629b92014-08-30 14:20:14 +02002999 "$P_SRV key_file=data_files/server5.key \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02003000 crt_file=data_files/server5.ku-ke.crt" \
Manuel Pégourié-Gonnardf2629b92014-08-30 14:20:14 +02003001 "$P_CLI" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02003002 1 \
3003 -C "Ciphersuite is "
3004
3005# Tests for keyUsage in leaf certificates, part 2:
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02003006# client-side checking of server cert
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02003007
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003008run_test "keyUsage cli: DigitalSignature+KeyEncipherment, RSA: OK" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02003009 "$O_SRV -key data_files/server2.key \
3010 -cert data_files/server2.ku-ds_ke.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003011 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02003012 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
3013 0 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02003014 -C "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02003015 -C "Processing of the Certificate handshake message failed" \
3016 -c "Ciphersuite is TLS-"
3017
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003018run_test "keyUsage cli: DigitalSignature+KeyEncipherment, DHE-RSA: OK" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02003019 "$O_SRV -key data_files/server2.key \
3020 -cert data_files/server2.ku-ds_ke.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003021 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02003022 force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
3023 0 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02003024 -C "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02003025 -C "Processing of the Certificate handshake message failed" \
3026 -c "Ciphersuite is TLS-"
3027
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003028run_test "keyUsage cli: KeyEncipherment, RSA: OK" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02003029 "$O_SRV -key data_files/server2.key \
3030 -cert data_files/server2.ku-ke.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003031 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02003032 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
3033 0 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02003034 -C "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02003035 -C "Processing of the Certificate handshake message failed" \
3036 -c "Ciphersuite is TLS-"
3037
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003038run_test "keyUsage cli: KeyEncipherment, DHE-RSA: fail" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02003039 "$O_SRV -key data_files/server2.key \
3040 -cert data_files/server2.ku-ke.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003041 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02003042 force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
3043 1 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02003044 -c "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02003045 -c "Processing of the Certificate handshake message failed" \
3046 -C "Ciphersuite is TLS-"
3047
Manuel Pégourié-Gonnarde6efa6f2015-04-20 11:01:48 +01003048run_test "keyUsage cli: KeyEncipherment, DHE-RSA: fail, soft" \
3049 "$O_SRV -key data_files/server2.key \
3050 -cert data_files/server2.ku-ke.crt" \
3051 "$P_CLI debug_level=1 auth_mode=optional \
3052 force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
3053 0 \
3054 -c "bad certificate (usage extensions)" \
3055 -C "Processing of the Certificate handshake message failed" \
3056 -c "Ciphersuite is TLS-" \
3057 -c "! Usage does not match the keyUsage extension"
3058
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003059run_test "keyUsage cli: DigitalSignature, DHE-RSA: OK" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02003060 "$O_SRV -key data_files/server2.key \
3061 -cert data_files/server2.ku-ds.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003062 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02003063 force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
3064 0 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02003065 -C "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02003066 -C "Processing of the Certificate handshake message failed" \
3067 -c "Ciphersuite is TLS-"
3068
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003069run_test "keyUsage cli: DigitalSignature, RSA: fail" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02003070 "$O_SRV -key data_files/server2.key \
3071 -cert data_files/server2.ku-ds.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003072 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02003073 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
3074 1 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02003075 -c "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02003076 -c "Processing of the Certificate handshake message failed" \
3077 -C "Ciphersuite is TLS-"
3078
Manuel Pégourié-Gonnarde6efa6f2015-04-20 11:01:48 +01003079run_test "keyUsage cli: DigitalSignature, RSA: fail, soft" \
3080 "$O_SRV -key data_files/server2.key \
3081 -cert data_files/server2.ku-ds.crt" \
3082 "$P_CLI debug_level=1 auth_mode=optional \
3083 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
3084 0 \
3085 -c "bad certificate (usage extensions)" \
3086 -C "Processing of the Certificate handshake message failed" \
3087 -c "Ciphersuite is TLS-" \
3088 -c "! Usage does not match the keyUsage extension"
3089
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02003090# Tests for keyUsage in leaf certificates, part 3:
3091# server-side checking of client cert
3092
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003093run_test "keyUsage cli-auth: RSA, DigitalSignature: OK" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003094 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02003095 "$O_CLI -key data_files/server2.key \
3096 -cert data_files/server2.ku-ds.crt" \
3097 0 \
3098 -S "bad certificate (usage extensions)" \
3099 -S "Processing of the Certificate handshake message failed"
3100
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003101run_test "keyUsage cli-auth: RSA, KeyEncipherment: fail (soft)" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003102 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02003103 "$O_CLI -key data_files/server2.key \
3104 -cert data_files/server2.ku-ke.crt" \
3105 0 \
3106 -s "bad certificate (usage extensions)" \
3107 -S "Processing of the Certificate handshake message failed"
3108
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003109run_test "keyUsage cli-auth: RSA, KeyEncipherment: fail (hard)" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003110 "$P_SRV debug_level=1 auth_mode=required" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02003111 "$O_CLI -key data_files/server2.key \
3112 -cert data_files/server2.ku-ke.crt" \
3113 1 \
3114 -s "bad certificate (usage extensions)" \
3115 -s "Processing of the Certificate handshake message failed"
3116
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003117run_test "keyUsage cli-auth: ECDSA, DigitalSignature: OK" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003118 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02003119 "$O_CLI -key data_files/server5.key \
3120 -cert data_files/server5.ku-ds.crt" \
3121 0 \
3122 -S "bad certificate (usage extensions)" \
3123 -S "Processing of the Certificate handshake message failed"
3124
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003125run_test "keyUsage cli-auth: ECDSA, KeyAgreement: fail (soft)" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003126 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02003127 "$O_CLI -key data_files/server5.key \
3128 -cert data_files/server5.ku-ka.crt" \
3129 0 \
3130 -s "bad certificate (usage extensions)" \
3131 -S "Processing of the Certificate handshake message failed"
3132
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02003133# Tests for extendedKeyUsage, part 1: server-side certificate/suite selection
3134
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003135run_test "extKeyUsage srv: serverAuth -> OK" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02003136 "$P_SRV key_file=data_files/server5.key \
3137 crt_file=data_files/server5.eku-srv.crt" \
3138 "$P_CLI" \
3139 0
3140
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003141run_test "extKeyUsage srv: serverAuth,clientAuth -> OK" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02003142 "$P_SRV key_file=data_files/server5.key \
3143 crt_file=data_files/server5.eku-srv.crt" \
3144 "$P_CLI" \
3145 0
3146
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003147run_test "extKeyUsage srv: codeSign,anyEKU -> OK" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02003148 "$P_SRV key_file=data_files/server5.key \
3149 crt_file=data_files/server5.eku-cs_any.crt" \
3150 "$P_CLI" \
3151 0
3152
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003153run_test "extKeyUsage srv: codeSign -> fail" \
Manuel Pégourié-Gonnard7eb58cb2015-07-07 11:54:14 +02003154 "$P_SRV key_file=data_files/server5.key \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02003155 crt_file=data_files/server5.eku-cli.crt" \
Manuel Pégourié-Gonnard7eb58cb2015-07-07 11:54:14 +02003156 "$P_CLI" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02003157 1
3158
3159# Tests for extendedKeyUsage, part 2: client-side checking of server cert
3160
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003161run_test "extKeyUsage cli: serverAuth -> OK" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02003162 "$O_SRV -key data_files/server5.key \
3163 -cert data_files/server5.eku-srv.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003164 "$P_CLI debug_level=1" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02003165 0 \
3166 -C "bad certificate (usage extensions)" \
3167 -C "Processing of the Certificate handshake message failed" \
3168 -c "Ciphersuite is TLS-"
3169
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003170run_test "extKeyUsage cli: serverAuth,clientAuth -> OK" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02003171 "$O_SRV -key data_files/server5.key \
3172 -cert data_files/server5.eku-srv_cli.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003173 "$P_CLI debug_level=1" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02003174 0 \
3175 -C "bad certificate (usage extensions)" \
3176 -C "Processing of the Certificate handshake message failed" \
3177 -c "Ciphersuite is TLS-"
3178
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003179run_test "extKeyUsage cli: codeSign,anyEKU -> OK" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02003180 "$O_SRV -key data_files/server5.key \
3181 -cert data_files/server5.eku-cs_any.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003182 "$P_CLI debug_level=1" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02003183 0 \
3184 -C "bad certificate (usage extensions)" \
3185 -C "Processing of the Certificate handshake message failed" \
3186 -c "Ciphersuite is TLS-"
3187
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003188run_test "extKeyUsage cli: codeSign -> fail" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02003189 "$O_SRV -key data_files/server5.key \
3190 -cert data_files/server5.eku-cs.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003191 "$P_CLI debug_level=1" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02003192 1 \
3193 -c "bad certificate (usage extensions)" \
3194 -c "Processing of the Certificate handshake message failed" \
3195 -C "Ciphersuite is TLS-"
3196
3197# Tests for extendedKeyUsage, part 3: server-side checking of client cert
3198
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003199run_test "extKeyUsage cli-auth: clientAuth -> OK" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003200 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02003201 "$O_CLI -key data_files/server5.key \
3202 -cert data_files/server5.eku-cli.crt" \
3203 0 \
3204 -S "bad certificate (usage extensions)" \
3205 -S "Processing of the Certificate handshake message failed"
3206
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003207run_test "extKeyUsage cli-auth: serverAuth,clientAuth -> OK" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003208 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02003209 "$O_CLI -key data_files/server5.key \
3210 -cert data_files/server5.eku-srv_cli.crt" \
3211 0 \
3212 -S "bad certificate (usage extensions)" \
3213 -S "Processing of the Certificate handshake message failed"
3214
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003215run_test "extKeyUsage cli-auth: codeSign,anyEKU -> OK" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003216 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02003217 "$O_CLI -key data_files/server5.key \
3218 -cert data_files/server5.eku-cs_any.crt" \
3219 0 \
3220 -S "bad certificate (usage extensions)" \
3221 -S "Processing of the Certificate handshake message failed"
3222
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003223run_test "extKeyUsage cli-auth: codeSign -> fail (soft)" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003224 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02003225 "$O_CLI -key data_files/server5.key \
3226 -cert data_files/server5.eku-cs.crt" \
3227 0 \
3228 -s "bad certificate (usage extensions)" \
3229 -S "Processing of the Certificate handshake message failed"
3230
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003231run_test "extKeyUsage cli-auth: codeSign -> fail (hard)" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003232 "$P_SRV debug_level=1 auth_mode=required" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02003233 "$O_CLI -key data_files/server5.key \
3234 -cert data_files/server5.eku-cs.crt" \
3235 1 \
3236 -s "bad certificate (usage extensions)" \
3237 -s "Processing of the Certificate handshake message failed"
3238
Manuel Pégourié-Gonnard0cc7e312014-06-09 11:36:47 +02003239# Tests for DHM parameters loading
3240
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003241run_test "DHM parameters: reference" \
Manuel Pégourié-Gonnard0cc7e312014-06-09 11:36:47 +02003242 "$P_SRV" \
3243 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
3244 debug_level=3" \
3245 0 \
3246 -c "value of 'DHM: P ' (2048 bits)" \
Hanno Becker80e0d462017-10-13 16:51:54 +01003247 -c "value of 'DHM: G ' (2 bits)"
Manuel Pégourié-Gonnard0cc7e312014-06-09 11:36:47 +02003248
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003249run_test "DHM parameters: other parameters" \
Manuel Pégourié-Gonnard0cc7e312014-06-09 11:36:47 +02003250 "$P_SRV dhm_file=data_files/dhparams.pem" \
3251 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
3252 debug_level=3" \
3253 0 \
3254 -c "value of 'DHM: P ' (1024 bits)" \
3255 -c "value of 'DHM: G ' (2 bits)"
3256
Manuel Pégourié-Gonnard7a010aa2015-06-12 11:19:10 +02003257# Tests for DHM client-side size checking
3258
3259run_test "DHM size: server default, client default, OK" \
3260 "$P_SRV" \
3261 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
3262 debug_level=1" \
3263 0 \
3264 -C "DHM prime too short:"
3265
3266run_test "DHM size: server default, client 2048, OK" \
3267 "$P_SRV" \
3268 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
3269 debug_level=1 dhmlen=2048" \
3270 0 \
3271 -C "DHM prime too short:"
3272
3273run_test "DHM size: server 1024, client default, OK" \
3274 "$P_SRV dhm_file=data_files/dhparams.pem" \
3275 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
3276 debug_level=1" \
3277 0 \
3278 -C "DHM prime too short:"
3279
3280run_test "DHM size: server 1000, client default, rejected" \
3281 "$P_SRV dhm_file=data_files/dh.1000.pem" \
3282 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
3283 debug_level=1" \
3284 1 \
3285 -c "DHM prime too short:"
3286
3287run_test "DHM size: server default, client 2049, rejected" \
3288 "$P_SRV" \
3289 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
3290 debug_level=1 dhmlen=2049" \
3291 1 \
3292 -c "DHM prime too short:"
3293
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02003294# Tests for PSK callback
3295
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003296run_test "PSK callback: psk, no callback" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02003297 "$P_SRV psk=abc123 psk_identity=foo" \
3298 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
3299 psk_identity=foo psk=abc123" \
3300 0 \
Manuel Pégourié-Gonnardf01768c2015-01-08 17:06:16 +01003301 -S "SSL - None of the common ciphersuites is usable" \
Manuel Pégourié-Gonnard10c3c9f2014-06-10 15:28:52 +02003302 -S "SSL - Unknown identity received" \
3303 -S "SSL - Verification of the message MAC failed"
3304
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003305run_test "PSK callback: no psk, no callback" \
Manuel Pégourié-Gonnard10c3c9f2014-06-10 15:28:52 +02003306 "$P_SRV" \
3307 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
3308 psk_identity=foo psk=abc123" \
3309 1 \
Manuel Pégourié-Gonnardf01768c2015-01-08 17:06:16 +01003310 -s "SSL - None of the common ciphersuites is usable" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02003311 -S "SSL - Unknown identity received" \
3312 -S "SSL - Verification of the message MAC failed"
3313
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003314run_test "PSK callback: callback overrides other settings" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02003315 "$P_SRV psk=abc123 psk_identity=foo psk_list=abc,dead,def,beef" \
3316 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
3317 psk_identity=foo psk=abc123" \
3318 1 \
Manuel Pégourié-Gonnardf01768c2015-01-08 17:06:16 +01003319 -S "SSL - None of the common ciphersuites is usable" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02003320 -s "SSL - Unknown identity received" \
3321 -S "SSL - Verification of the message MAC failed"
3322
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003323run_test "PSK callback: first id matches" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02003324 "$P_SRV psk_list=abc,dead,def,beef" \
3325 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
3326 psk_identity=abc psk=dead" \
3327 0 \
Manuel Pégourié-Gonnardf01768c2015-01-08 17:06:16 +01003328 -S "SSL - None of the common ciphersuites is usable" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02003329 -S "SSL - Unknown identity received" \
3330 -S "SSL - Verification of the message MAC failed"
3331
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003332run_test "PSK callback: second id matches" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02003333 "$P_SRV psk_list=abc,dead,def,beef" \
3334 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
3335 psk_identity=def psk=beef" \
3336 0 \
Manuel Pégourié-Gonnardf01768c2015-01-08 17:06:16 +01003337 -S "SSL - None of the common ciphersuites is usable" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02003338 -S "SSL - Unknown identity received" \
3339 -S "SSL - Verification of the message MAC failed"
3340
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003341run_test "PSK callback: no match" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02003342 "$P_SRV psk_list=abc,dead,def,beef" \
3343 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
3344 psk_identity=ghi psk=beef" \
3345 1 \
Manuel Pégourié-Gonnardf01768c2015-01-08 17:06:16 +01003346 -S "SSL - None of the common ciphersuites is usable" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02003347 -s "SSL - Unknown identity received" \
3348 -S "SSL - Verification of the message MAC failed"
3349
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003350run_test "PSK callback: wrong key" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02003351 "$P_SRV psk_list=abc,dead,def,beef" \
3352 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
3353 psk_identity=abc psk=beef" \
3354 1 \
Manuel Pégourié-Gonnardf01768c2015-01-08 17:06:16 +01003355 -S "SSL - None of the common ciphersuites is usable" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02003356 -S "SSL - Unknown identity received" \
3357 -s "SSL - Verification of the message MAC failed"
Manuel Pégourié-Gonnard0cc7e312014-06-09 11:36:47 +02003358
Manuel Pégourié-Gonnard90805a82014-06-11 14:06:01 +02003359# Tests for ciphersuites per version
3360
Janos Follath542ee5d2016-03-07 15:57:05 +00003361requires_config_enabled MBEDTLS_SSL_PROTO_SSL3
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003362run_test "Per-version suites: SSL3" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01003363 "$P_SRV min_version=ssl3 version_suites=TLS-RSA-WITH-3DES-EDE-CBC-SHA,TLS-RSA-WITH-AES-256-CBC-SHA,TLS-RSA-WITH-AES-128-CBC-SHA,TLS-RSA-WITH-AES-128-GCM-SHA256" \
Manuel Pégourié-Gonnard90805a82014-06-11 14:06:01 +02003364 "$P_CLI force_version=ssl3" \
3365 0 \
3366 -c "Ciphersuite is TLS-RSA-WITH-3DES-EDE-CBC-SHA"
3367
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003368run_test "Per-version suites: TLS 1.0" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01003369 "$P_SRV arc4=1 version_suites=TLS-RSA-WITH-3DES-EDE-CBC-SHA,TLS-RSA-WITH-AES-256-CBC-SHA,TLS-RSA-WITH-AES-128-CBC-SHA,TLS-RSA-WITH-AES-128-GCM-SHA256" \
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +01003370 "$P_CLI force_version=tls1 arc4=1" \
Manuel Pégourié-Gonnard90805a82014-06-11 14:06:01 +02003371 0 \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01003372 -c "Ciphersuite is TLS-RSA-WITH-AES-256-CBC-SHA"
Manuel Pégourié-Gonnard90805a82014-06-11 14:06:01 +02003373
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003374run_test "Per-version suites: TLS 1.1" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01003375 "$P_SRV version_suites=TLS-RSA-WITH-3DES-EDE-CBC-SHA,TLS-RSA-WITH-AES-256-CBC-SHA,TLS-RSA-WITH-AES-128-CBC-SHA,TLS-RSA-WITH-AES-128-GCM-SHA256" \
Manuel Pégourié-Gonnard90805a82014-06-11 14:06:01 +02003376 "$P_CLI force_version=tls1_1" \
3377 0 \
3378 -c "Ciphersuite is TLS-RSA-WITH-AES-128-CBC-SHA"
3379
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003380run_test "Per-version suites: TLS 1.2" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01003381 "$P_SRV version_suites=TLS-RSA-WITH-3DES-EDE-CBC-SHA,TLS-RSA-WITH-AES-256-CBC-SHA,TLS-RSA-WITH-AES-128-CBC-SHA,TLS-RSA-WITH-AES-128-GCM-SHA256" \
Manuel Pégourié-Gonnard90805a82014-06-11 14:06:01 +02003382 "$P_CLI force_version=tls1_2" \
3383 0 \
3384 -c "Ciphersuite is TLS-RSA-WITH-AES-128-GCM-SHA256"
3385
Manuel Pégourié-Gonnard4cc8c632015-07-23 12:24:03 +02003386# Test for ClientHello without extensions
3387
Manuel Pégourié-Gonnardd55bc202015-08-04 16:22:30 +02003388requires_gnutls
Gilles Peskine7344e1b2017-05-12 13:16:40 +02003389run_test "ClientHello without extensions, SHA-1 allowed" \
Manuel Pégourié-Gonnard4cc8c632015-07-23 12:24:03 +02003390 "$P_SRV debug_level=3" \
3391 "$G_CLI --priority=NORMAL:%NO_EXTENSIONS:%DISABLE_SAFE_RENEGOTIATION" \
3392 0 \
3393 -s "dumping 'client hello extensions' (0 bytes)"
3394
Gilles Peskine7344e1b2017-05-12 13:16:40 +02003395requires_gnutls
3396run_test "ClientHello without extensions, SHA-1 forbidden in certificates on server" \
3397 "$P_SRV debug_level=3 key_file=data_files/server2.key crt_file=data_files/server2.crt allow_sha1=0" \
3398 "$G_CLI --priority=NORMAL:%NO_EXTENSIONS:%DISABLE_SAFE_RENEGOTIATION" \
3399 0 \
3400 -s "dumping 'client hello extensions' (0 bytes)"
3401
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003402# Tests for mbedtls_ssl_get_bytes_avail()
Manuel Pégourié-Gonnard95c0a632014-06-11 18:32:36 +02003403
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003404run_test "mbedtls_ssl_get_bytes_avail: no extra data" \
Manuel Pégourié-Gonnard95c0a632014-06-11 18:32:36 +02003405 "$P_SRV" \
3406 "$P_CLI request_size=100" \
3407 0 \
3408 -s "Read from client: 100 bytes read$"
3409
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02003410run_test "mbedtls_ssl_get_bytes_avail: extra data" \
Manuel Pégourié-Gonnard95c0a632014-06-11 18:32:36 +02003411 "$P_SRV" \
3412 "$P_CLI request_size=500" \
3413 0 \
3414 -s "Read from client: 500 bytes read (.*+.*)"
Manuel Pégourié-Gonnard90805a82014-06-11 14:06:01 +02003415
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003416# Tests for small client packets
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003417
Janos Follath542ee5d2016-03-07 15:57:05 +00003418requires_config_enabled MBEDTLS_SSL_PROTO_SSL3
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003419run_test "Small client packet SSLv3 BlockCipher" \
Manuel Pégourié-Gonnard448ea502015-01-12 11:40:14 +01003420 "$P_SRV min_version=ssl3" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003421 "$P_CLI request_size=1 force_version=ssl3 \
3422 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
3423 0 \
3424 -s "Read from client: 1 bytes read"
3425
Janos Follath542ee5d2016-03-07 15:57:05 +00003426requires_config_enabled MBEDTLS_SSL_PROTO_SSL3
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003427run_test "Small client packet SSLv3 StreamCipher" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01003428 "$P_SRV min_version=ssl3 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003429 "$P_CLI request_size=1 force_version=ssl3 \
3430 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
3431 0 \
3432 -s "Read from client: 1 bytes read"
3433
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003434run_test "Small client packet TLS 1.0 BlockCipher" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003435 "$P_SRV" \
3436 "$P_CLI request_size=1 force_version=tls1 \
3437 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
3438 0 \
3439 -s "Read from client: 1 bytes read"
3440
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003441run_test "Small client packet TLS 1.0 BlockCipher, without EtM" \
Manuel Pégourié-Gonnard169dd6a2014-11-04 16:15:39 +01003442 "$P_SRV" \
3443 "$P_CLI request_size=1 force_version=tls1 etm=0 \
3444 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
3445 0 \
3446 -s "Read from client: 1 bytes read"
3447
Hanno Beckera83fafa2017-11-10 08:42:54 +00003448requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003449run_test "Small client packet TLS 1.0 BlockCipher, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003450 "$P_SRV trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003451 "$P_CLI request_size=1 force_version=tls1 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003452 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003453 0 \
3454 -s "Read from client: 1 bytes read"
3455
Hanno Beckera83fafa2017-11-10 08:42:54 +00003456requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003457run_test "Small client packet TLS 1.0 BlockCipher, without EtM, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003458 "$P_SRV trunc_hmac=1" \
Hanno Becker7aae46c2017-11-10 08:59:04 +00003459 "$P_CLI request_size=1 force_version=tls1 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003460 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
Hanno Becker7aae46c2017-11-10 08:59:04 +00003461 0 \
3462 -s "Read from client: 1 bytes read"
3463
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003464run_test "Small client packet TLS 1.0 StreamCipher" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01003465 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003466 "$P_CLI request_size=1 force_version=tls1 \
Hanno Becker7aae46c2017-11-10 08:59:04 +00003467 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
3468 0 \
3469 -s "Read from client: 1 bytes read"
3470
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003471run_test "Small client packet TLS 1.0 StreamCipher, without EtM" \
Hanno Becker7aae46c2017-11-10 08:59:04 +00003472 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
3473 "$P_CLI request_size=1 force_version=tls1 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003474 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
Hanno Becker7aae46c2017-11-10 08:59:04 +00003475 0 \
3476 -s "Read from client: 1 bytes read"
3477
3478requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003479run_test "Small client packet TLS 1.0 StreamCipher, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003480 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003481 "$P_CLI request_size=1 force_version=tls1 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003482 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003483 0 \
3484 -s "Read from client: 1 bytes read"
3485
Hanno Becker7aae46c2017-11-10 08:59:04 +00003486requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003487run_test "Small client packet TLS 1.0 StreamCipher, without EtM, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003488 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
3489 "$P_CLI request_size=1 force_version=tls1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA \
3490 trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003491 0 \
3492 -s "Read from client: 1 bytes read"
3493
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003494run_test "Small client packet TLS 1.1 BlockCipher" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003495 "$P_SRV" \
3496 "$P_CLI request_size=1 force_version=tls1_1 \
3497 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
3498 0 \
3499 -s "Read from client: 1 bytes read"
3500
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003501run_test "Small client packet TLS 1.1 BlockCipher, without EtM" \
Manuel Pégourié-Gonnard169dd6a2014-11-04 16:15:39 +01003502 "$P_SRV" \
Hanno Becker7aae46c2017-11-10 08:59:04 +00003503 "$P_CLI request_size=1 force_version=tls1_1 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003504 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA etm=0" \
Hanno Becker7aae46c2017-11-10 08:59:04 +00003505 0 \
3506 -s "Read from client: 1 bytes read"
3507
3508requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003509run_test "Small client packet TLS 1.1 BlockCipher, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003510 "$P_SRV trunc_hmac=1" \
Hanno Becker7aae46c2017-11-10 08:59:04 +00003511 "$P_CLI request_size=1 force_version=tls1_1 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003512 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
Hanno Becker7aae46c2017-11-10 08:59:04 +00003513 0 \
3514 -s "Read from client: 1 bytes read"
3515
3516requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003517run_test "Small client packet TLS 1.1 BlockCipher, without EtM, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003518 "$P_SRV trunc_hmac=1" \
Hanno Becker7aae46c2017-11-10 08:59:04 +00003519 "$P_CLI request_size=1 force_version=tls1_1 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003520 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnard169dd6a2014-11-04 16:15:39 +01003521 0 \
3522 -s "Read from client: 1 bytes read"
3523
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003524run_test "Small client packet TLS 1.1 StreamCipher" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01003525 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003526 "$P_CLI request_size=1 force_version=tls1_1 \
3527 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
3528 0 \
3529 -s "Read from client: 1 bytes read"
3530
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003531run_test "Small client packet TLS 1.1 StreamCipher, without EtM" \
Hanno Becker7aae46c2017-11-10 08:59:04 +00003532 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003533 "$P_CLI request_size=1 force_version=tls1_1 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003534 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003535 0 \
3536 -s "Read from client: 1 bytes read"
3537
Hanno Becker7aae46c2017-11-10 08:59:04 +00003538requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003539run_test "Small client packet TLS 1.1 StreamCipher, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003540 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003541 "$P_CLI request_size=1 force_version=tls1_1 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003542 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003543 0 \
3544 -s "Read from client: 1 bytes read"
3545
Hanno Beckera83fafa2017-11-10 08:42:54 +00003546requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003547run_test "Small client packet TLS 1.1 StreamCipher, without EtM, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003548 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003549 "$P_CLI request_size=1 force_version=tls1_1 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003550 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003551 0 \
3552 -s "Read from client: 1 bytes read"
3553
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003554run_test "Small client packet TLS 1.2 BlockCipher" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003555 "$P_SRV" \
3556 "$P_CLI request_size=1 force_version=tls1_2 \
3557 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
3558 0 \
3559 -s "Read from client: 1 bytes read"
3560
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003561run_test "Small client packet TLS 1.2 BlockCipher, without EtM" \
Manuel Pégourié-Gonnard169dd6a2014-11-04 16:15:39 +01003562 "$P_SRV" \
Hanno Becker7aae46c2017-11-10 08:59:04 +00003563 "$P_CLI request_size=1 force_version=tls1_2 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003564 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA etm=0" \
Manuel Pégourié-Gonnard169dd6a2014-11-04 16:15:39 +01003565 0 \
3566 -s "Read from client: 1 bytes read"
3567
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003568run_test "Small client packet TLS 1.2 BlockCipher larger MAC" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003569 "$P_SRV" \
Manuel Pégourié-Gonnardc82ee352015-01-07 16:35:25 +01003570 "$P_CLI request_size=1 force_version=tls1_2 \
3571 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003572 0 \
3573 -s "Read from client: 1 bytes read"
3574
Hanno Beckera83fafa2017-11-10 08:42:54 +00003575requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003576run_test "Small client packet TLS 1.2 BlockCipher, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003577 "$P_SRV trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003578 "$P_CLI request_size=1 force_version=tls1_2 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003579 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003580 0 \
3581 -s "Read from client: 1 bytes read"
3582
Hanno Becker7aae46c2017-11-10 08:59:04 +00003583requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003584run_test "Small client packet TLS 1.2 BlockCipher, without EtM, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003585 "$P_SRV trunc_hmac=1" \
Hanno Becker7aae46c2017-11-10 08:59:04 +00003586 "$P_CLI request_size=1 force_version=tls1_2 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003587 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003588 0 \
3589 -s "Read from client: 1 bytes read"
3590
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003591run_test "Small client packet TLS 1.2 StreamCipher" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01003592 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003593 "$P_CLI request_size=1 force_version=tls1_2 \
3594 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
3595 0 \
3596 -s "Read from client: 1 bytes read"
3597
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003598run_test "Small client packet TLS 1.2 StreamCipher, without EtM" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01003599 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003600 "$P_CLI request_size=1 force_version=tls1_2 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003601 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
Hanno Becker7aae46c2017-11-10 08:59:04 +00003602 0 \
3603 -s "Read from client: 1 bytes read"
3604
Hanno Beckera83fafa2017-11-10 08:42:54 +00003605requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003606run_test "Small client packet TLS 1.2 StreamCipher, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003607 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003608 "$P_CLI request_size=1 force_version=tls1_2 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003609 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003610 0 \
3611 -s "Read from client: 1 bytes read"
3612
Hanno Becker7aae46c2017-11-10 08:59:04 +00003613requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003614run_test "Small client packet TLS 1.2 StreamCipher, without EtM, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003615 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Hanno Becker7aae46c2017-11-10 08:59:04 +00003616 "$P_CLI request_size=1 force_version=tls1_2 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003617 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003618 0 \
3619 -s "Read from client: 1 bytes read"
3620
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003621run_test "Small client packet TLS 1.2 AEAD" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003622 "$P_SRV" \
3623 "$P_CLI request_size=1 force_version=tls1_2 \
3624 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \
3625 0 \
3626 -s "Read from client: 1 bytes read"
3627
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003628run_test "Small client packet TLS 1.2 AEAD shorter tag" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02003629 "$P_SRV" \
3630 "$P_CLI request_size=1 force_version=tls1_2 \
3631 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \
3632 0 \
3633 -s "Read from client: 1 bytes read"
3634
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003635# Tests for small client packets in DTLS
Hanno Becker461cb812017-11-10 08:59:18 +00003636
3637requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003638run_test "Small client packet DTLS 1.0" \
Hanno Becker461cb812017-11-10 08:59:18 +00003639 "$P_SRV dtls=1 force_version=dtls1" \
3640 "$P_CLI dtls=1 request_size=1 \
3641 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
3642 0 \
3643 -s "Read from client: 1 bytes read"
3644
3645requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003646run_test "Small client packet DTLS 1.0, without EtM" \
Hanno Becker461cb812017-11-10 08:59:18 +00003647 "$P_SRV dtls=1 force_version=dtls1 etm=0" \
3648 "$P_CLI dtls=1 request_size=1 \
3649 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
3650 0 \
3651 -s "Read from client: 1 bytes read"
3652
3653requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
3654requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003655run_test "Small client packet DTLS 1.0, truncated hmac" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003656 "$P_SRV dtls=1 force_version=dtls1 trunc_hmac=1" \
3657 "$P_CLI dtls=1 request_size=1 trunc_hmac=1 \
Hanno Becker461cb812017-11-10 08:59:18 +00003658 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
3659 0 \
3660 -s "Read from client: 1 bytes read"
3661
3662requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
3663requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003664run_test "Small client packet DTLS 1.0, without EtM, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003665 "$P_SRV dtls=1 force_version=dtls1 trunc_hmac=1 etm=0" \
Hanno Becker461cb812017-11-10 08:59:18 +00003666 "$P_CLI dtls=1 request_size=1 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003667 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1"\
Hanno Becker461cb812017-11-10 08:59:18 +00003668 0 \
3669 -s "Read from client: 1 bytes read"
3670
3671requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003672run_test "Small client packet DTLS 1.2" \
Hanno Becker461cb812017-11-10 08:59:18 +00003673 "$P_SRV dtls=1 force_version=dtls1_2" \
3674 "$P_CLI dtls=1 request_size=1 \
3675 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
3676 0 \
3677 -s "Read from client: 1 bytes read"
3678
3679requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003680run_test "Small client packet DTLS 1.2, without EtM" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003681 "$P_SRV dtls=1 force_version=dtls1_2 etm=0" \
Hanno Becker461cb812017-11-10 08:59:18 +00003682 "$P_CLI dtls=1 request_size=1 \
3683 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
3684 0 \
3685 -s "Read from client: 1 bytes read"
3686
3687requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
3688requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003689run_test "Small client packet DTLS 1.2, truncated hmac" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003690 "$P_SRV dtls=1 force_version=dtls1_2 trunc_hmac=1" \
Hanno Becker461cb812017-11-10 08:59:18 +00003691 "$P_CLI dtls=1 request_size=1 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003692 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
Hanno Becker461cb812017-11-10 08:59:18 +00003693 0 \
3694 -s "Read from client: 1 bytes read"
3695
3696requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
3697requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003698run_test "Small client packet DTLS 1.2, without EtM, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003699 "$P_SRV dtls=1 force_version=dtls1_2 trunc_hmac=1 etm=0" \
Hanno Becker461cb812017-11-10 08:59:18 +00003700 "$P_CLI dtls=1 request_size=1 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00003701 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1"\
Hanno Becker461cb812017-11-10 08:59:18 +00003702 0 \
3703 -s "Read from client: 1 bytes read"
3704
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04003705# Tests for small server packets
3706
3707requires_config_enabled MBEDTLS_SSL_PROTO_SSL3
3708run_test "Small server packet SSLv3 BlockCipher" \
3709 "$P_SRV response_size=1 min_version=ssl3" \
3710 "$P_CLI force_version=ssl3 \
3711 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
3712 0 \
3713 -c "Read from server: 1 bytes read"
3714
3715requires_config_enabled MBEDTLS_SSL_PROTO_SSL3
3716run_test "Small server packet SSLv3 StreamCipher" \
3717 "$P_SRV response_size=1 min_version=ssl3 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
3718 "$P_CLI force_version=ssl3 \
3719 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
3720 0 \
3721 -c "Read from server: 1 bytes read"
3722
3723run_test "Small server packet TLS 1.0 BlockCipher" \
3724 "$P_SRV response_size=1" \
3725 "$P_CLI force_version=tls1 \
3726 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
3727 0 \
3728 -c "Read from server: 1 bytes read"
3729
3730run_test "Small server packet TLS 1.0 BlockCipher, without EtM" \
3731 "$P_SRV response_size=1" \
3732 "$P_CLI force_version=tls1 etm=0 \
3733 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
3734 0 \
3735 -c "Read from server: 1 bytes read"
3736
3737requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
3738run_test "Small server packet TLS 1.0 BlockCipher, truncated MAC" \
3739 "$P_SRV response_size=1 trunc_hmac=1" \
3740 "$P_CLI force_version=tls1 \
3741 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
3742 0 \
3743 -c "Read from server: 1 bytes read"
3744
3745requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
3746run_test "Small server packet TLS 1.0 BlockCipher, without EtM, truncated MAC" \
3747 "$P_SRV response_size=1 trunc_hmac=1" \
3748 "$P_CLI force_version=tls1 \
3749 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
3750 0 \
3751 -c "Read from server: 1 bytes read"
3752
3753run_test "Small server packet TLS 1.0 StreamCipher" \
3754 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
3755 "$P_CLI force_version=tls1 \
3756 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
3757 0 \
3758 -c "Read from server: 1 bytes read"
3759
3760run_test "Small server packet TLS 1.0 StreamCipher, without EtM" \
3761 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
3762 "$P_CLI force_version=tls1 \
3763 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
3764 0 \
3765 -c "Read from server: 1 bytes read"
3766
3767requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
3768run_test "Small server packet TLS 1.0 StreamCipher, truncated MAC" \
3769 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
3770 "$P_CLI force_version=tls1 \
3771 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
3772 0 \
3773 -c "Read from server: 1 bytes read"
3774
3775requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
3776run_test "Small server packet TLS 1.0 StreamCipher, without EtM, truncated MAC" \
3777 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
3778 "$P_CLI force_version=tls1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA \
3779 trunc_hmac=1 etm=0" \
3780 0 \
3781 -c "Read from server: 1 bytes read"
3782
3783run_test "Small server packet TLS 1.1 BlockCipher" \
3784 "$P_SRV response_size=1" \
3785 "$P_CLI force_version=tls1_1 \
3786 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
3787 0 \
3788 -c "Read from server: 1 bytes read"
3789
3790run_test "Small server packet TLS 1.1 BlockCipher, without EtM" \
3791 "$P_SRV response_size=1" \
3792 "$P_CLI force_version=tls1_1 \
3793 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA etm=0" \
3794 0 \
3795 -c "Read from server: 1 bytes read"
3796
3797requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
3798run_test "Small server packet TLS 1.1 BlockCipher, truncated MAC" \
3799 "$P_SRV response_size=1 trunc_hmac=1" \
3800 "$P_CLI force_version=tls1_1 \
3801 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
3802 0 \
3803 -c "Read from server: 1 bytes read"
3804
3805requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
3806run_test "Small server packet TLS 1.1 BlockCipher, without EtM, truncated MAC" \
3807 "$P_SRV response_size=1 trunc_hmac=1" \
3808 "$P_CLI force_version=tls1_1 \
3809 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
3810 0 \
3811 -c "Read from server: 1 bytes read"
3812
3813run_test "Small server packet TLS 1.1 StreamCipher" \
3814 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
3815 "$P_CLI force_version=tls1_1 \
3816 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
3817 0 \
3818 -c "Read from server: 1 bytes read"
3819
3820run_test "Small server packet TLS 1.1 StreamCipher, without EtM" \
3821 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
3822 "$P_CLI force_version=tls1_1 \
3823 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
3824 0 \
3825 -c "Read from server: 1 bytes read"
3826
3827requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
3828run_test "Small server packet TLS 1.1 StreamCipher, truncated MAC" \
3829 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
3830 "$P_CLI force_version=tls1_1 \
3831 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
3832 0 \
3833 -c "Read from server: 1 bytes read"
3834
3835requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
3836run_test "Small server packet TLS 1.1 StreamCipher, without EtM, truncated MAC" \
3837 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
3838 "$P_CLI force_version=tls1_1 \
3839 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
3840 0 \
3841 -c "Read from server: 1 bytes read"
3842
3843run_test "Small server packet TLS 1.2 BlockCipher" \
3844 "$P_SRV response_size=1" \
3845 "$P_CLI force_version=tls1_2 \
3846 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
3847 0 \
3848 -c "Read from server: 1 bytes read"
3849
3850run_test "Small server packet TLS 1.2 BlockCipher, without EtM" \
3851 "$P_SRV response_size=1" \
3852 "$P_CLI force_version=tls1_2 \
3853 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA etm=0" \
3854 0 \
3855 -c "Read from server: 1 bytes read"
3856
3857run_test "Small server packet TLS 1.2 BlockCipher larger MAC" \
3858 "$P_SRV response_size=1" \
3859 "$P_CLI force_version=tls1_2 \
3860 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \
3861 0 \
3862 -c "Read from server: 1 bytes read"
3863
3864requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
3865run_test "Small server packet TLS 1.2 BlockCipher, truncated MAC" \
3866 "$P_SRV response_size=1 trunc_hmac=1" \
3867 "$P_CLI force_version=tls1_2 \
3868 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
3869 0 \
3870 -c "Read from server: 1 bytes read"
3871
3872requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
3873run_test "Small server packet TLS 1.2 BlockCipher, without EtM, truncated MAC" \
3874 "$P_SRV response_size=1 trunc_hmac=1" \
3875 "$P_CLI force_version=tls1_2 \
3876 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
3877 0 \
3878 -c "Read from server: 1 bytes read"
3879
3880run_test "Small server packet TLS 1.2 StreamCipher" \
3881 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
3882 "$P_CLI force_version=tls1_2 \
3883 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
3884 0 \
3885 -c "Read from server: 1 bytes read"
3886
3887run_test "Small server packet TLS 1.2 StreamCipher, without EtM" \
3888 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
3889 "$P_CLI force_version=tls1_2 \
3890 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
3891 0 \
3892 -c "Read from server: 1 bytes read"
3893
3894requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
3895run_test "Small server packet TLS 1.2 StreamCipher, truncated MAC" \
3896 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
3897 "$P_CLI force_version=tls1_2 \
3898 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
3899 0 \
3900 -c "Read from server: 1 bytes read"
3901
3902requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
3903run_test "Small server packet TLS 1.2 StreamCipher, without EtM, truncated MAC" \
3904 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
3905 "$P_CLI force_version=tls1_2 \
3906 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
3907 0 \
3908 -c "Read from server: 1 bytes read"
3909
3910run_test "Small server packet TLS 1.2 AEAD" \
3911 "$P_SRV response_size=1" \
3912 "$P_CLI force_version=tls1_2 \
3913 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \
3914 0 \
3915 -c "Read from server: 1 bytes read"
3916
3917run_test "Small server packet TLS 1.2 AEAD shorter tag" \
3918 "$P_SRV response_size=1" \
3919 "$P_CLI force_version=tls1_2 \
3920 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \
3921 0 \
3922 -c "Read from server: 1 bytes read"
3923
3924# Tests for small server packets in DTLS
3925
3926requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
3927run_test "Small server packet DTLS 1.0" \
3928 "$P_SRV dtls=1 response_size=1 force_version=dtls1" \
3929 "$P_CLI dtls=1 \
3930 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
3931 0 \
3932 -c "Read from server: 1 bytes read"
3933
3934requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
3935run_test "Small server packet DTLS 1.0, without EtM" \
3936 "$P_SRV dtls=1 response_size=1 force_version=dtls1 etm=0" \
3937 "$P_CLI dtls=1 \
3938 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
3939 0 \
3940 -c "Read from server: 1 bytes read"
3941
3942requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
3943requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
3944run_test "Small server packet DTLS 1.0, truncated hmac" \
3945 "$P_SRV dtls=1 response_size=1 force_version=dtls1 trunc_hmac=1" \
3946 "$P_CLI dtls=1 trunc_hmac=1 \
3947 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
3948 0 \
3949 -c "Read from server: 1 bytes read"
3950
3951requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
3952requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
3953run_test "Small server packet DTLS 1.0, without EtM, truncated MAC" \
3954 "$P_SRV dtls=1 response_size=1 force_version=dtls1 trunc_hmac=1 etm=0" \
3955 "$P_CLI dtls=1 \
3956 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1"\
3957 0 \
3958 -c "Read from server: 1 bytes read"
3959
3960requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
3961run_test "Small server packet DTLS 1.2" \
3962 "$P_SRV dtls=1 response_size=1 force_version=dtls1_2" \
3963 "$P_CLI dtls=1 \
3964 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
3965 0 \
3966 -c "Read from server: 1 bytes read"
3967
3968requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
3969run_test "Small server packet DTLS 1.2, without EtM" \
3970 "$P_SRV dtls=1 response_size=1 force_version=dtls1_2 etm=0" \
3971 "$P_CLI dtls=1 \
3972 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
3973 0 \
3974 -c "Read from server: 1 bytes read"
3975
3976requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
3977requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
3978run_test "Small server packet DTLS 1.2, truncated hmac" \
3979 "$P_SRV dtls=1 response_size=1 force_version=dtls1_2 trunc_hmac=1" \
3980 "$P_CLI dtls=1 \
3981 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
3982 0 \
3983 -c "Read from server: 1 bytes read"
3984
3985requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
3986requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
3987run_test "Small server packet DTLS 1.2, without EtM, truncated MAC" \
3988 "$P_SRV dtls=1 response_size=1 force_version=dtls1_2 trunc_hmac=1 etm=0" \
3989 "$P_CLI dtls=1 \
3990 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1"\
3991 0 \
3992 -c "Read from server: 1 bytes read"
3993
Janos Follathb700c462016-05-06 13:48:23 +01003994# A test for extensions in SSLv3
3995
3996requires_config_enabled MBEDTLS_SSL_PROTO_SSL3
3997run_test "SSLv3 with extensions, server side" \
3998 "$P_SRV min_version=ssl3 debug_level=3" \
3999 "$P_CLI force_version=ssl3 tickets=1 max_frag_len=4096 alpn=abc,1234" \
4000 0 \
4001 -S "dumping 'client hello extensions'" \
4002 -S "server hello, total extension length:"
4003
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004004# Test for large client packets
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004005
Janos Follath542ee5d2016-03-07 15:57:05 +00004006requires_config_enabled MBEDTLS_SSL_PROTO_SSL3
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004007run_test "Large client packet SSLv3 BlockCipher" \
Manuel Pégourié-Gonnard448ea502015-01-12 11:40:14 +01004008 "$P_SRV min_version=ssl3" \
Manuel Pégourié-Gonnardc82ee352015-01-07 16:35:25 +01004009 "$P_CLI request_size=16384 force_version=ssl3 recsplit=0 \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004010 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
4011 0 \
Hanno Becker0d885d32017-09-18 15:04:19 +01004012 -c "16384 bytes written in 1 fragments" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004013 -s "Read from client: 16384 bytes read"
4014
Janos Follath542ee5d2016-03-07 15:57:05 +00004015requires_config_enabled MBEDTLS_SSL_PROTO_SSL3
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004016run_test "Large client packet SSLv3 StreamCipher" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01004017 "$P_SRV min_version=ssl3 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004018 "$P_CLI request_size=16384 force_version=ssl3 \
4019 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
4020 0 \
Hanno Becker0d885d32017-09-18 15:04:19 +01004021 -c "16384 bytes written in 1 fragments" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004022 -s "Read from client: 16384 bytes read"
4023
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004024run_test "Large client packet TLS 1.0 BlockCipher" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004025 "$P_SRV" \
Manuel Pégourié-Gonnardc82ee352015-01-07 16:35:25 +01004026 "$P_CLI request_size=16384 force_version=tls1 recsplit=0 \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004027 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
4028 0 \
Hanno Becker0d885d32017-09-18 15:04:19 +01004029 -c "16384 bytes written in 1 fragments" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004030 -s "Read from client: 16384 bytes read"
4031
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004032run_test "Large client packet TLS 1.0 BlockCipher, without EtM" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004033 "$P_SRV" \
Hanno Becker0b9d9132017-11-10 09:16:28 +00004034 "$P_CLI request_size=16384 force_version=tls1 etm=0 recsplit=0 \
4035 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
4036 0 \
4037 -s "Read from client: 16384 bytes read"
4038
Hanno Beckera83fafa2017-11-10 08:42:54 +00004039requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004040run_test "Large client packet TLS 1.0 BlockCipher, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004041 "$P_SRV trunc_hmac=1" \
Manuel Pégourié-Gonnardc82ee352015-01-07 16:35:25 +01004042 "$P_CLI request_size=16384 force_version=tls1 recsplit=0 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004043 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004044 0 \
Hanno Becker0d885d32017-09-18 15:04:19 +01004045 -c "16384 bytes written in 1 fragments" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004046 -s "Read from client: 16384 bytes read"
4047
Hanno Beckera83fafa2017-11-10 08:42:54 +00004048requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004049run_test "Large client packet TLS 1.0 BlockCipher, without EtM, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004050 "$P_SRV trunc_hmac=1" \
Hanno Becker0b9d9132017-11-10 09:16:28 +00004051 "$P_CLI request_size=16384 force_version=tls1 etm=0 recsplit=0 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004052 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
Hanno Becker0b9d9132017-11-10 09:16:28 +00004053 0 \
4054 -s "Read from client: 16384 bytes read"
4055
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004056run_test "Large client packet TLS 1.0 StreamCipher" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01004057 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004058 "$P_CLI request_size=16384 force_version=tls1 \
Hanno Becker0b9d9132017-11-10 09:16:28 +00004059 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
4060 0 \
4061 -s "Read from client: 16384 bytes read"
4062
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004063run_test "Large client packet TLS 1.0 StreamCipher, without EtM" \
Hanno Becker0b9d9132017-11-10 09:16:28 +00004064 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
4065 "$P_CLI request_size=16384 force_version=tls1 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004066 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
Hanno Becker0b9d9132017-11-10 09:16:28 +00004067 0 \
4068 -s "Read from client: 16384 bytes read"
4069
4070requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004071run_test "Large client packet TLS 1.0 StreamCipher, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004072 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004073 "$P_CLI request_size=16384 force_version=tls1 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004074 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004075 0 \
4076 -s "Read from client: 16384 bytes read"
4077
Hanno Becker0b9d9132017-11-10 09:16:28 +00004078requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004079run_test "Large client packet TLS 1.0 StreamCipher, without EtM, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004080 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Hanno Becker0b9d9132017-11-10 09:16:28 +00004081 "$P_CLI request_size=16384 force_version=tls1 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004082 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004083 0 \
Hanno Becker0d885d32017-09-18 15:04:19 +01004084 -c "16384 bytes written in 1 fragments" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004085 -s "Read from client: 16384 bytes read"
4086
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004087run_test "Large client packet TLS 1.1 BlockCipher" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004088 "$P_SRV" \
4089 "$P_CLI request_size=16384 force_version=tls1_1 \
4090 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
4091 0 \
Hanno Becker0d885d32017-09-18 15:04:19 +01004092 -c "16384 bytes written in 1 fragments" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004093 -s "Read from client: 16384 bytes read"
4094
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004095run_test "Large client packet TLS 1.1 BlockCipher, without EtM" \
Hanno Becker0b9d9132017-11-10 09:16:28 +00004096 "$P_SRV" \
4097 "$P_CLI request_size=16384 force_version=tls1_1 etm=0 \
4098 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004099 0 \
4100 -s "Read from client: 16384 bytes read"
4101
Hanno Beckera83fafa2017-11-10 08:42:54 +00004102requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004103run_test "Large client packet TLS 1.1 BlockCipher, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004104 "$P_SRV trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004105 "$P_CLI request_size=16384 force_version=tls1_1 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004106 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004107 0 \
4108 -s "Read from client: 16384 bytes read"
4109
Hanno Beckera83fafa2017-11-10 08:42:54 +00004110requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004111run_test "Large client packet TLS 1.1 BlockCipher, without EtM, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004112 "$P_SRV trunc_hmac=1" \
Hanno Becker0b9d9132017-11-10 09:16:28 +00004113 "$P_CLI request_size=16384 force_version=tls1_1 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004114 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
Hanno Becker0b9d9132017-11-10 09:16:28 +00004115 0 \
4116 -s "Read from client: 16384 bytes read"
4117
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004118run_test "Large client packet TLS 1.1 StreamCipher" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004119 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
4120 "$P_CLI request_size=16384 force_version=tls1_1 \
4121 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
4122 0 \
Hanno Becker0d885d32017-09-18 15:04:19 +01004123 -c "16384 bytes written in 1 fragments" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004124 -s "Read from client: 16384 bytes read"
4125
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004126run_test "Large client packet TLS 1.1 StreamCipher, without EtM" \
Hanno Becker0b9d9132017-11-10 09:16:28 +00004127 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004128 "$P_CLI request_size=16384 force_version=tls1_1 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004129 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004130 0 \
Hanno Becker0d885d32017-09-18 15:04:19 +01004131 -c "16384 bytes written in 1 fragments" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004132 -s "Read from client: 16384 bytes read"
4133
Hanno Becker0b9d9132017-11-10 09:16:28 +00004134requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004135run_test "Large client packet TLS 1.1 StreamCipher, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004136 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004137 "$P_CLI request_size=16384 force_version=tls1_1 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004138 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004139 0 \
4140 -s "Read from client: 16384 bytes read"
4141
Hanno Becker0b9d9132017-11-10 09:16:28 +00004142requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004143run_test "Large client packet TLS 1.1 StreamCipher, without EtM, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004144 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Hanno Becker0b9d9132017-11-10 09:16:28 +00004145 "$P_CLI request_size=16384 force_version=tls1_1 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004146 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004147 0 \
Hanno Becker0d885d32017-09-18 15:04:19 +01004148 -c "16384 bytes written in 1 fragments" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004149 -s "Read from client: 16384 bytes read"
4150
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004151run_test "Large client packet TLS 1.2 BlockCipher" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004152 "$P_SRV" \
4153 "$P_CLI request_size=16384 force_version=tls1_2 \
4154 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
4155 0 \
Hanno Becker0d885d32017-09-18 15:04:19 +01004156 -c "16384 bytes written in 1 fragments" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004157 -s "Read from client: 16384 bytes read"
4158
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004159run_test "Large client packet TLS 1.2 BlockCipher, without EtM" \
Hanno Becker0b9d9132017-11-10 09:16:28 +00004160 "$P_SRV" \
4161 "$P_CLI request_size=16384 force_version=tls1_2 etm=0 \
4162 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
4163 0 \
4164 -s "Read from client: 16384 bytes read"
4165
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004166run_test "Large client packet TLS 1.2 BlockCipher larger MAC" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004167 "$P_SRV" \
Manuel Pégourié-Gonnardc82ee352015-01-07 16:35:25 +01004168 "$P_CLI request_size=16384 force_version=tls1_2 \
4169 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004170 0 \
Hanno Becker0d885d32017-09-18 15:04:19 +01004171 -c "16384 bytes written in 1 fragments" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004172 -s "Read from client: 16384 bytes read"
4173
Hanno Beckera83fafa2017-11-10 08:42:54 +00004174requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004175run_test "Large client packet TLS 1.2 BlockCipher, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004176 "$P_SRV trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004177 "$P_CLI request_size=16384 force_version=tls1_2 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004178 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004179 0 \
4180 -s "Read from client: 16384 bytes read"
4181
Hanno Becker0b9d9132017-11-10 09:16:28 +00004182requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004183run_test "Large client packet TLS 1.2 BlockCipher, without EtM, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004184 "$P_SRV trunc_hmac=1" \
Hanno Becker0b9d9132017-11-10 09:16:28 +00004185 "$P_CLI request_size=16384 force_version=tls1_2 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004186 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004187 0 \
Hanno Becker0d885d32017-09-18 15:04:19 +01004188 -c "16384 bytes written in 1 fragments" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004189 -s "Read from client: 16384 bytes read"
4190
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004191run_test "Large client packet TLS 1.2 StreamCipher" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01004192 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004193 "$P_CLI request_size=16384 force_version=tls1_2 \
4194 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
4195 0 \
Hanno Becker0d885d32017-09-18 15:04:19 +01004196 -c "16384 bytes written in 1 fragments" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004197 -s "Read from client: 16384 bytes read"
4198
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004199run_test "Large client packet TLS 1.2 StreamCipher, without EtM" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01004200 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004201 "$P_CLI request_size=16384 force_version=tls1_2 \
Hanno Becker0b9d9132017-11-10 09:16:28 +00004202 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
4203 0 \
4204 -s "Read from client: 16384 bytes read"
4205
Hanno Beckera83fafa2017-11-10 08:42:54 +00004206requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004207run_test "Large client packet TLS 1.2 StreamCipher, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004208 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004209 "$P_CLI request_size=16384 force_version=tls1_2 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004210 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004211 0 \
4212 -s "Read from client: 16384 bytes read"
4213
Hanno Becker0b9d9132017-11-10 09:16:28 +00004214requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004215run_test "Large client packet TLS 1.2 StreamCipher, without EtM, truncated MAC" \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004216 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Hanno Becker0b9d9132017-11-10 09:16:28 +00004217 "$P_CLI request_size=16384 force_version=tls1_2 \
Hanno Becker8e75b6c2017-11-21 17:10:12 +00004218 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004219 0 \
Hanno Becker0d885d32017-09-18 15:04:19 +01004220 -c "16384 bytes written in 1 fragments" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004221 -s "Read from client: 16384 bytes read"
4222
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004223run_test "Large client packet TLS 1.2 AEAD" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004224 "$P_SRV" \
4225 "$P_CLI request_size=16384 force_version=tls1_2 \
4226 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \
4227 0 \
Hanno Becker0d885d32017-09-18 15:04:19 +01004228 -c "16384 bytes written in 1 fragments" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004229 -s "Read from client: 16384 bytes read"
4230
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004231run_test "Large client packet TLS 1.2 AEAD shorter tag" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004232 "$P_SRV" \
4233 "$P_CLI request_size=16384 force_version=tls1_2 \
4234 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \
4235 0 \
Hanno Becker0d885d32017-09-18 15:04:19 +01004236 -c "16384 bytes written in 1 fragments" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02004237 -s "Read from client: 16384 bytes read"
4238
Ron Eldorb27a1ab2018-06-28 13:22:05 +03004239# Tests for ECC extensions (rfc 4492)
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02004240
Ron Eldor2eee2e62018-06-28 16:17:00 +03004241requires_config_enabled MBEDTLS_AES_C
4242requires_config_enabled MBEDTLS_CIPHER_MODE_CBC
4243requires_config_enabled MBEDTLS_SHA256_C
4244requires_config_enabled MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
Ron Eldorb27a1ab2018-06-28 13:22:05 +03004245run_test "Force a non ECC ciphersuite in the client side" \
4246 "$P_SRV debug_level=3" \
Ron Eldor2eee2e62018-06-28 16:17:00 +03004247 "$P_CLI debug_level=3 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA256" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02004248 0 \
Ron Eldorb27a1ab2018-06-28 13:22:05 +03004249 -C "client hello, adding supported_elliptic_curves extension" \
4250 -C "client hello, adding supported_point_formats extension" \
4251 -S "found supported elliptic curves extension" \
4252 -S "found supported point formats extension"
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02004253
Ron Eldor2eee2e62018-06-28 16:17:00 +03004254requires_config_enabled MBEDTLS_AES_C
4255requires_config_enabled MBEDTLS_CIPHER_MODE_CBC
4256requires_config_enabled MBEDTLS_SHA256_C
4257requires_config_enabled MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
Ron Eldorb27a1ab2018-06-28 13:22:05 +03004258run_test "Force a non ECC ciphersuite in the server side" \
Ron Eldor2eee2e62018-06-28 16:17:00 +03004259 "$P_SRV debug_level=3 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA256" \
Ron Eldorb27a1ab2018-06-28 13:22:05 +03004260 "$P_CLI debug_level=3" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02004261 0 \
Ron Eldorb27a1ab2018-06-28 13:22:05 +03004262 -C "found supported_point_formats extension" \
4263 -S "server hello, supported_point_formats extension"
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02004264
Ron Eldor2eee2e62018-06-28 16:17:00 +03004265requires_config_enabled MBEDTLS_AES_C
4266requires_config_enabled MBEDTLS_CIPHER_MODE_CBC
4267requires_config_enabled MBEDTLS_SHA256_C
4268requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Ron Eldorb27a1ab2018-06-28 13:22:05 +03004269run_test "Force an ECC ciphersuite in the client side" \
4270 "$P_SRV debug_level=3" \
4271 "$P_CLI debug_level=3 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02004272 0 \
Ron Eldorb27a1ab2018-06-28 13:22:05 +03004273 -c "client hello, adding supported_elliptic_curves extension" \
4274 -c "client hello, adding supported_point_formats extension" \
4275 -s "found supported elliptic curves extension" \
4276 -s "found supported point formats extension"
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02004277
Ron Eldor2eee2e62018-06-28 16:17:00 +03004278requires_config_enabled MBEDTLS_AES_C
4279requires_config_enabled MBEDTLS_CIPHER_MODE_CBC
4280requires_config_enabled MBEDTLS_SHA256_C
4281requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Ron Eldorb27a1ab2018-06-28 13:22:05 +03004282run_test "Force an ECC ciphersuite in the server side" \
4283 "$P_SRV debug_level=3 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
4284 "$P_CLI debug_level=3" \
Manuel Pégourié-Gonnard579950c2014-09-29 17:47:33 +02004285 0 \
Ron Eldorb27a1ab2018-06-28 13:22:05 +03004286 -c "found supported_point_formats extension" \
4287 -s "server hello, supported_point_formats extension"
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +02004288
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004289# Test for large server packets
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004290requires_config_enabled MBEDTLS_SSL_PROTO_SSL3
4291run_test "Large server packet SSLv3 StreamCipher" \
4292 "$P_SRV response_size=16384 min_version=ssl3 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
4293 "$P_CLI force_version=ssl3 \
4294 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
4295 0 \
4296 -c "Read from server: 16384 bytes read"
4297
Andrzej Kurek10108312018-08-27 08:00:13 -04004298# Checking next 4 tests logs for 1n-1 split against BEAST too
4299requires_config_enabled MBEDTLS_SSL_PROTO_SSL3
4300run_test "Large server packet SSLv3 BlockCipher" \
4301 "$P_SRV response_size=16384 min_version=ssl3" \
4302 "$P_CLI force_version=ssl3 recsplit=0 \
4303 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
4304 0 \
4305 -c "Read from server: 1 bytes read"\
4306 -c "16383 bytes read"\
4307 -C "Read from server: 16384 bytes read"
4308
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004309run_test "Large server packet TLS 1.0 BlockCipher" \
4310 "$P_SRV response_size=16384" \
4311 "$P_CLI force_version=tls1 recsplit=0 \
4312 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
4313 0 \
4314 -c "Read from server: 1 bytes read"\
4315 -c "16383 bytes read"\
4316 -C "Read from server: 16384 bytes read"
4317
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04004318run_test "Large server packet TLS 1.0 BlockCipher, without EtM" \
4319 "$P_SRV response_size=16384" \
4320 "$P_CLI force_version=tls1 etm=0 recsplit=0 \
4321 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
4322 0 \
4323 -c "Read from server: 1 bytes read"\
4324 -c "16383 bytes read"\
4325 -C "Read from server: 16384 bytes read"
4326
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004327requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
4328run_test "Large server packet TLS 1.0 BlockCipher truncated MAC" \
4329 "$P_SRV response_size=16384" \
4330 "$P_CLI force_version=tls1 recsplit=0 \
4331 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA \
4332 trunc_hmac=1" \
4333 0 \
4334 -c "Read from server: 1 bytes read"\
4335 -c "16383 bytes read"\
4336 -C "Read from server: 16384 bytes read"
4337
4338requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
4339run_test "Large server packet TLS 1.0 StreamCipher truncated MAC" \
4340 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
4341 "$P_CLI force_version=tls1 \
4342 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA \
4343 trunc_hmac=1" \
4344 0 \
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04004345 -s "16384 bytes written in 1 fragments" \
4346 -c "Read from server: 16384 bytes read"
4347
4348run_test "Large server packet TLS 1.0 StreamCipher" \
4349 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
4350 "$P_CLI force_version=tls1 \
4351 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
4352 0 \
4353 -s "16384 bytes written in 1 fragments" \
4354 -c "Read from server: 16384 bytes read"
4355
4356run_test "Large server packet TLS 1.0 StreamCipher, without EtM" \
4357 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
4358 "$P_CLI force_version=tls1 \
4359 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
4360 0 \
4361 -s "16384 bytes written in 1 fragments" \
4362 -c "Read from server: 16384 bytes read"
4363
4364requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
4365run_test "Large server packet TLS 1.0 StreamCipher, truncated MAC" \
4366 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
4367 "$P_CLI force_version=tls1 \
4368 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
4369 0 \
4370 -s "16384 bytes written in 1 fragments" \
4371 -c "Read from server: 16384 bytes read"
4372
4373requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
4374run_test "Large server packet TLS 1.0 StreamCipher, without EtM, truncated MAC" \
4375 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
4376 "$P_CLI force_version=tls1 \
4377 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
4378 0 \
4379 -s "16384 bytes written in 1 fragments" \
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004380 -c "Read from server: 16384 bytes read"
4381
4382run_test "Large server packet TLS 1.1 BlockCipher" \
4383 "$P_SRV response_size=16384" \
4384 "$P_CLI force_version=tls1_1 \
4385 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
4386 0 \
4387 -c "Read from server: 16384 bytes read"
4388
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04004389run_test "Large server packet TLS 1.1 BlockCipher, without EtM" \
4390 "$P_SRV response_size=16384" \
4391 "$P_CLI force_version=tls1_1 etm=0 \
4392 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004393 0 \
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04004394 -s "16384 bytes written in 1 fragments" \
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004395 -c "Read from server: 16384 bytes read"
4396
4397requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
4398run_test "Large server packet TLS 1.1 BlockCipher truncated MAC" \
4399 "$P_SRV response_size=16384" \
4400 "$P_CLI force_version=tls1_1 \
4401 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA \
4402 trunc_hmac=1" \
4403 0 \
4404 -c "Read from server: 16384 bytes read"
4405
4406requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04004407run_test "Large server packet TLS 1.1 BlockCipher, without EtM, truncated MAC" \
4408 "$P_SRV response_size=16384 trunc_hmac=1" \
4409 "$P_CLI force_version=tls1_1 \
4410 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
4411 0 \
4412 -s "16384 bytes written in 1 fragments" \
4413 -c "Read from server: 16384 bytes read"
4414
4415run_test "Large server packet TLS 1.1 StreamCipher" \
4416 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
4417 "$P_CLI force_version=tls1_1 \
4418 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
4419 0 \
4420 -c "Read from server: 16384 bytes read"
4421
4422run_test "Large server packet TLS 1.1 StreamCipher, without EtM" \
4423 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
4424 "$P_CLI force_version=tls1_1 \
4425 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
4426 0 \
4427 -s "16384 bytes written in 1 fragments" \
4428 -c "Read from server: 16384 bytes read"
4429
4430requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004431run_test "Large server packet TLS 1.1 StreamCipher truncated MAC" \
4432 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
4433 "$P_CLI force_version=tls1_1 \
4434 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA \
4435 trunc_hmac=1" \
4436 0 \
4437 -c "Read from server: 16384 bytes read"
4438
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04004439run_test "Large server packet TLS 1.1 StreamCipher, without EtM, truncated MAC" \
4440 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
4441 "$P_CLI force_version=tls1_1 \
4442 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
4443 0 \
4444 -s "16384 bytes written in 1 fragments" \
4445 -c "Read from server: 16384 bytes read"
4446
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004447run_test "Large server packet TLS 1.2 BlockCipher" \
4448 "$P_SRV response_size=16384" \
4449 "$P_CLI force_version=tls1_2 \
4450 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
4451 0 \
4452 -c "Read from server: 16384 bytes read"
4453
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04004454run_test "Large server packet TLS 1.2 BlockCipher, without EtM" \
4455 "$P_SRV response_size=16384" \
4456 "$P_CLI force_version=tls1_2 etm=0 \
4457 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
4458 0 \
4459 -s "16384 bytes written in 1 fragments" \
4460 -c "Read from server: 16384 bytes read"
4461
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004462run_test "Large server packet TLS 1.2 BlockCipher larger MAC" \
4463 "$P_SRV response_size=16384" \
4464 "$P_CLI force_version=tls1_2 \
4465 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \
4466 0 \
4467 -c "Read from server: 16384 bytes read"
4468
4469requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
4470run_test "Large server packet TLS 1.2 BlockCipher truncated MAC" \
4471 "$P_SRV response_size=16384" \
4472 "$P_CLI force_version=tls1_2 \
4473 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA \
4474 trunc_hmac=1" \
4475 0 \
4476 -c "Read from server: 16384 bytes read"
4477
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04004478run_test "Large server packet TLS 1.2 BlockCipher, without EtM, truncated MAC" \
4479 "$P_SRV response_size=16384 trunc_hmac=1" \
4480 "$P_CLI force_version=tls1_2 \
4481 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
4482 0 \
4483 -s "16384 bytes written in 1 fragments" \
4484 -c "Read from server: 16384 bytes read"
4485
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004486run_test "Large server packet TLS 1.2 StreamCipher" \
4487 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
4488 "$P_CLI force_version=tls1_2 \
4489 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
4490 0 \
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04004491 -s "16384 bytes written in 1 fragments" \
4492 -c "Read from server: 16384 bytes read"
4493
4494run_test "Large server packet TLS 1.2 StreamCipher, without EtM" \
4495 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
4496 "$P_CLI force_version=tls1_2 \
4497 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
4498 0 \
4499 -s "16384 bytes written in 1 fragments" \
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004500 -c "Read from server: 16384 bytes read"
4501
4502requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
4503run_test "Large server packet TLS 1.2 StreamCipher truncated MAC" \
4504 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
4505 "$P_CLI force_version=tls1_2 \
4506 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA \
4507 trunc_hmac=1" \
4508 0 \
4509 -c "Read from server: 16384 bytes read"
4510
Andrzej Kurek4115a8c2018-06-19 09:37:30 -04004511requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
4512run_test "Large server packet TLS 1.2 StreamCipher, without EtM, truncated MAC" \
4513 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
4514 "$P_CLI force_version=tls1_2 \
4515 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
4516 0 \
4517 -s "16384 bytes written in 1 fragments" \
4518 -c "Read from server: 16384 bytes read"
4519
Andrzej Kurekf4f59c02018-06-28 03:42:01 -04004520run_test "Large server packet TLS 1.2 AEAD" \
4521 "$P_SRV response_size=16384" \
4522 "$P_CLI force_version=tls1_2 \
4523 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \
4524 0 \
4525 -c "Read from server: 16384 bytes read"
4526
4527run_test "Large server packet TLS 1.2 AEAD shorter tag" \
4528 "$P_SRV response_size=16384" \
4529 "$P_CLI force_version=tls1_2 \
4530 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \
4531 0 \
4532 -c "Read from server: 16384 bytes read"
4533
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01004534# Tests for DTLS HelloVerifyRequest
4535
4536run_test "DTLS cookie: enabled" \
4537 "$P_SRV dtls=1 debug_level=2" \
4538 "$P_CLI dtls=1 debug_level=2" \
4539 0 \
4540 -s "cookie verification failed" \
4541 -s "cookie verification passed" \
4542 -S "cookie verification skipped" \
4543 -c "received hello verify request" \
4544 -s "hello verification requested" \
4545 -S "SSL - The requested feature is not available"
4546
4547run_test "DTLS cookie: disabled" \
4548 "$P_SRV dtls=1 debug_level=2 cookies=0" \
4549 "$P_CLI dtls=1 debug_level=2" \
4550 0 \
4551 -S "cookie verification failed" \
4552 -S "cookie verification passed" \
4553 -s "cookie verification skipped" \
4554 -C "received hello verify request" \
4555 -S "hello verification requested" \
4556 -S "SSL - The requested feature is not available"
4557
4558run_test "DTLS cookie: default (failing)" \
4559 "$P_SRV dtls=1 debug_level=2 cookies=-1" \
4560 "$P_CLI dtls=1 debug_level=2 hs_timeout=100-400" \
4561 1 \
4562 -s "cookie verification failed" \
4563 -S "cookie verification passed" \
4564 -S "cookie verification skipped" \
4565 -C "received hello verify request" \
4566 -S "hello verification requested" \
4567 -s "SSL - The requested feature is not available"
4568
4569requires_ipv6
4570run_test "DTLS cookie: enabled, IPv6" \
4571 "$P_SRV dtls=1 debug_level=2 server_addr=::1" \
4572 "$P_CLI dtls=1 debug_level=2 server_addr=::1" \
4573 0 \
Manuel Pégourié-Gonnard579950c2014-09-29 17:47:33 +02004574 -s "cookie verification failed" \
4575 -s "cookie verification passed" \
4576 -S "cookie verification skipped" \
4577 -c "received hello verify request" \
4578 -s "hello verification requested" \
4579 -S "SSL - The requested feature is not available"
4580
4581run_test "DTLS cookie: enabled, nbio" \
Manuel Pégourié-Gonnardcaecdae2014-10-13 19:04:37 +02004582 "$P_SRV dtls=1 nbio=2 debug_level=2" \
Manuel Pégourié-Gonnard579950c2014-09-29 17:47:33 +02004583 "$P_CLI dtls=1 nbio=2 debug_level=2" \
4584 0 \
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02004585 -s "cookie verification failed" \
4586 -s "cookie verification passed" \
4587 -S "cookie verification skipped" \
4588 -c "received hello verify request" \
4589 -s "hello verification requested" \
4590 -S "SSL - The requested feature is not available"
4591
4592# Tests for client reconnecting from the same port with DTLS
4593
4594not_with_valgrind # spurious resend
4595run_test "DTLS client reconnect from same port: reference" \
4596 "$P_SRV dtls=1 exchanges=2 read_timeout=1000" \
4597 "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=500-1000" \
4598 0 \
4599 -C "resend" \
4600 -S "The operation timed out" \
4601 -S "Client initiated reconnection from same port"
4602
4603not_with_valgrind # spurious resend
4604run_test "DTLS client reconnect from same port: reconnect" \
4605 "$P_SRV dtls=1 exchanges=2 read_timeout=1000" \
4606 "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=500-1000 reconnect_hard=1" \
Manuel Pégourié-Gonnard08a1d4b2014-09-26 10:35:50 +02004607 0 \
4608 -C "resend" \
4609 -S "The operation timed out" \
4610 -s "Client initiated reconnection from same port"
4611
4612not_with_valgrind # server/client too slow to respond in time (next test has higher timeouts)
4613run_test "DTLS client reconnect from same port: reconnect, nbio, no valgrind" \
4614 "$P_SRV dtls=1 exchanges=2 read_timeout=1000 nbio=2" \
4615 "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=500-1000 reconnect_hard=1" \
4616 0 \
4617 -S "The operation timed out" \
4618 -s "Client initiated reconnection from same port"
4619
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004620only_with_valgrind # Only with valgrind, do previous test but with higher read_timeout and hs_timeout
Manuel Pégourié-Gonnard08a1d4b2014-09-26 10:35:50 +02004621run_test "DTLS client reconnect from same port: reconnect, nbio, valgrind" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004622 "$P_SRV dtls=1 exchanges=2 read_timeout=2000 nbio=2 hs_timeout=1500-6000" \
Manuel Pégourié-Gonnard08a1d4b2014-09-26 10:35:50 +02004623 "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=1500-3000 reconnect_hard=1" \
4624 0 \
4625 -S "The operation timed out" \
4626 -s "Client initiated reconnection from same port"
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004627
Manuel Pégourié-Gonnard08a1d4b2014-09-26 10:35:50 +02004628run_test "DTLS client reconnect from same port: no cookies" \
Manuel Pégourié-Gonnard0a885742015-08-04 12:08:35 +02004629 "$P_SRV dtls=1 exchanges=2 read_timeout=1000 cookies=0" \
4630 "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=500-8000 reconnect_hard=1" \
4631 0 \
4632 -s "The operation timed out" \
4633 -S "Client initiated reconnection from same port"
4634
4635# Tests for various cases of client authentication with DTLS
Manuel Pégourié-Gonnard502bf302014-08-20 13:12:58 +02004636# (focused on handshake flows and message parsing)
4637
4638run_test "DTLS client auth: required" \
4639 "$P_SRV dtls=1 auth_mode=required" \
4640 "$P_CLI dtls=1" \
4641 0 \
4642 -s "Verifying peer X.509 certificate... ok"
4643
4644run_test "DTLS client auth: optional, client has no cert" \
4645 "$P_SRV dtls=1 auth_mode=optional" \
4646 "$P_CLI dtls=1 crt_file=none key_file=none" \
4647 0 \
4648 -s "! Certificate was missing"
4649
4650run_test "DTLS client auth: none, client has no cert" \
4651 "$P_SRV dtls=1 auth_mode=none" \
4652 "$P_CLI dtls=1 crt_file=none key_file=none debug_level=2" \
4653 0 \
4654 -c "skip write certificate$" \
4655 -s "! Certificate verification was skipped"
4656
4657run_test "DTLS wrong PSK: badmac alert" \
4658 "$P_SRV dtls=1 psk=abc123 force_ciphersuite=TLS-PSK-WITH-AES-128-GCM-SHA256" \
4659 "$P_CLI dtls=1 psk=abc124" \
4660 1 \
4661 -s "SSL - Verification of the message MAC failed" \
4662 -c "SSL - A fatal alert message was received from our peer"
4663
4664# Tests for receiving fragmented handshake messages with DTLS
4665
4666requires_gnutls
4667run_test "DTLS reassembly: no fragmentation (gnutls server)" \
4668 "$G_SRV -u --mtu 2048 -a" \
4669 "$P_CLI dtls=1 debug_level=2" \
Manuel Pégourié-Gonnard0c4cbc72014-09-02 14:47:31 +02004670 0 \
Manuel Pégourié-Gonnard0c4cbc72014-09-02 14:47:31 +02004671 -C "found fragmented DTLS handshake message" \
4672 -C "error"
4673
4674requires_gnutls
4675run_test "DTLS reassembly: some fragmentation (gnutls server)" \
4676 "$G_SRV -u --mtu 512" \
4677 "$P_CLI dtls=1 debug_level=2" \
4678 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004679 -c "found fragmented DTLS handshake message" \
Manuel Pégourié-Gonnard0c4cbc72014-09-02 14:47:31 +02004680 -C "error"
4681
4682requires_gnutls
4683run_test "DTLS reassembly: more fragmentation (gnutls server)" \
Manuel Pégourié-Gonnard0c4cbc72014-09-02 14:47:31 +02004684 "$G_SRV -u --mtu 128" \
4685 "$P_CLI dtls=1 debug_level=2" \
4686 0 \
4687 -c "found fragmented DTLS handshake message" \
4688 -C "error"
4689
4690requires_gnutls
4691run_test "DTLS reassembly: more fragmentation, nbio (gnutls server)" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004692 "$G_SRV -u --mtu 128" \
Manuel Pégourié-Gonnard0c4cbc72014-09-02 14:47:31 +02004693 "$P_CLI dtls=1 nbio=2 debug_level=2" \
4694 0 \
4695 -c "found fragmented DTLS handshake message" \
Manuel Pégourié-Gonnarda7756172014-08-31 18:37:01 +02004696 -C "error"
4697
4698requires_gnutls
Hanno Becker78891132017-10-24 11:54:55 +01004699requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01004700run_test "DTLS reassembly: fragmentation, renego (gnutls server)" \
4701 "$G_SRV -u --mtu 256" \
4702 "$P_CLI debug_level=3 dtls=1 renegotiation=1 renegotiate=1" \
4703 0 \
4704 -c "found fragmented DTLS handshake message" \
4705 -c "client hello, adding renegotiation extension" \
4706 -c "found renegotiation extension" \
4707 -c "=> renegotiate" \
4708 -C "mbedtls_ssl_handshake returned" \
4709 -C "error" \
4710 -s "Extra-header:"
4711
4712requires_gnutls
Hanno Becker78891132017-10-24 11:54:55 +01004713requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01004714run_test "DTLS reassembly: fragmentation, nbio, renego (gnutls server)" \
4715 "$G_SRV -u --mtu 256" \
4716 "$P_CLI debug_level=3 nbio=2 dtls=1 renegotiation=1 renegotiate=1" \
4717 0 \
4718 -c "found fragmented DTLS handshake message" \
4719 -c "client hello, adding renegotiation extension" \
4720 -c "found renegotiation extension" \
4721 -c "=> renegotiate" \
4722 -C "mbedtls_ssl_handshake returned" \
4723 -C "error" \
4724 -s "Extra-header:"
4725
Manuel Pégourié-Gonnarda7756172014-08-31 18:37:01 +02004726run_test "DTLS reassembly: no fragmentation (openssl server)" \
4727 "$O_SRV -dtls1 -mtu 2048" \
4728 "$P_CLI dtls=1 debug_level=2" \
4729 0 \
4730 -C "found fragmented DTLS handshake message" \
4731 -C "error"
4732
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02004733run_test "DTLS reassembly: some fragmentation (openssl server)" \
4734 "$O_SRV -dtls1 -mtu 768" \
Manuel Pégourié-Gonnard64dffc52014-09-02 13:39:16 +02004735 "$P_CLI dtls=1 debug_level=2" \
4736 0 \
4737 -c "found fragmented DTLS handshake message" \
4738 -C "error"
4739
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02004740run_test "DTLS reassembly: more fragmentation (openssl server)" \
Manuel Pégourié-Gonnard64dffc52014-09-02 13:39:16 +02004741 "$O_SRV -dtls1 -mtu 256" \
4742 "$P_CLI dtls=1 debug_level=2" \
4743 0 \
4744 -c "found fragmented DTLS handshake message" \
4745 -C "error"
4746
4747run_test "DTLS reassembly: fragmentation, nbio (openssl server)" \
4748 "$O_SRV -dtls1 -mtu 256" \
4749 "$P_CLI dtls=1 nbio=2 debug_level=2" \
4750 0 \
4751 -c "found fragmented DTLS handshake message" \
4752 -C "error"
Manuel Pégourié-Gonnarda7756172014-08-31 18:37:01 +02004753
Manuel Pégourié-Gonnard7a66cbc2014-09-26 16:31:46 +02004754# Tests for specific things with "unreliable" UDP connection
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02004755
Manuel Pégourié-Gonnard76fe9e42014-09-24 15:17:31 +02004756not_with_valgrind # spurious resend due to timeout
Manuel Pégourié-Gonnard990f9e42014-09-06 12:27:02 +02004757run_test "DTLS proxy: reference" \
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02004758 -p "$P_PXY" \
Manuel Pégourié-Gonnard76fe9e42014-09-24 15:17:31 +02004759 "$P_SRV dtls=1 debug_level=2" \
4760 "$P_CLI dtls=1 debug_level=2" \
Manuel Pégourié-Gonnard990f9e42014-09-06 12:27:02 +02004761 0 \
Manuel Pégourié-Gonnard246c13a2014-09-24 13:56:09 +02004762 -C "replayed record" \
4763 -S "replayed record" \
4764 -C "record from another epoch" \
4765 -S "record from another epoch" \
4766 -C "discarding invalid record" \
4767 -S "discarding invalid record" \
Manuel Pégourié-Gonnard76fe9e42014-09-24 15:17:31 +02004768 -S "resend" \
Manuel Pégourié-Gonnard63eca932014-09-08 16:39:08 +02004769 -s "Extra-header:" \
Manuel Pégourié-Gonnard990f9e42014-09-06 12:27:02 +02004770 -c "HTTP/1.0 200 OK"
4771
Manuel Pégourié-Gonnard76fe9e42014-09-24 15:17:31 +02004772not_with_valgrind # spurious resend due to timeout
Manuel Pégourié-Gonnardb47368a2014-09-24 13:29:58 +02004773run_test "DTLS proxy: duplicate every packet" \
Manuel Pégourié-Gonnard990f9e42014-09-06 12:27:02 +02004774 -p "$P_PXY duplicate=1" \
Manuel Pégourié-Gonnard76fe9e42014-09-24 15:17:31 +02004775 "$P_SRV dtls=1 debug_level=2" \
4776 "$P_CLI dtls=1 debug_level=2" \
Manuel Pégourié-Gonnard990f9e42014-09-06 12:27:02 +02004777 0 \
Manuel Pégourié-Gonnardb47368a2014-09-24 13:29:58 +02004778 -c "replayed record" \
4779 -s "replayed record" \
Manuel Pégourié-Gonnard246c13a2014-09-24 13:56:09 +02004780 -c "discarding invalid record" \
4781 -s "discarding invalid record" \
Manuel Pégourié-Gonnard76fe9e42014-09-24 15:17:31 +02004782 -S "resend" \
Manuel Pégourié-Gonnard63eca932014-09-08 16:39:08 +02004783 -s "Extra-header:" \
4784 -c "HTTP/1.0 200 OK"
4785
Manuel Pégourié-Gonnard27393132014-09-24 14:41:11 +02004786run_test "DTLS proxy: duplicate every packet, server anti-replay off" \
4787 -p "$P_PXY duplicate=1" \
Manuel Pégourié-Gonnard76fe9e42014-09-24 15:17:31 +02004788 "$P_SRV dtls=1 debug_level=2 anti_replay=0" \
4789 "$P_CLI dtls=1 debug_level=2" \
Manuel Pégourié-Gonnard27393132014-09-24 14:41:11 +02004790 0 \
4791 -c "replayed record" \
4792 -S "replayed record" \
4793 -c "discarding invalid record" \
4794 -s "discarding invalid record" \
Manuel Pégourié-Gonnard76fe9e42014-09-24 15:17:31 +02004795 -c "resend" \
4796 -s "resend" \
Manuel Pégourié-Gonnard27393132014-09-24 14:41:11 +02004797 -s "Extra-header:" \
4798 -c "HTTP/1.0 200 OK"
4799
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02004800run_test "DTLS proxy: inject invalid AD record, default badmac_limit" \
Manuel Pégourié-Gonnard63eca932014-09-08 16:39:08 +02004801 -p "$P_PXY bad_ad=1" \
Manuel Pégourié-Gonnard246c13a2014-09-24 13:56:09 +02004802 "$P_SRV dtls=1 debug_level=1" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02004803 "$P_CLI dtls=1 debug_level=1 read_timeout=100" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02004804 0 \
Manuel Pégourié-Gonnard74a13782014-10-14 22:34:08 +02004805 -c "discarding invalid record (mac)" \
4806 -s "discarding invalid record (mac)" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02004807 -s "Extra-header:" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02004808 -c "HTTP/1.0 200 OK" \
4809 -S "too many records with bad MAC" \
4810 -S "Verification of the message MAC failed"
4811
4812run_test "DTLS proxy: inject invalid AD record, badmac_limit 1" \
4813 -p "$P_PXY bad_ad=1" \
4814 "$P_SRV dtls=1 debug_level=1 badmac_limit=1" \
4815 "$P_CLI dtls=1 debug_level=1 read_timeout=100" \
4816 1 \
Manuel Pégourié-Gonnard74a13782014-10-14 22:34:08 +02004817 -C "discarding invalid record (mac)" \
4818 -S "discarding invalid record (mac)" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02004819 -S "Extra-header:" \
4820 -C "HTTP/1.0 200 OK" \
4821 -s "too many records with bad MAC" \
4822 -s "Verification of the message MAC failed"
4823
4824run_test "DTLS proxy: inject invalid AD record, badmac_limit 2" \
4825 -p "$P_PXY bad_ad=1" \
4826 "$P_SRV dtls=1 debug_level=1 badmac_limit=2" \
4827 "$P_CLI dtls=1 debug_level=1 read_timeout=100" \
4828 0 \
Manuel Pégourié-Gonnard74a13782014-10-14 22:34:08 +02004829 -c "discarding invalid record (mac)" \
4830 -s "discarding invalid record (mac)" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02004831 -s "Extra-header:" \
4832 -c "HTTP/1.0 200 OK" \
4833 -S "too many records with bad MAC" \
4834 -S "Verification of the message MAC failed"
4835
4836run_test "DTLS proxy: inject invalid AD record, badmac_limit 2, exchanges 2"\
4837 -p "$P_PXY bad_ad=1" \
4838 "$P_SRV dtls=1 debug_level=1 badmac_limit=2 exchanges=2" \
4839 "$P_CLI dtls=1 debug_level=1 read_timeout=100 exchanges=2" \
4840 1 \
Manuel Pégourié-Gonnard74a13782014-10-14 22:34:08 +02004841 -c "discarding invalid record (mac)" \
4842 -s "discarding invalid record (mac)" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02004843 -s "Extra-header:" \
4844 -c "HTTP/1.0 200 OK" \
4845 -s "too many records with bad MAC" \
4846 -s "Verification of the message MAC failed"
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02004847
4848run_test "DTLS proxy: delay ChangeCipherSpec" \
Manuel Pégourié-Gonnard246c13a2014-09-24 13:56:09 +02004849 -p "$P_PXY delay_ccs=1" \
4850 "$P_SRV dtls=1 debug_level=1" \
4851 "$P_CLI dtls=1 debug_level=1" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02004852 0 \
Manuel Pégourié-Gonnard246c13a2014-09-24 13:56:09 +02004853 -c "record from another epoch" \
4854 -s "record from another epoch" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02004855 -c "discarding invalid record" \
Manuel Pégourié-Gonnard246c13a2014-09-24 13:56:09 +02004856 -s "discarding invalid record" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02004857 -s "Extra-header:" \
4858 -c "HTTP/1.0 200 OK"
4859
Manuel Pégourié-Gonnard7a66cbc2014-09-26 16:31:46 +02004860# Tests for "randomly unreliable connection": try a variety of flows and peers
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +02004861
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02004862needs_more_time 2
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +02004863run_test "DTLS proxy: 3d (drop, delay, duplicate), \"short\" PSK handshake" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02004864 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Manuel Pégourié-Gonnard37a4de22014-10-01 16:38:03 +02004865 "$P_SRV dtls=1 hs_timeout=250-10000 tickets=0 auth_mode=none \
4866 psk=abc123" \
4867 "$P_CLI dtls=1 hs_timeout=250-10000 tickets=0 psk=abc123 \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +02004868 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
4869 0 \
4870 -s "Extra-header:" \
4871 -c "HTTP/1.0 200 OK"
4872
4873needs_more_time 2
4874run_test "DTLS proxy: 3d, \"short\" RSA handshake" \
4875 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Manuel Pégourié-Gonnard37a4de22014-10-01 16:38:03 +02004876 "$P_SRV dtls=1 hs_timeout=250-10000 tickets=0 auth_mode=none" \
4877 "$P_CLI dtls=1 hs_timeout=250-10000 tickets=0 \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +02004878 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
4879 0 \
4880 -s "Extra-header:" \
4881 -c "HTTP/1.0 200 OK"
4882
4883needs_more_time 2
4884run_test "DTLS proxy: 3d, \"short\" (no ticket, no cli_auth) FS handshake" \
4885 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Manuel Pégourié-Gonnard37a4de22014-10-01 16:38:03 +02004886 "$P_SRV dtls=1 hs_timeout=250-10000 tickets=0 auth_mode=none" \
4887 "$P_CLI dtls=1 hs_timeout=250-10000 tickets=0" \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +02004888 0 \
4889 -s "Extra-header:" \
4890 -c "HTTP/1.0 200 OK"
4891
4892needs_more_time 2
4893run_test "DTLS proxy: 3d, FS, client auth" \
4894 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Manuel Pégourié-Gonnard37a4de22014-10-01 16:38:03 +02004895 "$P_SRV dtls=1 hs_timeout=250-10000 tickets=0 auth_mode=required" \
4896 "$P_CLI dtls=1 hs_timeout=250-10000 tickets=0" \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +02004897 0 \
4898 -s "Extra-header:" \
4899 -c "HTTP/1.0 200 OK"
4900
4901needs_more_time 2
4902run_test "DTLS proxy: 3d, FS, ticket" \
4903 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Manuel Pégourié-Gonnard37a4de22014-10-01 16:38:03 +02004904 "$P_SRV dtls=1 hs_timeout=250-10000 tickets=1 auth_mode=none" \
4905 "$P_CLI dtls=1 hs_timeout=250-10000 tickets=1" \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +02004906 0 \
4907 -s "Extra-header:" \
4908 -c "HTTP/1.0 200 OK"
4909
4910needs_more_time 2
4911run_test "DTLS proxy: 3d, max handshake (FS, ticket + client auth)" \
4912 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Manuel Pégourié-Gonnard37a4de22014-10-01 16:38:03 +02004913 "$P_SRV dtls=1 hs_timeout=250-10000 tickets=1 auth_mode=required" \
4914 "$P_CLI dtls=1 hs_timeout=250-10000 tickets=1" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02004915 0 \
4916 -s "Extra-header:" \
4917 -c "HTTP/1.0 200 OK"
4918
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +02004919needs_more_time 2
4920run_test "DTLS proxy: 3d, max handshake, nbio" \
4921 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Manuel Pégourié-Gonnard37a4de22014-10-01 16:38:03 +02004922 "$P_SRV dtls=1 hs_timeout=250-10000 nbio=2 tickets=1 \
4923 auth_mode=required" \
4924 "$P_CLI dtls=1 hs_timeout=250-10000 nbio=2 tickets=1" \
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +02004925 0 \
4926 -s "Extra-header:" \
4927 -c "HTTP/1.0 200 OK"
4928
Manuel Pégourié-Gonnard1b753f12014-09-25 16:09:36 +02004929needs_more_time 4
Manuel Pégourié-Gonnard7a26d732014-10-02 14:50:46 +02004930run_test "DTLS proxy: 3d, min handshake, resumption" \
4931 -p "$P_PXY drop=5 delay=5 duplicate=5" \
4932 "$P_SRV dtls=1 hs_timeout=250-10000 tickets=0 auth_mode=none \
4933 psk=abc123 debug_level=3" \
4934 "$P_CLI dtls=1 hs_timeout=250-10000 tickets=0 psk=abc123 \
4935 debug_level=3 reconnect=1 read_timeout=1000 max_resend=10 \
4936 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
4937 0 \
4938 -s "a session has been resumed" \
4939 -c "a session has been resumed" \
4940 -s "Extra-header:" \
4941 -c "HTTP/1.0 200 OK"
4942
4943needs_more_time 4
Manuel Pégourié-Gonnard85beb302014-10-02 17:59:19 +02004944run_test "DTLS proxy: 3d, min handshake, resumption, nbio" \
4945 -p "$P_PXY drop=5 delay=5 duplicate=5" \
4946 "$P_SRV dtls=1 hs_timeout=250-10000 tickets=0 auth_mode=none \
4947 psk=abc123 debug_level=3 nbio=2" \
4948 "$P_CLI dtls=1 hs_timeout=250-10000 tickets=0 psk=abc123 \
4949 debug_level=3 reconnect=1 read_timeout=1000 max_resend=10 \
4950 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8 nbio=2" \
4951 0 \
4952 -s "a session has been resumed" \
4953 -c "a session has been resumed" \
4954 -s "Extra-header:" \
4955 -c "HTTP/1.0 200 OK"
4956
4957needs_more_time 4
Hanno Becker78891132017-10-24 11:54:55 +01004958requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +02004959run_test "DTLS proxy: 3d, min handshake, client-initiated renego" \
Manuel Pégourié-Gonnard1b753f12014-09-25 16:09:36 +02004960 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Manuel Pégourié-Gonnard37a4de22014-10-01 16:38:03 +02004961 "$P_SRV dtls=1 hs_timeout=250-10000 tickets=0 auth_mode=none \
4962 psk=abc123 renegotiation=1 debug_level=2" \
4963 "$P_CLI dtls=1 hs_timeout=250-10000 tickets=0 psk=abc123 \
4964 renegotiate=1 debug_level=2 \
Manuel Pégourié-Gonnard1b753f12014-09-25 16:09:36 +02004965 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
4966 0 \
4967 -c "=> renegotiate" \
4968 -s "=> renegotiate" \
4969 -s "Extra-header:" \
4970 -c "HTTP/1.0 200 OK"
4971
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +02004972needs_more_time 4
Hanno Becker78891132017-10-24 11:54:55 +01004973requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +02004974run_test "DTLS proxy: 3d, min handshake, client-initiated renego, nbio" \
4975 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Manuel Pégourié-Gonnard37a4de22014-10-01 16:38:03 +02004976 "$P_SRV dtls=1 hs_timeout=250-10000 tickets=0 auth_mode=none \
4977 psk=abc123 renegotiation=1 debug_level=2" \
4978 "$P_CLI dtls=1 hs_timeout=250-10000 tickets=0 psk=abc123 \
4979 renegotiate=1 debug_level=2 \
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +02004980 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
4981 0 \
4982 -c "=> renegotiate" \
4983 -s "=> renegotiate" \
4984 -s "Extra-header:" \
4985 -c "HTTP/1.0 200 OK"
4986
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +02004987needs_more_time 4
Hanno Becker78891132017-10-24 11:54:55 +01004988requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +02004989run_test "DTLS proxy: 3d, min handshake, server-initiated renego" \
Manuel Pégourié-Gonnarda6ace042014-10-15 12:44:41 +02004990 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +02004991 "$P_SRV dtls=1 hs_timeout=250-10000 tickets=0 auth_mode=none \
Manuel Pégourié-Gonnarda6ace042014-10-15 12:44:41 +02004992 psk=abc123 renegotiate=1 renegotiation=1 exchanges=4 \
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +02004993 debug_level=2" \
4994 "$P_CLI dtls=1 hs_timeout=250-10000 tickets=0 psk=abc123 \
Manuel Pégourié-Gonnarda6ace042014-10-15 12:44:41 +02004995 renegotiation=1 exchanges=4 debug_level=2 \
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +02004996 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
4997 0 \
4998 -c "=> renegotiate" \
4999 -s "=> renegotiate" \
5000 -s "Extra-header:" \
5001 -c "HTTP/1.0 200 OK"
5002
5003needs_more_time 4
Hanno Becker78891132017-10-24 11:54:55 +01005004requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +02005005run_test "DTLS proxy: 3d, min handshake, server-initiated renego, nbio" \
Manuel Pégourié-Gonnarda6ace042014-10-15 12:44:41 +02005006 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +02005007 "$P_SRV dtls=1 hs_timeout=250-10000 tickets=0 auth_mode=none \
Manuel Pégourié-Gonnarda6ace042014-10-15 12:44:41 +02005008 psk=abc123 renegotiate=1 renegotiation=1 exchanges=4 \
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +02005009 debug_level=2 nbio=2" \
5010 "$P_CLI dtls=1 hs_timeout=250-10000 tickets=0 psk=abc123 \
Manuel Pégourié-Gonnarda6ace042014-10-15 12:44:41 +02005011 renegotiation=1 exchanges=4 debug_level=2 nbio=2 \
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +02005012 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
5013 0 \
5014 -c "=> renegotiate" \
5015 -s "=> renegotiate" \
5016 -s "Extra-header:" \
5017 -c "HTTP/1.0 200 OK"
5018
Manuel Pégourié-Gonnard127ab882014-10-09 17:59:32 +02005019needs_more_time 6
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +02005020not_with_valgrind # risk of non-mbedtls peer timing out
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +02005021run_test "DTLS proxy: 3d, openssl server" \
Manuel Pégourié-Gonnardd0fd1da2014-09-25 17:00:27 +02005022 -p "$P_PXY drop=5 delay=5 duplicate=5 protect_hvr=1" \
5023 "$O_SRV -dtls1 -mtu 2048" \
Manuel Pégourié-Gonnard8fe411e2015-03-09 16:09:53 +00005024 "$P_CLI dtls=1 hs_timeout=250-60000 tickets=0" \
Manuel Pégourié-Gonnardd0fd1da2014-09-25 17:00:27 +02005025 0 \
Manuel Pégourié-Gonnardd0fd1da2014-09-25 17:00:27 +02005026 -c "HTTP/1.0 200 OK"
5027
Manuel Pégourié-Gonnard22404862015-05-14 12:11:45 +02005028needs_more_time 8
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +02005029not_with_valgrind # risk of non-mbedtls peer timing out
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +02005030run_test "DTLS proxy: 3d, openssl server, fragmentation" \
5031 -p "$P_PXY drop=5 delay=5 duplicate=5 protect_hvr=1" \
5032 "$O_SRV -dtls1 -mtu 768" \
Manuel Pégourié-Gonnard8fe411e2015-03-09 16:09:53 +00005033 "$P_CLI dtls=1 hs_timeout=250-60000 tickets=0" \
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +02005034 0 \
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +02005035 -c "HTTP/1.0 200 OK"
5036
Manuel Pégourié-Gonnard22404862015-05-14 12:11:45 +02005037needs_more_time 8
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +02005038not_with_valgrind # risk of non-mbedtls peer timing out
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +02005039run_test "DTLS proxy: 3d, openssl server, fragmentation, nbio" \
5040 -p "$P_PXY drop=5 delay=5 duplicate=5 protect_hvr=1" \
5041 "$O_SRV -dtls1 -mtu 768" \
Manuel Pégourié-Gonnard8fe411e2015-03-09 16:09:53 +00005042 "$P_CLI dtls=1 hs_timeout=250-60000 nbio=2 tickets=0" \
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +02005043 0 \
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +02005044 -c "HTTP/1.0 200 OK"
5045
Manuel Pégourié-Gonnard96999962015-02-17 16:02:37 +00005046requires_gnutls
Manuel Pégourié-Gonnard127ab882014-10-09 17:59:32 +02005047needs_more_time 6
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +02005048not_with_valgrind # risk of non-mbedtls peer timing out
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +02005049run_test "DTLS proxy: 3d, gnutls server" \
5050 -p "$P_PXY drop=5 delay=5 duplicate=5" \
5051 "$G_SRV -u --mtu 2048 -a" \
Manuel Pégourié-Gonnardf1384472014-10-14 22:57:46 +02005052 "$P_CLI dtls=1 hs_timeout=250-60000" \
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +02005053 0 \
5054 -s "Extra-header:" \
5055 -c "Extra-header:"
5056
Manuel Pégourié-Gonnard96999962015-02-17 16:02:37 +00005057requires_gnutls
Manuel Pégourié-Gonnard22404862015-05-14 12:11:45 +02005058needs_more_time 8
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +02005059not_with_valgrind # risk of non-mbedtls peer timing out
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +02005060run_test "DTLS proxy: 3d, gnutls server, fragmentation" \
5061 -p "$P_PXY drop=5 delay=5 duplicate=5" \
5062 "$G_SRV -u --mtu 512" \
Manuel Pégourié-Gonnardf1384472014-10-14 22:57:46 +02005063 "$P_CLI dtls=1 hs_timeout=250-60000" \
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +02005064 0 \
5065 -s "Extra-header:" \
5066 -c "Extra-header:"
5067
Manuel Pégourié-Gonnard96999962015-02-17 16:02:37 +00005068requires_gnutls
Manuel Pégourié-Gonnard22404862015-05-14 12:11:45 +02005069needs_more_time 8
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +02005070not_with_valgrind # risk of non-mbedtls peer timing out
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +02005071run_test "DTLS proxy: 3d, gnutls server, fragmentation, nbio" \
5072 -p "$P_PXY drop=5 delay=5 duplicate=5" \
5073 "$G_SRV -u --mtu 512" \
Manuel Pégourié-Gonnardf1384472014-10-14 22:57:46 +02005074 "$P_CLI dtls=1 hs_timeout=250-60000 nbio=2" \
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +02005075 0 \
5076 -s "Extra-header:" \
5077 -c "Extra-header:"
5078
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01005079# Final report
5080
5081echo "------------------------------------------------------------------------"
5082
5083if [ $FAILS = 0 ]; then
Manuel Pégourié-Gonnardf46f1282014-12-11 11:51:28 +01005084 printf "PASSED"
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01005085else
Manuel Pégourié-Gonnardf46f1282014-12-11 11:51:28 +01005086 printf "FAILED"
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01005087fi
5088PASSES=$(( $TESTS - $FAILS ))
5089echo " ($PASSES / $TESTS tests ($SKIPS skipped))"
5090
5091exit $FAILS