blob: 4bb9d1a2c83eb15d507981fc49769dc86eec07f2 [file] [log] [blame]
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001#!/bin/sh
2
Simon Butcher58eddef2016-05-19 23:43:11 +01003# ssl-opt.sh
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01004#
Bence Szépkúti1e148272020-08-07 13:07:28 +02005# Copyright The Mbed TLS Contributors
Dave Rodgman7ff79652023-11-03 12:04:52 +00006# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
Bence Szépkútic7da1fe2020-05-26 01:54:15 +02007#
Simon Butcher58eddef2016-05-19 23:43:11 +01008# Purpose
9#
10# Executes tests to prove various TLS/SSL options and extensions.
11#
12# The goal is not to cover every ciphersuite/version, but instead to cover
13# specific options (max fragment length, truncated hmac, etc) or procedures
14# (session resumption from cache or ticket, renego, etc).
15#
16# The tests assume a build with default options, with exceptions expressed
17# with a dependency. The tests focus on functionality and do not consider
18# performance.
19#
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +010020
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +010021set -u
22
Jaeden Amero6e70eb22019-07-03 13:51:04 +010023# Limit the size of each log to 10 GiB, in case of failures with this script
24# where it may output seemingly unlimited length error logs.
25ulimit -f 20971520
26
Gilles Peskine560280b2019-09-16 15:17:38 +020027ORIGINAL_PWD=$PWD
28if ! cd "$(dirname "$0")"; then
29 exit 125
Angus Grattonc4dd0732018-04-11 16:28:39 +100030fi
31
Antonin Décimo36e89b52019-01-23 15:24:37 +010032# default values, can be overridden by the environment
Manuel Pégourié-Gonnardf7a26902014-02-27 12:25:54 +010033: ${P_SRV:=../programs/ssl/ssl_server2}
34: ${P_CLI:=../programs/ssl/ssl_client2}
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +020035: ${P_PXY:=../programs/test/udp_proxy}
Jerry Yubbfa1d82021-12-06 16:52:57 +080036: ${P_QUERY:=../programs/test/query_compile_time_config}
Manuel Pégourié-Gonnard89d40272022-12-19 11:42:12 +010037: ${OPENSSL:=openssl}
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +020038: ${GNUTLS_CLI:=gnutls-cli}
39: ${GNUTLS_SERV:=gnutls-serv}
Gilles Peskined50177f2017-05-16 17:53:03 +020040: ${PERL:=perl}
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +010041
Manuel Pégourié-Gonnard89d40272022-12-19 11:42:12 +010042# The OPENSSL variable used to be OPENSSL_CMD for historical reasons.
43# To help the migration, error out if the old variable is set,
44# but only if it has a different value than the new one.
45if [ "${OPENSSL_CMD+set}" = set ]; then
46 # the variable is set, we can now check its value
47 if [ "$OPENSSL_CMD" != "$OPENSSL" ]; then
48 echo "Please use OPENSSL instead of OPENSSL_CMD." >&2
49 exit 125
50 fi
51fi
52
Gilles Peskine560280b2019-09-16 15:17:38 +020053guess_config_name() {
54 if git diff --quiet ../include/mbedtls/config.h 2>/dev/null; then
55 echo "default"
56 else
57 echo "unknown"
58 fi
59}
60: ${MBEDTLS_TEST_OUTCOME_FILE=}
61: ${MBEDTLS_TEST_CONFIGURATION:="$(guess_config_name)"}
62: ${MBEDTLS_TEST_PLATFORM:="$(uname -s | tr -c \\n0-9A-Za-z _)-$(uname -m | tr -c \\n0-9A-Za-z _)"}
63
Manuel Pégourié-Gonnard89d40272022-12-19 11:42:12 +010064O_SRV="$OPENSSL s_server -www -cert data_files/server5.crt -key data_files/server5.key"
65O_CLI="echo 'GET / HTTP/1.0' | $OPENSSL s_client"
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +020066G_SRV="$GNUTLS_SERV --x509certfile data_files/server5.crt --x509keyfile data_files/server5.key"
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +010067G_CLI="echo 'GET / HTTP/1.0' | $GNUTLS_CLI --x509cafile data_files/test-ca_cat12.crt"
Gilles Peskined50177f2017-05-16 17:53:03 +020068TCP_CLIENT="$PERL scripts/tcp_client.pl"
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +010069
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +020070# alternative versions of OpenSSL and GnuTLS (no default path)
71
Gilles Peskine757eb9c2024-04-29 17:46:24 +020072# If $OPENSSL is at least 1.1.1, use it as OPENSSL_NEXT as well.
73if [ -z "${OPENSSL_NEXT:-}" ]; then
74 case $($OPENSSL version) in
75 OpenSSL\ 1.1.[1-9]*) OPENSSL_NEXT=$OPENSSL;;
76 OpenSSL\ [3-9]*) OPENSSL_NEXT=$OPENSSL;;
77 esac
78fi
79
80# If $GNUTLS_CLI is at least 3.7, use it as GNUTLS_NEXT_CLI as well.
81if [ -z "${GNUTLS_NEXT_CLI:-}" ]; then
82 case $($GNUTLS_CLI --version) in
83 gnutls-cli\ 3.[1-9][0-9]*) GNUTLS_NEXT_CLI=$GNUTLS_CLI;;
84 gnutls-cli\ 3.[7-9].*) GNUTLS_NEXT_CLI=$GNUTLS_CLI;;
85 gnutls-cli\ [4-9]*) GNUTLS_NEXT_CLI=$GNUTLS_CLI;;
86 esac
87fi
88
89# If $GNUTLS_SERV is at least 3.7, use it as GNUTLS_NEXT_SERV as well.
90if [ -z "${GNUTLS_NEXT_SERV:-}" ]; then
91 case $($GNUTLS_SERV --version) in
92 gnutls-cli\ 3.[1-9][0-9]*) GNUTLS_NEXT_SERV=$GNUTLS_SERV;;
93 gnutls-cli\ 3.[7-9].*) GNUTLS_NEXT_SERV=$GNUTLS_SERV;;
94 gnutls-cli\ [4-9]*) GNUTLS_NEXT_SERV=$GNUTLS_SERV;;
95 esac
96fi
97
Paul Elliott633a74e2021-10-13 18:31:07 +010098if [ -n "${OPENSSL_NEXT:-}" ]; then
99 O_NEXT_SRV="$OPENSSL_NEXT s_server -www -cert data_files/server5.crt -key data_files/server5.key"
100 O_NEXT_CLI="echo 'GET / HTTP/1.0' | $OPENSSL_NEXT s_client"
101else
102 O_NEXT_SRV=false
103 O_NEXT_CLI=false
104fi
105
Hanno Becker58e9dc32018-08-17 15:53:21 +0100106if [ -n "${GNUTLS_NEXT_SERV:-}" ]; then
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +0200107 G_NEXT_SRV="$GNUTLS_NEXT_SERV --x509certfile data_files/server5.crt --x509keyfile data_files/server5.key"
108else
109 G_NEXT_SRV=false
110fi
111
Hanno Becker58e9dc32018-08-17 15:53:21 +0100112if [ -n "${GNUTLS_NEXT_CLI:-}" ]; then
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +0200113 G_NEXT_CLI="echo 'GET / HTTP/1.0' | $GNUTLS_NEXT_CLI --x509cafile data_files/test-ca_cat12.crt"
114else
115 G_NEXT_CLI=false
116fi
117
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +0100118TESTS=0
119FAILS=0
Manuel Pégourié-Gonnard6f4fbbb2014-08-14 14:31:29 +0200120SKIPS=0
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +0100121
Manuel Pégourié-Gonnard7f809972015-03-09 17:05:11 +0000122CONFIG_H='../include/mbedtls/config.h'
Manuel Pégourié-Gonnard83d8c732014-04-07 13:24:21 +0200123
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100124MEMCHECK=0
Manuel Pégourié-Gonnard417d46c2014-03-13 19:17:53 +0100125FILTER='.*'
Manuel Pégourié-Gonnard6f4fbbb2014-08-14 14:31:29 +0200126EXCLUDE='^$'
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100127
Paul Bakkere20310a2016-05-10 11:18:17 +0100128SHOW_TEST_NUMBER=0
Tomás Gonzálezcbb2e452023-09-13 11:47:13 +0100129LIST_TESTS=0
Paul Bakkerb7584a52016-05-10 10:50:43 +0100130RUN_TEST_NUMBER=''
131
Gilles Peskined2c41892024-05-17 11:55:15 +0200132MIN_TESTS=1
Paul Bakkeracaac852016-05-10 11:47:13 +0100133PRESERVE_LOGS=0
134
Gilles Peskinef93c7d32017-04-14 17:55:28 +0200135# Pick a "unique" server port in the range 10000-19999, and a proxy
136# port which is this plus 10000. Each port number may be independently
137# overridden by a command line option.
138SRV_PORT=$(($$ % 10000 + 10000))
139PXY_PORT=$((SRV_PORT + 10000))
140
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100141print_usage() {
142 echo "Usage: $0 [options]"
Manuel Pégourié-Gonnardf46f1282014-12-11 11:51:28 +0100143 printf " -h|--help\tPrint this help.\n"
144 printf " -m|--memcheck\tCheck memory leaks and errors.\n"
Gilles Peskine9fa4ed62020-08-26 22:35:46 +0200145 printf " -f|--filter\tOnly matching tests are executed (substring or BRE)\n"
146 printf " -e|--exclude\tMatching tests are excluded (substring or BRE)\n"
Paul Bakkerb7584a52016-05-10 10:50:43 +0100147 printf " -n|--number\tExecute only numbered test (comma-separated, e.g. '245,256')\n"
Paul Bakkere20310a2016-05-10 11:18:17 +0100148 printf " -s|--show-numbers\tShow test numbers in front of test names\n"
Paul Bakkeracaac852016-05-10 11:47:13 +0100149 printf " -p|--preserve-logs\tPreserve logs of successful tests as well\n"
Tomás Gonzálezcbb2e452023-09-13 11:47:13 +0100150 printf " --list-test-cases\tList all potential test cases (No Execution)\n"
Gilles Peskined2c41892024-05-17 11:55:15 +0200151 printf " --min \tMinimum number of non-skipped tests (default 1)\n"
Gilles Peskine560280b2019-09-16 15:17:38 +0200152 printf " --outcome-file\tFile where test outcomes are written\n"
153 printf " \t(default: \$MBEDTLS_TEST_OUTCOME_FILE, none if empty)\n"
154 printf " --port \tTCP/UDP port (default: randomish 1xxxx)\n"
Gilles Peskinef93c7d32017-04-14 17:55:28 +0200155 printf " --proxy-port\tTCP/UDP proxy port (default: randomish 2xxxx)\n"
Gilles Peskine560280b2019-09-16 15:17:38 +0200156 printf " --seed \tInteger seed value to use for this test run\n"
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100157}
158
159get_options() {
160 while [ $# -gt 0 ]; do
161 case "$1" in
Manuel Pégourié-Gonnard417d46c2014-03-13 19:17:53 +0100162 -f|--filter)
163 shift; FILTER=$1
164 ;;
165 -e|--exclude)
166 shift; EXCLUDE=$1
167 ;;
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100168 -m|--memcheck)
169 MEMCHECK=1
170 ;;
Paul Bakkerb7584a52016-05-10 10:50:43 +0100171 -n|--number)
172 shift; RUN_TEST_NUMBER=$1
173 ;;
Paul Bakkere20310a2016-05-10 11:18:17 +0100174 -s|--show-numbers)
175 SHOW_TEST_NUMBER=1
176 ;;
Tomás Gonzálezcbb2e452023-09-13 11:47:13 +0100177 -l|--list-test-cases)
178 LIST_TESTS=1
179 ;;
Paul Bakkeracaac852016-05-10 11:47:13 +0100180 -p|--preserve-logs)
181 PRESERVE_LOGS=1
182 ;;
Gilles Peskined2c41892024-05-17 11:55:15 +0200183 --min)
184 shift; MIN_TESTS=$1
185 ;;
Yanray Wang56599812023-02-28 11:56:59 +0800186 --outcome-file)
187 shift; MBEDTLS_TEST_OUTCOME_FILE=$1
188 ;;
Gilles Peskinef93c7d32017-04-14 17:55:28 +0200189 --port)
190 shift; SRV_PORT=$1
191 ;;
192 --proxy-port)
193 shift; PXY_PORT=$1
194 ;;
Andres AGf04f54d2016-10-10 15:46:20 +0100195 --seed)
196 shift; SEED="$1"
197 ;;
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100198 -h|--help)
199 print_usage
200 exit 0
201 ;;
202 *)
Paul Bakker1ebc0c52014-05-22 15:47:58 +0200203 echo "Unknown argument: '$1'"
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100204 print_usage
205 exit 1
206 ;;
207 esac
208 shift
209 done
210}
211
Tomás Gonzálezcbb2e452023-09-13 11:47:13 +0100212get_options "$@"
213
Gilles Peskine64457492020-08-26 21:53:33 +0200214# Read boolean configuration options from config.h for easy and quick
215# testing. Skip non-boolean options (with something other than spaces
216# and a comment after "#define SYMBOL"). The variable contains a
217# space-separated list of symbols.
Tomás Gonzálezcbb2e452023-09-13 11:47:13 +0100218if [ "$LIST_TESTS" -eq 0 ];then
219 CONFIGS_ENABLED=" $(echo `$P_QUERY -l` )"
220else
221 P_QUERY=":"
222 CONFIGS_ENABLED=""
223fi
Hanno Becker3b8b40c2018-08-28 10:25:41 +0100224# Skip next test; use this macro to skip tests which are legitimate
225# in theory and expected to be re-introduced at some point, but
226# aren't expected to succeed at the moment due to problems outside
227# our control (such as bugs in other TLS implementations).
228skip_next_test() {
229 SKIP_NEXT="YES"
230}
231
Manuel Pégourié-Gonnard988209f2015-03-24 10:43:55 +0100232# skip next test if the flag is not enabled in config.h
233requires_config_enabled() {
Gilles Peskine64457492020-08-26 21:53:33 +0200234 case $CONFIGS_ENABLED in
Jerry Yu969c01a2021-12-10 20:29:02 +0800235 *" $1"[\ =]*) :;;
Gilles Peskine64457492020-08-26 21:53:33 +0200236 *) SKIP_NEXT="YES";;
237 esac
Manuel Pégourié-Gonnard988209f2015-03-24 10:43:55 +0100238}
239
Manuel Pégourié-Gonnardaf63c212017-06-08 17:51:08 +0200240# skip next test if the flag is enabled in config.h
241requires_config_disabled() {
Gilles Peskine64457492020-08-26 21:53:33 +0200242 case $CONFIGS_ENABLED in
Jerry Yu969c01a2021-12-10 20:29:02 +0800243 *" $1"[\ =]*) SKIP_NEXT="YES";;
Gilles Peskine64457492020-08-26 21:53:33 +0200244 esac
Manuel Pégourié-Gonnardaf63c212017-06-08 17:51:08 +0200245}
246
Hanno Becker7c48dd12018-08-28 16:09:22 +0100247get_config_value_or_default() {
Andres Amaya Garcia3169dc02018-10-16 21:29:07 +0100248 # This function uses the query_config command line option to query the
249 # required Mbed TLS compile time configuration from the ssl_server2
250 # program. The command will always return a success value if the
251 # configuration is defined and the value will be printed to stdout.
252 #
253 # Note that if the configuration is not defined or is defined to nothing,
254 # the output of this function will be an empty string.
Tomás Gonzálezcbb2e452023-09-13 11:47:13 +0100255 if [ "$LIST_TESTS" -eq 0 ];then
256 ${P_SRV} "query_config=${1}"
257 else
258 echo "1"
259 fi
260
Hanno Becker7c48dd12018-08-28 16:09:22 +0100261}
262
263requires_config_value_at_least() {
Andres Amaya Garcia3169dc02018-10-16 21:29:07 +0100264 VAL="$( get_config_value_or_default "$1" )"
265 if [ -z "$VAL" ]; then
266 # Should never happen
267 echo "Mbed TLS configuration $1 is not defined"
268 exit 1
269 elif [ "$VAL" -lt "$2" ]; then
Hanno Becker5cd017f2018-08-24 14:40:12 +0100270 SKIP_NEXT="YES"
271 fi
272}
273
274requires_config_value_at_most() {
Hanno Becker7c48dd12018-08-28 16:09:22 +0100275 VAL=$( get_config_value_or_default "$1" )
Andres Amaya Garcia3169dc02018-10-16 21:29:07 +0100276 if [ -z "$VAL" ]; then
277 # Should never happen
278 echo "Mbed TLS configuration $1 is not defined"
279 exit 1
280 elif [ "$VAL" -gt "$2" ]; then
Hanno Becker5cd017f2018-08-24 14:40:12 +0100281 SKIP_NEXT="YES"
282 fi
283}
284
Yuto Takano8a693ef2021-07-02 13:10:41 +0100285requires_config_value_equals() {
286 VAL=$( get_config_value_or_default "$1" )
287 if [ -z "$VAL" ]; then
288 # Should never happen
289 echo "Mbed TLS configuration $1 is not defined"
290 exit 1
291 elif [ "$VAL" -ne "$2" ]; then
292 SKIP_NEXT="YES"
293 fi
294}
295
Gilles Peskine4b137d12022-04-08 19:33:07 +0200296# Require Mbed TLS to support the given protocol version.
297#
298# Inputs:
299# * $1: protocol version in mbedtls syntax (argument to force_version=)
300requires_protocol_version() {
301 # Support for DTLS is detected separately in detect_dtls().
302 case "$1" in
303 ssl3) requires_config_enabled MBEDTLS_SSL_PROTO_SSL3;;
304 tls1) requires_config_enabled MBEDTLS_SSL_PROTO_TLS1;;
305 tls1_1|dtls1) requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1;;
306 tls12|dtls12) requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2;;
307 *) echo "Unknown required protocol version: $1"; exit 1;;
308 esac
309}
310
Gilles Peskine64457492020-08-26 21:53:33 +0200311# Space-separated list of ciphersuites supported by this build of
312# Mbed TLS.
Ronald Crona8b474f2023-11-28 15:49:25 +0100313P_CIPHERSUITES=""
314if [ "$LIST_TESTS" -eq 0 ]; then
315 P_CIPHERSUITES=" $($P_CLI help_ciphersuites 2>/dev/null |
316 grep 'TLS-' |
317 tr -s ' \n' ' ')"
318
319 if [ -z "${P_CIPHERSUITES# }" ]; then
320 echo >&2 "$0: fatal error: no cipher suites found!"
321 exit 125
322 fi
323fi
324
Hanno Becker9d76d562018-11-16 17:27:29 +0000325requires_ciphersuite_enabled() {
Gilles Peskine64457492020-08-26 21:53:33 +0200326 case $P_CIPHERSUITES in
327 *" $1 "*) :;;
328 *) SKIP_NEXT="YES";;
329 esac
Hanno Becker9d76d562018-11-16 17:27:29 +0000330}
331
Gilles Peskine511fdf42022-04-08 19:26:26 +0200332# detect_required_features CMD [RUN_TEST_OPTION...]
333# If CMD (call to a TLS client or server program) requires certain features,
334# arrange to only run the following test case if those features are enabled.
335detect_required_features() {
Gilles Peskine0d721652020-06-26 23:35:53 +0200336 case "$1" in
Gilles Peskine4b137d12022-04-08 19:33:07 +0200337 *\ force_version=*)
338 tmp="${1##*\ force_version=}"
339 tmp="${tmp%%[!-0-9A-Z_a-z]*}"
340 requires_protocol_version "$tmp";;
341 esac
342
343 case "$1" in
Gilles Peskine511fdf42022-04-08 19:26:26 +0200344 *\ force_ciphersuite=*)
345 tmp="${1##*\ force_ciphersuite=}"
346 tmp="${tmp%%[!-0-9A-Z_a-z]*}"
347 case "$*" in
348 *"-s SSL - The server has no ciphersuites in common"*)
349 # This test case expects a ciphersuite mismatch, so it
350 # doesn't actually require the ciphersuite to be enabled.
351 :;;
352 *) requires_ciphersuite_enabled "$tmp";;
353 esac;;
Gilles Peskine0d721652020-06-26 23:35:53 +0200354 esac
355
Gilles Peskine3c985f62022-04-08 19:29:27 +0200356 case " $1 " in
357 *[-_\ =]tickets=[^0]*)
358 requires_config_enabled MBEDTLS_SSL_TICKET_C;;
359 esac
360 case " $1 " in
361 *[-_\ =]alpn=*)
362 requires_config_enabled MBEDTLS_SSL_ALPN;;
363 esac
364
Gilles Peskinebba3b4c2022-04-09 00:08:47 +0200365 case " $1 " in
Gilles Peskine6e257b02022-04-13 14:19:57 +0200366 *\ badmac_limit=*)
367 requires_config_enabled MBEDTLS_SSL_DTLS_BADMAC_LIMIT;;
368 esac
369
370 case " $1 " in
Gilles Peskinebba3b4c2022-04-09 00:08:47 +0200371 *\ fallback=1\ *|*\ -fallback_scsv\ *)
372 requires_config_enabled MBEDTLS_SSL_FALLBACK_SCSV;;
373 esac
374
Gilles Peskine511fdf42022-04-08 19:26:26 +0200375 unset tmp
Gilles Peskine0d721652020-06-26 23:35:53 +0200376}
377
Gilles Peskine22cc6492022-03-14 18:21:24 +0100378requires_certificate_authentication () {
379 if [ "$PSK_ONLY" = "YES" ]; then
380 SKIP_NEXT="YES"
381 fi
382}
383
Gilles Peskine89d892f2022-02-25 19:52:52 +0100384adapt_cmd_for_psk () {
385 case "$2" in
Gilles Peskined84733d2024-04-29 16:09:52 +0200386 *openssl*s_server*) s='-psk 73776f726466697368 -nocert';;
387 *openssl*) s='-psk 73776f726466697368';;
388 *gnutls-*) s='--pskusername=Client_identity --pskkey=73776f726466697368';;
389 *) s='psk=73776f726466697368';;
Gilles Peskine89d892f2022-02-25 19:52:52 +0100390 esac
391 eval $1='"$2 $s"'
392 unset s
393}
394
395# maybe_adapt_for_psk [RUN_TEST_OPTION...]
396# If running in a PSK-only build, maybe adapt the test to use a pre-shared key.
397#
398# If not running in a PSK-only build, do nothing.
399# If the test looks like it doesn't use a pre-shared key but can run with a
400# pre-shared key, pass a pre-shared key. If the test looks like it can't run
401# with a pre-shared key, skip it. If the test looks like it's already using
402# a pre-shared key, do nothing.
403#
Gilles Peskined5b1a302022-04-05 22:00:17 +0200404# This code does not consider builds with ECDHE-PSK or RSA-PSK.
Gilles Peskine89d892f2022-02-25 19:52:52 +0100405#
406# Inputs:
407# * $CLI_CMD, $SRV_CMD, $PXY_CMD: client/server/proxy commands.
408# * $PSK_ONLY: YES if running in a PSK-only build (no asymmetric key exchanges).
409# * "$@": options passed to run_test.
410#
411# Outputs:
412# * $CLI_CMD, $SRV_CMD: may be modified to add PSK-relevant arguments.
413# * $SKIP_NEXT: set to YES if the test can't run with PSK.
414maybe_adapt_for_psk() {
415 if [ "$PSK_ONLY" != "YES" ]; then
416 return
417 fi
418 if [ "$SKIP_NEXT" = "YES" ]; then
419 return
420 fi
421 case "$CLI_CMD $SRV_CMD" in
422 *[-_\ =]psk*|*[-_\ =]PSK*)
423 return;;
424 *force_ciphersuite*)
425 # The test case forces a non-PSK cipher suite. In some cases, a
426 # PSK cipher suite could be substituted, but we're not ready for
427 # that yet.
428 SKIP_NEXT="YES"
429 return;;
430 *\ auth_mode=*|*[-_\ =]crt[_=]*)
431 # The test case involves certificates. PSK won't do.
432 SKIP_NEXT="YES"
433 return;;
434 esac
435 adapt_cmd_for_psk CLI_CMD "$CLI_CMD"
436 adapt_cmd_for_psk SRV_CMD "$SRV_CMD"
437}
438
439case " $CONFIGS_ENABLED " in
440 *\ MBEDTLS_KEY_EXCHANGE_[^P]*) PSK_ONLY="NO";;
441 *\ MBEDTLS_KEY_EXCHANGE_P[^S]*) PSK_ONLY="NO";;
442 *\ MBEDTLS_KEY_EXCHANGE_PS[^K]*) PSK_ONLY="NO";;
443 *\ MBEDTLS_KEY_EXCHANGE_PSK[^_]*) PSK_ONLY="NO";;
444 *\ MBEDTLS_KEY_EXCHANGE_PSK_ENABLED\ *) PSK_ONLY="YES";;
445 *) PSK_ONLY="NO";;
446esac
447
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +0200448# skip next test if OpenSSL doesn't support FALLBACK_SCSV
449requires_openssl_with_fallback_scsv() {
450 if [ -z "${OPENSSL_HAS_FBSCSV:-}" ]; then
Manuel Pégourié-Gonnard89d40272022-12-19 11:42:12 +0100451 if $OPENSSL s_client -help 2>&1 | grep fallback_scsv >/dev/null
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +0200452 then
453 OPENSSL_HAS_FBSCSV="YES"
454 else
455 OPENSSL_HAS_FBSCSV="NO"
456 fi
457 fi
458 if [ "$OPENSSL_HAS_FBSCSV" = "NO" ]; then
459 SKIP_NEXT="YES"
460 fi
461}
462
Yuto Takanobec7cf72021-07-02 10:10:49 +0100463# skip next test if either IN_CONTENT_LEN or MAX_CONTENT_LEN are below a value
464requires_max_content_len() {
465 requires_config_value_at_least "MBEDTLS_SSL_IN_CONTENT_LEN" $1
466 requires_config_value_at_least "MBEDTLS_SSL_OUT_CONTENT_LEN" $1
467}
468
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +0200469# skip next test if GnuTLS isn't available
470requires_gnutls() {
471 if [ -z "${GNUTLS_AVAILABLE:-}" ]; then
Manuel Pégourié-Gonnard03db6b02015-06-26 15:45:30 +0200472 if ( which "$GNUTLS_CLI" && which "$GNUTLS_SERV" ) >/dev/null 2>&1; then
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +0200473 GNUTLS_AVAILABLE="YES"
474 else
475 GNUTLS_AVAILABLE="NO"
476 fi
477 fi
478 if [ "$GNUTLS_AVAILABLE" = "NO" ]; then
479 SKIP_NEXT="YES"
480 fi
481}
482
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +0200483# skip next test if GnuTLS-next isn't available
484requires_gnutls_next() {
485 if [ -z "${GNUTLS_NEXT_AVAILABLE:-}" ]; then
486 if ( which "${GNUTLS_NEXT_CLI:-}" && which "${GNUTLS_NEXT_SERV:-}" ) >/dev/null 2>&1; then
487 GNUTLS_NEXT_AVAILABLE="YES"
488 else
489 GNUTLS_NEXT_AVAILABLE="NO"
490 fi
491 fi
492 if [ "$GNUTLS_NEXT_AVAILABLE" = "NO" ]; then
493 SKIP_NEXT="YES"
494 fi
495}
496
Paul Elliott633a74e2021-10-13 18:31:07 +0100497requires_openssl_next() {
498 if [ -z "${OPENSSL_NEXT_AVAILABLE:-}" ]; then
499 if which "${OPENSSL_NEXT:-}" >/dev/null 2>&1; then
500 OPENSSL_NEXT_AVAILABLE="YES"
501 else
502 OPENSSL_NEXT_AVAILABLE="NO"
503 fi
504 fi
505 if [ "$OPENSSL_NEXT_AVAILABLE" = "NO" ]; then
506 SKIP_NEXT="YES"
507 fi
508}
509
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200510# skip next test if IPv6 isn't available on this host
511requires_ipv6() {
512 if [ -z "${HAS_IPV6:-}" ]; then
513 $P_SRV server_addr='::1' > $SRV_OUT 2>&1 &
514 SRV_PID=$!
515 sleep 1
516 kill $SRV_PID >/dev/null 2>&1
517 if grep "NET - Binding of the socket failed" $SRV_OUT >/dev/null; then
518 HAS_IPV6="NO"
519 else
520 HAS_IPV6="YES"
521 fi
522 rm -r $SRV_OUT
523 fi
524
525 if [ "$HAS_IPV6" = "NO" ]; then
526 SKIP_NEXT="YES"
527 fi
528}
529
Andrzej Kurekb4593462018-10-11 08:43:30 -0400530# skip next test if it's i686 or uname is not available
531requires_not_i686() {
532 if [ -z "${IS_I686:-}" ]; then
533 IS_I686="YES"
534 if which "uname" >/dev/null 2>&1; then
535 if [ -z "$(uname -a | grep i686)" ]; then
536 IS_I686="NO"
537 fi
538 fi
539 fi
540 if [ "$IS_I686" = "YES" ]; then
541 SKIP_NEXT="YES"
542 fi
543}
544
Yuto Takanoab9e43332021-06-22 07:16:40 +0100545MAX_CONTENT_LEN=$( get_config_value_or_default "MBEDTLS_SSL_MAX_CONTENT_LEN" )
546MAX_IN_LEN=$( get_config_value_or_default "MBEDTLS_SSL_IN_CONTENT_LEN" )
547MAX_OUT_LEN=$( get_config_value_or_default "MBEDTLS_SSL_OUT_CONTENT_LEN" )
Tomás Gonzálezcbb2e452023-09-13 11:47:13 +0100548if [ "$LIST_TESTS" -eq 0 ];then
549 # Calculate the input & output maximum content lengths set in the config
550 if [ "$MAX_IN_LEN" -lt "$MAX_CONTENT_LEN" ]; then
551 MAX_CONTENT_LEN="$MAX_IN_LEN"
552 fi
553 if [ "$MAX_OUT_LEN" -lt "$MAX_CONTENT_LEN" ]; then
554 MAX_CONTENT_LEN="$MAX_OUT_LEN"
555 fi
Angus Grattonc4dd0732018-04-11 16:28:39 +1000556fi
Angus Grattonc4dd0732018-04-11 16:28:39 +1000557# skip the next test if the SSL output buffer is less than 16KB
558requires_full_size_output_buffer() {
559 if [ "$MAX_OUT_LEN" -ne 16384 ]; then
560 SKIP_NEXT="YES"
561 fi
562}
563
Manuel Pégourié-Gonnard76fe9e42014-09-24 15:17:31 +0200564# skip the next test if valgrind is in use
565not_with_valgrind() {
566 if [ "$MEMCHECK" -gt 0 ]; then
567 SKIP_NEXT="YES"
568 fi
569}
570
Paul Bakker362689d2016-05-13 10:33:25 +0100571# skip the next test if valgrind is NOT in use
572only_with_valgrind() {
573 if [ "$MEMCHECK" -eq 0 ]; then
574 SKIP_NEXT="YES"
575 fi
576}
577
Manuel Pégourié-Gonnarda0719722014-09-20 12:46:27 +0200578# multiply the client timeout delay by the given factor for the next test
Janos Follath74537a62016-09-02 13:45:28 +0100579client_needs_more_time() {
Manuel Pégourié-Gonnarda0719722014-09-20 12:46:27 +0200580 CLI_DELAY_FACTOR=$1
581}
582
Janos Follath74537a62016-09-02 13:45:28 +0100583# wait for the given seconds after the client finished in the next test
584server_needs_more_time() {
585 SRV_DELAY_SECONDS=$1
586}
587
Manuel Pégourié-Gonnardf8bdbb52014-02-21 09:20:14 +0100588# print_name <name>
589print_name() {
Paul Bakkere20310a2016-05-10 11:18:17 +0100590 TESTS=$(( $TESTS + 1 ))
591 LINE=""
592
593 if [ "$SHOW_TEST_NUMBER" -gt 0 ]; then
594 LINE="$TESTS "
595 fi
596
597 LINE="$LINE$1"
Tomás Gonzálezcbb2e452023-09-13 11:47:13 +0100598
Gilles Peskine231befa2020-08-26 20:05:11 +0200599 printf "%s " "$LINE"
Paul Bakkere20310a2016-05-10 11:18:17 +0100600 LEN=$(( 72 - `echo "$LINE" | wc -c` ))
Manuel Pégourié-Gonnardf46f1282014-12-11 11:51:28 +0100601 for i in `seq 1 $LEN`; do printf '.'; done
602 printf ' '
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +0100603
Manuel Pégourié-Gonnardf8bdbb52014-02-21 09:20:14 +0100604}
605
Gilles Peskine560280b2019-09-16 15:17:38 +0200606# record_outcome <outcome> [<failure-reason>]
607# The test name must be in $NAME.
608record_outcome() {
609 echo "$1"
610 if [ -n "$MBEDTLS_TEST_OUTCOME_FILE" ]; then
611 printf '%s;%s;%s;%s;%s;%s\n' \
612 "$MBEDTLS_TEST_PLATFORM" "$MBEDTLS_TEST_CONFIGURATION" \
613 "ssl-opt" "$NAME" \
614 "$1" "${2-}" \
615 >>"$MBEDTLS_TEST_OUTCOME_FILE"
616 fi
617}
618
Gilles Peskineaa1d6ad2021-10-20 14:17:02 +0200619# True if the presence of the given pattern in a log definitely indicates
620# that the test has failed. False if the presence is inconclusive.
621#
622# Inputs:
623# * $1: pattern found in the logs
624# * $TIMES_LEFT: >0 if retrying is an option
625#
626# Outputs:
627# * $outcome: set to a retry reason if the pattern is inconclusive,
628# unchanged otherwise.
629# * Return value: 1 if the pattern is inconclusive,
630# 0 if the failure is definitive.
631log_pattern_presence_is_conclusive() {
632 # If we've run out of attempts, then don't retry no matter what.
633 if [ $TIMES_LEFT -eq 0 ]; then
634 return 0
635 fi
636 case $1 in
637 "resend")
638 # An undesired resend may have been caused by the OS dropping or
639 # delaying a packet at an inopportune time.
640 outcome="RETRY(resend)"
641 return 1;;
642 esac
643}
644
Manuel Pégourié-Gonnardf8bdbb52014-02-21 09:20:14 +0100645# fail <message>
646fail() {
Gilles Peskine560280b2019-09-16 15:17:38 +0200647 record_outcome "FAIL" "$1"
Manuel Pégourié-Gonnard3eec6042014-02-27 15:37:24 +0100648 echo " ! $1"
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +0100649
Manuel Pégourié-Gonnardc2b00922014-08-31 16:46:04 +0200650 mv $SRV_OUT o-srv-${TESTS}.log
651 mv $CLI_OUT o-cli-${TESTS}.log
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200652 if [ -n "$PXY_CMD" ]; then
653 mv $PXY_OUT o-pxy-${TESTS}.log
654 fi
655 echo " ! outputs saved to o-XXX-${TESTS}.log"
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +0100656
Manuel Pégourié-Gonnard3f3302f2020-06-08 11:49:05 +0200657 if [ "${LOG_FAILURE_ON_STDOUT:-0}" != 0 ]; then
Manuel Pégourié-Gonnard7fa67722014-08-31 17:42:53 +0200658 echo " ! server output:"
659 cat o-srv-${TESTS}.log
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200660 echo " ! ========================================================"
Manuel Pégourié-Gonnard7fa67722014-08-31 17:42:53 +0200661 echo " ! client output:"
662 cat o-cli-${TESTS}.log
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200663 if [ -n "$PXY_CMD" ]; then
664 echo " ! ========================================================"
665 echo " ! proxy output:"
666 cat o-pxy-${TESTS}.log
667 fi
668 echo ""
Manuel Pégourié-Gonnard7fa67722014-08-31 17:42:53 +0200669 fi
670
Manuel Pégourié-Gonnard72e51ee2014-08-31 10:22:11 +0200671 FAILS=$(( $FAILS + 1 ))
Manuel Pégourié-Gonnardf8bdbb52014-02-21 09:20:14 +0100672}
673
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +0100674# is_polar <cmd_line>
675is_polar() {
Gilles Peskine64457492020-08-26 21:53:33 +0200676 case "$1" in
677 *ssl_client2*) true;;
678 *ssl_server2*) true;;
679 *) false;;
680 esac
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +0100681}
682
Manuel Pégourié-Gonnardfa60f122014-09-26 16:07:29 +0200683# openssl s_server doesn't have -www with DTLS
684check_osrv_dtls() {
Gilles Peskine64457492020-08-26 21:53:33 +0200685 case "$SRV_CMD" in
686 *s_server*-dtls*)
687 NEEDS_INPUT=1
688 SRV_CMD="$( echo $SRV_CMD | sed s/-www// )";;
689 *) NEEDS_INPUT=0;;
690 esac
Manuel Pégourié-Gonnardfa60f122014-09-26 16:07:29 +0200691}
692
693# provide input to commands that need it
694provide_input() {
695 if [ $NEEDS_INPUT -eq 0 ]; then
696 return
697 fi
698
699 while true; do
700 echo "HTTP/1.0 200 OK"
701 sleep 1
702 done
703}
704
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100705# has_mem_err <log_file_name>
706has_mem_err() {
707 if ( grep -F 'All heap blocks were freed -- no leaks are possible' "$1" &&
708 grep -F 'ERROR SUMMARY: 0 errors from 0 contexts' "$1" ) > /dev/null
709 then
710 return 1 # false: does not have errors
711 else
712 return 0 # true: has errors
713 fi
714}
715
Unknownd364f4c2019-09-02 10:42:57 -0400716# Wait for process $2 named $3 to be listening on port $1. Print error to $4.
Gilles Peskine418b5362017-12-14 18:58:42 +0100717if type lsof >/dev/null 2>/dev/null; then
Unknownd364f4c2019-09-02 10:42:57 -0400718 wait_app_start() {
Paul Elliottce777382021-10-20 15:59:33 +0100719 newline='
720'
Gilles Peskine418b5362017-12-14 18:58:42 +0100721 START_TIME=$(date +%s)
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200722 if [ "$DTLS" -eq 1 ]; then
Gilles Peskine418b5362017-12-14 18:58:42 +0100723 proto=UDP
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200724 else
Gilles Peskine418b5362017-12-14 18:58:42 +0100725 proto=TCP
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200726 fi
Gilles Peskine418b5362017-12-14 18:58:42 +0100727 # Make a tight loop, server normally takes less than 1s to start.
Paul Elliott6cd97ce2021-10-19 17:56:39 +0100728 while true; do
Gilles Peskine36019d52022-04-15 22:53:18 +0200729 SERVER_PIDS=$(lsof -a -n -b -i "$proto:$1" -t)
Paul Elliottce777382021-10-20 15:59:33 +0100730 # When we use a proxy, it will be listening on the same port we
731 # are checking for as well as the server and lsof will list both.
Paul Elliottce777382021-10-20 15:59:33 +0100732 case ${newline}${SERVER_PIDS}${newline} in
Gilles Peskine36019d52022-04-15 22:53:18 +0200733 *${newline}${2}${newline}*) break;;
Paul Elliottce777382021-10-20 15:59:33 +0100734 esac
Gilles Peskine418b5362017-12-14 18:58:42 +0100735 if [ $(( $(date +%s) - $START_TIME )) -gt $DOG_DELAY ]; then
Unknownd364f4c2019-09-02 10:42:57 -0400736 echo "$3 START TIMEOUT"
737 echo "$3 START TIMEOUT" >> $4
Gilles Peskine418b5362017-12-14 18:58:42 +0100738 break
739 fi
740 # Linux and *BSD support decimal arguments to sleep. On other
741 # OSes this may be a tight loop.
742 sleep 0.1 2>/dev/null || true
743 done
744 }
745else
Unknownd364f4c2019-09-02 10:42:57 -0400746 echo "Warning: lsof not available, wait_app_start = sleep"
747 wait_app_start() {
Manuel Pégourié-Gonnard0c1ec472014-06-20 18:41:11 +0200748 sleep "$START_DELAY"
Gilles Peskine418b5362017-12-14 18:58:42 +0100749 }
750fi
Manuel Pégourié-Gonnard0c1ec472014-06-20 18:41:11 +0200751
Unknownd364f4c2019-09-02 10:42:57 -0400752# Wait for server process $2 to be listening on port $1.
753wait_server_start() {
754 wait_app_start $1 $2 "SERVER" $SRV_OUT
755}
756
757# Wait for proxy process $2 to be listening on port $1.
758wait_proxy_start() {
759 wait_app_start $1 $2 "PROXY" $PXY_OUT
760}
761
Andres Amaya Garciab84c40b2017-09-06 15:44:01 +0100762# Given the client or server debug output, parse the unix timestamp that is
Andres Amaya Garcia3b1bdff2017-09-14 12:41:29 +0100763# included in the first 4 bytes of the random bytes and check that it's within
Andres Amaya Garciab84c40b2017-09-06 15:44:01 +0100764# acceptable bounds
765check_server_hello_time() {
766 # Extract the time from the debug (lvl 3) output of the client
Andres Amaya Garcia67d8da52017-09-15 15:49:24 +0100767 SERVER_HELLO_TIME="$(sed -n 's/.*server hello, current time: //p' < "$1")"
Andres Amaya Garciab84c40b2017-09-06 15:44:01 +0100768 # Get the Unix timestamp for now
769 CUR_TIME=$(date +'%s')
770 THRESHOLD_IN_SECS=300
771
772 # Check if the ServerHello time was printed
773 if [ -z "$SERVER_HELLO_TIME" ]; then
774 return 1
775 fi
776
777 # Check the time in ServerHello is within acceptable bounds
778 if [ $SERVER_HELLO_TIME -lt $(( $CUR_TIME - $THRESHOLD_IN_SECS )) ]; then
779 # The time in ServerHello is at least 5 minutes before now
780 return 1
781 elif [ $SERVER_HELLO_TIME -gt $(( $CUR_TIME + $THRESHOLD_IN_SECS )) ]; then
Andres Amaya Garcia3b1bdff2017-09-14 12:41:29 +0100782 # The time in ServerHello is at least 5 minutes later than now
Andres Amaya Garciab84c40b2017-09-06 15:44:01 +0100783 return 1
784 else
785 return 0
786 fi
787}
788
Piotr Nowicki0937ed22019-11-26 16:32:40 +0100789# Get handshake memory usage from server or client output and put it into the variable specified by the first argument
790handshake_memory_get() {
791 OUTPUT_VARIABLE="$1"
792 OUTPUT_FILE="$2"
793
794 # Get memory usage from a pattern like "Heap memory usage after handshake: 23112 bytes. Peak memory usage was 33112"
795 MEM_USAGE=$(sed -n 's/.*Heap memory usage after handshake: //p' < "$OUTPUT_FILE" | grep -o "[0-9]*" | head -1)
796
797 # Check if memory usage was read
798 if [ -z "$MEM_USAGE" ]; then
799 echo "Error: Can not read the value of handshake memory usage"
800 return 1
801 else
802 eval "$OUTPUT_VARIABLE=$MEM_USAGE"
803 return 0
804 fi
805}
806
807# Get handshake memory usage from server or client output and check if this value
808# is not higher than the maximum given by the first argument
809handshake_memory_check() {
810 MAX_MEMORY="$1"
811 OUTPUT_FILE="$2"
812
813 # Get memory usage
814 if ! handshake_memory_get "MEMORY_USAGE" "$OUTPUT_FILE"; then
815 return 1
816 fi
817
818 # Check if memory usage is below max value
819 if [ "$MEMORY_USAGE" -gt "$MAX_MEMORY" ]; then
820 echo "\nFailed: Handshake memory usage was $MEMORY_USAGE bytes," \
821 "but should be below $MAX_MEMORY bytes"
822 return 1
823 else
824 return 0
825 fi
826}
827
Manuel Pégourié-Gonnardc0f6a692014-08-30 22:41:47 +0200828# wait for client to terminate and set CLI_EXIT
829# must be called right after starting the client
830wait_client_done() {
831 CLI_PID=$!
832
Manuel Pégourié-Gonnarda0719722014-09-20 12:46:27 +0200833 CLI_DELAY=$(( $DOG_DELAY * $CLI_DELAY_FACTOR ))
834 CLI_DELAY_FACTOR=1
835
Manuel Pégourié-Gonnarda365add2015-08-04 20:57:59 +0200836 ( sleep $CLI_DELAY; echo "===CLIENT_TIMEOUT===" >> $CLI_OUT; kill $CLI_PID ) &
Manuel Pégourié-Gonnarda6189f02014-09-20 13:15:43 +0200837 DOG_PID=$!
Manuel Pégourié-Gonnardc0f6a692014-08-30 22:41:47 +0200838
839 wait $CLI_PID
840 CLI_EXIT=$?
841
Manuel Pégourié-Gonnarda6189f02014-09-20 13:15:43 +0200842 kill $DOG_PID >/dev/null 2>&1
843 wait $DOG_PID
Manuel Pégourié-Gonnardc0f6a692014-08-30 22:41:47 +0200844
845 echo "EXIT: $CLI_EXIT" >> $CLI_OUT
Janos Follath74537a62016-09-02 13:45:28 +0100846
847 sleep $SRV_DELAY_SECONDS
848 SRV_DELAY_SECONDS=0
Manuel Pégourié-Gonnardc0f6a692014-08-30 22:41:47 +0200849}
850
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200851# check if the given command uses dtls and sets global variable DTLS
852detect_dtls() {
Gilles Peskine64457492020-08-26 21:53:33 +0200853 case "$1" in
Paul Elliott405fccc2021-10-12 16:02:55 +0100854 *dtls=1*|*-dtls*|*-u*) DTLS=1;;
Gilles Peskine64457492020-08-26 21:53:33 +0200855 *) DTLS=0;;
856 esac
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200857}
858
Dave Rodgman0279c2f2021-02-10 12:45:41 +0000859# check if the given command uses gnutls and sets global variable CMD_IS_GNUTLS
860is_gnutls() {
861 case "$1" in
862 *gnutls-cli*)
863 CMD_IS_GNUTLS=1
864 ;;
865 *gnutls-serv*)
866 CMD_IS_GNUTLS=1
867 ;;
868 *)
869 CMD_IS_GNUTLS=0
870 ;;
871 esac
872}
873
Gilles Peskine64c683f2022-03-14 17:55:04 +0100874# Determine what calc_verify trace is to be expected, if any.
875#
876# calc_verify is only called for two things: to calculate the
877# extended master secret, and to process client authentication.
878#
879# Warning: the current implementation assumes that extended_ms is not
880# disabled on the client or on the server.
881#
882# Inputs:
Gilles Peskinef2e1f472022-04-06 22:23:45 +0200883# * $1: the value of the server auth_mode parameter.
884# 'required' if client authentication is expected,
885# 'none' or absent if not.
Gilles Peskine64c683f2022-03-14 17:55:04 +0100886# * $CONFIGS_ENABLED
887#
888# Outputs:
889# * $maybe_calc_verify: set to a trace expected in the debug logs
890set_maybe_calc_verify() {
891 maybe_calc_verify=
892 case $CONFIGS_ENABLED in
893 *\ MBEDTLS_SSL_EXTENDED_MASTER_SECRET\ *) :;;
894 *)
895 case ${1-} in
Gilles Peskinef2e1f472022-04-06 22:23:45 +0200896 ''|none) return;;
897 required) :;;
Gilles Peskine64c683f2022-03-14 17:55:04 +0100898 *) echo "Bad parameter 1 to set_maybe_calc_verify: $1"; exit 1;;
899 esac
900 esac
901 case $CONFIGS_ENABLED in
902 *\ MBEDTLS_USE_PSA_CRYPTO\ *) maybe_calc_verify="PSA calc verify";;
903 *) maybe_calc_verify="<= calc verify";;
904 esac
905}
906
Johan Pascal9bc50b02020-09-24 12:01:13 +0200907# Compare file content
908# Usage: find_in_both pattern file1 file2
909# extract from file1 the first line matching the pattern
910# check in file2 that the same line can be found
911find_in_both() {
912 srv_pattern=$(grep -m 1 "$1" "$2");
913 if [ -z "$srv_pattern" ]; then
914 return 1;
915 fi
916
917 if grep "$srv_pattern" $3 >/dev/null; then :
Johan Pascal10403152020-10-09 20:43:51 +0200918 return 0;
Johan Pascal9bc50b02020-09-24 12:01:13 +0200919 else
920 return 1;
921 fi
922}
923
Gilles Peskinef9022b02021-10-19 16:25:10 +0200924# Analyze the commands that will be used in a test.
925#
926# Analyze and possibly instrument $PXY_CMD, $CLI_CMD, $SRV_CMD to pass
927# extra arguments or go through wrappers.
Gilles Peskined5b1a302022-04-05 22:00:17 +0200928#
929# Inputs:
930# * $@: supplemental options to run_test() (after the mandatory arguments).
931# * $CLI_CMD, $PXY_CMD, $SRV_CMD: the client, proxy and server commands.
932# * $DTLS: 1 if DTLS, otherwise 0.
933#
934# Outputs:
935# * $CLI_CMD, $PXY_CMD, $SRV_CMD: may be tweaked.
Gilles Peskinef9022b02021-10-19 16:25:10 +0200936analyze_test_commands() {
Manuel Pégourié-Gonnardf4557862020-06-08 11:40:06 +0200937 # if the test uses DTLS but no custom proxy, add a simple proxy
938 # as it provides timing info that's useful to debug failures
Manuel Pégourié-Gonnard70fce982020-06-25 09:54:46 +0200939 if [ -z "$PXY_CMD" ] && [ "$DTLS" -eq 1 ]; then
Manuel Pégourié-Gonnardf4557862020-06-08 11:40:06 +0200940 PXY_CMD="$P_PXY"
Manuel Pégourié-Gonnard8779e9a2020-07-16 10:19:32 +0200941 case " $SRV_CMD " in
942 *' server_addr=::1 '*)
943 PXY_CMD="$PXY_CMD server_addr=::1 listen_addr=::1";;
944 esac
Manuel Pégourié-Gonnardf4557862020-06-08 11:40:06 +0200945 fi
946
Dave Rodgman0279c2f2021-02-10 12:45:41 +0000947 # update CMD_IS_GNUTLS variable
948 is_gnutls "$SRV_CMD"
949
950 # if the server uses gnutls but doesn't set priority, explicitly
951 # set the default priority
952 if [ "$CMD_IS_GNUTLS" -eq 1 ]; then
953 case "$SRV_CMD" in
954 *--priority*) :;;
955 *) SRV_CMD="$SRV_CMD --priority=NORMAL";;
956 esac
957 fi
958
959 # update CMD_IS_GNUTLS variable
960 is_gnutls "$CLI_CMD"
961
962 # if the client uses gnutls but doesn't set priority, explicitly
963 # set the default priority
964 if [ "$CMD_IS_GNUTLS" -eq 1 ]; then
965 case "$CLI_CMD" in
966 *--priority*) :;;
967 *) CLI_CMD="$CLI_CMD --priority=NORMAL";;
968 esac
969 fi
970
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +0200971 # fix client port
972 if [ -n "$PXY_CMD" ]; then
973 CLI_CMD=$( echo "$CLI_CMD" | sed s/+SRV_PORT/$PXY_PORT/g )
974 else
975 CLI_CMD=$( echo "$CLI_CMD" | sed s/+SRV_PORT/$SRV_PORT/g )
976 fi
977
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100978 # prepend valgrind to our commands if active
979 if [ "$MEMCHECK" -gt 0 ]; then
980 if is_polar "$SRV_CMD"; then
981 SRV_CMD="valgrind --leak-check=full $SRV_CMD"
982 fi
983 if is_polar "$CLI_CMD"; then
984 CLI_CMD="valgrind --leak-check=full $CLI_CMD"
985 fi
986 fi
Gilles Peskinef9022b02021-10-19 16:25:10 +0200987}
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100988
Gilles Peskinef9022b02021-10-19 16:25:10 +0200989# Check for failure conditions after a test case.
990#
991# Inputs from run_test:
992# * positional parameters: test options (see run_test documentation)
993# * $CLI_EXIT: client return code
994# * $CLI_EXPECT: expected client return code
995# * $SRV_RET: server return code
996# * $CLI_OUT, $SRV_OUT, $PXY_OUT: files containing client/server/proxy logs
Gilles Peskinea28fd412021-10-19 17:23:25 +0200997# * $TIMES_LEFT: if nonzero, a RETRY outcome is allowed
Gilles Peskinef9022b02021-10-19 16:25:10 +0200998#
999# Outputs:
Gilles Peskine2d3c9f82021-10-19 18:00:10 +02001000# * $outcome: one of PASS/RETRY*/FAIL
Gilles Peskinef9022b02021-10-19 16:25:10 +02001001check_test_failure() {
Gilles Peskinea28fd412021-10-19 17:23:25 +02001002 outcome=FAIL
Manuel Pégourié-Gonnarda365add2015-08-04 20:57:59 +02001003
Gilles Peskinea28fd412021-10-19 17:23:25 +02001004 if [ $TIMES_LEFT -gt 0 ] &&
1005 grep '===CLIENT_TIMEOUT===' $CLI_OUT >/dev/null
1006 then
Gilles Peskine2d3c9f82021-10-19 18:00:10 +02001007 outcome="RETRY(client-timeout)"
Gilles Peskinea28fd412021-10-19 17:23:25 +02001008 return
1009 fi
Manuel Pégourié-Gonnarda365add2015-08-04 20:57:59 +02001010
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +01001011 # check if the client and server went at least to the handshake stage
Paul Bakker1ebc0c52014-05-22 15:47:58 +02001012 # (useful to avoid tests with only negative assertions and non-zero
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +01001013 # expected client exit to incorrectly succeed in case of catastrophic
1014 # failure)
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +01001015 if is_polar "$SRV_CMD"; then
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02001016 if grep "Performing the SSL/TLS handshake" $SRV_OUT >/dev/null; then :;
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +01001017 else
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01001018 fail "server or client failed to reach handshake stage"
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +01001019 return
1020 fi
1021 fi
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +01001022 if is_polar "$CLI_CMD"; then
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02001023 if grep "Performing the SSL/TLS handshake" $CLI_OUT >/dev/null; then :;
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +01001024 else
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01001025 fail "server or client failed to reach handshake stage"
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +01001026 return
1027 fi
1028 fi
1029
Gilles Peskineaaf866e2021-02-09 21:01:33 +01001030 # Check server exit code (only for Mbed TLS: GnuTLS and OpenSSL don't
1031 # exit with status 0 when interrupted by a signal, and we don't really
1032 # care anyway), in case e.g. the server reports a memory leak.
1033 if [ $SRV_RET != 0 ] && is_polar "$SRV_CMD"; then
Gilles Peskine7f919de2021-02-02 23:29:03 +01001034 fail "Server exited with status $SRV_RET"
Manuel Pégourié-Gonnardf8bdbb52014-02-21 09:20:14 +01001035 return
1036 fi
1037
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001038 # check client exit code
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +01001039 if [ \( "$CLI_EXPECT" = 0 -a "$CLI_EXIT" != 0 \) -o \
1040 \( "$CLI_EXPECT" != 0 -a "$CLI_EXIT" = 0 \) ]
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01001041 then
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02001042 fail "bad client exit code (expected $CLI_EXPECT, got $CLI_EXIT)"
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001043 return
1044 fi
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001045
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01001046 # check other assertions
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +02001047 # lines beginning with == are added by valgrind, ignore them
Paul Bakker1f650922016-05-13 10:16:46 +01001048 # lines with 'Serious error when reading debug info', are valgrind issues as well
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001049 while [ $# -gt 0 ]
1050 do
1051 case $1 in
1052 "-s")
Paul Bakker1f650922016-05-13 10:16:46 +01001053 if grep -v '^==' $SRV_OUT | grep -v 'Serious error when reading debug info' | grep "$2" >/dev/null; then :; else
Simon Butcher8e004102016-10-14 00:48:33 +01001054 fail "pattern '$2' MUST be present in the Server output"
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001055 return
1056 fi
1057 ;;
1058
1059 "-c")
Paul Bakker1f650922016-05-13 10:16:46 +01001060 if grep -v '^==' $CLI_OUT | grep -v 'Serious error when reading debug info' | grep "$2" >/dev/null; then :; else
Simon Butcher8e004102016-10-14 00:48:33 +01001061 fail "pattern '$2' MUST be present in the Client output"
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001062 return
1063 fi
1064 ;;
1065
1066 "-S")
Paul Bakker1f650922016-05-13 10:16:46 +01001067 if grep -v '^==' $SRV_OUT | grep -v 'Serious error when reading debug info' | grep "$2" >/dev/null; then
Gilles Peskineaa1d6ad2021-10-20 14:17:02 +02001068 if log_pattern_presence_is_conclusive "$2"; then
Gilles Peskine2d3c9f82021-10-19 18:00:10 +02001069 fail "pattern '$2' MUST NOT be present in the Server output"
1070 fi
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001071 return
1072 fi
1073 ;;
1074
1075 "-C")
Paul Bakker1f650922016-05-13 10:16:46 +01001076 if grep -v '^==' $CLI_OUT | grep -v 'Serious error when reading debug info' | grep "$2" >/dev/null; then
Gilles Peskineaa1d6ad2021-10-20 14:17:02 +02001077 if log_pattern_presence_is_conclusive "$2"; then
Gilles Peskine2d3c9f82021-10-19 18:00:10 +02001078 fail "pattern '$2' MUST NOT be present in the Client output"
1079 fi
Simon Butcher8e004102016-10-14 00:48:33 +01001080 return
1081 fi
1082 ;;
1083
1084 # The filtering in the following two options (-u and -U) do the following
1085 # - ignore valgrind output
Antonin Décimo36e89b52019-01-23 15:24:37 +01001086 # - filter out everything but lines right after the pattern occurrences
Simon Butcher8e004102016-10-14 00:48:33 +01001087 # - keep one of each non-unique line
1088 # - count how many lines remain
1089 # A line with '--' will remain in the result from previous outputs, so the number of lines in the result will be 1
1090 # if there were no duplicates.
1091 "-U")
1092 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
1093 fail "lines following pattern '$2' must be unique in Server output"
1094 return
1095 fi
1096 ;;
1097
1098 "-u")
1099 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
1100 fail "lines following pattern '$2' must be unique in Client output"
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001101 return
1102 fi
1103 ;;
Andres Amaya Garcia93993de2017-09-06 15:38:07 +01001104 "-F")
1105 if ! $2 "$SRV_OUT"; then
1106 fail "function call to '$2' failed on Server output"
1107 return
1108 fi
1109 ;;
1110 "-f")
1111 if ! $2 "$CLI_OUT"; then
1112 fail "function call to '$2' failed on Client output"
1113 return
1114 fi
1115 ;;
Johan Pascal9bc50b02020-09-24 12:01:13 +02001116 "-g")
1117 if ! eval "$2 '$SRV_OUT' '$CLI_OUT'"; then
1118 fail "function call to '$2' failed on Server and Client output"
1119 return
1120 fi
1121 ;;
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001122
1123 *)
Paul Bakker1ebc0c52014-05-22 15:47:58 +02001124 echo "Unknown test: $1" >&2
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001125 exit 1
1126 esac
1127 shift 2
1128 done
1129
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01001130 # check valgrind's results
1131 if [ "$MEMCHECK" -gt 0 ]; then
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02001132 if is_polar "$SRV_CMD" && has_mem_err $SRV_OUT; then
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01001133 fail "Server has memory errors"
1134 return
1135 fi
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02001136 if is_polar "$CLI_CMD" && has_mem_err $CLI_OUT; then
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01001137 fail "Client has memory errors"
1138 return
1139 fi
1140 fi
1141
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001142 # if we're here, everything is ok
Gilles Peskinea28fd412021-10-19 17:23:25 +02001143 outcome=PASS
Gilles Peskinef9022b02021-10-19 16:25:10 +02001144}
1145
Gilles Peskine5d8e7022021-10-19 16:35:35 +02001146# Run the current test case: start the server and if applicable the proxy, run
1147# the client, wait for all processes to finish or time out.
1148#
1149# Inputs:
1150# * $NAME: test case name
1151# * $CLI_CMD, $SRV_CMD, $PXY_CMD: commands to run
1152# * $CLI_OUT, $SRV_OUT, $PXY_OUT: files to contain client/server/proxy logs
1153#
1154# Outputs:
1155# * $CLI_EXIT: client return code
1156# * $SRV_RET: server return code
1157do_run_test_once() {
1158 # run the commands
1159 if [ -n "$PXY_CMD" ]; then
1160 printf "# %s\n%s\n" "$NAME" "$PXY_CMD" > $PXY_OUT
1161 $PXY_CMD >> $PXY_OUT 2>&1 &
1162 PXY_PID=$!
1163 wait_proxy_start "$PXY_PORT" "$PXY_PID"
1164 fi
1165
1166 check_osrv_dtls
1167 printf '# %s\n%s\n' "$NAME" "$SRV_CMD" > $SRV_OUT
1168 provide_input | $SRV_CMD >> $SRV_OUT 2>&1 &
1169 SRV_PID=$!
1170 wait_server_start "$SRV_PORT" "$SRV_PID"
1171
1172 printf '# %s\n%s\n' "$NAME" "$CLI_CMD" > $CLI_OUT
Andrzej Kurekd27cdcc2022-05-27 06:44:19 -04001173 # The client must be a subprocess of the script in order for killing it to
1174 # work properly, that's why the ampersand is placed inside the eval command,
1175 # not at the end of the line: the latter approach will spawn eval as a
1176 # subprocess, and the $CLI_CMD as a grandchild.
1177 eval "$CLI_CMD &" >> $CLI_OUT 2>&1
Gilles Peskine5d8e7022021-10-19 16:35:35 +02001178 wait_client_done
1179
1180 sleep 0.05
1181
1182 # terminate the server (and the proxy)
1183 kill $SRV_PID
1184 wait $SRV_PID
1185 SRV_RET=$?
1186
1187 if [ -n "$PXY_CMD" ]; then
1188 kill $PXY_PID >/dev/null 2>&1
Jerry Yubf900472022-10-10 10:25:26 +08001189 wait $PXY_PID >> $PXY_OUT 2>&1
Gilles Peskine5d8e7022021-10-19 16:35:35 +02001190 fi
1191}
1192
Gilles Peskinef9022b02021-10-19 16:25:10 +02001193# Usage: run_test name [-p proxy_cmd] srv_cmd cli_cmd cli_exit [option [...]]
1194# Options: -s pattern pattern that must be present in server output
1195# -c pattern pattern that must be present in client output
1196# -u pattern lines after pattern must be unique in client output
1197# -f call shell function on client output
1198# -S pattern pattern that must be absent in server output
1199# -C pattern pattern that must be absent in client output
1200# -U pattern lines after pattern must be unique in server output
1201# -F call shell function on server output
1202# -g call shell function on server and client output
1203run_test() {
1204 NAME="$1"
1205 shift 1
1206
1207 if is_excluded "$NAME"; then
1208 SKIP_NEXT="NO"
1209 # There was no request to run the test, so don't record its outcome.
1210 return
1211 fi
1212
Tomás Gonzálezcbb2e452023-09-13 11:47:13 +01001213 if [ "$LIST_TESTS" -gt 0 ]; then
1214 printf "%s\n" "$NAME"
1215 return
1216 fi
1217
Gilles Peskinef9022b02021-10-19 16:25:10 +02001218 print_name "$NAME"
1219
1220 # Do we only run numbered tests?
1221 if [ -n "$RUN_TEST_NUMBER" ]; then
1222 case ",$RUN_TEST_NUMBER," in
1223 *",$TESTS,"*) :;;
1224 *) SKIP_NEXT="YES";;
1225 esac
1226 fi
1227
1228 # does this test use a proxy?
1229 if [ "X$1" = "X-p" ]; then
1230 PXY_CMD="$2"
1231 shift 2
1232 else
1233 PXY_CMD=""
1234 fi
1235
1236 # get commands and client output
1237 SRV_CMD="$1"
1238 CLI_CMD="$2"
1239 CLI_EXPECT="$3"
1240 shift 3
1241
1242 # Check if test uses files
1243 case "$SRV_CMD $CLI_CMD" in
1244 *data_files/*)
1245 requires_config_enabled MBEDTLS_FS_IO;;
1246 esac
1247
Gilles Peskinee5f49582022-02-25 19:46:30 +01001248 # Check if the test uses DTLS.
1249 detect_dtls "$SRV_CMD"
1250 if [ "$DTLS" -eq 1 ]; then
1251 requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
1252 fi
1253
Gilles Peskine511fdf42022-04-08 19:26:26 +02001254 # If the client or server requires certain features that can be detected
1255 # from their command-line arguments, check that they're enabled.
1256 detect_required_features "$SRV_CMD" "$@"
1257 detect_required_features "$CLI_CMD" "$@"
Gilles Peskinef9022b02021-10-19 16:25:10 +02001258
Gilles Peskine89d892f2022-02-25 19:52:52 +01001259 # If we're in a PSK-only build and the test can be adapted to PSK, do that.
1260 maybe_adapt_for_psk "$@"
1261
Gilles Peskinef9022b02021-10-19 16:25:10 +02001262 # should we skip?
1263 if [ "X$SKIP_NEXT" = "XYES" ]; then
1264 SKIP_NEXT="NO"
1265 record_outcome "SKIP"
1266 SKIPS=$(( $SKIPS + 1 ))
1267 return
1268 fi
1269
1270 analyze_test_commands "$@"
1271
Andrzej Kurek363553b2022-04-01 08:52:06 -04001272 # One regular run and two retries
1273 TIMES_LEFT=3
Gilles Peskinef9022b02021-10-19 16:25:10 +02001274 while [ $TIMES_LEFT -gt 0 ]; do
1275 TIMES_LEFT=$(( $TIMES_LEFT - 1 ))
1276
Gilles Peskine5d8e7022021-10-19 16:35:35 +02001277 do_run_test_once
Gilles Peskinef9022b02021-10-19 16:25:10 +02001278
Gilles Peskinea28fd412021-10-19 17:23:25 +02001279 check_test_failure "$@"
1280 case $outcome in
1281 PASS) break;;
Gilles Peskine2d3c9f82021-10-19 18:00:10 +02001282 RETRY*) printf "$outcome ";;
Gilles Peskinea28fd412021-10-19 17:23:25 +02001283 FAIL) return;;
1284 esac
Gilles Peskinef9022b02021-10-19 16:25:10 +02001285 done
1286
Gilles Peskinea28fd412021-10-19 17:23:25 +02001287 # If we get this far, the test case passed.
Gilles Peskine560280b2019-09-16 15:17:38 +02001288 record_outcome "PASS"
Paul Bakkeracaac852016-05-10 11:47:13 +01001289 if [ "$PRESERVE_LOGS" -gt 0 ]; then
1290 mv $SRV_OUT o-srv-${TESTS}.log
1291 mv $CLI_OUT o-cli-${TESTS}.log
Hanno Becker7be2e5b2018-08-20 12:21:35 +01001292 if [ -n "$PXY_CMD" ]; then
1293 mv $PXY_OUT o-pxy-${TESTS}.log
1294 fi
Paul Bakkeracaac852016-05-10 11:47:13 +01001295 fi
1296
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02001297 rm -f $SRV_OUT $CLI_OUT $PXY_OUT
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001298}
1299
Hanno Becker9b5853c2018-11-16 17:28:40 +00001300run_test_psa() {
1301 requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Gilles Peskine64c683f2022-03-14 17:55:04 +01001302 set_maybe_calc_verify none
Hanno Beckere9420c22018-11-20 11:37:34 +00001303 run_test "PSA-supported ciphersuite: $1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00001304 "$P_SRV debug_level=3 force_version=tls12" \
1305 "$P_CLI debug_level=3 force_version=tls12 force_ciphersuite=$1" \
Hanno Becker9b5853c2018-11-16 17:28:40 +00001306 0 \
1307 -c "Successfully setup PSA-based decryption cipher context" \
1308 -c "Successfully setup PSA-based encryption cipher context" \
Gilles Peskine64c683f2022-03-14 17:55:04 +01001309 -c "$maybe_calc_verify" \
Andrzej Kurek92dd4d02019-01-30 04:10:19 -05001310 -c "calc PSA finished" \
Hanno Becker9b5853c2018-11-16 17:28:40 +00001311 -s "Successfully setup PSA-based decryption cipher context" \
1312 -s "Successfully setup PSA-based encryption cipher context" \
Gilles Peskine64c683f2022-03-14 17:55:04 +01001313 -s "$maybe_calc_verify" \
Andrzej Kurek92dd4d02019-01-30 04:10:19 -05001314 -s "calc PSA finished" \
Hanno Becker9b5853c2018-11-16 17:28:40 +00001315 -C "Failed to setup PSA-based cipher context"\
1316 -S "Failed to setup PSA-based cipher context"\
1317 -s "Protocol is TLSv1.2" \
Hanno Becker28f78442019-02-18 16:47:50 +00001318 -c "Perform PSA-based ECDH computation."\
Andrzej Kureke85414e2019-01-15 05:23:59 -05001319 -c "Perform PSA-based computation of digest of ServerKeyExchange" \
Hanno Becker9b5853c2018-11-16 17:28:40 +00001320 -S "error" \
1321 -C "error"
Gilles Peskine64c683f2022-03-14 17:55:04 +01001322 unset maybe_calc_verify
Hanno Becker9b5853c2018-11-16 17:28:40 +00001323}
1324
Hanno Becker354e2482019-01-08 11:40:25 +00001325run_test_psa_force_curve() {
1326 requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Gilles Peskine64c683f2022-03-14 17:55:04 +01001327 set_maybe_calc_verify none
Hanno Becker354e2482019-01-08 11:40:25 +00001328 run_test "PSA - ECDH with $1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00001329 "$P_SRV debug_level=4 force_version=tls12" \
1330 "$P_CLI debug_level=4 force_version=tls12 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 curves=$1" \
Hanno Becker354e2482019-01-08 11:40:25 +00001331 0 \
Hanno Becker28f78442019-02-18 16:47:50 +00001332 -c "Successfully setup PSA-based decryption cipher context" \
1333 -c "Successfully setup PSA-based encryption cipher context" \
Gilles Peskine64c683f2022-03-14 17:55:04 +01001334 -c "$maybe_calc_verify" \
Hanno Becker28f78442019-02-18 16:47:50 +00001335 -c "calc PSA finished" \
1336 -s "Successfully setup PSA-based decryption cipher context" \
1337 -s "Successfully setup PSA-based encryption cipher context" \
Gilles Peskine64c683f2022-03-14 17:55:04 +01001338 -s "$maybe_calc_verify" \
Hanno Becker28f78442019-02-18 16:47:50 +00001339 -s "calc PSA finished" \
1340 -C "Failed to setup PSA-based cipher context"\
1341 -S "Failed to setup PSA-based cipher context"\
Hanno Becker354e2482019-01-08 11:40:25 +00001342 -s "Protocol is TLSv1.2" \
Hanno Becker28f78442019-02-18 16:47:50 +00001343 -c "Perform PSA-based ECDH computation."\
Manuel Pégourié-Gonnarda9062e92014-02-25 16:21:22 +01001344 -c "Perform PSA-based computation of digest of ServerKeyExchange" \
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02001345 -S "error" \
Manuel Pégourié-Gonnarda6189f02014-09-20 13:15:43 +02001346 -C "error"
Gilles Peskine64c683f2022-03-14 17:55:04 +01001347 unset maybe_calc_verify
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001348}
1349
Piotr Nowicki0937ed22019-11-26 16:32:40 +01001350# Test that the server's memory usage after a handshake is reduced when a client specifies
1351# a maximum fragment length.
1352# first argument ($1) is MFL for SSL client
1353# second argument ($2) is memory usage for SSL client with default MFL (16k)
Wenxing Hou20e964f2024-06-19 11:04:13 +08001354run_test_memory_after_handshake_with_mfl()
Piotr Nowicki0937ed22019-11-26 16:32:40 +01001355{
1356 # The test passes if the difference is around 2*(16k-MFL)
Gilles Peskine5b428d72020-08-26 21:52:23 +02001357 MEMORY_USAGE_LIMIT="$(( $2 - ( 2 * ( 16384 - $1 )) ))"
Piotr Nowicki0937ed22019-11-26 16:32:40 +01001358
1359 # Leave some margin for robustness
1360 MEMORY_USAGE_LIMIT="$(( ( MEMORY_USAGE_LIMIT * 110 ) / 100 ))"
1361
1362 run_test "Handshake memory usage (MFL $1)" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00001363 "$P_SRV debug_level=3 auth_mode=required force_version=tls12" \
1364 "$P_CLI debug_level=3 force_version=tls12 \
Piotr Nowicki0937ed22019-11-26 16:32:40 +01001365 crt_file=data_files/server5.crt key_file=data_files/server5.key \
1366 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM max_frag_len=$1" \
1367 0 \
1368 -F "handshake_memory_check $MEMORY_USAGE_LIMIT"
1369}
1370
1371
1372# Test that the server's memory usage after a handshake is reduced when a client specifies
1373# different values of Maximum Fragment Length: default (16k), 4k, 2k, 1k and 512 bytes
Wenxing Hou20e964f2024-06-19 11:04:13 +08001374run_tests_memory_after_handshake()
Piotr Nowicki0937ed22019-11-26 16:32:40 +01001375{
1376 # all tests in this sequence requires the same configuration (see requires_config_enabled())
1377 SKIP_THIS_TESTS="$SKIP_NEXT"
1378
1379 # first test with default MFU is to get reference memory usage
1380 MEMORY_USAGE_MFL_16K=0
1381 run_test "Handshake memory usage initial (MFL 16384 - default)" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00001382 "$P_SRV debug_level=3 auth_mode=required force_version=tls12" \
1383 "$P_CLI debug_level=3 force_version=tls12 \
Piotr Nowicki0937ed22019-11-26 16:32:40 +01001384 crt_file=data_files/server5.crt key_file=data_files/server5.key \
1385 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM" \
1386 0 \
1387 -F "handshake_memory_get MEMORY_USAGE_MFL_16K"
1388
1389 SKIP_NEXT="$SKIP_THIS_TESTS"
Wenxing Hou20e964f2024-06-19 11:04:13 +08001390 run_test_memory_after_handshake_with_mfl 4096 "$MEMORY_USAGE_MFL_16K"
Piotr Nowicki0937ed22019-11-26 16:32:40 +01001391
1392 SKIP_NEXT="$SKIP_THIS_TESTS"
Wenxing Hou20e964f2024-06-19 11:04:13 +08001393 run_test_memory_after_handshake_with_mfl 2048 "$MEMORY_USAGE_MFL_16K"
Piotr Nowicki0937ed22019-11-26 16:32:40 +01001394
1395 SKIP_NEXT="$SKIP_THIS_TESTS"
Wenxing Hou20e964f2024-06-19 11:04:13 +08001396 run_test_memory_after_handshake_with_mfl 1024 "$MEMORY_USAGE_MFL_16K"
Piotr Nowicki0937ed22019-11-26 16:32:40 +01001397
1398 SKIP_NEXT="$SKIP_THIS_TESTS"
Wenxing Hou20e964f2024-06-19 11:04:13 +08001399 run_test_memory_after_handshake_with_mfl 512 "$MEMORY_USAGE_MFL_16K"
Piotr Nowicki0937ed22019-11-26 16:32:40 +01001400}
1401
Manuel Pégourié-Gonnarda9062e92014-02-25 16:21:22 +01001402cleanup() {
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02001403 rm -f $CLI_OUT $SRV_OUT $PXY_OUT $SESSION
Piotr Nowicki3de298f2020-04-16 14:35:19 +02001404 rm -f context_srv.txt
1405 rm -f context_cli.txt
Manuel Pégourié-Gonnarda6189f02014-09-20 13:15:43 +02001406 test -n "${SRV_PID:-}" && kill $SRV_PID >/dev/null 2>&1
1407 test -n "${PXY_PID:-}" && kill $PXY_PID >/dev/null 2>&1
1408 test -n "${CLI_PID:-}" && kill $CLI_PID >/dev/null 2>&1
1409 test -n "${DOG_PID:-}" && kill $DOG_PID >/dev/null 2>&1
Manuel Pégourié-Gonnarda9062e92014-02-25 16:21:22 +01001410 exit 1
1411}
1412
Manuel Pégourié-Gonnard9dea8bd2014-02-26 18:21:02 +01001413#
1414# MAIN
1415#
1416
Yanray Wang56599812023-02-28 11:56:59 +08001417# Make the outcome file path relative to the original directory, not
1418# to .../tests
1419case "$MBEDTLS_TEST_OUTCOME_FILE" in
1420 [!/]*)
1421 MBEDTLS_TEST_OUTCOME_FILE="$ORIGINAL_PWD/$MBEDTLS_TEST_OUTCOME_FILE"
1422 ;;
1423esac
1424
Gilles Peskine9fa4ed62020-08-26 22:35:46 +02001425# Optimize filters: if $FILTER and $EXCLUDE can be expressed as shell
1426# patterns rather than regular expressions, use a case statement instead
1427# of calling grep. To keep the optimizer simple, it is incomplete and only
1428# detects simple cases: plain substring, everything, nothing.
1429#
1430# As an exception, the character '.' is treated as an ordinary character
1431# if it is the only special character in the string. This is because it's
1432# rare to need "any one character", but needing a literal '.' is common
1433# (e.g. '-f "DTLS 1.2"').
1434need_grep=
1435case "$FILTER" in
1436 '^$') simple_filter=;;
1437 '.*') simple_filter='*';;
Gilles Peskineb09e0012020-09-29 23:48:39 +02001438 *[][$+*?\\^{\|}]*) # Regexp special characters (other than .), we need grep
Gilles Peskine9fa4ed62020-08-26 22:35:46 +02001439 need_grep=1;;
1440 *) # No regexp or shell-pattern special character
1441 simple_filter="*$FILTER*";;
1442esac
1443case "$EXCLUDE" in
1444 '^$') simple_exclude=;;
1445 '.*') simple_exclude='*';;
Gilles Peskineb09e0012020-09-29 23:48:39 +02001446 *[][$+*?\\^{\|}]*) # Regexp special characters (other than .), we need grep
Gilles Peskine9fa4ed62020-08-26 22:35:46 +02001447 need_grep=1;;
1448 *) # No regexp or shell-pattern special character
1449 simple_exclude="*$EXCLUDE*";;
1450esac
1451if [ -n "$need_grep" ]; then
1452 is_excluded () {
1453 ! echo "$1" | grep "$FILTER" | grep -q -v "$EXCLUDE"
1454 }
1455else
1456 is_excluded () {
1457 case "$1" in
1458 $simple_exclude) true;;
1459 $simple_filter) false;;
1460 *) true;;
1461 esac
1462 }
1463fi
1464
Tomás Gonzálezcbb2e452023-09-13 11:47:13 +01001465if [ "$LIST_TESTS" -eq 0 ];then
1466
1467 # sanity checks, avoid an avalanche of errors
1468 P_SRV_BIN="${P_SRV%%[ ]*}"
1469 P_CLI_BIN="${P_CLI%%[ ]*}"
1470 P_PXY_BIN="${P_PXY%%[ ]*}"
1471 if [ ! -x "$P_SRV_BIN" ]; then
1472 echo "Command '$P_SRV_BIN' is not an executable file"
Simon Butcher3c0d7b82016-05-23 11:13:17 +01001473 exit 1
1474 fi
Tomás Gonzálezcbb2e452023-09-13 11:47:13 +01001475 if [ ! -x "$P_CLI_BIN" ]; then
1476 echo "Command '$P_CLI_BIN' is not an executable file"
1477 exit 1
1478 fi
1479 if [ ! -x "$P_PXY_BIN" ]; then
1480 echo "Command '$P_PXY_BIN' is not an executable file"
1481 exit 1
1482 fi
1483 if [ "$MEMCHECK" -gt 0 ]; then
1484 if which valgrind >/dev/null 2>&1; then :; else
1485 echo "Memcheck not possible. Valgrind not found"
1486 exit 1
1487 fi
1488 fi
1489 if which $OPENSSL >/dev/null 2>&1; then :; else
1490 echo "Command '$OPENSSL' not found"
1491 exit 1
1492 fi
1493
1494 # used by watchdog
1495 MAIN_PID="$$"
1496
1497 # We use somewhat arbitrary delays for tests:
1498 # - how long do we wait for the server to start (when lsof not available)?
1499 # - how long do we allow for the client to finish?
1500 # (not to check performance, just to avoid waiting indefinitely)
1501 # Things are slower with valgrind, so give extra time here.
1502 #
1503 # Note: without lsof, there is a trade-off between the running time of this
1504 # script and the risk of spurious errors because we didn't wait long enough.
1505 # The watchdog delay on the other hand doesn't affect normal running time of
1506 # the script, only the case where a client or server gets stuck.
1507 if [ "$MEMCHECK" -gt 0 ]; then
1508 START_DELAY=6
1509 DOG_DELAY=60
1510 else
1511 START_DELAY=2
1512 DOG_DELAY=20
1513 fi
1514
1515 # some particular tests need more time:
1516 # - for the client, we multiply the usual watchdog limit by a factor
1517 # - for the server, we sleep for a number of seconds after the client exits
1518 # see client_need_more_time() and server_needs_more_time()
1519 CLI_DELAY_FACTOR=1
1520 SRV_DELAY_SECONDS=0
1521
1522 # fix commands to use this port, force IPv4 while at it
1523 # +SRV_PORT will be replaced by either $SRV_PORT or $PXY_PORT later
1524 # Note: Using 'localhost' rather than 127.0.0.1 here is unwise, as on many
1525 # machines that will resolve to ::1, and we don't want ipv6 here.
1526 P_SRV="$P_SRV server_addr=127.0.0.1 server_port=$SRV_PORT"
1527 P_CLI="$P_CLI server_addr=127.0.0.1 server_port=+SRV_PORT"
1528 P_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"}"
1529 O_SRV="$O_SRV -accept $SRV_PORT"
1530 O_CLI="$O_CLI -connect 127.0.0.1:+SRV_PORT"
1531 G_SRV="$G_SRV -p $SRV_PORT"
1532 G_CLI="$G_CLI -p +SRV_PORT"
1533
1534 # Newer versions of OpenSSL have a syntax to enable all "ciphers", even
1535 # low-security ones. This covers not just cipher suites but also protocol
1536 # versions. It is necessary, for example, to use (D)TLS 1.0/1.1 on
1537 # OpenSSL 1.1.1f from Ubuntu 20.04. The syntax was only introduced in
1538 # OpenSSL 1.1.0 (21e0c1d23afff48601eb93135defddae51f7e2e3) and I can't find
1539 # a way to discover it from -help, so check the openssl version.
1540 case $($OPENSSL version) in
1541 "OpenSSL 0"*|"OpenSSL 1.0"*) :;;
1542 *)
1543 O_CLI="$O_CLI -cipher ALL@SECLEVEL=0"
1544 O_SRV="$O_SRV -cipher ALL@SECLEVEL=0"
1545 ;;
1546 esac
1547
1548 if [ -n "${OPENSSL_NEXT:-}" ]; then
1549 O_NEXT_SRV="$O_NEXT_SRV -accept $SRV_PORT"
1550 O_NEXT_CLI="$O_NEXT_CLI -connect 127.0.0.1:+SRV_PORT"
1551 fi
1552
1553 if [ -n "${GNUTLS_NEXT_SERV:-}" ]; then
1554 G_NEXT_SRV="$G_NEXT_SRV -p $SRV_PORT"
1555 fi
1556
1557 if [ -n "${GNUTLS_NEXT_CLI:-}" ]; then
1558 G_NEXT_CLI="$G_NEXT_CLI -p +SRV_PORT"
1559 fi
1560
1561 # Allow SHA-1, because many of our test certificates use it
1562 P_SRV="$P_SRV allow_sha1=1"
1563 P_CLI="$P_CLI allow_sha1=1"
Simon Butcher3c0d7b82016-05-23 11:13:17 +01001564fi
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02001565# Also pick a unique name for intermediate files
1566SRV_OUT="srv_out.$$"
1567CLI_OUT="cli_out.$$"
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02001568PXY_OUT="pxy_out.$$"
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02001569SESSION="session.$$"
1570
Manuel Pégourié-Gonnard6f4fbbb2014-08-14 14:31:29 +02001571SKIP_NEXT="NO"
1572
Manuel Pégourié-Gonnarda9062e92014-02-25 16:21:22 +01001573trap cleanup INT TERM HUP
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001574
Manuel Pégourié-Gonnarde73b2632014-07-12 04:00:00 +02001575# Basic test
1576
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +02001577# Checks that:
1578# - things work with all ciphersuites active (used with config-full in all.sh)
Gilles Peskinede4cb352022-04-05 22:00:32 +02001579# - the expected parameters are selected
Gilles Peskinedf4ad902022-04-08 15:14:38 +02001580requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinedff48c12022-02-25 19:50:38 +01001581requires_ciphersuite_enabled TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256
Gilles Peskinede4cb352022-04-05 22:00:32 +02001582requires_config_enabled MBEDTLS_SHA512_C # "signature_algorithm ext: 6"
1583requires_config_enabled MBEDTLS_ECP_DP_SECP521R1_ENABLED
Manuel Pégourié-Gonnarde73b2632014-07-12 04:00:00 +02001584run_test "Default" \
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +02001585 "$P_SRV debug_level=3" \
Manuel Pégourié-Gonnarde73b2632014-07-12 04:00:00 +02001586 "$P_CLI" \
1587 0 \
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +02001588 -s "Protocol is TLSv1.2" \
Manuel Pégourié-Gonnardce66d5e2018-06-14 11:11:15 +02001589 -s "Ciphersuite is TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256" \
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +02001590 -s "client hello v3, signature_algorithm ext: 6" \
1591 -s "ECDHE curve: secp521r1" \
1592 -S "error" \
1593 -C "error"
Manuel Pégourié-Gonnarde73b2632014-07-12 04:00:00 +02001594
Gilles Peskinedf4ad902022-04-08 15:14:38 +02001595requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinedff48c12022-02-25 19:50:38 +01001596requires_ciphersuite_enabled TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256
Manuel Pégourié-Gonnard3bb08012015-01-22 13:34:21 +00001597run_test "Default, DTLS" \
1598 "$P_SRV dtls=1" \
1599 "$P_CLI dtls=1" \
1600 0 \
1601 -s "Protocol is DTLSv1.2" \
Manuel Pégourié-Gonnardce66d5e2018-06-14 11:11:15 +02001602 -s "Ciphersuite is TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256"
Manuel Pégourié-Gonnard3bb08012015-01-22 13:34:21 +00001603
Hanno Becker721f7c12020-08-17 12:17:32 +01001604run_test "TLS client auth: required" \
1605 "$P_SRV auth_mode=required" \
1606 "$P_CLI" \
1607 0 \
1608 -s "Verifying peer X.509 certificate... ok"
1609
Hanno Becker2f54a3c2020-08-17 12:14:06 +01001610requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
1611requires_config_enabled MBEDTLS_ECDSA_C
1612requires_config_enabled MBEDTLS_SHA256_C
1613run_test "TLS: password protected client key" \
1614 "$P_SRV auth_mode=required" \
1615 "$P_CLI crt_file=data_files/server5.crt key_file=data_files/server5.key.enc key_pwd=PolarSSLTest" \
1616 0
1617
1618requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
1619requires_config_enabled MBEDTLS_ECDSA_C
1620requires_config_enabled MBEDTLS_SHA256_C
1621run_test "TLS: password protected server key" \
1622 "$P_SRV crt_file=data_files/server5.crt key_file=data_files/server5.key.enc key_pwd=PolarSSLTest" \
1623 "$P_CLI" \
1624 0
1625
1626requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
1627requires_config_enabled MBEDTLS_ECDSA_C
1628requires_config_enabled MBEDTLS_RSA_C
1629requires_config_enabled MBEDTLS_SHA256_C
1630run_test "TLS: password protected server key, two certificates" \
1631 "$P_SRV \
1632 key_file=data_files/server5.key.enc key_pwd=PolarSSLTest crt_file=data_files/server5.crt \
1633 key_file2=data_files/server2.key.enc key_pwd2=PolarSSLTest crt_file2=data_files/server2.crt" \
1634 "$P_CLI" \
1635 0
1636
Manuel Pégourié-Gonnard342d2ca2020-01-02 11:58:00 +01001637requires_config_enabled MBEDTLS_ZLIB_SUPPORT
1638run_test "Default (compression enabled)" \
1639 "$P_SRV debug_level=3" \
1640 "$P_CLI debug_level=3" \
1641 0 \
1642 -s "Allocating compression buffer" \
1643 -c "Allocating compression buffer" \
1644 -s "Record expansion is unknown (compression)" \
1645 -c "Record expansion is unknown (compression)" \
1646 -S "error" \
1647 -C "error"
1648
Hanno Becker746aaf32019-03-28 15:25:23 +00001649requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
1650run_test "CA callback on client" \
1651 "$P_SRV debug_level=3" \
1652 "$P_CLI ca_callback=1 debug_level=3 " \
1653 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01001654 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00001655 -S "error" \
1656 -C "error"
1657
1658requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
1659requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
1660requires_config_enabled MBEDTLS_ECDSA_C
1661requires_config_enabled MBEDTLS_SHA256_C
1662run_test "CA callback on server" \
1663 "$P_SRV auth_mode=required" \
1664 "$P_CLI ca_callback=1 debug_level=3 crt_file=data_files/server5.crt \
1665 key_file=data_files/server5.key" \
1666 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01001667 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00001668 -s "Verifying peer X.509 certificate... ok" \
1669 -S "error" \
1670 -C "error"
1671
Manuel Pégourié-Gonnardcfdf8f42018-11-08 09:52:25 +01001672# Test using an opaque private key for client authentication
1673requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
1674requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
1675requires_config_enabled MBEDTLS_ECDSA_C
1676requires_config_enabled MBEDTLS_SHA256_C
1677run_test "Opaque key for client authentication" \
Przemyslaw Stekielb3de3fd2021-10-26 12:25:27 +02001678 "$P_SRV auth_mode=required crt_file=data_files/server5.crt \
1679 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnardcfdf8f42018-11-08 09:52:25 +01001680 "$P_CLI key_opaque=1 crt_file=data_files/server5.crt \
1681 key_file=data_files/server5.key" \
1682 0 \
1683 -c "key type: Opaque" \
Przemyslaw Stekielb3de3fd2021-10-26 12:25:27 +02001684 -c "Ciphersuite is TLS-ECDHE-ECDSA" \
Manuel Pégourié-Gonnardcfdf8f42018-11-08 09:52:25 +01001685 -s "Verifying peer X.509 certificate... ok" \
Przemyslaw Stekielb3de3fd2021-10-26 12:25:27 +02001686 -s "Ciphersuite is TLS-ECDHE-ECDSA" \
Manuel Pégourié-Gonnardcfdf8f42018-11-08 09:52:25 +01001687 -S "error" \
1688 -C "error"
1689
Przemyslaw Stekielab09c9e2021-10-04 11:13:22 +02001690# Test using an opaque private key for server authentication
1691requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
1692requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
1693requires_config_enabled MBEDTLS_ECDSA_C
1694requires_config_enabled MBEDTLS_SHA256_C
1695run_test "Opaque key for server authentication" \
Przemyslaw Stekielb3de3fd2021-10-26 12:25:27 +02001696 "$P_SRV auth_mode=required key_opaque=1 crt_file=data_files/server5.crt \
1697 key_file=data_files/server5.key" \
Przemyslaw Stekielab09c9e2021-10-04 11:13:22 +02001698 "$P_CLI crt_file=data_files/server5.crt \
1699 key_file=data_files/server5.key" \
1700 0 \
1701 -c "Verifying peer X.509 certificate... ok" \
Przemyslaw Stekielb3de3fd2021-10-26 12:25:27 +02001702 -c "Ciphersuite is TLS-ECDHE-ECDSA" \
1703 -s "key types: Opaque - invalid PK" \
1704 -s "Ciphersuite is TLS-ECDHE-ECDSA" \
Przemyslaw Stekielab09c9e2021-10-04 11:13:22 +02001705 -S "error" \
1706 -C "error"
1707
Przemyslaw Stekiel5b6c4c92021-10-06 11:31:49 +02001708# Test using an opaque private key for client/server authentication
1709requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
1710requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
1711requires_config_enabled MBEDTLS_ECDSA_C
1712requires_config_enabled MBEDTLS_SHA256_C
1713run_test "Opaque key for client/server authentication" \
Przemyslaw Stekielb3de3fd2021-10-26 12:25:27 +02001714 "$P_SRV auth_mode=required key_opaque=1 crt_file=data_files/server5.crt \
1715 key_file=data_files/server5.key" \
Przemyslaw Stekiel5b6c4c92021-10-06 11:31:49 +02001716 "$P_CLI key_opaque=1 crt_file=data_files/server5.crt \
1717 key_file=data_files/server5.key" \
1718 0 \
1719 -c "key type: Opaque" \
1720 -c "Verifying peer X.509 certificate... ok" \
Przemyslaw Stekielb3de3fd2021-10-26 12:25:27 +02001721 -c "Ciphersuite is TLS-ECDHE-ECDSA" \
1722 -s "key types: Opaque - invalid PK" \
Przemyslaw Stekiel5b6c4c92021-10-06 11:31:49 +02001723 -s "Verifying peer X.509 certificate... ok" \
Przemyslaw Stekielb3de3fd2021-10-26 12:25:27 +02001724 -s "Ciphersuite is TLS-ECDHE-ECDSA" \
Przemyslaw Stekiel5b6c4c92021-10-06 11:31:49 +02001725 -S "error" \
1726 -C "error"
1727
Manuel Pégourié-Gonnard938be422022-06-14 10:43:36 +02001728# Opaque keys not supported for static ECDH
1729requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
1730requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
1731run_test "Opaque key: server: ECDH-ECDSA not supported" \
1732 "$P_SRV debug_level=1 key_opaque=1
1733 crt_file=data_files/server5.crt key_file=data_files/server5.key" \
1734 "$P_CLI force_ciphersuite=TLS-ECDH-ECDSA-WITH-AES-128-GCM-SHA256" \
1735 1 \
1736 -s "server key not ECDH capable" \
1737 -s "ssl_get_ecdh_params_from_cert() returned" \
1738 -s "error" \
1739 -c "error"
1740
1741# Opaque keys not supported for static ECDH
1742requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
1743requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
1744run_test "Opaque key: server: ECDH-RSA not supported" \
1745 "$P_SRV debug_level=1 key_opaque=1
1746 crt_file=data_files/server5.crt key_file=data_files/server5.key" \
1747 "$P_CLI force_ciphersuite=TLS-ECDH-RSA-WITH-AES-128-GCM-SHA256" \
1748 1 \
1749 -s "server key not ECDH capable" \
1750 -s "ssl_get_ecdh_params_from_cert() returned" \
1751 -s "error" \
1752 -c "error"
1753
Manuel Pégourié-Gonnarda49a00c2022-06-14 10:45:19 +02001754# Opaque PSKs not supported for mixed PSK
1755
1756requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
1757run_test "Opaque psk: client: ECDHE-PSK not supported" \
Gilles Peskined84733d2024-04-29 16:09:52 +02001758 "$P_SRV debug_level=1 psk=73776f726466697368 psk_identity=foo" \
1759 "$P_CLI debug_level=1 psk=73776f726466697368 psk_identity=foo psk_opaque=1 \
Manuel Pégourié-Gonnarda49a00c2022-06-14 10:45:19 +02001760 force_version=tls12 \
1761 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA" \
1762 1 \
1763 -c "opaque PSK not supported with ECDHE-PSK" \
1764 -s "error" \
1765 -c "error"
1766
1767requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
1768run_test "Opaque psk: client: DHE-PSK not supported" \
Gilles Peskined84733d2024-04-29 16:09:52 +02001769 "$P_SRV debug_level=1 psk=73776f726466697368 psk_identity=foo" \
1770 "$P_CLI debug_level=1 psk=73776f726466697368 psk_identity=foo psk_opaque=1 \
Manuel Pégourié-Gonnarda49a00c2022-06-14 10:45:19 +02001771 force_version=tls12 \
1772 force_ciphersuite=TLS-DHE-PSK-WITH-AES-128-CBC-SHA" \
1773 1 \
1774 -c "opaque PSK not supported with DHE-PSK" \
1775 -s "error" \
1776 -c "error"
1777
1778requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
1779run_test "Opaque psk: client: RSA-PSK not supported" \
Gilles Peskined84733d2024-04-29 16:09:52 +02001780 "$P_SRV debug_level=1 psk=73776f726466697368 psk_identity=foo" \
1781 "$P_CLI debug_level=1 psk=73776f726466697368 psk_identity=foo psk_opaque=1 \
Manuel Pégourié-Gonnarda49a00c2022-06-14 10:45:19 +02001782 force_version=tls12 \
1783 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA" \
1784 1 \
1785 -c "opaque PSK not supported with RSA-PSK" \
1786 -s "error" \
1787 -c "error"
1788
Manuel Pégourié-Gonnardd80d8a42022-06-14 10:53:15 +02001789requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
1790run_test "Opaque psk: server: ECDHE-PSK not supported" \
Gilles Peskined84733d2024-04-29 16:09:52 +02001791 "$P_SRV debug_level=1 psk=73776f726466697368 psk_identity=foo psk_opaque=1 \
Manuel Pégourié-Gonnardd80d8a42022-06-14 10:53:15 +02001792 force_version=tls12 \
1793 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA" \
Gilles Peskined84733d2024-04-29 16:09:52 +02001794 "$P_CLI debug_level=1 psk=73776f726466697368 psk_identity=foo" \
Manuel Pégourié-Gonnardd80d8a42022-06-14 10:53:15 +02001795 1 \
1796 -s "opaque PSK not supported with ECDHE-PSK" \
1797 -s "error" \
1798 -c "error"
1799
1800requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
1801run_test "Opaque psk: server: DHE-PSK not supported" \
Gilles Peskined84733d2024-04-29 16:09:52 +02001802 "$P_SRV debug_level=1 psk=73776f726466697368 psk_identity=foo psk_opaque=1 \
Manuel Pégourié-Gonnardd80d8a42022-06-14 10:53:15 +02001803 force_version=tls12 \
1804 force_ciphersuite=TLS-DHE-PSK-WITH-AES-128-CBC-SHA" \
Gilles Peskined84733d2024-04-29 16:09:52 +02001805 "$P_CLI debug_level=1 psk=73776f726466697368 psk_identity=foo" \
Manuel Pégourié-Gonnardd80d8a42022-06-14 10:53:15 +02001806 1 \
1807 -s "opaque PSK not supported with DHE-PSK" \
1808 -s "error" \
1809 -c "error"
1810
1811requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
1812run_test "Opaque psk: server: RSA-PSK not supported" \
Gilles Peskined84733d2024-04-29 16:09:52 +02001813 "$P_SRV debug_level=1 psk=73776f726466697368 psk_identity=foo psk_opaque=1 \
Manuel Pégourié-Gonnardd80d8a42022-06-14 10:53:15 +02001814 force_version=tls12 \
1815 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA" \
Gilles Peskined84733d2024-04-29 16:09:52 +02001816 "$P_CLI debug_level=1 psk=73776f726466697368 psk_identity=foo" \
Manuel Pégourié-Gonnardd80d8a42022-06-14 10:53:15 +02001817 1 \
1818 -s "opaque PSK not supported with RSA-PSK" \
1819 -s "error" \
1820 -c "error"
1821
Hanno Becker9b5853c2018-11-16 17:28:40 +00001822# Test ciphersuites which we expect to be fully supported by PSA Crypto
1823# and check that we don't fall back to Mbed TLS' internal crypto primitives.
1824run_test_psa TLS-ECDHE-ECDSA-WITH-AES-128-CCM
1825run_test_psa TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8
1826run_test_psa TLS-ECDHE-ECDSA-WITH-AES-256-CCM
1827run_test_psa TLS-ECDHE-ECDSA-WITH-AES-256-CCM-8
1828run_test_psa TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
1829run_test_psa TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384
1830run_test_psa TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA
1831run_test_psa TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256
1832run_test_psa TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384
1833
Hanno Becker354e2482019-01-08 11:40:25 +00001834requires_config_enabled MBEDTLS_ECP_DP_SECP521R1_ENABLED
1835run_test_psa_force_curve "secp521r1"
1836requires_config_enabled MBEDTLS_ECP_DP_BP512R1_ENABLED
1837run_test_psa_force_curve "brainpoolP512r1"
1838requires_config_enabled MBEDTLS_ECP_DP_SECP384R1_ENABLED
1839run_test_psa_force_curve "secp384r1"
1840requires_config_enabled MBEDTLS_ECP_DP_BP384R1_ENABLED
1841run_test_psa_force_curve "brainpoolP384r1"
1842requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
1843run_test_psa_force_curve "secp256r1"
1844requires_config_enabled MBEDTLS_ECP_DP_SECP256K1_ENABLED
1845run_test_psa_force_curve "secp256k1"
1846requires_config_enabled MBEDTLS_ECP_DP_BP256R1_ENABLED
1847run_test_psa_force_curve "brainpoolP256r1"
1848requires_config_enabled MBEDTLS_ECP_DP_SECP224R1_ENABLED
1849run_test_psa_force_curve "secp224r1"
Gilles Peskinedefdc3b2021-03-23 13:59:58 +01001850## SECP224K1 is buggy via the PSA API
Dave Rodgman52af7692022-03-31 14:27:24 +01001851## (https://github.com/Mbed-TLS/mbedtls/issues/3541),
Gilles Peskinedefdc3b2021-03-23 13:59:58 +01001852## so it is disabled in PSA even when it's enabled in Mbed TLS.
1853## The proper dependency would be on PSA_WANT_ECC_SECP_K1_224 but
1854## dependencies on PSA symbols in ssl-opt.sh are not implemented yet.
1855#requires_config_enabled MBEDTLS_ECP_DP_SECP224K1_ENABLED
1856#run_test_psa_force_curve "secp224k1"
Hanno Becker354e2482019-01-08 11:40:25 +00001857requires_config_enabled MBEDTLS_ECP_DP_SECP192R1_ENABLED
1858run_test_psa_force_curve "secp192r1"
1859requires_config_enabled MBEDTLS_ECP_DP_SECP192K1_ENABLED
1860run_test_psa_force_curve "secp192k1"
1861
Andres Amaya Garciab84c40b2017-09-06 15:44:01 +01001862# Test current time in ServerHello
1863requires_config_enabled MBEDTLS_HAVE_TIME
Manuel Pégourié-Gonnardce66d5e2018-06-14 11:11:15 +02001864run_test "ServerHello contains gmt_unix_time" \
Andres Amaya Garciab84c40b2017-09-06 15:44:01 +01001865 "$P_SRV debug_level=3" \
1866 "$P_CLI debug_level=3" \
1867 0 \
Andres Amaya Garciab84c40b2017-09-06 15:44:01 +01001868 -f "check_server_hello_time" \
1869 -F "check_server_hello_time"
1870
Simon Butcher8e004102016-10-14 00:48:33 +01001871# Test for uniqueness of IVs in AEAD ciphersuites
1872run_test "Unique IV in GCM" \
1873 "$P_SRV exchanges=20 debug_level=4" \
1874 "$P_CLI exchanges=20 debug_level=4 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384" \
1875 0 \
1876 -u "IV used" \
1877 -U "IV used"
1878
Janos Follathee11be62019-04-04 12:03:30 +01001879# Tests for certificate verification callback
1880run_test "Configuration-specific CRT verification callback" \
1881 "$P_SRV debug_level=3" \
1882 "$P_CLI context_crt_cb=0 debug_level=3" \
1883 0 \
Janos Follathee11be62019-04-04 12:03:30 +01001884 -S "error" \
1885 -c "Verify requested for " \
1886 -c "Use configuration-specific verification callback" \
1887 -C "Use context-specific verification callback" \
1888 -C "error"
1889
Hanno Beckerefb440a2019-04-03 13:04:33 +01001890run_test "Context-specific CRT verification callback" \
1891 "$P_SRV debug_level=3" \
1892 "$P_CLI context_crt_cb=1 debug_level=3" \
1893 0 \
Hanno Beckerefb440a2019-04-03 13:04:33 +01001894 -S "error" \
Janos Follathee11be62019-04-04 12:03:30 +01001895 -c "Verify requested for " \
1896 -c "Use context-specific verification callback" \
1897 -C "Use configuration-specific verification callback" \
Hanno Beckerefb440a2019-04-03 13:04:33 +01001898 -C "error"
1899
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +01001900# Tests for rc4 option
1901
Gilles Peskine719a6522022-04-15 20:03:33 +02001902# Manual dependencies on the ciphersuite support are necessary
1903# because the automatic requirements from force_ciphersuite=... detection
1904# make an exception for these test cases since they expect a handshake
1905# failure.
1906requires_config_enabled MBEDTLS_ARC4_C
1907requires_config_enabled MBEDTLS_SHA1_C
1908requires_config_enabled MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
Simon Butchera410af52016-05-19 22:12:18 +01001909requires_config_enabled MBEDTLS_REMOVE_ARC4_CIPHERSUITES
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +01001910run_test "RC4: server disabled, client enabled" \
1911 "$P_SRV" \
1912 "$P_CLI force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
1913 1 \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01001914 -s "SSL - The server has no ciphersuites in common"
1915
Gilles Peskine719a6522022-04-15 20:03:33 +02001916requires_config_enabled MBEDTLS_ARC4_C
1917requires_config_enabled MBEDTLS_SHA1_C
1918requires_config_enabled MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
Simon Butchera410af52016-05-19 22:12:18 +01001919requires_config_enabled MBEDTLS_REMOVE_ARC4_CIPHERSUITES
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01001920run_test "RC4: server half, client enabled" \
1921 "$P_SRV arc4=1" \
1922 "$P_CLI force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
1923 1 \
1924 -s "SSL - The server has no ciphersuites in common"
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +01001925
Gilles Peskine719a6522022-04-15 20:03:33 +02001926requires_config_enabled MBEDTLS_ARC4_C
1927requires_config_enabled MBEDTLS_SHA1_C
1928requires_config_enabled MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
1929requires_config_enabled MBEDTLS_REMOVE_ARC4_CIPHERSUITES
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +01001930run_test "RC4: server enabled, client disabled" \
1931 "$P_SRV force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
1932 "$P_CLI" \
1933 1 \
1934 -s "SSL - The server has no ciphersuites in common"
1935
Gilles Peskine719a6522022-04-15 20:03:33 +02001936# Run even if the ciphersuite is disabled by default, but only if the
1937# requisite cryptographic mechanisms are present.
1938# Having "force_ciphersuite=..." in the client or server arguments would
1939# prevent that due to the automatic detection, so hide behind some
1940# shell expansion to fool the automatic detection.
1941with_rc4_ciphersuite() {
1942 exec "$@" force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA
1943}
1944requires_config_enabled MBEDTLS_ARC4_C
1945requires_config_enabled MBEDTLS_SHA1_C
1946requires_config_enabled MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +01001947run_test "RC4: both enabled" \
Gilles Peskine719a6522022-04-15 20:03:33 +02001948 "with_rc4_ciphersuite $P_SRV" \
1949 "with_rc4_ciphersuite $P_CLI" \
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +01001950 0 \
Manuel Pégourié-Gonnard51d81662015-01-14 17:20:46 +01001951 -S "SSL - None of the common ciphersuites is usable" \
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +01001952 -S "SSL - The server has no ciphersuites in common"
1953
Hanno Beckerd26bb202018-08-17 09:54:10 +01001954# Test empty CA list in CertificateRequest in TLS 1.1 and earlier
1955
1956requires_gnutls
Hanno Beckerd26bb202018-08-17 09:54:10 +01001957run_test "CertificateRequest with empty CA list, TLS 1.1 (GnuTLS server)" \
1958 "$G_SRV"\
1959 "$P_CLI force_version=tls1_1" \
1960 0
1961
1962requires_gnutls
Hanno Beckerd26bb202018-08-17 09:54:10 +01001963run_test "CertificateRequest with empty CA list, TLS 1.0 (GnuTLS server)" \
1964 "$G_SRV"\
1965 "$P_CLI force_version=tls1" \
1966 0
1967
Gilles Peskinebc70a182017-05-09 15:59:24 +02001968# Tests for SHA-1 support
1969
Gilles Peskinee4d2ab82024-04-29 17:42:52 +02001970requires_config_enabled MBEDTLS_SHA1_C
Gilles Peskinebc70a182017-05-09 15:59:24 +02001971run_test "SHA-1 forbidden by default in server certificate" \
1972 "$P_SRV key_file=data_files/server2.key crt_file=data_files/server2.crt" \
1973 "$P_CLI debug_level=2 allow_sha1=0" \
1974 1 \
1975 -c "The certificate is signed with an unacceptable hash"
1976
Gilles Peskinee4d2ab82024-04-29 17:42:52 +02001977requires_config_enabled MBEDTLS_SHA1_C
Gilles Peskinebc70a182017-05-09 15:59:24 +02001978run_test "SHA-1 explicitly allowed in server certificate" \
1979 "$P_SRV key_file=data_files/server2.key crt_file=data_files/server2.crt" \
1980 "$P_CLI allow_sha1=1" \
1981 0
1982
1983run_test "SHA-256 allowed by default in server certificate" \
1984 "$P_SRV key_file=data_files/server2.key crt_file=data_files/server2-sha256.crt" \
1985 "$P_CLI allow_sha1=0" \
1986 0
1987
Gilles Peskinee4d2ab82024-04-29 17:42:52 +02001988requires_config_enabled MBEDTLS_SHA1_C
1989requires_config_enabled MBEDTLS_RSA_C
Gilles Peskinebc70a182017-05-09 15:59:24 +02001990run_test "SHA-1 forbidden by default in client certificate" \
1991 "$P_SRV auth_mode=required allow_sha1=0" \
1992 "$P_CLI key_file=data_files/cli-rsa.key crt_file=data_files/cli-rsa-sha1.crt" \
1993 1 \
1994 -s "The certificate is signed with an unacceptable hash"
1995
Gilles Peskinee4d2ab82024-04-29 17:42:52 +02001996requires_config_enabled MBEDTLS_SHA1_C
1997requires_config_enabled MBEDTLS_RSA_C
Gilles Peskinebc70a182017-05-09 15:59:24 +02001998run_test "SHA-1 explicitly allowed in client certificate" \
1999 "$P_SRV auth_mode=required allow_sha1=1" \
2000 "$P_CLI key_file=data_files/cli-rsa.key crt_file=data_files/cli-rsa-sha1.crt" \
2001 0
2002
Gilles Peskinee4d2ab82024-04-29 17:42:52 +02002003requires_config_enabled MBEDTLS_RSA_C
2004requires_config_enabled MBEDTLS_SHA256_C
Gilles Peskinebc70a182017-05-09 15:59:24 +02002005run_test "SHA-256 allowed by default in client certificate" \
2006 "$P_SRV auth_mode=required allow_sha1=0" \
2007 "$P_CLI key_file=data_files/cli-rsa.key crt_file=data_files/cli-rsa-sha256.crt" \
2008 0
2009
Hanno Becker7ae8a762018-08-14 15:43:35 +01002010# Tests for datagram packing
2011run_test "DTLS: multiple records in same datagram, client and server" \
2012 "$P_SRV dtls=1 dgram_packing=1 debug_level=2" \
2013 "$P_CLI dtls=1 dgram_packing=1 debug_level=2" \
2014 0 \
2015 -c "next record in same datagram" \
2016 -s "next record in same datagram"
2017
2018run_test "DTLS: multiple records in same datagram, client only" \
2019 "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \
2020 "$P_CLI dtls=1 dgram_packing=1 debug_level=2" \
2021 0 \
2022 -s "next record in same datagram" \
2023 -C "next record in same datagram"
2024
2025run_test "DTLS: multiple records in same datagram, server only" \
2026 "$P_SRV dtls=1 dgram_packing=1 debug_level=2" \
2027 "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \
2028 0 \
2029 -S "next record in same datagram" \
2030 -c "next record in same datagram"
2031
2032run_test "DTLS: multiple records in same datagram, neither client nor server" \
2033 "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \
2034 "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \
2035 0 \
2036 -S "next record in same datagram" \
2037 -C "next record in same datagram"
2038
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01002039# Tests for Truncated HMAC extension
2040
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +01002041run_test "Truncated HMAC: client default, server default" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02002042 "$P_SRV debug_level=4" \
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +01002043 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01002044 0 \
Hanno Becker992b6872017-11-09 18:57:39 +00002045 -s "dumping 'expected mac' (20 bytes)" \
2046 -S "dumping 'expected mac' (10 bytes)"
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01002047
Hanno Becker32c55012017-11-10 08:42:54 +00002048requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +01002049run_test "Truncated HMAC: client disabled, server default" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02002050 "$P_SRV debug_level=4" \
Hanno Becker909f9a32017-11-21 17:10:12 +00002051 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=0" \
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01002052 0 \
Hanno Becker992b6872017-11-09 18:57:39 +00002053 -s "dumping 'expected mac' (20 bytes)" \
2054 -S "dumping 'expected mac' (10 bytes)"
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +01002055
Hanno Becker32c55012017-11-10 08:42:54 +00002056requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +01002057run_test "Truncated HMAC: client enabled, server default" \
2058 "$P_SRV debug_level=4" \
Hanno Becker909f9a32017-11-21 17:10:12 +00002059 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +01002060 0 \
Hanno Becker992b6872017-11-09 18:57:39 +00002061 -s "dumping 'expected mac' (20 bytes)" \
2062 -S "dumping 'expected mac' (10 bytes)"
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +01002063
Hanno Becker32c55012017-11-10 08:42:54 +00002064requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +01002065run_test "Truncated HMAC: client enabled, server disabled" \
2066 "$P_SRV debug_level=4 trunc_hmac=0" \
Hanno Becker909f9a32017-11-21 17:10:12 +00002067 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +01002068 0 \
Hanno Becker992b6872017-11-09 18:57:39 +00002069 -s "dumping 'expected mac' (20 bytes)" \
2070 -S "dumping 'expected mac' (10 bytes)"
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +01002071
Hanno Becker32c55012017-11-10 08:42:54 +00002072requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Hanno Becker34d0c3f2017-11-17 15:46:24 +00002073run_test "Truncated HMAC: client disabled, server enabled" \
2074 "$P_SRV debug_level=4 trunc_hmac=1" \
Hanno Becker909f9a32017-11-21 17:10:12 +00002075 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=0" \
Hanno Becker34d0c3f2017-11-17 15:46:24 +00002076 0 \
2077 -s "dumping 'expected mac' (20 bytes)" \
2078 -S "dumping 'expected mac' (10 bytes)"
2079
2080requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +01002081run_test "Truncated HMAC: client enabled, server enabled" \
2082 "$P_SRV debug_level=4 trunc_hmac=1" \
Hanno Becker909f9a32017-11-21 17:10:12 +00002083 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnarde117a8f2015-01-09 12:39:35 +01002084 0 \
Hanno Becker992b6872017-11-09 18:57:39 +00002085 -S "dumping 'expected mac' (20 bytes)" \
2086 -s "dumping 'expected mac' (10 bytes)"
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01002087
Hanno Becker4c4f4102017-11-10 09:16:05 +00002088run_test "Truncated HMAC, DTLS: client default, server default" \
2089 "$P_SRV dtls=1 debug_level=4" \
2090 "$P_CLI dtls=1 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
2091 0 \
2092 -s "dumping 'expected mac' (20 bytes)" \
2093 -S "dumping 'expected mac' (10 bytes)"
2094
2095requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
2096run_test "Truncated HMAC, DTLS: client disabled, server default" \
2097 "$P_SRV dtls=1 debug_level=4" \
Hanno Becker909f9a32017-11-21 17:10:12 +00002098 "$P_CLI dtls=1 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=0" \
Hanno Becker4c4f4102017-11-10 09:16:05 +00002099 0 \
2100 -s "dumping 'expected mac' (20 bytes)" \
2101 -S "dumping 'expected mac' (10 bytes)"
2102
2103requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
2104run_test "Truncated HMAC, DTLS: client enabled, server default" \
2105 "$P_SRV dtls=1 debug_level=4" \
Hanno Becker909f9a32017-11-21 17:10:12 +00002106 "$P_CLI dtls=1 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=1" \
Hanno Becker4c4f4102017-11-10 09:16:05 +00002107 0 \
2108 -s "dumping 'expected mac' (20 bytes)" \
2109 -S "dumping 'expected mac' (10 bytes)"
2110
2111requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
2112run_test "Truncated HMAC, DTLS: client enabled, server disabled" \
2113 "$P_SRV dtls=1 debug_level=4 trunc_hmac=0" \
Hanno Becker909f9a32017-11-21 17:10:12 +00002114 "$P_CLI dtls=1 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=1" \
Hanno Becker4c4f4102017-11-10 09:16:05 +00002115 0 \
2116 -s "dumping 'expected mac' (20 bytes)" \
2117 -S "dumping 'expected mac' (10 bytes)"
2118
2119requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
2120run_test "Truncated HMAC, DTLS: client disabled, server enabled" \
2121 "$P_SRV dtls=1 debug_level=4 trunc_hmac=1" \
Hanno Becker909f9a32017-11-21 17:10:12 +00002122 "$P_CLI dtls=1 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA trunc_hmac=0" \
Hanno Becker4c4f4102017-11-10 09:16:05 +00002123 0 \
2124 -s "dumping 'expected mac' (20 bytes)" \
2125 -S "dumping 'expected mac' (10 bytes)"
2126
2127requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
2128run_test "Truncated HMAC, DTLS: client enabled, server enabled" \
2129 "$P_SRV dtls=1 debug_level=4 trunc_hmac=1" \
Hanno Becker909f9a32017-11-21 17:10:12 +00002130 "$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 +01002131 0 \
2132 -S "dumping 'expected mac' (20 bytes)" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01002133 -s "dumping 'expected mac' (10 bytes)"
2134
Jarno Lamsa2937d812019-06-04 11:33:23 +03002135# Tests for Context serialization
2136
2137requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002138run_test "Context serialization, client serializes, CCM" \
Manuel Pégourié-Gonnard862b3192019-07-23 14:13:43 +02002139 "$P_SRV dtls=1 serialize=0 exchanges=2" \
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002140 "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2141 0 \
2142 -c "Deserializing connection..." \
2143 -S "Deserializing connection..."
2144
2145requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2146run_test "Context serialization, client serializes, ChaChaPoly" \
2147 "$P_SRV dtls=1 serialize=0 exchanges=2" \
2148 "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2149 0 \
2150 -c "Deserializing connection..." \
2151 -S "Deserializing connection..."
2152
2153requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2154run_test "Context serialization, client serializes, GCM" \
2155 "$P_SRV dtls=1 serialize=0 exchanges=2" \
2156 "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256" \
Jarno Lamsa2937d812019-06-04 11:33:23 +03002157 0 \
Jarno Lamsacbee1b32019-06-04 15:18:19 +03002158 -c "Deserializing connection..." \
Jarno Lamsa2937d812019-06-04 11:33:23 +03002159 -S "Deserializing connection..."
2160
2161requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Becker1b18fd32019-08-30 11:18:59 +01002162requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2163run_test "Context serialization, client serializes, with CID" \
2164 "$P_SRV dtls=1 serialize=0 exchanges=2 cid=1 cid_val=dead" \
2165 "$P_CLI dtls=1 serialize=1 exchanges=2 cid=1 cid_val=beef" \
2166 0 \
2167 -c "Deserializing connection..." \
2168 -S "Deserializing connection..."
2169
2170requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002171run_test "Context serialization, server serializes, CCM" \
Manuel Pégourié-Gonnard862b3192019-07-23 14:13:43 +02002172 "$P_SRV dtls=1 serialize=1 exchanges=2" \
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002173 "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2174 0 \
2175 -C "Deserializing connection..." \
2176 -s "Deserializing connection..."
2177
2178requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2179run_test "Context serialization, server serializes, ChaChaPoly" \
2180 "$P_SRV dtls=1 serialize=1 exchanges=2" \
2181 "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2182 0 \
2183 -C "Deserializing connection..." \
2184 -s "Deserializing connection..."
2185
2186requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2187run_test "Context serialization, server serializes, GCM" \
2188 "$P_SRV dtls=1 serialize=1 exchanges=2" \
2189 "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256" \
Jarno Lamsa2937d812019-06-04 11:33:23 +03002190 0 \
Jarno Lamsacbee1b32019-06-04 15:18:19 +03002191 -C "Deserializing connection..." \
Jarno Lamsa2937d812019-06-04 11:33:23 +03002192 -s "Deserializing connection..."
2193
2194requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Becker1b18fd32019-08-30 11:18:59 +01002195requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2196run_test "Context serialization, server serializes, with CID" \
2197 "$P_SRV dtls=1 serialize=1 exchanges=2 cid=1 cid_val=dead" \
2198 "$P_CLI dtls=1 serialize=0 exchanges=2 cid=1 cid_val=beef" \
2199 0 \
2200 -C "Deserializing connection..." \
2201 -s "Deserializing connection..."
2202
2203requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002204run_test "Context serialization, both serialize, CCM" \
Manuel Pégourié-Gonnard862b3192019-07-23 14:13:43 +02002205 "$P_SRV dtls=1 serialize=1 exchanges=2" \
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002206 "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2207 0 \
2208 -c "Deserializing connection..." \
2209 -s "Deserializing connection..."
2210
2211requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2212run_test "Context serialization, both serialize, ChaChaPoly" \
2213 "$P_SRV dtls=1 serialize=1 exchanges=2" \
2214 "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2215 0 \
2216 -c "Deserializing connection..." \
2217 -s "Deserializing connection..."
2218
2219requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2220run_test "Context serialization, both serialize, GCM" \
2221 "$P_SRV dtls=1 serialize=1 exchanges=2" \
2222 "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256" \
Jarno Lamsa2937d812019-06-04 11:33:23 +03002223 0 \
Jarno Lamsacbee1b32019-06-04 15:18:19 +03002224 -c "Deserializing connection..." \
Jarno Lamsa2937d812019-06-04 11:33:23 +03002225 -s "Deserializing connection..."
2226
Jarno Lamsac2376f02019-06-06 10:44:14 +03002227requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Becker1b18fd32019-08-30 11:18:59 +01002228requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2229run_test "Context serialization, both serialize, with CID" \
2230 "$P_SRV dtls=1 serialize=1 exchanges=2 cid=1 cid_val=dead" \
2231 "$P_CLI dtls=1 serialize=1 exchanges=2 cid=1 cid_val=beef" \
2232 0 \
2233 -c "Deserializing connection..." \
2234 -s "Deserializing connection..."
2235
2236requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002237run_test "Context serialization, re-init, client serializes, CCM" \
Manuel Pégourié-Gonnard862b3192019-07-23 14:13:43 +02002238 "$P_SRV dtls=1 serialize=0 exchanges=2" \
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002239 "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2240 0 \
2241 -c "Deserializing connection..." \
2242 -S "Deserializing connection..."
2243
2244requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2245run_test "Context serialization, re-init, client serializes, ChaChaPoly" \
2246 "$P_SRV dtls=1 serialize=0 exchanges=2" \
2247 "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2248 0 \
2249 -c "Deserializing connection..." \
2250 -S "Deserializing connection..."
2251
2252requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2253run_test "Context serialization, re-init, client serializes, GCM" \
2254 "$P_SRV dtls=1 serialize=0 exchanges=2" \
2255 "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256" \
Jarno Lamsac2376f02019-06-06 10:44:14 +03002256 0 \
2257 -c "Deserializing connection..." \
2258 -S "Deserializing connection..."
2259
Jarno Lamsac2376f02019-06-06 10:44:14 +03002260requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Becker1b18fd32019-08-30 11:18:59 +01002261requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2262run_test "Context serialization, re-init, client serializes, with CID" \
2263 "$P_SRV dtls=1 serialize=0 exchanges=2 cid=1 cid_val=dead" \
2264 "$P_CLI dtls=1 serialize=2 exchanges=2 cid=1 cid_val=beef" \
2265 0 \
2266 -c "Deserializing connection..." \
2267 -S "Deserializing connection..."
2268
2269requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002270run_test "Context serialization, re-init, server serializes, CCM" \
Manuel Pégourié-Gonnard862b3192019-07-23 14:13:43 +02002271 "$P_SRV dtls=1 serialize=2 exchanges=2" \
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002272 "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2273 0 \
2274 -C "Deserializing connection..." \
2275 -s "Deserializing connection..."
2276
2277requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2278run_test "Context serialization, re-init, server serializes, ChaChaPoly" \
2279 "$P_SRV dtls=1 serialize=2 exchanges=2" \
2280 "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2281 0 \
2282 -C "Deserializing connection..." \
2283 -s "Deserializing connection..."
2284
2285requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2286run_test "Context serialization, re-init, server serializes, GCM" \
2287 "$P_SRV dtls=1 serialize=2 exchanges=2" \
2288 "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
Jarno Lamsac2376f02019-06-06 10:44:14 +03002289 0 \
2290 -C "Deserializing connection..." \
2291 -s "Deserializing connection..."
2292
Jarno Lamsac2376f02019-06-06 10:44:14 +03002293requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Becker1b18fd32019-08-30 11:18:59 +01002294requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2295run_test "Context serialization, re-init, server serializes, with CID" \
2296 "$P_SRV dtls=1 serialize=2 exchanges=2 cid=1 cid_val=dead" \
2297 "$P_CLI dtls=1 serialize=0 exchanges=2 cid=1 cid_val=beef" \
2298 0 \
2299 -C "Deserializing connection..." \
2300 -s "Deserializing connection..."
2301
2302requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002303run_test "Context serialization, re-init, both serialize, CCM" \
Manuel Pégourié-Gonnard862b3192019-07-23 14:13:43 +02002304 "$P_SRV dtls=1 serialize=2 exchanges=2" \
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002305 "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2306 0 \
2307 -c "Deserializing connection..." \
2308 -s "Deserializing connection..."
2309
2310requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2311run_test "Context serialization, re-init, both serialize, ChaChaPoly" \
2312 "$P_SRV dtls=1 serialize=2 exchanges=2" \
2313 "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2314 0 \
2315 -c "Deserializing connection..." \
2316 -s "Deserializing connection..."
2317
2318requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2319run_test "Context serialization, re-init, both serialize, GCM" \
2320 "$P_SRV dtls=1 serialize=2 exchanges=2" \
2321 "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
Jarno Lamsac2376f02019-06-06 10:44:14 +03002322 0 \
2323 -c "Deserializing connection..." \
2324 -s "Deserializing connection..."
2325
Hanno Becker1b18fd32019-08-30 11:18:59 +01002326requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2327requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2328run_test "Context serialization, re-init, both serialize, with CID" \
2329 "$P_SRV dtls=1 serialize=2 exchanges=2 cid=1 cid_val=dead" \
2330 "$P_CLI dtls=1 serialize=2 exchanges=2 cid=1 cid_val=beef" \
2331 0 \
2332 -c "Deserializing connection..." \
2333 -s "Deserializing connection..."
2334
Piotr Nowicki3de298f2020-04-16 14:35:19 +02002335requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2336run_test "Saving the serialized context to a file" \
2337 "$P_SRV dtls=1 serialize=1 context_file=context_srv.txt" \
2338 "$P_CLI dtls=1 serialize=1 context_file=context_cli.txt" \
2339 0 \
2340 -s "Save serialized context to a file... ok" \
2341 -c "Save serialized context to a file... ok"
2342rm -f context_srv.txt
2343rm -f context_cli.txt
2344
Hanno Becker7cf463e2019-04-09 18:08:47 +01002345# Tests for DTLS Connection ID extension
2346
Hanno Becker7cf463e2019-04-09 18:08:47 +01002347# So far, the CID API isn't implemented, so we can't
2348# grep for output witnessing its use. This needs to be
2349# changed once the CID extension is implemented.
2350
Hanno Beckera0e20d02019-05-15 14:03:01 +01002351requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002352run_test "Connection ID: Cli enabled, Srv disabled" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002353 "$P_SRV debug_level=3 dtls=1 cid=0" \
2354 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
2355 0 \
2356 -s "Disable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002357 -s "found CID extension" \
2358 -s "Client sent CID extension, but CID disabled" \
Hanno Becker6b78c832019-04-25 17:01:43 +01002359 -c "Enable use of CID extension." \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002360 -c "client hello, adding CID extension" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002361 -S "server hello, adding CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002362 -C "found CID extension" \
2363 -S "Copy CIDs into SSL transform" \
Hanno Beckerfcffdcc2019-04-26 17:19:46 +01002364 -C "Copy CIDs into SSL transform" \
2365 -c "Use of Connection ID was rejected by the server"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002366
Hanno Beckera0e20d02019-05-15 14:03:01 +01002367requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002368run_test "Connection ID: Cli disabled, Srv enabled" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002369 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
2370 "$P_CLI debug_level=3 dtls=1 cid=0" \
2371 0 \
2372 -c "Disable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002373 -C "client hello, adding CID extension" \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002374 -S "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002375 -s "Enable use of CID extension." \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002376 -S "server hello, adding CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002377 -C "found CID extension" \
2378 -S "Copy CIDs into SSL transform" \
Hanno Beckerfcffdcc2019-04-26 17:19:46 +01002379 -C "Copy CIDs into SSL transform" \
Hanno Beckerb3e9dd52019-05-08 13:19:53 +01002380 -s "Use of Connection ID was not offered by client"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002381
Hanno Beckera0e20d02019-05-15 14:03:01 +01002382requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002383run_test "Connection ID: Cli+Srv enabled, Cli+Srv CID nonempty" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002384 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead" \
2385 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef" \
2386 0 \
2387 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002388 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002389 -c "client hello, adding CID extension" \
2390 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002391 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002392 -s "server hello, adding CID extension" \
2393 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002394 -c "Use of CID extension negotiated" \
2395 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002396 -c "Copy CIDs into SSL transform" \
2397 -c "Peer CID (length 2 Bytes): de ad" \
2398 -s "Peer CID (length 2 Bytes): be ef" \
2399 -s "Use of Connection ID has been negotiated" \
2400 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002401
Hanno Beckera0e20d02019-05-15 14:03:01 +01002402requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002403run_test "Connection ID, 3D: Cli+Srv enabled, Cli+Srv CID nonempty" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002404 -p "$P_PXY drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Becker78c91372019-05-08 13:31:15 +01002405 "$P_SRV debug_level=3 dtls=1 cid=1 dgram_packing=0 cid_val=dead" \
2406 "$P_CLI debug_level=3 dtls=1 cid=1 dgram_packing=0 cid_val=beef" \
2407 0 \
2408 -c "Enable use of CID extension." \
2409 -s "Enable use of CID extension." \
2410 -c "client hello, adding CID extension" \
2411 -s "found CID extension" \
2412 -s "Use of CID extension negotiated" \
2413 -s "server hello, adding CID extension" \
2414 -c "found CID extension" \
2415 -c "Use of CID extension negotiated" \
2416 -s "Copy CIDs into SSL transform" \
2417 -c "Copy CIDs into SSL transform" \
2418 -c "Peer CID (length 2 Bytes): de ad" \
2419 -s "Peer CID (length 2 Bytes): be ef" \
2420 -s "Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002421 -c "Use of Connection ID has been negotiated" \
2422 -c "ignoring unexpected CID" \
2423 -s "ignoring unexpected CID"
Hanno Becker78c91372019-05-08 13:31:15 +01002424
Hanno Beckera0e20d02019-05-15 14:03:01 +01002425requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002426run_test "Connection ID, MTU: Cli+Srv enabled, Cli+Srv CID nonempty" \
2427 -p "$P_PXY mtu=800" \
2428 "$P_SRV debug_level=3 mtu=800 dtls=1 cid=1 cid_val=dead" \
2429 "$P_CLI debug_level=3 mtu=800 dtls=1 cid=1 cid_val=beef" \
2430 0 \
2431 -c "Enable use of CID extension." \
2432 -s "Enable use of CID extension." \
2433 -c "client hello, adding CID extension" \
2434 -s "found CID extension" \
2435 -s "Use of CID extension negotiated" \
2436 -s "server hello, adding CID extension" \
2437 -c "found CID extension" \
2438 -c "Use of CID extension negotiated" \
2439 -s "Copy CIDs into SSL transform" \
2440 -c "Copy CIDs into SSL transform" \
2441 -c "Peer CID (length 2 Bytes): de ad" \
2442 -s "Peer CID (length 2 Bytes): be ef" \
2443 -s "Use of Connection ID has been negotiated" \
2444 -c "Use of Connection ID has been negotiated"
2445
Hanno Beckera0e20d02019-05-15 14:03:01 +01002446requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002447run_test "Connection ID, 3D+MTU: Cli+Srv enabled, Cli+Srv CID nonempty" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002448 -p "$P_PXY mtu=800 drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Becker78c91372019-05-08 13:31:15 +01002449 "$P_SRV debug_level=3 mtu=800 dtls=1 cid=1 cid_val=dead" \
2450 "$P_CLI debug_level=3 mtu=800 dtls=1 cid=1 cid_val=beef" \
2451 0 \
2452 -c "Enable use of CID extension." \
2453 -s "Enable use of CID extension." \
2454 -c "client hello, adding CID extension" \
2455 -s "found CID extension" \
2456 -s "Use of CID extension negotiated" \
2457 -s "server hello, adding CID extension" \
2458 -c "found CID extension" \
2459 -c "Use of CID extension negotiated" \
2460 -s "Copy CIDs into SSL transform" \
2461 -c "Copy CIDs into SSL transform" \
2462 -c "Peer CID (length 2 Bytes): de ad" \
2463 -s "Peer CID (length 2 Bytes): be ef" \
2464 -s "Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002465 -c "Use of Connection ID has been negotiated" \
2466 -c "ignoring unexpected CID" \
2467 -s "ignoring unexpected CID"
Hanno Becker78c91372019-05-08 13:31:15 +01002468
Hanno Beckera0e20d02019-05-15 14:03:01 +01002469requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002470run_test "Connection ID: Cli+Srv enabled, Cli CID empty" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002471 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
2472 "$P_CLI debug_level=3 dtls=1 cid=1" \
2473 0 \
2474 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002475 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002476 -c "client hello, adding CID extension" \
2477 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002478 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002479 -s "server hello, adding CID extension" \
2480 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002481 -c "Use of CID extension negotiated" \
2482 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002483 -c "Copy CIDs into SSL transform" \
2484 -c "Peer CID (length 4 Bytes): de ad be ef" \
2485 -s "Peer CID (length 0 Bytes):" \
2486 -s "Use of Connection ID has been negotiated" \
2487 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002488
Hanno Beckera0e20d02019-05-15 14:03:01 +01002489requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002490run_test "Connection ID: Cli+Srv enabled, Srv CID empty" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002491 "$P_SRV debug_level=3 dtls=1 cid=1" \
2492 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
2493 0 \
2494 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002495 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002496 -c "client hello, adding CID extension" \
2497 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002498 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002499 -s "server hello, adding CID extension" \
2500 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002501 -c "Use of CID extension negotiated" \
2502 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002503 -c "Copy CIDs into SSL transform" \
2504 -s "Peer CID (length 4 Bytes): de ad be ef" \
2505 -c "Peer CID (length 0 Bytes):" \
2506 -s "Use of Connection ID has been negotiated" \
2507 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002508
Hanno Beckera0e20d02019-05-15 14:03:01 +01002509requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002510run_test "Connection ID: Cli+Srv enabled, Cli+Srv CID empty" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002511 "$P_SRV debug_level=3 dtls=1 cid=1" \
2512 "$P_CLI debug_level=3 dtls=1 cid=1" \
2513 0 \
2514 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002515 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002516 -c "client hello, adding CID extension" \
2517 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002518 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002519 -s "server hello, adding CID extension" \
2520 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002521 -c "Use of CID extension negotiated" \
2522 -s "Copy CIDs into SSL transform" \
Hanno Beckerfcffdcc2019-04-26 17:19:46 +01002523 -c "Copy CIDs into SSL transform" \
2524 -S "Use of Connection ID has been negotiated" \
2525 -C "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002526
Hanno Beckera0e20d02019-05-15 14:03:01 +01002527requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002528run_test "Connection ID: Cli+Srv enabled, Cli+Srv CID nonempty, AES-128-CCM-8" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002529 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead" \
2530 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2531 0 \
2532 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002533 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002534 -c "client hello, adding CID extension" \
2535 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002536 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002537 -s "server hello, adding CID extension" \
2538 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002539 -c "Use of CID extension negotiated" \
2540 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002541 -c "Copy CIDs into SSL transform" \
2542 -c "Peer CID (length 2 Bytes): de ad" \
2543 -s "Peer CID (length 2 Bytes): be ef" \
2544 -s "Use of Connection ID has been negotiated" \
2545 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002546
Hanno Beckera0e20d02019-05-15 14:03:01 +01002547requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002548run_test "Connection ID: Cli+Srv enabled, Cli CID empty, AES-128-CCM-8" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002549 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
2550 "$P_CLI debug_level=3 dtls=1 cid=1 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2551 0 \
2552 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002553 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002554 -c "client hello, adding CID extension" \
2555 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002556 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002557 -s "server hello, adding CID extension" \
2558 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002559 -c "Use of CID extension negotiated" \
2560 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002561 -c "Copy CIDs into SSL transform" \
2562 -c "Peer CID (length 4 Bytes): de ad be ef" \
2563 -s "Peer CID (length 0 Bytes):" \
2564 -s "Use of Connection ID has been negotiated" \
2565 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002566
Hanno Beckera0e20d02019-05-15 14:03:01 +01002567requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002568run_test "Connection ID: Cli+Srv enabled, Srv CID empty, AES-128-CCM-8" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002569 "$P_SRV debug_level=3 dtls=1 cid=1" \
2570 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=deadbeef force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2571 0 \
2572 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002573 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002574 -c "client hello, adding CID extension" \
2575 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002576 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002577 -s "server hello, adding CID extension" \
2578 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002579 -c "Use of CID extension negotiated" \
2580 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002581 -c "Copy CIDs into SSL transform" \
2582 -s "Peer CID (length 4 Bytes): de ad be ef" \
2583 -c "Peer CID (length 0 Bytes):" \
2584 -s "Use of Connection ID has been negotiated" \
2585 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002586
Hanno Beckera0e20d02019-05-15 14:03:01 +01002587requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002588run_test "Connection ID: Cli+Srv enabled, Cli+Srv CID empty, AES-128-CCM-8" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002589 "$P_SRV debug_level=3 dtls=1 cid=1" \
2590 "$P_CLI debug_level=3 dtls=1 cid=1 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2591 0 \
2592 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002593 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002594 -c "client hello, adding CID extension" \
2595 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002596 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002597 -s "server hello, adding CID extension" \
2598 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002599 -c "Use of CID extension negotiated" \
2600 -s "Copy CIDs into SSL transform" \
Hanno Beckerfcffdcc2019-04-26 17:19:46 +01002601 -c "Copy CIDs into SSL transform" \
2602 -S "Use of Connection ID has been negotiated" \
2603 -C "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002604
Hanno Beckera0e20d02019-05-15 14:03:01 +01002605requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002606run_test "Connection ID: Cli+Srv enabled, Cli+Srv CID nonempty, AES-128-CBC" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002607 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead" \
2608 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
2609 0 \
2610 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002611 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002612 -c "client hello, adding CID extension" \
2613 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002614 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002615 -s "server hello, adding CID extension" \
2616 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002617 -c "Use of CID extension negotiated" \
2618 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002619 -c "Copy CIDs into SSL transform" \
2620 -c "Peer CID (length 2 Bytes): de ad" \
2621 -s "Peer CID (length 2 Bytes): be ef" \
2622 -s "Use of Connection ID has been negotiated" \
2623 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002624
Hanno Beckera0e20d02019-05-15 14:03:01 +01002625requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002626run_test "Connection ID: Cli+Srv enabled, Cli CID empty, AES-128-CBC" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002627 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
2628 "$P_CLI debug_level=3 dtls=1 cid=1 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
2629 0 \
2630 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002631 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002632 -c "client hello, adding CID extension" \
2633 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002634 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002635 -s "server hello, adding CID extension" \
2636 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002637 -c "Use of CID extension negotiated" \
2638 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002639 -c "Copy CIDs into SSL transform" \
2640 -c "Peer CID (length 4 Bytes): de ad be ef" \
2641 -s "Peer CID (length 0 Bytes):" \
2642 -s "Use of Connection ID has been negotiated" \
2643 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002644
Hanno Beckera0e20d02019-05-15 14:03:01 +01002645requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002646run_test "Connection ID: Cli+Srv enabled, Srv CID empty, AES-128-CBC" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002647 "$P_SRV debug_level=3 dtls=1 cid=1" \
2648 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=deadbeef force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
2649 0 \
2650 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002651 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002652 -c "client hello, adding CID extension" \
2653 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002654 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002655 -s "server hello, adding CID extension" \
2656 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002657 -c "Use of CID extension negotiated" \
2658 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01002659 -c "Copy CIDs into SSL transform" \
2660 -s "Peer CID (length 4 Bytes): de ad be ef" \
2661 -c "Peer CID (length 0 Bytes):" \
2662 -s "Use of Connection ID has been negotiated" \
2663 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002664
Hanno Beckera0e20d02019-05-15 14:03:01 +01002665requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002666run_test "Connection ID: Cli+Srv enabled, Cli+Srv CID empty, AES-128-CBC" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002667 "$P_SRV debug_level=3 dtls=1 cid=1" \
2668 "$P_CLI debug_level=3 dtls=1 cid=1 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
2669 0 \
2670 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01002671 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01002672 -c "client hello, adding CID extension" \
2673 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01002674 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01002675 -s "server hello, adding CID extension" \
2676 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01002677 -c "Use of CID extension negotiated" \
2678 -s "Copy CIDs into SSL transform" \
Hanno Beckerfcffdcc2019-04-26 17:19:46 +01002679 -c "Copy CIDs into SSL transform" \
2680 -S "Use of Connection ID has been negotiated" \
2681 -C "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002682
Hanno Beckera0e20d02019-05-15 14:03:01 +01002683requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker9bae30d2019-04-23 11:52:44 +01002684requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Becker78c91372019-05-08 13:31:15 +01002685run_test "Connection ID: Cli+Srv enabled, renegotiate without change of CID" \
Hanno Beckerf157a972019-04-25 16:05:45 +01002686 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead renegotiation=1" \
2687 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef renegotiation=1 renegotiate=1" \
2688 0 \
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002689 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2690 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2691 -s "(initial handshake) Use of Connection ID has been negotiated" \
2692 -c "(initial handshake) Use of Connection ID has been negotiated" \
2693 -c "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2694 -s "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2695 -s "(after renegotiation) Use of Connection ID has been negotiated" \
2696 -c "(after renegotiation) Use of Connection ID has been negotiated"
2697
Hanno Beckera0e20d02019-05-15 14:03:01 +01002698requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002699requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Becker78c91372019-05-08 13:31:15 +01002700run_test "Connection ID: Cli+Srv enabled, renegotiate with different CID" \
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002701 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead cid_val_renego=beef renegotiation=1" \
2702 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef cid_val_renego=dead renegotiation=1 renegotiate=1" \
2703 0 \
2704 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2705 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2706 -s "(initial handshake) Use of Connection ID has been negotiated" \
2707 -c "(initial handshake) Use of Connection ID has been negotiated" \
2708 -c "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2709 -s "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2710 -s "(after renegotiation) Use of Connection ID has been negotiated" \
2711 -c "(after renegotiation) Use of Connection ID has been negotiated"
2712
Hanno Beckera0e20d02019-05-15 14:03:01 +01002713requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002714requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Beckerc2045b02019-05-08 16:20:46 +01002715run_test "Connection ID, no packing: Cli+Srv enabled, renegotiate with different CID" \
2716 "$P_SRV debug_level=3 dtls=1 cid=1 dgram_packing=0 cid_val=dead cid_val_renego=beef renegotiation=1" \
2717 "$P_CLI debug_level=3 dtls=1 cid=1 dgram_packing=0 cid_val=beef cid_val_renego=dead renegotiation=1 renegotiate=1" \
2718 0 \
2719 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2720 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2721 -s "(initial handshake) Use of Connection ID has been negotiated" \
2722 -c "(initial handshake) Use of Connection ID has been negotiated" \
2723 -c "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2724 -s "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2725 -s "(after renegotiation) Use of Connection ID has been negotiated" \
2726 -c "(after renegotiation) Use of Connection ID has been negotiated"
2727
Hanno Beckera0e20d02019-05-15 14:03:01 +01002728requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerc2045b02019-05-08 16:20:46 +01002729requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Becker78c91372019-05-08 13:31:15 +01002730run_test "Connection ID, 3D+MTU: Cli+Srv enabled, renegotiate with different CID" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002731 -p "$P_PXY mtu=800 drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Becker78c91372019-05-08 13:31:15 +01002732 "$P_SRV debug_level=3 mtu=800 dtls=1 cid=1 cid_val=dead cid_val_renego=beef renegotiation=1" \
2733 "$P_CLI debug_level=3 mtu=800 dtls=1 cid=1 cid_val=beef cid_val_renego=dead renegotiation=1 renegotiate=1" \
2734 0 \
2735 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2736 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2737 -s "(initial handshake) Use of Connection ID has been negotiated" \
2738 -c "(initial handshake) Use of Connection ID has been negotiated" \
2739 -c "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2740 -s "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2741 -s "(after renegotiation) Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002742 -c "(after renegotiation) Use of Connection ID has been negotiated" \
2743 -c "ignoring unexpected CID" \
2744 -s "ignoring unexpected CID"
Hanno Becker78c91372019-05-08 13:31:15 +01002745
Hanno Beckera0e20d02019-05-15 14:03:01 +01002746requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002747requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
2748run_test "Connection ID: Cli+Srv enabled, renegotiate without CID" \
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002749 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead cid_renego=0 renegotiation=1" \
2750 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef cid_renego=0 renegotiation=1 renegotiate=1" \
2751 0 \
2752 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2753 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2754 -s "(initial handshake) Use of Connection ID has been negotiated" \
2755 -c "(initial handshake) Use of Connection ID has been negotiated" \
2756 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2757 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2758 -C "(after renegotiation) Use of Connection ID has been negotiated" \
2759 -S "(after renegotiation) Use of Connection ID has been negotiated"
2760
Hanno Beckera0e20d02019-05-15 14:03:01 +01002761requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002762requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Beckerc2045b02019-05-08 16:20:46 +01002763run_test "Connection ID, no packing: Cli+Srv enabled, renegotiate without CID" \
2764 "$P_SRV debug_level=3 dtls=1 dgram_packing=0 cid=1 cid_val=dead cid_renego=0 renegotiation=1" \
2765 "$P_CLI debug_level=3 dtls=1 dgram_packing=0 cid=1 cid_val=beef cid_renego=0 renegotiation=1 renegotiate=1" \
2766 0 \
2767 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2768 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2769 -s "(initial handshake) Use of Connection ID has been negotiated" \
2770 -c "(initial handshake) Use of Connection ID has been negotiated" \
2771 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2772 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2773 -C "(after renegotiation) Use of Connection ID has been negotiated" \
2774 -S "(after renegotiation) Use of Connection ID has been negotiated"
2775
Hanno Beckera0e20d02019-05-15 14:03:01 +01002776requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerc2045b02019-05-08 16:20:46 +01002777requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Becker78c91372019-05-08 13:31:15 +01002778run_test "Connection ID, 3D+MTU: Cli+Srv enabled, renegotiate without CID" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002779 -p "$P_PXY drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Becker78c91372019-05-08 13:31:15 +01002780 "$P_SRV debug_level=3 mtu=800 dtls=1 cid=1 cid_val=dead cid_renego=0 renegotiation=1" \
2781 "$P_CLI debug_level=3 mtu=800 dtls=1 cid=1 cid_val=beef cid_renego=0 renegotiation=1 renegotiate=1" \
2782 0 \
2783 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2784 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2785 -s "(initial handshake) Use of Connection ID has been negotiated" \
2786 -c "(initial handshake) Use of Connection ID has been negotiated" \
2787 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2788 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2789 -C "(after renegotiation) Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002790 -S "(after renegotiation) Use of Connection ID has been negotiated" \
2791 -c "ignoring unexpected CID" \
2792 -s "ignoring unexpected CID"
Hanno Becker78c91372019-05-08 13:31:15 +01002793
Hanno Beckera0e20d02019-05-15 14:03:01 +01002794requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002795requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
2796run_test "Connection ID: Cli+Srv enabled, CID on renegotiation" \
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002797 "$P_SRV debug_level=3 dtls=1 cid=0 cid_renego=1 cid_val_renego=dead renegotiation=1" \
2798 "$P_CLI debug_level=3 dtls=1 cid=0 cid_renego=1 cid_val_renego=beef renegotiation=1 renegotiate=1" \
2799 0 \
2800 -S "(initial handshake) Use of Connection ID has been negotiated" \
2801 -C "(initial handshake) Use of Connection ID has been negotiated" \
2802 -c "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2803 -s "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2804 -c "(after renegotiation) Use of Connection ID has been negotiated" \
2805 -s "(after renegotiation) Use of Connection ID has been negotiated"
2806
Hanno Beckera0e20d02019-05-15 14:03:01 +01002807requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002808requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Beckerc2045b02019-05-08 16:20:46 +01002809run_test "Connection ID, no packing: Cli+Srv enabled, CID on renegotiation" \
2810 "$P_SRV debug_level=3 dtls=1 dgram_packing=0 cid=0 cid_renego=1 cid_val_renego=dead renegotiation=1" \
2811 "$P_CLI debug_level=3 dtls=1 dgram_packing=0 cid=0 cid_renego=1 cid_val_renego=beef renegotiation=1 renegotiate=1" \
2812 0 \
2813 -S "(initial handshake) Use of Connection ID has been negotiated" \
2814 -C "(initial handshake) Use of Connection ID has been negotiated" \
2815 -c "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2816 -s "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2817 -c "(after renegotiation) Use of Connection ID has been negotiated" \
2818 -s "(after renegotiation) Use of Connection ID has been negotiated"
2819
Hanno Beckera0e20d02019-05-15 14:03:01 +01002820requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerc2045b02019-05-08 16:20:46 +01002821requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Becker78c91372019-05-08 13:31:15 +01002822run_test "Connection ID, 3D+MTU: Cli+Srv enabled, CID on renegotiation" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002823 -p "$P_PXY mtu=800 drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Becker78c91372019-05-08 13:31:15 +01002824 "$P_SRV debug_level=3 mtu=800 dtls=1 dgram_packing=1 cid=0 cid_renego=1 cid_val_renego=dead renegotiation=1" \
2825 "$P_CLI debug_level=3 mtu=800 dtls=1 dgram_packing=1 cid=0 cid_renego=1 cid_val_renego=beef renegotiation=1 renegotiate=1" \
2826 0 \
2827 -S "(initial handshake) Use of Connection ID has been negotiated" \
2828 -C "(initial handshake) Use of Connection ID has been negotiated" \
2829 -c "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2830 -s "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2831 -c "(after renegotiation) Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002832 -s "(after renegotiation) Use of Connection ID has been negotiated" \
2833 -c "ignoring unexpected CID" \
2834 -s "ignoring unexpected CID"
Hanno Becker78c91372019-05-08 13:31:15 +01002835
Hanno Beckera0e20d02019-05-15 14:03:01 +01002836requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002837requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
2838run_test "Connection ID: Cli+Srv enabled, Cli disables on renegotiation" \
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002839 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead renegotiation=1" \
2840 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef cid_renego=0 renegotiation=1 renegotiate=1" \
2841 0 \
2842 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2843 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2844 -s "(initial handshake) Use of Connection ID has been negotiated" \
2845 -c "(initial handshake) Use of Connection ID has been negotiated" \
2846 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2847 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2848 -C "(after renegotiation) Use of Connection ID has been negotiated" \
2849 -S "(after renegotiation) Use of Connection ID has been negotiated" \
2850 -s "(after renegotiation) Use of Connection ID was not offered by client"
2851
Hanno Beckera0e20d02019-05-15 14:03:01 +01002852requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002853requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Becker78c91372019-05-08 13:31:15 +01002854run_test "Connection ID, 3D: Cli+Srv enabled, Cli disables on renegotiation" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002855 -p "$P_PXY drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Becker78c91372019-05-08 13:31:15 +01002856 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead renegotiation=1" \
2857 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef cid_renego=0 renegotiation=1 renegotiate=1" \
2858 0 \
2859 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2860 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2861 -s "(initial handshake) Use of Connection ID has been negotiated" \
2862 -c "(initial handshake) Use of Connection ID has been negotiated" \
2863 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2864 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2865 -C "(after renegotiation) Use of Connection ID has been negotiated" \
2866 -S "(after renegotiation) Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002867 -s "(after renegotiation) Use of Connection ID was not offered by client" \
2868 -c "ignoring unexpected CID" \
2869 -s "ignoring unexpected CID"
Hanno Becker78c91372019-05-08 13:31:15 +01002870
Hanno Beckera0e20d02019-05-15 14:03:01 +01002871requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002872requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
2873run_test "Connection ID: Cli+Srv enabled, Srv disables on renegotiation" \
2874 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead cid_renego=0 renegotiation=1" \
2875 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef renegotiation=1 renegotiate=1" \
2876 0 \
2877 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2878 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2879 -s "(initial handshake) Use of Connection ID has been negotiated" \
2880 -c "(initial handshake) Use of Connection ID has been negotiated" \
2881 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2882 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2883 -C "(after renegotiation) Use of Connection ID has been negotiated" \
2884 -S "(after renegotiation) Use of Connection ID has been negotiated" \
2885 -c "(after renegotiation) Use of Connection ID was rejected by the server"
2886
Hanno Beckera0e20d02019-05-15 14:03:01 +01002887requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01002888requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
2889run_test "Connection ID, 3D: Cli+Srv enabled, Srv disables on renegotiation" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002890 -p "$P_PXY drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01002891 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead cid_renego=0 renegotiation=1" \
2892 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef renegotiation=1 renegotiate=1" \
2893 0 \
2894 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2895 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2896 -s "(initial handshake) Use of Connection ID has been negotiated" \
2897 -c "(initial handshake) Use of Connection ID has been negotiated" \
2898 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
2899 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
2900 -C "(after renegotiation) Use of Connection ID has been negotiated" \
2901 -S "(after renegotiation) Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01002902 -c "(after renegotiation) Use of Connection ID was rejected by the server" \
2903 -c "ignoring unexpected CID" \
2904 -s "ignoring unexpected CID"
Hanno Becker7cf463e2019-04-09 18:08:47 +01002905
Yuto Takano71879532021-07-09 11:32:38 +01002906# This and the test below it require MAX_CONTENT_LEN to be at least MFL+1, because the
2907# tests check that the buffer contents are reallocated when the message is
2908# larger than the buffer.
Andrzej Kurekb6577832020-06-08 07:08:03 -04002909requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2910requires_config_enabled MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
Yuto Takano71879532021-07-09 11:32:38 +01002911requires_max_content_len 513
Andrzej Kurekb6577832020-06-08 07:08:03 -04002912run_test "Connection ID: Cli+Srv enabled, variable buffer lengths, MFL=512" \
2913 "$P_SRV dtls=1 cid=1 cid_val=dead debug_level=2" \
2914 "$P_CLI force_ciphersuite="TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" max_frag_len=512 dtls=1 cid=1 cid_val=beef" \
2915 0 \
2916 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2917 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2918 -s "(initial handshake) Use of Connection ID has been negotiated" \
2919 -c "(initial handshake) Use of Connection ID has been negotiated" \
2920 -s "Reallocating in_buf" \
2921 -s "Reallocating out_buf"
2922
2923requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2924requires_config_enabled MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
Yuto Takano71879532021-07-09 11:32:38 +01002925requires_max_content_len 1025
Andrzej Kurekb6577832020-06-08 07:08:03 -04002926run_test "Connection ID: Cli+Srv enabled, variable buffer lengths, MFL=1024" \
2927 "$P_SRV dtls=1 cid=1 cid_val=dead debug_level=2" \
2928 "$P_CLI force_ciphersuite="TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" max_frag_len=1024 dtls=1 cid=1 cid_val=beef" \
2929 0 \
2930 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
2931 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
2932 -s "(initial handshake) Use of Connection ID has been negotiated" \
2933 -c "(initial handshake) Use of Connection ID has been negotiated" \
2934 -s "Reallocating in_buf" \
2935 -s "Reallocating out_buf"
2936
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01002937# Tests for Encrypt-then-MAC extension
2938
2939run_test "Encrypt then MAC: default" \
Manuel Pégourié-Gonnard0098e7d2014-10-28 13:08:59 +01002940 "$P_SRV debug_level=3 \
2941 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01002942 "$P_CLI debug_level=3" \
2943 0 \
2944 -c "client hello, adding encrypt_then_mac extension" \
2945 -s "found encrypt then mac extension" \
2946 -s "server hello, adding encrypt then mac extension" \
2947 -c "found encrypt_then_mac extension" \
2948 -c "using encrypt then mac" \
2949 -s "using encrypt then mac"
2950
2951run_test "Encrypt then MAC: client enabled, server disabled" \
Manuel Pégourié-Gonnard0098e7d2014-10-28 13:08:59 +01002952 "$P_SRV debug_level=3 etm=0 \
2953 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01002954 "$P_CLI debug_level=3 etm=1" \
2955 0 \
2956 -c "client hello, adding encrypt_then_mac extension" \
2957 -s "found encrypt then mac extension" \
2958 -S "server hello, adding encrypt then mac extension" \
2959 -C "found encrypt_then_mac extension" \
2960 -C "using encrypt then mac" \
2961 -S "using encrypt then mac"
2962
Manuel Pégourié-Gonnard78e745f2014-11-04 15:44:06 +01002963run_test "Encrypt then MAC: client enabled, aead cipher" \
2964 "$P_SRV debug_level=3 etm=1 \
2965 force_ciphersuite=TLS-RSA-WITH-AES-128-GCM-SHA256" \
2966 "$P_CLI debug_level=3 etm=1" \
2967 0 \
2968 -c "client hello, adding encrypt_then_mac extension" \
2969 -s "found encrypt then mac extension" \
2970 -S "server hello, adding encrypt then mac extension" \
2971 -C "found encrypt_then_mac extension" \
2972 -C "using encrypt then mac" \
2973 -S "using encrypt then mac"
2974
2975run_test "Encrypt then MAC: client enabled, stream cipher" \
2976 "$P_SRV debug_level=3 etm=1 \
2977 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01002978 "$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 +01002979 0 \
2980 -c "client hello, adding encrypt_then_mac extension" \
2981 -s "found encrypt then mac extension" \
2982 -S "server hello, adding encrypt then mac extension" \
2983 -C "found encrypt_then_mac extension" \
2984 -C "using encrypt then mac" \
2985 -S "using encrypt then mac"
2986
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01002987run_test "Encrypt then MAC: client disabled, server enabled" \
Manuel Pégourié-Gonnard0098e7d2014-10-28 13:08:59 +01002988 "$P_SRV debug_level=3 etm=1 \
2989 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01002990 "$P_CLI debug_level=3 etm=0" \
2991 0 \
2992 -C "client hello, adding encrypt_then_mac extension" \
2993 -S "found encrypt then mac extension" \
2994 -S "server hello, adding encrypt then mac extension" \
2995 -C "found encrypt_then_mac extension" \
2996 -C "using encrypt then mac" \
2997 -S "using encrypt then mac"
2998
2999run_test "Encrypt then MAC: client SSLv3, server enabled" \
Manuel Pégourié-Gonnard51d81662015-01-14 17:20:46 +01003000 "$P_SRV debug_level=3 min_version=ssl3 \
Manuel Pégourié-Gonnard0098e7d2014-10-28 13:08:59 +01003001 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01003002 "$P_CLI debug_level=3 force_version=ssl3" \
3003 0 \
3004 -C "client hello, adding encrypt_then_mac extension" \
3005 -S "found encrypt then mac extension" \
3006 -S "server hello, adding encrypt then mac extension" \
3007 -C "found encrypt_then_mac extension" \
3008 -C "using encrypt then mac" \
3009 -S "using encrypt then mac"
3010
3011run_test "Encrypt then MAC: client enabled, server SSLv3" \
Manuel Pégourié-Gonnard0098e7d2014-10-28 13:08:59 +01003012 "$P_SRV debug_level=3 force_version=ssl3 \
3013 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
Manuel Pégourié-Gonnard51d81662015-01-14 17:20:46 +01003014 "$P_CLI debug_level=3 min_version=ssl3" \
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01003015 0 \
3016 -c "client hello, adding encrypt_then_mac extension" \
Janos Follath00efff72016-05-06 13:48:23 +01003017 -S "found encrypt then mac extension" \
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01003018 -S "server hello, adding encrypt then mac extension" \
3019 -C "found encrypt_then_mac extension" \
3020 -C "using encrypt then mac" \
3021 -S "using encrypt then mac"
3022
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02003023# Tests for Extended Master Secret extension
3024
Gilles Peskine111fde42022-02-25 19:51:52 +01003025requires_config_enabled MBEDTLS_SSL_EXTENDED_MASTER_SECRET
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02003026run_test "Extended Master Secret: default" \
3027 "$P_SRV debug_level=3" \
3028 "$P_CLI debug_level=3" \
3029 0 \
3030 -c "client hello, adding extended_master_secret extension" \
3031 -s "found extended master secret extension" \
3032 -s "server hello, adding extended master secret extension" \
3033 -c "found extended_master_secret extension" \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02003034 -c "session hash for extended master secret" \
3035 -s "session hash for extended master secret"
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02003036
Gilles Peskine111fde42022-02-25 19:51:52 +01003037requires_config_enabled MBEDTLS_SSL_EXTENDED_MASTER_SECRET
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02003038run_test "Extended Master Secret: client enabled, server disabled" \
3039 "$P_SRV debug_level=3 extended_ms=0" \
3040 "$P_CLI debug_level=3 extended_ms=1" \
3041 0 \
3042 -c "client hello, adding extended_master_secret extension" \
3043 -s "found extended master secret extension" \
3044 -S "server hello, adding extended master secret extension" \
3045 -C "found extended_master_secret extension" \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02003046 -C "session hash for extended master secret" \
3047 -S "session hash for extended master secret"
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02003048
Gilles Peskine111fde42022-02-25 19:51:52 +01003049requires_config_enabled MBEDTLS_SSL_EXTENDED_MASTER_SECRET
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02003050run_test "Extended Master Secret: client disabled, server enabled" \
3051 "$P_SRV debug_level=3 extended_ms=1" \
3052 "$P_CLI debug_level=3 extended_ms=0" \
3053 0 \
3054 -C "client hello, adding extended_master_secret extension" \
3055 -S "found extended master secret extension" \
3056 -S "server hello, adding extended master secret extension" \
3057 -C "found extended_master_secret extension" \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02003058 -C "session hash for extended master secret" \
3059 -S "session hash for extended master secret"
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02003060
Manuel Pégourié-Gonnardb575b542014-10-24 15:12:31 +02003061run_test "Extended Master Secret: client SSLv3, server enabled" \
Manuel Pégourié-Gonnard51d81662015-01-14 17:20:46 +01003062 "$P_SRV debug_level=3 min_version=ssl3" \
Manuel Pégourié-Gonnardb575b542014-10-24 15:12:31 +02003063 "$P_CLI debug_level=3 force_version=ssl3" \
3064 0 \
3065 -C "client hello, adding extended_master_secret extension" \
3066 -S "found extended master secret extension" \
3067 -S "server hello, adding extended master secret extension" \
3068 -C "found extended_master_secret extension" \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02003069 -C "session hash for extended master secret" \
3070 -S "session hash for extended master secret"
Manuel Pégourié-Gonnardb575b542014-10-24 15:12:31 +02003071
3072run_test "Extended Master Secret: client enabled, server SSLv3" \
3073 "$P_SRV debug_level=3 force_version=ssl3" \
Manuel Pégourié-Gonnard51d81662015-01-14 17:20:46 +01003074 "$P_CLI debug_level=3 min_version=ssl3" \
Manuel Pégourié-Gonnardb575b542014-10-24 15:12:31 +02003075 0 \
3076 -c "client hello, adding extended_master_secret extension" \
Janos Follath00efff72016-05-06 13:48:23 +01003077 -S "found extended master secret extension" \
Manuel Pégourié-Gonnardb575b542014-10-24 15:12:31 +02003078 -S "server hello, adding extended master secret extension" \
3079 -C "found extended_master_secret extension" \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02003080 -C "session hash for extended master secret" \
3081 -S "session hash for extended master secret"
Manuel Pégourié-Gonnardb575b542014-10-24 15:12:31 +02003082
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +02003083# Tests for FALLBACK_SCSV
3084
3085run_test "Fallback SCSV: default" \
Manuel Pégourié-Gonnard4268ae02015-08-04 12:44:10 +02003086 "$P_SRV debug_level=2" \
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +02003087 "$P_CLI debug_level=3 force_version=tls1_1" \
3088 0 \
3089 -C "adding FALLBACK_SCSV" \
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +02003090 -S "received FALLBACK_SCSV" \
3091 -S "inapropriate fallback" \
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +02003092 -C "is a fatal alert message (msg 86)"
3093
3094run_test "Fallback SCSV: explicitly disabled" \
Manuel Pégourié-Gonnard4268ae02015-08-04 12:44:10 +02003095 "$P_SRV debug_level=2" \
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +02003096 "$P_CLI debug_level=3 force_version=tls1_1 fallback=0" \
3097 0 \
3098 -C "adding FALLBACK_SCSV" \
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +02003099 -S "received FALLBACK_SCSV" \
3100 -S "inapropriate fallback" \
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +02003101 -C "is a fatal alert message (msg 86)"
3102
3103run_test "Fallback SCSV: enabled" \
Manuel Pégourié-Gonnard4268ae02015-08-04 12:44:10 +02003104 "$P_SRV debug_level=2" \
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +02003105 "$P_CLI debug_level=3 force_version=tls1_1 fallback=1" \
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +02003106 1 \
3107 -c "adding FALLBACK_SCSV" \
3108 -s "received FALLBACK_SCSV" \
3109 -s "inapropriate fallback" \
3110 -c "is a fatal alert message (msg 86)"
3111
3112run_test "Fallback SCSV: enabled, max version" \
Manuel Pégourié-Gonnard4268ae02015-08-04 12:44:10 +02003113 "$P_SRV debug_level=2" \
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +02003114 "$P_CLI debug_level=3 fallback=1" \
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +02003115 0 \
3116 -c "adding FALLBACK_SCSV" \
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +02003117 -s "received FALLBACK_SCSV" \
3118 -S "inapropriate fallback" \
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +02003119 -C "is a fatal alert message (msg 86)"
3120
3121requires_openssl_with_fallback_scsv
3122run_test "Fallback SCSV: default, openssl server" \
3123 "$O_SRV" \
3124 "$P_CLI debug_level=3 force_version=tls1_1 fallback=0" \
3125 0 \
3126 -C "adding FALLBACK_SCSV" \
3127 -C "is a fatal alert message (msg 86)"
3128
3129requires_openssl_with_fallback_scsv
3130run_test "Fallback SCSV: enabled, openssl server" \
3131 "$O_SRV" \
3132 "$P_CLI debug_level=3 force_version=tls1_1 fallback=1" \
3133 1 \
3134 -c "adding FALLBACK_SCSV" \
3135 -c "is a fatal alert message (msg 86)"
3136
Gilles Peskineadd21ad2022-04-15 15:14:58 +02003137requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +02003138requires_openssl_with_fallback_scsv
3139run_test "Fallback SCSV: disabled, openssl client" \
Manuel Pégourié-Gonnard4268ae02015-08-04 12:44:10 +02003140 "$P_SRV debug_level=2" \
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +02003141 "$O_CLI -tls1_1" \
3142 0 \
3143 -S "received FALLBACK_SCSV" \
3144 -S "inapropriate fallback"
3145
Gilles Peskineadd21ad2022-04-15 15:14:58 +02003146requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +02003147requires_openssl_with_fallback_scsv
3148run_test "Fallback SCSV: enabled, openssl client" \
Manuel Pégourié-Gonnard4268ae02015-08-04 12:44:10 +02003149 "$P_SRV debug_level=2" \
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +02003150 "$O_CLI -tls1_1 -fallback_scsv" \
3151 1 \
3152 -s "received FALLBACK_SCSV" \
3153 -s "inapropriate fallback"
3154
3155requires_openssl_with_fallback_scsv
3156run_test "Fallback SCSV: enabled, max version, openssl client" \
Manuel Pégourié-Gonnard4268ae02015-08-04 12:44:10 +02003157 "$P_SRV debug_level=2" \
Manuel Pégourié-Gonnard01b26992014-10-20 14:05:28 +02003158 "$O_CLI -fallback_scsv" \
3159 0 \
3160 -s "received FALLBACK_SCSV" \
3161 -S "inapropriate fallback"
3162
Andres Amaya Garcia4c761fa2018-07-10 20:08:04 +01003163# Test sending and receiving empty application data records
3164
3165run_test "Encrypt then MAC: empty application data record" \
3166 "$P_SRV auth_mode=none debug_level=4 etm=1" \
3167 "$P_CLI auth_mode=none etm=1 request_size=0 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA" \
3168 0 \
3169 -S "0000: 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f" \
3170 -s "dumping 'input payload after decrypt' (0 bytes)" \
3171 -c "0 bytes written in 1 fragments"
3172
Manuel Pégourié-Gonnard9e2c80f2020-03-24 10:53:39 +01003173run_test "Encrypt then MAC: disabled, empty application data record" \
Andres Amaya Garcia4c761fa2018-07-10 20:08:04 +01003174 "$P_SRV auth_mode=none debug_level=4 etm=0" \
3175 "$P_CLI auth_mode=none etm=0 request_size=0" \
3176 0 \
3177 -s "dumping 'input payload after decrypt' (0 bytes)" \
3178 -c "0 bytes written in 1 fragments"
3179
3180run_test "Encrypt then MAC, DTLS: empty application data record" \
3181 "$P_SRV auth_mode=none debug_level=4 etm=1 dtls=1" \
3182 "$P_CLI auth_mode=none etm=1 request_size=0 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA dtls=1" \
3183 0 \
3184 -S "0000: 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f" \
3185 -s "dumping 'input payload after decrypt' (0 bytes)" \
3186 -c "0 bytes written in 1 fragments"
3187
Manuel Pégourié-Gonnard9e2c80f2020-03-24 10:53:39 +01003188run_test "Encrypt then MAC, DTLS: disabled, empty application data record" \
Andres Amaya Garcia4c761fa2018-07-10 20:08:04 +01003189 "$P_SRV auth_mode=none debug_level=4 etm=0 dtls=1" \
3190 "$P_CLI auth_mode=none etm=0 request_size=0 dtls=1" \
3191 0 \
3192 -s "dumping 'input payload after decrypt' (0 bytes)" \
3193 -c "0 bytes written in 1 fragments"
3194
Gilles Peskined50177f2017-05-16 17:53:03 +02003195## ClientHello generated with
3196## "openssl s_client -CAfile tests/data_files/test-ca.crt -tls1_1 -connect localhost:4433 -cipher ..."
3197## then manually twiddling the ciphersuite list.
3198## The ClientHello content is spelled out below as a hex string as
3199## "prefix ciphersuite1 ciphersuite2 ciphersuite3 ciphersuite4 suffix".
3200## The expected response is an inappropriate_fallback alert.
Gilles Peskinebba3b4c2022-04-09 00:08:47 +02003201requires_config_enabled MBEDTLS_SSL_FALLBACK_SCSV
Gilles Peskined50177f2017-05-16 17:53:03 +02003202run_test "Fallback SCSV: beginning of list" \
3203 "$P_SRV debug_level=2" \
3204 "$TCP_CLIENT localhost $SRV_PORT '160301003e0100003a03022aafb94308dc22ca1086c65acc00e414384d76b61ecab37df1633b1ae1034dbe000008 5600 0031 0032 0033 0100000900230000000f000101' '15030200020256'" \
3205 0 \
3206 -s "received FALLBACK_SCSV" \
3207 -s "inapropriate fallback"
3208
Gilles Peskinebba3b4c2022-04-09 00:08:47 +02003209requires_config_enabled MBEDTLS_SSL_FALLBACK_SCSV
Gilles Peskined50177f2017-05-16 17:53:03 +02003210run_test "Fallback SCSV: end of list" \
3211 "$P_SRV debug_level=2" \
3212 "$TCP_CLIENT localhost $SRV_PORT '160301003e0100003a03022aafb94308dc22ca1086c65acc00e414384d76b61ecab37df1633b1ae1034dbe000008 0031 0032 0033 5600 0100000900230000000f000101' '15030200020256'" \
3213 0 \
3214 -s "received FALLBACK_SCSV" \
3215 -s "inapropriate fallback"
3216
3217## Here the expected response is a valid ServerHello prefix, up to the random.
Gilles Peskinebba3b4c2022-04-09 00:08:47 +02003218requires_config_enabled MBEDTLS_SSL_FALLBACK_SCSV
Gilles Peskined50177f2017-05-16 17:53:03 +02003219run_test "Fallback SCSV: not in list" \
3220 "$P_SRV debug_level=2" \
3221 "$TCP_CLIENT localhost $SRV_PORT '160301003e0100003a03022aafb94308dc22ca1086c65acc00e414384d76b61ecab37df1633b1ae1034dbe000008 0056 0031 0032 0033 0100000900230000000f000101' '16030200300200002c0302'" \
3222 0 \
3223 -S "received FALLBACK_SCSV" \
3224 -S "inapropriate fallback"
3225
Manuel Pégourié-Gonnard3ff78232015-01-08 11:15:09 +01003226# Tests for CBC 1/n-1 record splitting
3227
3228run_test "CBC Record splitting: TLS 1.2, no splitting" \
3229 "$P_SRV" \
3230 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA \
Xiaofei Baif40545d2021-12-02 08:43:35 +00003231 request_size=123 force_version=tls12" \
Manuel Pégourié-Gonnard3ff78232015-01-08 11:15:09 +01003232 0 \
3233 -s "Read from client: 123 bytes read" \
3234 -S "Read from client: 1 bytes read" \
3235 -S "122 bytes read"
3236
3237run_test "CBC Record splitting: TLS 1.1, no splitting" \
3238 "$P_SRV" \
3239 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA \
3240 request_size=123 force_version=tls1_1" \
3241 0 \
3242 -s "Read from client: 123 bytes read" \
3243 -S "Read from client: 1 bytes read" \
3244 -S "122 bytes read"
3245
3246run_test "CBC Record splitting: TLS 1.0, splitting" \
3247 "$P_SRV" \
3248 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA \
3249 request_size=123 force_version=tls1" \
3250 0 \
3251 -S "Read from client: 123 bytes read" \
3252 -s "Read from client: 1 bytes read" \
3253 -s "122 bytes read"
3254
3255run_test "CBC Record splitting: SSLv3, splitting" \
Manuel Pégourié-Gonnard51d81662015-01-14 17:20:46 +01003256 "$P_SRV min_version=ssl3" \
Manuel Pégourié-Gonnard3ff78232015-01-08 11:15:09 +01003257 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA \
3258 request_size=123 force_version=ssl3" \
3259 0 \
3260 -S "Read from client: 123 bytes read" \
3261 -s "Read from client: 1 bytes read" \
3262 -s "122 bytes read"
3263
3264run_test "CBC Record splitting: TLS 1.0 RC4, no splitting" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01003265 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnard3ff78232015-01-08 11:15:09 +01003266 "$P_CLI force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA \
3267 request_size=123 force_version=tls1" \
3268 0 \
3269 -s "Read from client: 123 bytes read" \
3270 -S "Read from client: 1 bytes read" \
3271 -S "122 bytes read"
3272
3273run_test "CBC Record splitting: TLS 1.0, splitting disabled" \
3274 "$P_SRV" \
3275 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA \
3276 request_size=123 force_version=tls1 recsplit=0" \
3277 0 \
3278 -s "Read from client: 123 bytes read" \
3279 -S "Read from client: 1 bytes read" \
3280 -S "122 bytes read"
3281
Manuel Pégourié-Gonnarda852cf42015-01-13 20:56:15 +01003282run_test "CBC Record splitting: TLS 1.0, splitting, nbio" \
3283 "$P_SRV nbio=2" \
3284 "$P_CLI nbio=2 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA \
3285 request_size=123 force_version=tls1" \
3286 0 \
3287 -S "Read from client: 123 bytes read" \
3288 -s "Read from client: 1 bytes read" \
3289 -s "122 bytes read"
3290
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003291# Tests for Session Tickets
3292
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003293run_test "Session resume using tickets: basic" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003294 "$P_SRV debug_level=3 tickets=1" \
3295 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01003296 0 \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01003297 -c "client hello, adding session ticket extension" \
3298 -s "found session ticket extension" \
3299 -s "server hello, adding session ticket extension" \
3300 -c "found session_ticket extension" \
3301 -c "parse new session ticket" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01003302 -S "session successfully restored from cache" \
3303 -s "session successfully restored from ticket" \
3304 -s "a session has been resumed" \
3305 -c "a session has been resumed"
3306
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003307run_test "Session resume using tickets: cache disabled" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003308 "$P_SRV debug_level=3 tickets=1 cache_max=0" \
3309 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
Manuel Pégourié-Gonnarddbe1ee12014-02-21 09:18:13 +01003310 0 \
3311 -c "client hello, adding session ticket extension" \
3312 -s "found session ticket extension" \
3313 -s "server hello, adding session ticket extension" \
3314 -c "found session_ticket extension" \
3315 -c "parse new session ticket" \
3316 -S "session successfully restored from cache" \
3317 -s "session successfully restored from ticket" \
3318 -s "a session has been resumed" \
3319 -c "a session has been resumed"
3320
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003321run_test "Session resume using tickets: timeout" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003322 "$P_SRV debug_level=3 tickets=1 cache_max=0 ticket_timeout=1" \
3323 "$P_CLI debug_level=3 tickets=1 reconnect=1 reco_delay=2" \
Manuel Pégourié-Gonnarddbe1ee12014-02-21 09:18:13 +01003324 0 \
3325 -c "client hello, adding session ticket extension" \
3326 -s "found session ticket extension" \
3327 -s "server hello, adding session ticket extension" \
3328 -c "found session_ticket extension" \
3329 -c "parse new session ticket" \
3330 -S "session successfully restored from cache" \
3331 -S "session successfully restored from ticket" \
3332 -S "a session has been resumed" \
3333 -C "a session has been resumed"
3334
Manuel Pégourié-Gonnarda7c37652019-05-20 12:46:26 +02003335run_test "Session resume using tickets: session copy" \
3336 "$P_SRV debug_level=3 tickets=1 cache_max=0" \
3337 "$P_CLI debug_level=3 tickets=1 reconnect=1 reco_mode=0" \
3338 0 \
3339 -c "client hello, adding session ticket extension" \
3340 -s "found session ticket extension" \
3341 -s "server hello, adding session ticket extension" \
3342 -c "found session_ticket extension" \
3343 -c "parse new session ticket" \
3344 -S "session successfully restored from cache" \
3345 -s "session successfully restored from ticket" \
3346 -s "a session has been resumed" \
3347 -c "a session has been resumed"
3348
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003349run_test "Session resume using tickets: openssl server" \
Manuel Pégourié-Gonnardf7a26902014-02-27 12:25:54 +01003350 "$O_SRV" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003351 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +01003352 0 \
3353 -c "client hello, adding session ticket extension" \
3354 -c "found session_ticket extension" \
3355 -c "parse new session ticket" \
3356 -c "a session has been resumed"
3357
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003358run_test "Session resume using tickets: openssl client" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003359 "$P_SRV debug_level=3 tickets=1" \
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02003360 "( $O_CLI -sess_out $SESSION; \
3361 $O_CLI -sess_in $SESSION; \
3362 rm -f $SESSION )" \
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +01003363 0 \
3364 -s "found session ticket extension" \
3365 -s "server hello, adding session ticket extension" \
3366 -S "session successfully restored from cache" \
3367 -s "session successfully restored from ticket" \
3368 -s "a session has been resumed"
3369
Hanno Becker1d739932018-08-21 13:55:22 +01003370# Tests for Session Tickets with DTLS
3371
3372run_test "Session resume using tickets, DTLS: basic" \
3373 "$P_SRV debug_level=3 dtls=1 tickets=1" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003374 "$P_CLI debug_level=3 dtls=1 tickets=1 reconnect=1 skip_close_notify=1" \
Hanno Becker1d739932018-08-21 13:55:22 +01003375 0 \
3376 -c "client hello, adding session ticket extension" \
3377 -s "found session ticket extension" \
3378 -s "server hello, adding session ticket extension" \
3379 -c "found session_ticket extension" \
3380 -c "parse new session ticket" \
3381 -S "session successfully restored from cache" \
3382 -s "session successfully restored from ticket" \
3383 -s "a session has been resumed" \
3384 -c "a session has been resumed"
3385
3386run_test "Session resume using tickets, DTLS: cache disabled" \
3387 "$P_SRV debug_level=3 dtls=1 tickets=1 cache_max=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003388 "$P_CLI debug_level=3 dtls=1 tickets=1 reconnect=1 skip_close_notify=1" \
Hanno Becker1d739932018-08-21 13:55:22 +01003389 0 \
3390 -c "client hello, adding session ticket extension" \
3391 -s "found session ticket extension" \
3392 -s "server hello, adding session ticket extension" \
3393 -c "found session_ticket extension" \
3394 -c "parse new session ticket" \
3395 -S "session successfully restored from cache" \
3396 -s "session successfully restored from ticket" \
3397 -s "a session has been resumed" \
3398 -c "a session has been resumed"
3399
3400run_test "Session resume using tickets, DTLS: timeout" \
3401 "$P_SRV debug_level=3 dtls=1 tickets=1 cache_max=0 ticket_timeout=1" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003402 "$P_CLI debug_level=3 dtls=1 tickets=1 reconnect=1 skip_close_notify=1 reco_delay=2" \
Hanno Becker1d739932018-08-21 13:55:22 +01003403 0 \
3404 -c "client hello, adding session ticket extension" \
3405 -s "found session ticket extension" \
3406 -s "server hello, adding session ticket extension" \
3407 -c "found session_ticket extension" \
3408 -c "parse new session ticket" \
3409 -S "session successfully restored from cache" \
3410 -S "session successfully restored from ticket" \
3411 -S "a session has been resumed" \
3412 -C "a session has been resumed"
3413
Manuel Pégourié-Gonnarda7c37652019-05-20 12:46:26 +02003414run_test "Session resume using tickets, DTLS: session copy" \
3415 "$P_SRV debug_level=3 dtls=1 tickets=1 cache_max=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003416 "$P_CLI debug_level=3 dtls=1 tickets=1 reconnect=1 skip_close_notify=1 reco_mode=0" \
Manuel Pégourié-Gonnarda7c37652019-05-20 12:46:26 +02003417 0 \
3418 -c "client hello, adding session ticket extension" \
3419 -s "found session ticket extension" \
3420 -s "server hello, adding session ticket extension" \
3421 -c "found session_ticket extension" \
3422 -c "parse new session ticket" \
3423 -S "session successfully restored from cache" \
3424 -s "session successfully restored from ticket" \
3425 -s "a session has been resumed" \
3426 -c "a session has been resumed"
3427
Hanno Becker1d739932018-08-21 13:55:22 +01003428run_test "Session resume using tickets, DTLS: openssl server" \
3429 "$O_SRV -dtls1" \
3430 "$P_CLI dtls=1 debug_level=3 tickets=1 reconnect=1" \
3431 0 \
3432 -c "client hello, adding session ticket extension" \
3433 -c "found session_ticket extension" \
3434 -c "parse new session ticket" \
3435 -c "a session has been resumed"
3436
Manuel Pégourié-Gonnardd76c47d2021-10-13 13:12:47 +02003437# For reasons that aren't fully understood, this test randomly fails with high
Paul Elliott7ca2f392021-10-13 16:13:44 +01003438# probability with OpenSSL 1.0.2g on the CI, see #5012.
Manuel Pégourié-Gonnardd76c47d2021-10-13 13:12:47 +02003439requires_openssl_next
Hanno Becker1d739932018-08-21 13:55:22 +01003440run_test "Session resume using tickets, DTLS: openssl client" \
3441 "$P_SRV dtls=1 debug_level=3 tickets=1" \
Manuel Pégourié-Gonnardd76c47d2021-10-13 13:12:47 +02003442 "( $O_NEXT_CLI -dtls1 -sess_out $SESSION; \
3443 $O_NEXT_CLI -dtls1 -sess_in $SESSION; \
Hanno Becker1d739932018-08-21 13:55:22 +01003444 rm -f $SESSION )" \
3445 0 \
3446 -s "found session ticket extension" \
3447 -s "server hello, adding session ticket extension" \
3448 -S "session successfully restored from cache" \
3449 -s "session successfully restored from ticket" \
3450 -s "a session has been resumed"
3451
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01003452# Tests for Session Resume based on session-ID and cache
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003453
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003454run_test "Session resume using cache: tickets enabled on client" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003455 "$P_SRV debug_level=3 tickets=0" \
3456 "$P_CLI debug_level=3 tickets=1 reconnect=1" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01003457 0 \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01003458 -c "client hello, adding session ticket extension" \
3459 -s "found session ticket extension" \
3460 -S "server hello, adding session ticket extension" \
3461 -C "found session_ticket extension" \
3462 -C "parse new session ticket" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01003463 -s "session successfully restored from cache" \
3464 -S "session successfully restored from ticket" \
3465 -s "a session has been resumed" \
3466 -c "a session has been resumed"
3467
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003468run_test "Session resume using cache: tickets enabled on server" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003469 "$P_SRV debug_level=3 tickets=1" \
3470 "$P_CLI debug_level=3 tickets=0 reconnect=1" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01003471 0 \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01003472 -C "client hello, adding session ticket extension" \
3473 -S "found session ticket extension" \
3474 -S "server hello, adding session ticket extension" \
3475 -C "found session_ticket extension" \
3476 -C "parse new session ticket" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01003477 -s "session successfully restored from cache" \
3478 -S "session successfully restored from ticket" \
3479 -s "a session has been resumed" \
3480 -c "a session has been resumed"
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01003481
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003482run_test "Session resume using cache: cache_max=0" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003483 "$P_SRV debug_level=3 tickets=0 cache_max=0" \
3484 "$P_CLI debug_level=3 tickets=0 reconnect=1" \
Manuel Pégourié-Gonnard4c883452014-02-20 21:32:41 +01003485 0 \
3486 -S "session successfully restored from cache" \
3487 -S "session successfully restored from ticket" \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01003488 -S "a session has been resumed" \
3489 -C "a session has been resumed"
Manuel Pégourié-Gonnard4c883452014-02-20 21:32:41 +01003490
Gilles Peskine111fde42022-02-25 19:51:52 +01003491requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003492run_test "Session resume using cache: cache_max=1" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003493 "$P_SRV debug_level=3 tickets=0 cache_max=1" \
3494 "$P_CLI debug_level=3 tickets=0 reconnect=1" \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01003495 0 \
3496 -s "session successfully restored from cache" \
3497 -S "session successfully restored from ticket" \
3498 -s "a session has been resumed" \
3499 -c "a session has been resumed"
3500
Gilles Peskine111fde42022-02-25 19:51:52 +01003501requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard6df31962015-05-04 10:55:47 +02003502run_test "Session resume using cache: timeout > delay" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003503 "$P_SRV debug_level=3 tickets=0" \
3504 "$P_CLI debug_level=3 tickets=0 reconnect=1 reco_delay=0" \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01003505 0 \
3506 -s "session successfully restored from cache" \
3507 -S "session successfully restored from ticket" \
3508 -s "a session has been resumed" \
3509 -c "a session has been resumed"
3510
Gilles Peskine111fde42022-02-25 19:51:52 +01003511requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003512run_test "Session resume using cache: timeout < delay" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003513 "$P_SRV debug_level=3 tickets=0 cache_timeout=1" \
3514 "$P_CLI debug_level=3 tickets=0 reconnect=1 reco_delay=2" \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01003515 0 \
3516 -S "session successfully restored from cache" \
3517 -S "session successfully restored from ticket" \
3518 -S "a session has been resumed" \
3519 -C "a session has been resumed"
3520
Gilles Peskine111fde42022-02-25 19:51:52 +01003521requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003522run_test "Session resume using cache: no timeout" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003523 "$P_SRV debug_level=3 tickets=0 cache_timeout=0" \
3524 "$P_CLI debug_level=3 tickets=0 reconnect=1 reco_delay=2" \
Manuel Pégourié-Gonnard4c883452014-02-20 21:32:41 +01003525 0 \
3526 -s "session successfully restored from cache" \
3527 -S "session successfully restored from ticket" \
3528 -s "a session has been resumed" \
3529 -c "a session has been resumed"
3530
Gilles Peskine111fde42022-02-25 19:51:52 +01003531requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnarda7c37652019-05-20 12:46:26 +02003532run_test "Session resume using cache: session copy" \
3533 "$P_SRV debug_level=3 tickets=0" \
3534 "$P_CLI debug_level=3 tickets=0 reconnect=1 reco_mode=0" \
3535 0 \
3536 -s "session successfully restored from cache" \
3537 -S "session successfully restored from ticket" \
3538 -s "a session has been resumed" \
3539 -c "a session has been resumed"
3540
Gilles Peskine111fde42022-02-25 19:51:52 +01003541requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003542run_test "Session resume using cache: openssl client" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003543 "$P_SRV debug_level=3 tickets=0" \
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02003544 "( $O_CLI -sess_out $SESSION; \
3545 $O_CLI -sess_in $SESSION; \
3546 rm -f $SESSION )" \
Manuel Pégourié-Gonnarddb735f62014-02-25 17:57:59 +01003547 0 \
3548 -s "found session ticket extension" \
3549 -S "server hello, adding session ticket extension" \
3550 -s "session successfully restored from cache" \
3551 -S "session successfully restored from ticket" \
3552 -s "a session has been resumed"
3553
Gilles Peskine111fde42022-02-25 19:51:52 +01003554requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003555run_test "Session resume using cache: openssl server" \
Manuel Pégourié-Gonnardf7a26902014-02-27 12:25:54 +01003556 "$O_SRV" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003557 "$P_CLI debug_level=3 tickets=0 reconnect=1" \
Manuel Pégourié-Gonnarddb735f62014-02-25 17:57:59 +01003558 0 \
3559 -C "found session_ticket extension" \
3560 -C "parse new session ticket" \
3561 -c "a session has been resumed"
3562
Andrzej Kurekc87d97b2022-06-14 07:12:33 -04003563# Tests for Session resume and extensions
3564
3565requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3566requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3567run_test "Session resume and connection ID" \
3568 "$P_SRV debug_level=3 cid=1 cid_val=dead dtls=1 tickets=0" \
3569 "$P_CLI debug_level=3 cid=1 cid_val=beef dtls=1 tickets=0 reconnect=1" \
3570 0 \
3571 -c "Enable use of CID extension." \
3572 -s "Enable use of CID extension." \
3573 -c "client hello, adding CID extension" \
3574 -s "found CID extension" \
3575 -s "Use of CID extension negotiated" \
3576 -s "server hello, adding CID extension" \
3577 -c "found CID extension" \
3578 -c "Use of CID extension negotiated" \
3579 -s "Copy CIDs into SSL transform" \
3580 -c "Copy CIDs into SSL transform" \
3581 -c "Peer CID (length 2 Bytes): de ad" \
3582 -s "Peer CID (length 2 Bytes): be ef" \
3583 -s "Use of Connection ID has been negotiated" \
3584 -c "Use of Connection ID has been negotiated"
3585
Hanno Becker1d739932018-08-21 13:55:22 +01003586# Tests for Session Resume based on session-ID and cache, DTLS
3587
Gilles Peskine111fde42022-02-25 19:51:52 +01003588requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01003589run_test "Session resume using cache, DTLS: tickets enabled on client" \
3590 "$P_SRV dtls=1 debug_level=3 tickets=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003591 "$P_CLI dtls=1 debug_level=3 tickets=1 reconnect=1 skip_close_notify=1" \
Hanno Becker1d739932018-08-21 13:55:22 +01003592 0 \
3593 -c "client hello, adding session ticket extension" \
3594 -s "found session ticket extension" \
3595 -S "server hello, adding session ticket extension" \
3596 -C "found session_ticket extension" \
3597 -C "parse new session ticket" \
3598 -s "session successfully restored from cache" \
3599 -S "session successfully restored from ticket" \
3600 -s "a session has been resumed" \
3601 -c "a session has been resumed"
3602
Gilles Peskine111fde42022-02-25 19:51:52 +01003603requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01003604run_test "Session resume using cache, DTLS: tickets enabled on server" \
3605 "$P_SRV dtls=1 debug_level=3 tickets=1" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003606 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1" \
Hanno Becker1d739932018-08-21 13:55:22 +01003607 0 \
3608 -C "client hello, adding session ticket extension" \
3609 -S "found session ticket extension" \
3610 -S "server hello, adding session ticket extension" \
3611 -C "found session_ticket extension" \
3612 -C "parse new session ticket" \
3613 -s "session successfully restored from cache" \
3614 -S "session successfully restored from ticket" \
3615 -s "a session has been resumed" \
3616 -c "a session has been resumed"
3617
Gilles Peskine111fde42022-02-25 19:51:52 +01003618requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01003619run_test "Session resume using cache, DTLS: cache_max=0" \
3620 "$P_SRV dtls=1 debug_level=3 tickets=0 cache_max=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003621 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1" \
Hanno Becker1d739932018-08-21 13:55:22 +01003622 0 \
3623 -S "session successfully restored from cache" \
3624 -S "session successfully restored from ticket" \
3625 -S "a session has been resumed" \
3626 -C "a session has been resumed"
3627
Gilles Peskine111fde42022-02-25 19:51:52 +01003628requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01003629run_test "Session resume using cache, DTLS: cache_max=1" \
3630 "$P_SRV dtls=1 debug_level=3 tickets=0 cache_max=1" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003631 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1" \
Hanno Becker1d739932018-08-21 13:55:22 +01003632 0 \
3633 -s "session successfully restored from cache" \
3634 -S "session successfully restored from ticket" \
3635 -s "a session has been resumed" \
3636 -c "a session has been resumed"
3637
Gilles Peskine111fde42022-02-25 19:51:52 +01003638requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01003639run_test "Session resume using cache, DTLS: timeout > delay" \
3640 "$P_SRV dtls=1 debug_level=3 tickets=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003641 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1 reco_delay=0" \
Hanno Becker1d739932018-08-21 13:55:22 +01003642 0 \
3643 -s "session successfully restored from cache" \
3644 -S "session successfully restored from ticket" \
3645 -s "a session has been resumed" \
3646 -c "a session has been resumed"
3647
Gilles Peskine111fde42022-02-25 19:51:52 +01003648requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01003649run_test "Session resume using cache, DTLS: timeout < delay" \
3650 "$P_SRV dtls=1 debug_level=3 tickets=0 cache_timeout=1" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003651 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1 reco_delay=2" \
Hanno Becker1d739932018-08-21 13:55:22 +01003652 0 \
3653 -S "session successfully restored from cache" \
3654 -S "session successfully restored from ticket" \
3655 -S "a session has been resumed" \
3656 -C "a session has been resumed"
3657
Gilles Peskine111fde42022-02-25 19:51:52 +01003658requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01003659run_test "Session resume using cache, DTLS: no timeout" \
3660 "$P_SRV dtls=1 debug_level=3 tickets=0 cache_timeout=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003661 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1 reco_delay=2" \
Hanno Becker1d739932018-08-21 13:55:22 +01003662 0 \
3663 -s "session successfully restored from cache" \
3664 -S "session successfully restored from ticket" \
3665 -s "a session has been resumed" \
3666 -c "a session has been resumed"
3667
Gilles Peskine111fde42022-02-25 19:51:52 +01003668requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnarda7c37652019-05-20 12:46:26 +02003669run_test "Session resume using cache, DTLS: session copy" \
3670 "$P_SRV dtls=1 debug_level=3 tickets=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01003671 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1 reco_mode=0" \
Manuel Pégourié-Gonnarda7c37652019-05-20 12:46:26 +02003672 0 \
3673 -s "session successfully restored from cache" \
3674 -S "session successfully restored from ticket" \
3675 -s "a session has been resumed" \
3676 -c "a session has been resumed"
3677
Manuel Pégourié-Gonnardd76c47d2021-10-13 13:12:47 +02003678# For reasons that aren't fully understood, this test randomly fails with high
Paul Elliott7ca2f392021-10-13 16:13:44 +01003679# probability with OpenSSL 1.0.2g on the CI, see #5012.
Manuel Pégourié-Gonnardd76c47d2021-10-13 13:12:47 +02003680requires_openssl_next
Gilles Peskine111fde42022-02-25 19:51:52 +01003681requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01003682run_test "Session resume using cache, DTLS: openssl client" \
3683 "$P_SRV dtls=1 debug_level=3 tickets=0" \
Manuel Pégourié-Gonnardd76c47d2021-10-13 13:12:47 +02003684 "( $O_NEXT_CLI -dtls1 -sess_out $SESSION; \
3685 $O_NEXT_CLI -dtls1 -sess_in $SESSION; \
Hanno Becker1d739932018-08-21 13:55:22 +01003686 rm -f $SESSION )" \
3687 0 \
3688 -s "found session ticket extension" \
3689 -S "server hello, adding session ticket extension" \
3690 -s "session successfully restored from cache" \
3691 -S "session successfully restored from ticket" \
3692 -s "a session has been resumed"
3693
Gilles Peskine111fde42022-02-25 19:51:52 +01003694requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01003695run_test "Session resume using cache, DTLS: openssl server" \
3696 "$O_SRV -dtls1" \
3697 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1" \
3698 0 \
3699 -C "found session_ticket extension" \
3700 -C "parse new session ticket" \
3701 -c "a session has been resumed"
3702
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003703# Tests for Max Fragment Length extension
3704
Hanno Becker4aed27e2017-09-18 15:00:34 +01003705requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Hanno Beckerc5266962017-09-18 15:01:50 +01003706run_test "Max fragment length: enabled, default" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003707 "$P_SRV debug_level=3" \
3708 "$P_CLI debug_level=3" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01003709 0 \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003710 -c "Maximum input fragment length is $MAX_CONTENT_LEN" \
3711 -c "Maximum output fragment length is $MAX_CONTENT_LEN" \
3712 -s "Maximum input fragment length is $MAX_CONTENT_LEN" \
3713 -s "Maximum output fragment length is $MAX_CONTENT_LEN" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01003714 -C "client hello, adding max_fragment_length extension" \
3715 -S "found max fragment length extension" \
3716 -S "server hello, max_fragment_length extension" \
3717 -C "found max_fragment_length extension"
3718
Hanno Becker4aed27e2017-09-18 15:00:34 +01003719requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Hanno Beckerc5266962017-09-18 15:01:50 +01003720run_test "Max fragment length: enabled, default, larger message" \
3721 "$P_SRV debug_level=3" \
Angus Grattonc4dd0732018-04-11 16:28:39 +10003722 "$P_CLI debug_level=3 request_size=$(( $MAX_CONTENT_LEN + 1))" \
Hanno Beckerc5266962017-09-18 15:01:50 +01003723 0 \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003724 -c "Maximum input fragment length is $MAX_CONTENT_LEN" \
3725 -c "Maximum output fragment length is $MAX_CONTENT_LEN" \
3726 -s "Maximum input fragment length is $MAX_CONTENT_LEN" \
3727 -s "Maximum output fragment length is $MAX_CONTENT_LEN" \
Hanno Beckerc5266962017-09-18 15:01:50 +01003728 -C "client hello, adding max_fragment_length extension" \
3729 -S "found max fragment length extension" \
3730 -S "server hello, max_fragment_length extension" \
3731 -C "found max_fragment_length extension" \
Angus Grattonc4dd0732018-04-11 16:28:39 +10003732 -c "$(( $MAX_CONTENT_LEN + 1)) bytes written in 2 fragments" \
3733 -s "$MAX_CONTENT_LEN bytes read" \
Hanno Becker9cfabe32017-10-18 14:42:01 +01003734 -s "1 bytes read"
Hanno Beckerc5266962017-09-18 15:01:50 +01003735
3736requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3737run_test "Max fragment length, DTLS: enabled, default, larger message" \
3738 "$P_SRV debug_level=3 dtls=1" \
Angus Grattonc4dd0732018-04-11 16:28:39 +10003739 "$P_CLI debug_level=3 dtls=1 request_size=$(( $MAX_CONTENT_LEN + 1))" \
Hanno Beckerc5266962017-09-18 15:01:50 +01003740 1 \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003741 -c "Maximum input fragment length is $MAX_CONTENT_LEN" \
3742 -c "Maximum output fragment length is $MAX_CONTENT_LEN" \
3743 -s "Maximum input fragment length is $MAX_CONTENT_LEN" \
3744 -s "Maximum output fragment length is $MAX_CONTENT_LEN" \
Hanno Beckerc5266962017-09-18 15:01:50 +01003745 -C "client hello, adding max_fragment_length extension" \
3746 -S "found max fragment length extension" \
3747 -S "server hello, max_fragment_length extension" \
3748 -C "found max_fragment_length extension" \
3749 -c "fragment larger than.*maximum "
3750
Angus Grattonc4dd0732018-04-11 16:28:39 +10003751# Run some tests with MBEDTLS_SSL_MAX_FRAGMENT_LENGTH disabled
3752# (session fragment length will be 16384 regardless of mbedtls
3753# content length configuration.)
3754
Hanno Beckerc5266962017-09-18 15:01:50 +01003755requires_config_disabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3756run_test "Max fragment length: disabled, larger message" \
3757 "$P_SRV debug_level=3" \
Angus Grattonc4dd0732018-04-11 16:28:39 +10003758 "$P_CLI debug_level=3 request_size=$(( $MAX_CONTENT_LEN + 1))" \
Hanno Beckerc5266962017-09-18 15:01:50 +01003759 0 \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003760 -C "Maximum input fragment length is 16384" \
3761 -C "Maximum output fragment length is 16384" \
3762 -S "Maximum input fragment length is 16384" \
3763 -S "Maximum output fragment length is 16384" \
Angus Grattonc4dd0732018-04-11 16:28:39 +10003764 -c "$(( $MAX_CONTENT_LEN + 1)) bytes written in 2 fragments" \
3765 -s "$MAX_CONTENT_LEN bytes read" \
Hanno Becker9cfabe32017-10-18 14:42:01 +01003766 -s "1 bytes read"
Hanno Beckerc5266962017-09-18 15:01:50 +01003767
3768requires_config_disabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takano18ddccc2021-06-21 19:43:33 +01003769run_test "Max fragment length, DTLS: disabled, larger message" \
Hanno Beckerc5266962017-09-18 15:01:50 +01003770 "$P_SRV debug_level=3 dtls=1" \
Angus Grattonc4dd0732018-04-11 16:28:39 +10003771 "$P_CLI debug_level=3 dtls=1 request_size=$(( $MAX_CONTENT_LEN + 1))" \
Hanno Beckerc5266962017-09-18 15:01:50 +01003772 1 \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003773 -C "Maximum input fragment length is 16384" \
3774 -C "Maximum output fragment length is 16384" \
3775 -S "Maximum input fragment length is 16384" \
3776 -S "Maximum output fragment length is 16384" \
Hanno Beckerc5266962017-09-18 15:01:50 +01003777 -c "fragment larger than.*maximum "
3778
Yuto Takanobec7cf72021-07-02 10:10:49 +01003779requires_max_content_len 4096
Hanno Beckerc5266962017-09-18 15:01:50 +01003780requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003781run_test "Max fragment length: used by client" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003782 "$P_SRV debug_level=3" \
3783 "$P_CLI debug_level=3 max_frag_len=4096" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01003784 0 \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003785 -c "Maximum input fragment length is 4096" \
3786 -c "Maximum output fragment length is 4096" \
3787 -s "Maximum input fragment length is 4096" \
3788 -s "Maximum output fragment length is 4096" \
3789 -c "client hello, adding max_fragment_length extension" \
3790 -s "found max fragment length extension" \
3791 -s "server hello, max_fragment_length extension" \
3792 -c "found max_fragment_length extension"
3793
Yuto Takanobec7cf72021-07-02 10:10:49 +01003794requires_max_content_len 1024
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003795requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3796run_test "Max fragment length: client 512, server 1024" \
3797 "$P_SRV debug_level=3 max_frag_len=1024" \
3798 "$P_CLI debug_level=3 max_frag_len=512" \
3799 0 \
3800 -c "Maximum input fragment length is 512" \
3801 -c "Maximum output fragment length is 512" \
3802 -s "Maximum input fragment length is 512" \
3803 -s "Maximum output fragment length is 512" \
3804 -c "client hello, adding max_fragment_length extension" \
3805 -s "found max fragment length extension" \
3806 -s "server hello, max_fragment_length extension" \
3807 -c "found max_fragment_length extension"
3808
Yuto Takanobec7cf72021-07-02 10:10:49 +01003809requires_max_content_len 2048
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003810requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3811run_test "Max fragment length: client 512, server 2048" \
3812 "$P_SRV debug_level=3 max_frag_len=2048" \
3813 "$P_CLI debug_level=3 max_frag_len=512" \
3814 0 \
3815 -c "Maximum input fragment length is 512" \
3816 -c "Maximum output fragment length is 512" \
3817 -s "Maximum input fragment length is 512" \
3818 -s "Maximum output fragment length is 512" \
3819 -c "client hello, adding max_fragment_length extension" \
3820 -s "found max fragment length extension" \
3821 -s "server hello, max_fragment_length extension" \
3822 -c "found max_fragment_length extension"
3823
Yuto Takanobec7cf72021-07-02 10:10:49 +01003824requires_max_content_len 4096
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003825requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3826run_test "Max fragment length: client 512, server 4096" \
3827 "$P_SRV debug_level=3 max_frag_len=4096" \
3828 "$P_CLI debug_level=3 max_frag_len=512" \
3829 0 \
3830 -c "Maximum input fragment length is 512" \
3831 -c "Maximum output fragment length is 512" \
3832 -s "Maximum input fragment length is 512" \
3833 -s "Maximum output fragment length is 512" \
3834 -c "client hello, adding max_fragment_length extension" \
3835 -s "found max fragment length extension" \
3836 -s "server hello, max_fragment_length extension" \
3837 -c "found max_fragment_length extension"
3838
Yuto Takanobec7cf72021-07-02 10:10:49 +01003839requires_max_content_len 1024
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003840requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3841run_test "Max fragment length: client 1024, server 512" \
3842 "$P_SRV debug_level=3 max_frag_len=512" \
3843 "$P_CLI debug_level=3 max_frag_len=1024" \
3844 0 \
3845 -c "Maximum input fragment length is 1024" \
3846 -c "Maximum output fragment length is 1024" \
3847 -s "Maximum input fragment length is 1024" \
3848 -s "Maximum output fragment length is 512" \
3849 -c "client hello, adding max_fragment_length extension" \
3850 -s "found max fragment length extension" \
3851 -s "server hello, max_fragment_length extension" \
3852 -c "found max_fragment_length extension"
3853
Yuto Takanobec7cf72021-07-02 10:10:49 +01003854requires_max_content_len 2048
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003855requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3856run_test "Max fragment length: client 1024, server 2048" \
3857 "$P_SRV debug_level=3 max_frag_len=2048" \
3858 "$P_CLI debug_level=3 max_frag_len=1024" \
3859 0 \
3860 -c "Maximum input fragment length is 1024" \
3861 -c "Maximum output fragment length is 1024" \
3862 -s "Maximum input fragment length is 1024" \
3863 -s "Maximum output fragment length is 1024" \
3864 -c "client hello, adding max_fragment_length extension" \
3865 -s "found max fragment length extension" \
3866 -s "server hello, max_fragment_length extension" \
3867 -c "found max_fragment_length extension"
3868
Yuto Takanobec7cf72021-07-02 10:10:49 +01003869requires_max_content_len 4096
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003870requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3871run_test "Max fragment length: client 1024, server 4096" \
3872 "$P_SRV debug_level=3 max_frag_len=4096" \
3873 "$P_CLI debug_level=3 max_frag_len=1024" \
3874 0 \
3875 -c "Maximum input fragment length is 1024" \
3876 -c "Maximum output fragment length is 1024" \
3877 -s "Maximum input fragment length is 1024" \
3878 -s "Maximum output fragment length is 1024" \
3879 -c "client hello, adding max_fragment_length extension" \
3880 -s "found max fragment length extension" \
3881 -s "server hello, max_fragment_length extension" \
3882 -c "found max_fragment_length extension"
3883
Yuto Takanobec7cf72021-07-02 10:10:49 +01003884requires_max_content_len 2048
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003885requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3886run_test "Max fragment length: client 2048, server 512" \
3887 "$P_SRV debug_level=3 max_frag_len=512" \
3888 "$P_CLI debug_level=3 max_frag_len=2048" \
3889 0 \
3890 -c "Maximum input fragment length is 2048" \
3891 -c "Maximum output fragment length is 2048" \
3892 -s "Maximum input fragment length is 2048" \
3893 -s "Maximum output fragment length is 512" \
3894 -c "client hello, adding max_fragment_length extension" \
3895 -s "found max fragment length extension" \
3896 -s "server hello, max_fragment_length extension" \
3897 -c "found max_fragment_length extension"
3898
Yuto Takanobec7cf72021-07-02 10:10:49 +01003899requires_max_content_len 2048
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003900requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3901run_test "Max fragment length: client 2048, server 1024" \
3902 "$P_SRV debug_level=3 max_frag_len=1024" \
3903 "$P_CLI debug_level=3 max_frag_len=2048" \
3904 0 \
3905 -c "Maximum input fragment length is 2048" \
3906 -c "Maximum output fragment length is 2048" \
3907 -s "Maximum input fragment length is 2048" \
3908 -s "Maximum output fragment length is 1024" \
3909 -c "client hello, adding max_fragment_length extension" \
3910 -s "found max fragment length extension" \
3911 -s "server hello, max_fragment_length extension" \
3912 -c "found max_fragment_length extension"
3913
Yuto Takanobec7cf72021-07-02 10:10:49 +01003914requires_max_content_len 4096
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003915requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3916run_test "Max fragment length: client 2048, server 4096" \
3917 "$P_SRV debug_level=3 max_frag_len=4096" \
3918 "$P_CLI debug_level=3 max_frag_len=2048" \
3919 0 \
3920 -c "Maximum input fragment length is 2048" \
3921 -c "Maximum output fragment length is 2048" \
3922 -s "Maximum input fragment length is 2048" \
3923 -s "Maximum output fragment length is 2048" \
3924 -c "client hello, adding max_fragment_length extension" \
3925 -s "found max fragment length extension" \
3926 -s "server hello, max_fragment_length extension" \
3927 -c "found max_fragment_length extension"
3928
Yuto Takanobec7cf72021-07-02 10:10:49 +01003929requires_max_content_len 4096
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003930requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3931run_test "Max fragment length: client 4096, server 512" \
3932 "$P_SRV debug_level=3 max_frag_len=512" \
3933 "$P_CLI debug_level=3 max_frag_len=4096" \
3934 0 \
3935 -c "Maximum input fragment length is 4096" \
3936 -c "Maximum output fragment length is 4096" \
3937 -s "Maximum input fragment length is 4096" \
3938 -s "Maximum output fragment length is 512" \
3939 -c "client hello, adding max_fragment_length extension" \
3940 -s "found max fragment length extension" \
3941 -s "server hello, max_fragment_length extension" \
3942 -c "found max_fragment_length extension"
3943
Yuto Takanobec7cf72021-07-02 10:10:49 +01003944requires_max_content_len 4096
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003945requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3946run_test "Max fragment length: client 4096, server 1024" \
3947 "$P_SRV debug_level=3 max_frag_len=1024" \
3948 "$P_CLI debug_level=3 max_frag_len=4096" \
3949 0 \
3950 -c "Maximum input fragment length is 4096" \
3951 -c "Maximum output fragment length is 4096" \
3952 -s "Maximum input fragment length is 4096" \
3953 -s "Maximum output fragment length is 1024" \
3954 -c "client hello, adding max_fragment_length extension" \
3955 -s "found max fragment length extension" \
3956 -s "server hello, max_fragment_length extension" \
3957 -c "found max_fragment_length extension"
3958
Yuto Takanobec7cf72021-07-02 10:10:49 +01003959requires_max_content_len 4096
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003960requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
3961run_test "Max fragment length: client 4096, server 2048" \
3962 "$P_SRV debug_level=3 max_frag_len=2048" \
3963 "$P_CLI debug_level=3 max_frag_len=4096" \
3964 0 \
3965 -c "Maximum input fragment length is 4096" \
3966 -c "Maximum output fragment length is 4096" \
3967 -s "Maximum input fragment length is 4096" \
3968 -s "Maximum output fragment length is 2048" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01003969 -c "client hello, adding max_fragment_length extension" \
3970 -s "found max fragment length extension" \
3971 -s "server hello, max_fragment_length extension" \
3972 -c "found max_fragment_length extension"
3973
Yuto Takanobec7cf72021-07-02 10:10:49 +01003974requires_max_content_len 4096
Hanno Becker4aed27e2017-09-18 15:00:34 +01003975requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003976run_test "Max fragment length: used by server" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003977 "$P_SRV debug_level=3 max_frag_len=4096" \
3978 "$P_CLI debug_level=3" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01003979 0 \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003980 -c "Maximum input fragment length is $MAX_CONTENT_LEN" \
3981 -c "Maximum output fragment length is $MAX_CONTENT_LEN" \
3982 -s "Maximum input fragment length is $MAX_CONTENT_LEN" \
3983 -s "Maximum output fragment length is 4096" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01003984 -C "client hello, adding max_fragment_length extension" \
3985 -S "found max fragment length extension" \
3986 -S "server hello, max_fragment_length extension" \
3987 -C "found max_fragment_length extension"
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003988
Yuto Takanobec7cf72021-07-02 10:10:49 +01003989requires_max_content_len 4096
Hanno Becker4aed27e2017-09-18 15:00:34 +01003990requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003991requires_gnutls
3992run_test "Max fragment length: gnutls server" \
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +02003993 "$G_SRV" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003994 "$P_CLI debug_level=3 max_frag_len=4096" \
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +02003995 0 \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04003996 -c "Maximum input fragment length is 4096" \
3997 -c "Maximum output fragment length is 4096" \
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +02003998 -c "client hello, adding max_fragment_length extension" \
3999 -c "found max_fragment_length extension"
4000
Yuto Takanobec7cf72021-07-02 10:10:49 +01004001requires_max_content_len 2048
Hanno Becker4aed27e2017-09-18 15:00:34 +01004002requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02004003run_test "Max fragment length: client, message just fits" \
4004 "$P_SRV debug_level=3" \
4005 "$P_CLI debug_level=3 max_frag_len=2048 request_size=2048" \
4006 0 \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004007 -c "Maximum input fragment length is 2048" \
4008 -c "Maximum output fragment length is 2048" \
4009 -s "Maximum input fragment length is 2048" \
4010 -s "Maximum output fragment length is 2048" \
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02004011 -c "client hello, adding max_fragment_length extension" \
4012 -s "found max fragment length extension" \
4013 -s "server hello, max_fragment_length extension" \
4014 -c "found max_fragment_length extension" \
4015 -c "2048 bytes written in 1 fragments" \
4016 -s "2048 bytes read"
4017
Yuto Takanobec7cf72021-07-02 10:10:49 +01004018requires_max_content_len 2048
Hanno Becker4aed27e2017-09-18 15:00:34 +01004019requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02004020run_test "Max fragment length: client, larger message" \
4021 "$P_SRV debug_level=3" \
4022 "$P_CLI debug_level=3 max_frag_len=2048 request_size=2345" \
4023 0 \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004024 -c "Maximum input fragment length is 2048" \
4025 -c "Maximum output fragment length is 2048" \
4026 -s "Maximum input fragment length is 2048" \
4027 -s "Maximum output fragment length is 2048" \
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02004028 -c "client hello, adding max_fragment_length extension" \
4029 -s "found max fragment length extension" \
4030 -s "server hello, max_fragment_length extension" \
4031 -c "found max_fragment_length extension" \
4032 -c "2345 bytes written in 2 fragments" \
4033 -s "2048 bytes read" \
4034 -s "297 bytes read"
4035
Yuto Takanobec7cf72021-07-02 10:10:49 +01004036requires_max_content_len 2048
Hanno Becker4aed27e2017-09-18 15:00:34 +01004037requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Manuel Pégourié-Gonnard23eb74d2015-01-21 14:37:13 +00004038run_test "Max fragment length: DTLS client, larger message" \
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02004039 "$P_SRV debug_level=3 dtls=1" \
4040 "$P_CLI debug_level=3 dtls=1 max_frag_len=2048 request_size=2345" \
4041 1 \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004042 -c "Maximum input fragment length is 2048" \
4043 -c "Maximum output fragment length is 2048" \
4044 -s "Maximum input fragment length is 2048" \
4045 -s "Maximum output fragment length is 2048" \
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02004046 -c "client hello, adding max_fragment_length extension" \
4047 -s "found max fragment length extension" \
4048 -s "server hello, max_fragment_length extension" \
4049 -c "found max_fragment_length extension" \
4050 -c "fragment larger than.*maximum"
4051
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01004052# Tests for renegotiation
4053
Hanno Becker6a243642017-10-12 15:18:45 +01004054# Renegotiation SCSV always added, regardless of SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004055run_test "Renegotiation: none, for reference" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004056 "$P_SRV debug_level=3 exchanges=2 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004057 "$P_CLI debug_level=3 exchanges=2" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01004058 0 \
4059 -C "client hello, adding renegotiation extension" \
4060 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4061 -S "found renegotiation extension" \
4062 -s "server hello, secure renegotiation extension" \
4063 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01004064 -C "=> renegotiate" \
4065 -S "=> renegotiate" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01004066 -S "write hello request"
4067
Hanno Becker6a243642017-10-12 15:18:45 +01004068requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004069run_test "Renegotiation: client-initiated" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004070 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004071 "$P_CLI debug_level=3 exchanges=2 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01004072 0 \
4073 -c "client hello, adding renegotiation extension" \
4074 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4075 -s "found renegotiation extension" \
4076 -s "server hello, secure renegotiation extension" \
4077 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01004078 -c "=> renegotiate" \
4079 -s "=> renegotiate" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01004080 -S "write hello request"
4081
Hanno Becker6a243642017-10-12 15:18:45 +01004082requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004083run_test "Renegotiation: server-initiated" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004084 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional renegotiate=1" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004085 "$P_CLI debug_level=3 exchanges=2 renegotiation=1" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01004086 0 \
4087 -c "client hello, adding renegotiation extension" \
4088 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4089 -s "found renegotiation extension" \
4090 -s "server hello, secure renegotiation extension" \
4091 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01004092 -c "=> renegotiate" \
4093 -s "=> renegotiate" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01004094 -s "write hello request"
4095
Janos Follathb0f148c2017-10-05 12:29:42 +01004096# Checks that no Signature Algorithm with SHA-1 gets negotiated. Negotiating SHA-1 would mean that
4097# the server did not parse the Signature Algorithm extension. This test is valid only if an MD
4098# algorithm stronger than SHA-1 is enabled in config.h
Hanno Becker6a243642017-10-12 15:18:45 +01004099requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Janos Follathb0f148c2017-10-05 12:29:42 +01004100run_test "Renegotiation: Signature Algorithms parsing, client-initiated" \
4101 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional" \
4102 "$P_CLI debug_level=3 exchanges=2 renegotiation=1 renegotiate=1" \
4103 0 \
4104 -c "client hello, adding renegotiation extension" \
4105 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4106 -s "found renegotiation extension" \
4107 -s "server hello, secure renegotiation extension" \
4108 -c "found renegotiation extension" \
4109 -c "=> renegotiate" \
4110 -s "=> renegotiate" \
4111 -S "write hello request" \
4112 -S "client hello v3, signature_algorithm ext: 2" # Is SHA-1 negotiated?
4113
4114# Checks that no Signature Algorithm with SHA-1 gets negotiated. Negotiating SHA-1 would mean that
4115# the server did not parse the Signature Algorithm extension. This test is valid only if an MD
4116# algorithm stronger than SHA-1 is enabled in config.h
Hanno Becker6a243642017-10-12 15:18:45 +01004117requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Janos Follathb0f148c2017-10-05 12:29:42 +01004118run_test "Renegotiation: Signature Algorithms parsing, server-initiated" \
4119 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional renegotiate=1" \
4120 "$P_CLI debug_level=3 exchanges=2 renegotiation=1" \
4121 0 \
4122 -c "client hello, adding renegotiation extension" \
4123 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4124 -s "found renegotiation extension" \
4125 -s "server hello, secure renegotiation extension" \
4126 -c "found renegotiation extension" \
4127 -c "=> renegotiate" \
4128 -s "=> renegotiate" \
4129 -s "write hello request" \
4130 -S "client hello v3, signature_algorithm ext: 2" # Is SHA-1 negotiated?
4131
Hanno Becker6a243642017-10-12 15:18:45 +01004132requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004133run_test "Renegotiation: double" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004134 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional renegotiate=1" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004135 "$P_CLI debug_level=3 exchanges=2 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01004136 0 \
4137 -c "client hello, adding renegotiation extension" \
4138 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4139 -s "found renegotiation extension" \
4140 -s "server hello, secure renegotiation extension" \
4141 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01004142 -c "=> renegotiate" \
4143 -s "=> renegotiate" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01004144 -s "write hello request"
4145
Hanno Becker6a243642017-10-12 15:18:45 +01004146requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Andrzej Kurek8ea68722020-04-03 06:40:47 -04004147requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanobec7cf72021-07-02 10:10:49 +01004148requires_max_content_len 2048
Andrzej Kurek8ea68722020-04-03 06:40:47 -04004149run_test "Renegotiation with max fragment length: client 2048, server 512" \
4150 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional renegotiate=1 max_frag_len=512" \
4151 "$P_CLI debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 max_frag_len=2048 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
4152 0 \
4153 -c "Maximum input fragment length is 2048" \
4154 -c "Maximum output fragment length is 2048" \
4155 -s "Maximum input fragment length is 2048" \
4156 -s "Maximum output fragment length is 512" \
4157 -c "client hello, adding max_fragment_length extension" \
4158 -s "found max fragment length extension" \
4159 -s "server hello, max_fragment_length extension" \
4160 -c "found max_fragment_length extension" \
4161 -c "client hello, adding renegotiation extension" \
4162 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4163 -s "found renegotiation extension" \
4164 -s "server hello, secure renegotiation extension" \
4165 -c "found renegotiation extension" \
4166 -c "=> renegotiate" \
4167 -s "=> renegotiate" \
4168 -s "write hello request"
4169
4170requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004171run_test "Renegotiation: client-initiated, server-rejected" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004172 "$P_SRV debug_level=3 exchanges=2 renegotiation=0 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004173 "$P_CLI debug_level=3 exchanges=2 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01004174 1 \
4175 -c "client hello, adding renegotiation extension" \
4176 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4177 -S "found renegotiation extension" \
4178 -s "server hello, secure renegotiation extension" \
4179 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01004180 -c "=> renegotiate" \
4181 -S "=> renegotiate" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02004182 -S "write hello request" \
Manuel Pégourié-Gonnard65919622014-08-19 12:50:30 +02004183 -c "SSL - Unexpected message at ServerHello in renegotiation" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02004184 -c "failed"
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01004185
Hanno Becker6a243642017-10-12 15:18:45 +01004186requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004187run_test "Renegotiation: server-initiated, client-rejected, default" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004188 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004189 "$P_CLI debug_level=3 exchanges=2 renegotiation=0" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01004190 0 \
4191 -C "client hello, adding renegotiation extension" \
4192 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4193 -S "found renegotiation extension" \
4194 -s "server hello, secure renegotiation extension" \
4195 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01004196 -C "=> renegotiate" \
4197 -S "=> renegotiate" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01004198 -s "write hello request" \
Manuel Pégourié-Gonnarda9964db2014-07-03 19:29:16 +02004199 -S "SSL - An unexpected message was received from our peer" \
4200 -S "failed"
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +01004201
Hanno Becker6a243642017-10-12 15:18:45 +01004202requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004203run_test "Renegotiation: server-initiated, client-rejected, not enforced" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004204 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004205 renego_delay=-1 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004206 "$P_CLI debug_level=3 exchanges=2 renegotiation=0" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02004207 0 \
4208 -C "client hello, adding renegotiation extension" \
4209 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4210 -S "found renegotiation extension" \
4211 -s "server hello, secure renegotiation extension" \
4212 -c "found renegotiation extension" \
4213 -C "=> renegotiate" \
4214 -S "=> renegotiate" \
4215 -s "write hello request" \
4216 -S "SSL - An unexpected message was received from our peer" \
4217 -S "failed"
4218
Manuel Pégourié-Gonnarda8c0a0d2014-08-15 12:07:38 +02004219# delay 2 for 1 alert record + 1 application data record
Hanno Becker6a243642017-10-12 15:18:45 +01004220requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004221run_test "Renegotiation: server-initiated, client-rejected, delay 2" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004222 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004223 renego_delay=2 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004224 "$P_CLI debug_level=3 exchanges=2 renegotiation=0" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02004225 0 \
4226 -C "client hello, adding renegotiation extension" \
4227 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4228 -S "found renegotiation extension" \
4229 -s "server hello, secure renegotiation extension" \
4230 -c "found renegotiation extension" \
4231 -C "=> renegotiate" \
4232 -S "=> renegotiate" \
4233 -s "write hello request" \
4234 -S "SSL - An unexpected message was received from our peer" \
4235 -S "failed"
4236
Hanno Becker6a243642017-10-12 15:18:45 +01004237requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004238run_test "Renegotiation: server-initiated, client-rejected, delay 0" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004239 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004240 renego_delay=0 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004241 "$P_CLI debug_level=3 exchanges=2 renegotiation=0" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02004242 0 \
4243 -C "client hello, adding renegotiation extension" \
4244 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4245 -S "found renegotiation extension" \
4246 -s "server hello, secure renegotiation extension" \
4247 -c "found renegotiation extension" \
4248 -C "=> renegotiate" \
4249 -S "=> renegotiate" \
4250 -s "write hello request" \
Manuel Pégourié-Gonnarda8c0a0d2014-08-15 12:07:38 +02004251 -s "SSL - An unexpected message was received from our peer"
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02004252
Hanno Becker6a243642017-10-12 15:18:45 +01004253requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004254run_test "Renegotiation: server-initiated, client-accepted, delay 0" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004255 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004256 renego_delay=0 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004257 "$P_CLI debug_level=3 exchanges=2 renegotiation=1" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02004258 0 \
4259 -c "client hello, adding renegotiation extension" \
4260 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4261 -s "found renegotiation extension" \
4262 -s "server hello, secure renegotiation extension" \
4263 -c "found renegotiation extension" \
4264 -c "=> renegotiate" \
4265 -s "=> renegotiate" \
4266 -s "write hello request" \
4267 -S "SSL - An unexpected message was received from our peer" \
4268 -S "failed"
4269
Hanno Becker6a243642017-10-12 15:18:45 +01004270requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01004271run_test "Renegotiation: periodic, just below period" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004272 "$P_SRV debug_level=3 exchanges=9 renegotiation=1 renego_period=3 auth_mode=optional" \
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01004273 "$P_CLI debug_level=3 exchanges=2 renegotiation=1" \
4274 0 \
4275 -C "client hello, adding renegotiation extension" \
4276 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4277 -S "found renegotiation extension" \
4278 -s "server hello, secure renegotiation extension" \
4279 -c "found renegotiation extension" \
4280 -S "record counter limit reached: renegotiate" \
4281 -C "=> renegotiate" \
4282 -S "=> renegotiate" \
4283 -S "write hello request" \
4284 -S "SSL - An unexpected message was received from our peer" \
4285 -S "failed"
4286
Manuel Pégourié-Gonnard9835bc02015-01-14 14:41:58 +01004287# one extra exchange to be able to complete renego
Hanno Becker6a243642017-10-12 15:18:45 +01004288requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01004289run_test "Renegotiation: periodic, just above period" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004290 "$P_SRV debug_level=3 exchanges=9 renegotiation=1 renego_period=3 auth_mode=optional" \
Manuel Pégourié-Gonnard9835bc02015-01-14 14:41:58 +01004291 "$P_CLI debug_level=3 exchanges=4 renegotiation=1" \
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01004292 0 \
4293 -c "client hello, adding renegotiation extension" \
4294 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4295 -s "found renegotiation extension" \
4296 -s "server hello, secure renegotiation extension" \
4297 -c "found renegotiation extension" \
4298 -s "record counter limit reached: renegotiate" \
4299 -c "=> renegotiate" \
4300 -s "=> renegotiate" \
4301 -s "write hello request" \
4302 -S "SSL - An unexpected message was received from our peer" \
4303 -S "failed"
4304
Hanno Becker6a243642017-10-12 15:18:45 +01004305requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01004306run_test "Renegotiation: periodic, two times period" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004307 "$P_SRV debug_level=3 exchanges=9 renegotiation=1 renego_period=3 auth_mode=optional" \
Manuel Pégourié-Gonnard9835bc02015-01-14 14:41:58 +01004308 "$P_CLI debug_level=3 exchanges=7 renegotiation=1" \
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01004309 0 \
4310 -c "client hello, adding renegotiation extension" \
4311 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4312 -s "found renegotiation extension" \
4313 -s "server hello, secure renegotiation extension" \
4314 -c "found renegotiation extension" \
4315 -s "record counter limit reached: renegotiate" \
4316 -c "=> renegotiate" \
4317 -s "=> renegotiate" \
4318 -s "write hello request" \
4319 -S "SSL - An unexpected message was received from our peer" \
4320 -S "failed"
4321
Hanno Becker6a243642017-10-12 15:18:45 +01004322requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01004323run_test "Renegotiation: periodic, above period, disabled" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004324 "$P_SRV debug_level=3 exchanges=9 renegotiation=0 renego_period=3 auth_mode=optional" \
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01004325 "$P_CLI debug_level=3 exchanges=4 renegotiation=1" \
4326 0 \
4327 -C "client hello, adding renegotiation extension" \
4328 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4329 -S "found renegotiation extension" \
4330 -s "server hello, secure renegotiation extension" \
4331 -c "found renegotiation extension" \
4332 -S "record counter limit reached: renegotiate" \
4333 -C "=> renegotiate" \
4334 -S "=> renegotiate" \
4335 -S "write hello request" \
4336 -S "SSL - An unexpected message was received from our peer" \
4337 -S "failed"
4338
Hanno Becker6a243642017-10-12 15:18:45 +01004339requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004340run_test "Renegotiation: nbio, client-initiated" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004341 "$P_SRV debug_level=3 nbio=2 exchanges=2 renegotiation=1 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004342 "$P_CLI debug_level=3 nbio=2 exchanges=2 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnardf07f4212014-08-15 19:04:47 +02004343 0 \
4344 -c "client hello, adding renegotiation extension" \
4345 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4346 -s "found renegotiation extension" \
4347 -s "server hello, secure renegotiation extension" \
4348 -c "found renegotiation extension" \
4349 -c "=> renegotiate" \
4350 -s "=> renegotiate" \
4351 -S "write hello request"
4352
Hanno Becker6a243642017-10-12 15:18:45 +01004353requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004354run_test "Renegotiation: nbio, server-initiated" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01004355 "$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 +02004356 "$P_CLI debug_level=3 nbio=2 exchanges=2 renegotiation=1" \
Manuel Pégourié-Gonnardf07f4212014-08-15 19:04:47 +02004357 0 \
4358 -c "client hello, adding renegotiation extension" \
4359 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4360 -s "found renegotiation extension" \
4361 -s "server hello, secure renegotiation extension" \
4362 -c "found renegotiation extension" \
4363 -c "=> renegotiate" \
4364 -s "=> renegotiate" \
4365 -s "write hello request"
4366
Hanno Becker6a243642017-10-12 15:18:45 +01004367requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004368run_test "Renegotiation: openssl server, client-initiated" \
Manuel Pégourié-Gonnarda7756172014-08-31 18:37:01 +02004369 "$O_SRV -www" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004370 "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnard51362962014-08-30 21:22:47 +02004371 0 \
4372 -c "client hello, adding renegotiation extension" \
4373 -c "found renegotiation extension" \
4374 -c "=> renegotiate" \
Wenxing Hou20e964f2024-06-19 11:04:13 +08004375 -C "ssl_handshake() returned" \
Manuel Pégourié-Gonnard51362962014-08-30 21:22:47 +02004376 -C "error" \
4377 -c "HTTP/1.0 200 [Oo][Kk]"
4378
Paul Bakker539d9722015-02-08 16:18:35 +01004379requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01004380requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004381run_test "Renegotiation: gnutls server strict, client-initiated" \
4382 "$G_SRV --priority=NORMAL:%SAFE_RENEGOTIATION" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004383 "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnard51362962014-08-30 21:22:47 +02004384 0 \
4385 -c "client hello, adding renegotiation extension" \
4386 -c "found renegotiation extension" \
4387 -c "=> renegotiate" \
Wenxing Hou20e964f2024-06-19 11:04:13 +08004388 -C "ssl_handshake() returned" \
Manuel Pégourié-Gonnard51362962014-08-30 21:22:47 +02004389 -C "error" \
4390 -c "HTTP/1.0 200 [Oo][Kk]"
4391
Paul Bakker539d9722015-02-08 16:18:35 +01004392requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01004393requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004394run_test "Renegotiation: gnutls server unsafe, client-initiated default" \
4395 "$G_SRV --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION" \
4396 "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1" \
4397 1 \
4398 -c "client hello, adding renegotiation extension" \
4399 -C "found renegotiation extension" \
4400 -c "=> renegotiate" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004401 -c "mbedtls_ssl_handshake() returned" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004402 -c "error" \
4403 -C "HTTP/1.0 200 [Oo][Kk]"
4404
Paul Bakker539d9722015-02-08 16:18:35 +01004405requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01004406requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004407run_test "Renegotiation: gnutls server unsafe, client-inititated no legacy" \
4408 "$G_SRV --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION" \
4409 "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1 \
4410 allow_legacy=0" \
4411 1 \
4412 -c "client hello, adding renegotiation extension" \
4413 -C "found renegotiation extension" \
4414 -c "=> renegotiate" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004415 -c "mbedtls_ssl_handshake() returned" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004416 -c "error" \
4417 -C "HTTP/1.0 200 [Oo][Kk]"
4418
Paul Bakker539d9722015-02-08 16:18:35 +01004419requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01004420requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004421run_test "Renegotiation: gnutls server unsafe, client-inititated legacy" \
4422 "$G_SRV --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION" \
4423 "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1 \
4424 allow_legacy=1" \
4425 0 \
4426 -c "client hello, adding renegotiation extension" \
4427 -C "found renegotiation extension" \
4428 -c "=> renegotiate" \
Wenxing Hou20e964f2024-06-19 11:04:13 +08004429 -C "ssl_handshake() returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004430 -C "error" \
4431 -c "HTTP/1.0 200 [Oo][Kk]"
4432
Hanno Becker6a243642017-10-12 15:18:45 +01004433requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard30d16eb2014-08-19 17:43:50 +02004434run_test "Renegotiation: DTLS, client-initiated" \
4435 "$P_SRV debug_level=3 dtls=1 exchanges=2 renegotiation=1" \
4436 "$P_CLI debug_level=3 dtls=1 exchanges=2 renegotiation=1 renegotiate=1" \
4437 0 \
4438 -c "client hello, adding renegotiation extension" \
4439 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4440 -s "found renegotiation extension" \
4441 -s "server hello, secure renegotiation extension" \
4442 -c "found renegotiation extension" \
4443 -c "=> renegotiate" \
4444 -s "=> renegotiate" \
4445 -S "write hello request"
4446
Hanno Becker6a243642017-10-12 15:18:45 +01004447requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnardc392b242014-08-19 17:53:11 +02004448run_test "Renegotiation: DTLS, server-initiated" \
4449 "$P_SRV debug_level=3 dtls=1 exchanges=2 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnarddf9a0a82014-10-02 14:17:18 +02004450 "$P_CLI debug_level=3 dtls=1 exchanges=2 renegotiation=1 \
4451 read_timeout=1000 max_resend=2" \
Manuel Pégourié-Gonnardc392b242014-08-19 17:53:11 +02004452 0 \
4453 -c "client hello, adding renegotiation extension" \
4454 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4455 -s "found renegotiation extension" \
4456 -s "server hello, secure renegotiation extension" \
4457 -c "found renegotiation extension" \
4458 -c "=> renegotiate" \
4459 -s "=> renegotiate" \
4460 -s "write hello request"
4461
Hanno Becker6a243642017-10-12 15:18:45 +01004462requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Andres AG692ad842017-01-19 16:30:57 +00004463run_test "Renegotiation: DTLS, renego_period overflow" \
4464 "$P_SRV debug_level=3 dtls=1 exchanges=4 renegotiation=1 renego_period=18446462598732840962 auth_mode=optional" \
4465 "$P_CLI debug_level=3 dtls=1 exchanges=4 renegotiation=1" \
4466 0 \
4467 -c "client hello, adding renegotiation extension" \
4468 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4469 -s "found renegotiation extension" \
4470 -s "server hello, secure renegotiation extension" \
4471 -s "record counter limit reached: renegotiate" \
4472 -c "=> renegotiate" \
4473 -s "=> renegotiate" \
Hanno Becker6a243642017-10-12 15:18:45 +01004474 -s "write hello request"
Andres AG692ad842017-01-19 16:30:57 +00004475
Manuel Pégourié-Gonnard96999962015-02-17 16:02:37 +00004476requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01004477requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnardf1499f62014-08-31 17:13:13 +02004478run_test "Renegotiation: DTLS, gnutls server, client-initiated" \
4479 "$G_SRV -u --mtu 4096" \
4480 "$P_CLI debug_level=3 dtls=1 exchanges=1 renegotiation=1 renegotiate=1" \
4481 0 \
4482 -c "client hello, adding renegotiation extension" \
4483 -c "found renegotiation extension" \
4484 -c "=> renegotiate" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004485 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnardf1499f62014-08-31 17:13:13 +02004486 -C "error" \
4487 -s "Extra-header:"
4488
Shaun Case0e7791f2021-12-20 21:14:10 -08004489# Test for the "secure renegotiation" extension only (no actual renegotiation)
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004490
Paul Bakker539d9722015-02-08 16:18:35 +01004491requires_gnutls
Gilles Peskineb3bba1a2024-04-29 17:47:35 +02004492requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004493run_test "Renego ext: gnutls server strict, client default" \
4494 "$G_SRV --priority=NORMAL:%SAFE_RENEGOTIATION" \
4495 "$P_CLI debug_level=3" \
4496 0 \
4497 -c "found renegotiation extension" \
4498 -C "error" \
4499 -c "HTTP/1.0 200 [Oo][Kk]"
4500
Paul Bakker539d9722015-02-08 16:18:35 +01004501requires_gnutls
Gilles Peskineb3bba1a2024-04-29 17:47:35 +02004502requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004503run_test "Renego ext: gnutls server unsafe, client default" \
4504 "$G_SRV --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION" \
4505 "$P_CLI debug_level=3" \
4506 0 \
4507 -C "found renegotiation extension" \
4508 -C "error" \
4509 -c "HTTP/1.0 200 [Oo][Kk]"
4510
Paul Bakker539d9722015-02-08 16:18:35 +01004511requires_gnutls
Gilles Peskineb3bba1a2024-04-29 17:47:35 +02004512requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004513run_test "Renego ext: gnutls server unsafe, client break legacy" \
4514 "$G_SRV --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION" \
4515 "$P_CLI debug_level=3 allow_legacy=-1" \
4516 1 \
4517 -C "found renegotiation extension" \
4518 -c "error" \
4519 -C "HTTP/1.0 200 [Oo][Kk]"
4520
Paul Bakker539d9722015-02-08 16:18:35 +01004521requires_gnutls
Gilles Peskineb3bba1a2024-04-29 17:47:35 +02004522requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004523run_test "Renego ext: gnutls client strict, server default" \
4524 "$P_SRV debug_level=3" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004525 "$G_CLI --priority=NORMAL:%SAFE_RENEGOTIATION localhost" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004526 0 \
4527 -s "received TLS_EMPTY_RENEGOTIATION_INFO\|found renegotiation extension" \
4528 -s "server hello, secure renegotiation extension"
4529
Paul Bakker539d9722015-02-08 16:18:35 +01004530requires_gnutls
Gilles Peskineb3bba1a2024-04-29 17:47:35 +02004531requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004532run_test "Renego ext: gnutls client unsafe, server default" \
4533 "$P_SRV debug_level=3" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004534 "$G_CLI --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION localhost" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004535 0 \
4536 -S "received TLS_EMPTY_RENEGOTIATION_INFO\|found renegotiation extension" \
4537 -S "server hello, secure renegotiation extension"
4538
Paul Bakker539d9722015-02-08 16:18:35 +01004539requires_gnutls
Gilles Peskineb3bba1a2024-04-29 17:47:35 +02004540requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004541run_test "Renego ext: gnutls client unsafe, server break legacy" \
4542 "$P_SRV debug_level=3 allow_legacy=-1" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004543 "$G_CLI --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION localhost" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01004544 1 \
4545 -S "received TLS_EMPTY_RENEGOTIATION_INFO\|found renegotiation extension" \
4546 -S "server hello, secure renegotiation extension"
4547
Janos Follath0b242342016-02-17 10:11:21 +00004548# Tests for silently dropping trailing extra bytes in .der certificates
4549
4550requires_gnutls
4551run_test "DER format: no trailing bytes" \
4552 "$P_SRV crt_file=data_files/server5-der0.crt \
4553 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004554 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00004555 0 \
4556 -c "Handshake was completed" \
4557
4558requires_gnutls
4559run_test "DER format: with a trailing zero byte" \
4560 "$P_SRV crt_file=data_files/server5-der1a.crt \
4561 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004562 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00004563 0 \
4564 -c "Handshake was completed" \
4565
4566requires_gnutls
4567run_test "DER format: with a trailing random byte" \
4568 "$P_SRV crt_file=data_files/server5-der1b.crt \
4569 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004570 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00004571 0 \
4572 -c "Handshake was completed" \
4573
4574requires_gnutls
4575run_test "DER format: with 2 trailing random bytes" \
4576 "$P_SRV crt_file=data_files/server5-der2.crt \
4577 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004578 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00004579 0 \
4580 -c "Handshake was completed" \
4581
4582requires_gnutls
4583run_test "DER format: with 4 trailing random bytes" \
4584 "$P_SRV crt_file=data_files/server5-der4.crt \
4585 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004586 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00004587 0 \
4588 -c "Handshake was completed" \
4589
4590requires_gnutls
4591run_test "DER format: with 8 trailing random bytes" \
4592 "$P_SRV crt_file=data_files/server5-der8.crt \
4593 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004594 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00004595 0 \
4596 -c "Handshake was completed" \
4597
4598requires_gnutls
4599run_test "DER format: with 9 trailing random bytes" \
4600 "$P_SRV crt_file=data_files/server5-der9.crt \
4601 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02004602 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00004603 0 \
4604 -c "Handshake was completed" \
4605
Jarno Lamsaf7a7f9e2019-04-01 15:11:54 +03004606# Tests for auth_mode, there are duplicated tests using ca callback for authentication
4607# When updating these tests, modify the matching authentication tests accordingly
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004608
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004609run_test "Authentication: server badcert, client required" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004610 "$P_SRV crt_file=data_files/server5-badsign.crt \
4611 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004612 "$P_CLI debug_level=1 auth_mode=required" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004613 1 \
4614 -c "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004615 -c "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004616 -c "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004617 -c "X509 - Certificate verification failed"
4618
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004619run_test "Authentication: server badcert, client optional" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004620 "$P_SRV crt_file=data_files/server5-badsign.crt \
4621 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004622 "$P_CLI debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004623 0 \
4624 -c "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004625 -c "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004626 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004627 -C "X509 - Certificate verification failed"
4628
Hanno Beckere6706e62017-05-15 16:05:15 +01004629run_test "Authentication: server goodcert, client optional, no trusted CA" \
4630 "$P_SRV" \
4631 "$P_CLI debug_level=3 auth_mode=optional ca_file=none ca_path=none" \
4632 0 \
4633 -c "x509_verify_cert() returned" \
4634 -c "! The certificate is not correctly signed by the trusted CA" \
4635 -c "! Certificate verification flags"\
4636 -C "! mbedtls_ssl_handshake returned" \
4637 -C "X509 - Certificate verification failed" \
4638 -C "SSL - No CA Chain is set, but required to operate"
4639
4640run_test "Authentication: server goodcert, client required, no trusted CA" \
4641 "$P_SRV" \
4642 "$P_CLI debug_level=3 auth_mode=required ca_file=none ca_path=none" \
4643 1 \
4644 -c "x509_verify_cert() returned" \
4645 -c "! The certificate is not correctly signed by the trusted CA" \
4646 -c "! Certificate verification flags"\
4647 -c "! mbedtls_ssl_handshake returned" \
4648 -c "SSL - No CA Chain is set, but required to operate"
4649
4650# The purpose of the next two tests is to test the client's behaviour when receiving a server
4651# certificate with an unsupported elliptic curve. This should usually not happen because
4652# the client informs the server about the supported curves - it does, though, in the
4653# corner case of a static ECDH suite, because the server doesn't check the curve on that
4654# occasion (to be fixed). If that bug's fixed, the test needs to be altered to use a
4655# different means to have the server ignoring the client's supported curve list.
4656
4657requires_config_enabled MBEDTLS_ECP_C
4658run_test "Authentication: server ECDH p256v1, client required, p256v1 unsupported" \
4659 "$P_SRV debug_level=1 key_file=data_files/server5.key \
4660 crt_file=data_files/server5.ku-ka.crt" \
4661 "$P_CLI debug_level=3 auth_mode=required curves=secp521r1" \
4662 1 \
4663 -c "bad certificate (EC key curve)"\
4664 -c "! Certificate verification flags"\
4665 -C "bad server certificate (ECDH curve)" # Expect failure at earlier verification stage
4666
4667requires_config_enabled MBEDTLS_ECP_C
4668run_test "Authentication: server ECDH p256v1, client optional, p256v1 unsupported" \
4669 "$P_SRV debug_level=1 key_file=data_files/server5.key \
4670 crt_file=data_files/server5.ku-ka.crt" \
4671 "$P_CLI debug_level=3 auth_mode=optional curves=secp521r1" \
4672 1 \
4673 -c "bad certificate (EC key curve)"\
4674 -c "! Certificate verification flags"\
4675 -c "bad server certificate (ECDH curve)" # Expect failure only at ECDH params check
4676
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004677run_test "Authentication: server badcert, client none" \
Manuel Pégourié-Gonnardc1da6642014-02-25 14:18:30 +01004678 "$P_SRV crt_file=data_files/server5-badsign.crt \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004679 key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004680 "$P_CLI debug_level=1 auth_mode=none" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004681 0 \
4682 -C "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004683 -C "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004684 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004685 -C "X509 - Certificate verification failed"
4686
Simon Butcher99000142016-10-13 17:21:01 +01004687run_test "Authentication: client SHA256, server required" \
4688 "$P_SRV auth_mode=required" \
4689 "$P_CLI debug_level=3 crt_file=data_files/server6.crt \
4690 key_file=data_files/server6.key \
4691 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384" \
4692 0 \
4693 -c "Supported Signature Algorithm found: 4," \
4694 -c "Supported Signature Algorithm found: 5,"
4695
4696run_test "Authentication: client SHA384, server required" \
4697 "$P_SRV auth_mode=required" \
4698 "$P_CLI debug_level=3 crt_file=data_files/server6.crt \
4699 key_file=data_files/server6.key \
4700 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256" \
4701 0 \
4702 -c "Supported Signature Algorithm found: 4," \
4703 -c "Supported Signature Algorithm found: 5,"
4704
Gilles Peskinefd8332e2017-05-03 16:25:07 +02004705run_test "Authentication: client has no cert, server required (SSLv3)" \
4706 "$P_SRV debug_level=3 min_version=ssl3 auth_mode=required" \
4707 "$P_CLI debug_level=3 force_version=ssl3 crt_file=none \
4708 key_file=data_files/server5.key" \
4709 1 \
4710 -S "skip write certificate request" \
4711 -C "skip parse certificate request" \
4712 -c "got a certificate request" \
4713 -c "got no certificate to send" \
4714 -S "x509_verify_cert() returned" \
4715 -s "client has no certificate" \
4716 -s "! mbedtls_ssl_handshake returned" \
4717 -c "! mbedtls_ssl_handshake returned" \
4718 -s "No client certification received from the client, but required by the authentication mode"
4719
4720run_test "Authentication: client has no cert, server required (TLS)" \
4721 "$P_SRV debug_level=3 auth_mode=required" \
4722 "$P_CLI debug_level=3 crt_file=none \
4723 key_file=data_files/server5.key" \
4724 1 \
4725 -S "skip write certificate request" \
4726 -C "skip parse certificate request" \
4727 -c "got a certificate request" \
4728 -c "= write certificate$" \
4729 -C "skip write certificate$" \
4730 -S "x509_verify_cert() returned" \
4731 -s "client has no certificate" \
4732 -s "! mbedtls_ssl_handshake returned" \
4733 -c "! mbedtls_ssl_handshake returned" \
4734 -s "No client certification received from the client, but required by the authentication mode"
4735
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004736run_test "Authentication: client badcert, server required" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004737 "$P_SRV debug_level=3 auth_mode=required" \
4738 "$P_CLI debug_level=3 crt_file=data_files/server5-badsign.crt \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004739 key_file=data_files/server5.key" \
4740 1 \
4741 -S "skip write certificate request" \
4742 -C "skip parse certificate request" \
4743 -c "got a certificate request" \
4744 -C "skip write certificate" \
4745 -C "skip write certificate verify" \
4746 -S "skip parse certificate verify" \
4747 -s "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02004748 -s "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004749 -s "! mbedtls_ssl_handshake returned" \
Gilles Peskine1cc8e342017-05-03 16:28:34 +02004750 -s "send alert level=2 message=48" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004751 -c "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004752 -s "X509 - Certificate verification failed"
Gilles Peskine1cc8e342017-05-03 16:28:34 +02004753# We don't check that the client receives the alert because it might
4754# detect that its write end of the connection is closed and abort
4755# before reading the alert message.
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004756
Gilles Peskine8c681b72022-01-07 23:10:56 +01004757run_test "Authentication: client cert self-signed and trusted, server required" \
4758 "$P_SRV debug_level=3 auth_mode=required ca_file=data_files/server5-selfsigned.crt" \
4759 "$P_CLI debug_level=3 crt_file=data_files/server5-selfsigned.crt \
4760 key_file=data_files/server5.key" \
4761 0 \
4762 -S "skip write certificate request" \
4763 -C "skip parse certificate request" \
4764 -c "got a certificate request" \
4765 -C "skip write certificate" \
4766 -C "skip write certificate verify" \
4767 -S "skip parse certificate verify" \
4768 -S "x509_verify_cert() returned" \
4769 -S "! The certificate is not correctly signed" \
4770 -S "X509 - Certificate verification failed"
4771
Janos Follath89baba22017-04-10 14:34:35 +01004772run_test "Authentication: client cert not trusted, server required" \
4773 "$P_SRV debug_level=3 auth_mode=required" \
4774 "$P_CLI debug_level=3 crt_file=data_files/server5-selfsigned.crt \
4775 key_file=data_files/server5.key" \
4776 1 \
4777 -S "skip write certificate request" \
4778 -C "skip parse certificate request" \
4779 -c "got a certificate request" \
4780 -C "skip write certificate" \
4781 -C "skip write certificate verify" \
4782 -S "skip parse certificate verify" \
4783 -s "x509_verify_cert() returned" \
4784 -s "! The certificate is not correctly signed by the trusted CA" \
4785 -s "! mbedtls_ssl_handshake returned" \
4786 -c "! mbedtls_ssl_handshake returned" \
4787 -s "X509 - Certificate verification failed"
4788
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004789run_test "Authentication: client badcert, server optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004790 "$P_SRV debug_level=3 auth_mode=optional" \
4791 "$P_CLI debug_level=3 crt_file=data_files/server5-badsign.crt \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004792 key_file=data_files/server5.key" \
4793 0 \
4794 -S "skip write certificate request" \
4795 -C "skip parse certificate request" \
4796 -c "got a certificate request" \
4797 -C "skip write certificate" \
4798 -C "skip write certificate verify" \
4799 -S "skip parse certificate verify" \
4800 -s "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004801 -s "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004802 -S "! mbedtls_ssl_handshake returned" \
4803 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004804 -S "X509 - Certificate verification failed"
4805
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004806run_test "Authentication: client badcert, server none" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004807 "$P_SRV debug_level=3 auth_mode=none" \
4808 "$P_CLI debug_level=3 crt_file=data_files/server5-badsign.crt \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004809 key_file=data_files/server5.key" \
4810 0 \
4811 -s "skip write certificate request" \
4812 -C "skip parse certificate request" \
4813 -c "got no certificate request" \
4814 -c "skip write certificate" \
4815 -c "skip write certificate verify" \
4816 -s "skip parse certificate verify" \
4817 -S "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004818 -S "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004819 -S "! mbedtls_ssl_handshake returned" \
4820 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01004821 -S "X509 - Certificate verification failed"
4822
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004823run_test "Authentication: client no cert, server optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004824 "$P_SRV debug_level=3 auth_mode=optional" \
4825 "$P_CLI debug_level=3 crt_file=none key_file=none" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004826 0 \
4827 -S "skip write certificate request" \
4828 -C "skip parse certificate request" \
4829 -c "got a certificate request" \
4830 -C "skip write certificate$" \
4831 -C "got no certificate to send" \
4832 -S "SSLv3 client has no certificate" \
4833 -c "skip write certificate verify" \
4834 -s "skip parse certificate verify" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004835 -s "! Certificate was missing" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004836 -S "! mbedtls_ssl_handshake returned" \
4837 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004838 -S "X509 - Certificate verification failed"
4839
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004840run_test "Authentication: openssl client no cert, server optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004841 "$P_SRV debug_level=3 auth_mode=optional" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004842 "$O_CLI" \
4843 0 \
4844 -S "skip write certificate request" \
4845 -s "skip parse certificate verify" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004846 -s "! Certificate was missing" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004847 -S "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004848 -S "X509 - Certificate verification failed"
4849
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004850run_test "Authentication: client no cert, openssl server optional" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004851 "$O_SRV -verify 10" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004852 "$P_CLI debug_level=3 crt_file=none key_file=none" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004853 0 \
4854 -C "skip parse certificate request" \
4855 -c "got a certificate request" \
4856 -C "skip write certificate$" \
4857 -c "skip write certificate verify" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004858 -C "! mbedtls_ssl_handshake returned"
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004859
Gilles Peskinefd8332e2017-05-03 16:25:07 +02004860run_test "Authentication: client no cert, openssl server required" \
4861 "$O_SRV -Verify 10" \
4862 "$P_CLI debug_level=3 crt_file=none key_file=none" \
4863 1 \
4864 -C "skip parse certificate request" \
4865 -c "got a certificate request" \
4866 -C "skip write certificate$" \
4867 -c "skip write certificate verify" \
4868 -c "! mbedtls_ssl_handshake returned"
4869
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004870run_test "Authentication: client no cert, ssl3" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004871 "$P_SRV debug_level=3 auth_mode=optional force_version=ssl3" \
Manuel Pégourié-Gonnard448ea502015-01-12 11:40:14 +01004872 "$P_CLI debug_level=3 crt_file=none key_file=none min_version=ssl3" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004873 0 \
4874 -S "skip write certificate request" \
4875 -C "skip parse certificate request" \
4876 -c "got a certificate request" \
4877 -C "skip write certificate$" \
4878 -c "skip write certificate verify" \
4879 -c "got no certificate to send" \
4880 -s "SSLv3 client has no certificate" \
4881 -s "skip parse certificate verify" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01004882 -s "! Certificate was missing" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02004883 -S "! mbedtls_ssl_handshake returned" \
4884 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01004885 -S "X509 - Certificate verification failed"
4886
Yuto Takanoccdd25c2021-07-02 13:05:15 +01004887# This script assumes that MBEDTLS_X509_MAX_INTERMEDIATE_CA has its default
4888# value, defined here as MAX_IM_CA. Some test cases will be skipped if the
4889# library is configured with a different value.
Hanno Beckera6bca9f2017-07-26 13:35:11 +01004890
Simon Butcherbcfa6f42017-07-28 15:59:35 +01004891MAX_IM_CA='8'
Hanno Beckera6bca9f2017-07-26 13:35:11 +01004892
Yuto Takanoccdd25c2021-07-02 13:05:15 +01004893# The tests for the max_int tests can pass with any number higher than MAX_IM_CA
4894# because only a chain of MAX_IM_CA length is tested. Equally, the max_int+1
4895# tests can pass with any number less than MAX_IM_CA. However, stricter preconditions
4896# are in place so that the semantics are consistent with the test description.
Yuto Takano8a693ef2021-07-02 13:10:41 +01004897requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10004898requires_full_size_output_buffer
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004899run_test "Authentication: server max_int chain, client default" \
4900 "$P_SRV crt_file=data_files/dir-maxpath/c09.pem \
4901 key_file=data_files/dir-maxpath/09.key" \
4902 "$P_CLI server_name=CA09 ca_file=data_files/dir-maxpath/00.crt" \
4903 0 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01004904 -C "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004905
Yuto Takano8a693ef2021-07-02 13:10:41 +01004906requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10004907requires_full_size_output_buffer
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004908run_test "Authentication: server max_int+1 chain, client default" \
4909 "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \
4910 key_file=data_files/dir-maxpath/10.key" \
4911 "$P_CLI server_name=CA10 ca_file=data_files/dir-maxpath/00.crt" \
4912 1 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01004913 -c "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004914
Yuto Takano8a693ef2021-07-02 13:10:41 +01004915requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10004916requires_full_size_output_buffer
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004917run_test "Authentication: server max_int+1 chain, client optional" \
4918 "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \
4919 key_file=data_files/dir-maxpath/10.key" \
4920 "$P_CLI server_name=CA10 ca_file=data_files/dir-maxpath/00.crt \
4921 auth_mode=optional" \
4922 1 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01004923 -c "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004924
Yuto Takano8a693ef2021-07-02 13:10:41 +01004925requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10004926requires_full_size_output_buffer
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004927run_test "Authentication: server max_int+1 chain, client none" \
4928 "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \
4929 key_file=data_files/dir-maxpath/10.key" \
4930 "$P_CLI server_name=CA10 ca_file=data_files/dir-maxpath/00.crt \
4931 auth_mode=none" \
4932 0 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01004933 -C "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004934
Yuto Takano8a693ef2021-07-02 13:10:41 +01004935requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10004936requires_full_size_output_buffer
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004937run_test "Authentication: client max_int+1 chain, server default" \
4938 "$P_SRV ca_file=data_files/dir-maxpath/00.crt" \
4939 "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \
4940 key_file=data_files/dir-maxpath/10.key" \
4941 0 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01004942 -S "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004943
Yuto Takano8a693ef2021-07-02 13:10:41 +01004944requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10004945requires_full_size_output_buffer
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004946run_test "Authentication: client max_int+1 chain, server optional" \
4947 "$P_SRV ca_file=data_files/dir-maxpath/00.crt auth_mode=optional" \
4948 "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \
4949 key_file=data_files/dir-maxpath/10.key" \
4950 1 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01004951 -s "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004952
Yuto Takano8a693ef2021-07-02 13:10:41 +01004953requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10004954requires_full_size_output_buffer
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004955run_test "Authentication: client max_int+1 chain, server required" \
4956 "$P_SRV ca_file=data_files/dir-maxpath/00.crt auth_mode=required" \
4957 "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \
4958 key_file=data_files/dir-maxpath/10.key" \
4959 1 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01004960 -s "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004961
Yuto Takano8a693ef2021-07-02 13:10:41 +01004962requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10004963requires_full_size_output_buffer
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004964run_test "Authentication: client max_int chain, server required" \
4965 "$P_SRV ca_file=data_files/dir-maxpath/00.crt auth_mode=required" \
4966 "$P_CLI crt_file=data_files/dir-maxpath/c09.pem \
4967 key_file=data_files/dir-maxpath/09.key" \
4968 0 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01004969 -S "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02004970
Janos Follath89baba22017-04-10 14:34:35 +01004971# Tests for CA list in CertificateRequest messages
4972
4973run_test "Authentication: send CA list in CertificateRequest (default)" \
4974 "$P_SRV debug_level=3 auth_mode=required" \
4975 "$P_CLI crt_file=data_files/server6.crt \
4976 key_file=data_files/server6.key" \
4977 0 \
4978 -s "requested DN"
4979
4980run_test "Authentication: do not send CA list in CertificateRequest" \
4981 "$P_SRV debug_level=3 auth_mode=required cert_req_ca_list=0" \
4982 "$P_CLI crt_file=data_files/server6.crt \
4983 key_file=data_files/server6.key" \
4984 0 \
4985 -S "requested DN"
4986
4987run_test "Authentication: send CA list in CertificateRequest, client self signed" \
4988 "$P_SRV debug_level=3 auth_mode=required cert_req_ca_list=0" \
4989 "$P_CLI debug_level=3 crt_file=data_files/server5-selfsigned.crt \
4990 key_file=data_files/server5.key" \
4991 1 \
4992 -S "requested DN" \
4993 -s "x509_verify_cert() returned" \
4994 -s "! The certificate is not correctly signed by the trusted CA" \
4995 -s "! mbedtls_ssl_handshake returned" \
4996 -c "! mbedtls_ssl_handshake returned" \
4997 -s "X509 - Certificate verification failed"
4998
Jarno Lamsaf7a7f9e2019-04-01 15:11:54 +03004999# Tests for auth_mode, using CA callback, these are duplicated from the authentication tests
5000# When updating these tests, modify the matching authentication tests accordingly
Hanno Becker746aaf32019-03-28 15:25:23 +00005001
5002requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5003run_test "Authentication, CA callback: server badcert, client required" \
5004 "$P_SRV crt_file=data_files/server5-badsign.crt \
5005 key_file=data_files/server5.key" \
5006 "$P_CLI ca_callback=1 debug_level=3 auth_mode=required" \
5007 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01005008 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00005009 -c "x509_verify_cert() returned" \
5010 -c "! The certificate is not correctly signed by the trusted CA" \
5011 -c "! mbedtls_ssl_handshake returned" \
5012 -c "X509 - Certificate verification failed"
5013
5014requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5015run_test "Authentication, CA callback: server badcert, client optional" \
5016 "$P_SRV crt_file=data_files/server5-badsign.crt \
5017 key_file=data_files/server5.key" \
5018 "$P_CLI ca_callback=1 debug_level=3 auth_mode=optional" \
5019 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01005020 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00005021 -c "x509_verify_cert() returned" \
5022 -c "! The certificate is not correctly signed by the trusted CA" \
5023 -C "! mbedtls_ssl_handshake returned" \
5024 -C "X509 - Certificate verification failed"
5025
5026# The purpose of the next two tests is to test the client's behaviour when receiving a server
5027# certificate with an unsupported elliptic curve. This should usually not happen because
5028# the client informs the server about the supported curves - it does, though, in the
5029# corner case of a static ECDH suite, because the server doesn't check the curve on that
5030# occasion (to be fixed). If that bug's fixed, the test needs to be altered to use a
5031# different means to have the server ignoring the client's supported curve list.
5032
5033requires_config_enabled MBEDTLS_ECP_C
5034requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5035run_test "Authentication, CA callback: server ECDH p256v1, client required, p256v1 unsupported" \
5036 "$P_SRV debug_level=1 key_file=data_files/server5.key \
5037 crt_file=data_files/server5.ku-ka.crt" \
5038 "$P_CLI ca_callback=1 debug_level=3 auth_mode=required curves=secp521r1" \
5039 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01005040 -c "use CA callback for X.509 CRT verification" \
5041 -c "bad certificate (EC key curve)" \
5042 -c "! Certificate verification flags" \
Hanno Becker746aaf32019-03-28 15:25:23 +00005043 -C "bad server certificate (ECDH curve)" # Expect failure at earlier verification stage
5044
5045requires_config_enabled MBEDTLS_ECP_C
5046requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5047run_test "Authentication, CA callback: server ECDH p256v1, client optional, p256v1 unsupported" \
5048 "$P_SRV debug_level=1 key_file=data_files/server5.key \
5049 crt_file=data_files/server5.ku-ka.crt" \
5050 "$P_CLI ca_callback=1 debug_level=3 auth_mode=optional curves=secp521r1" \
5051 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01005052 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00005053 -c "bad certificate (EC key curve)"\
5054 -c "! Certificate verification flags"\
5055 -c "bad server certificate (ECDH curve)" # Expect failure only at ECDH params check
5056
5057requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5058run_test "Authentication, CA callback: client SHA256, server required" \
5059 "$P_SRV ca_callback=1 debug_level=3 auth_mode=required" \
5060 "$P_CLI debug_level=3 crt_file=data_files/server6.crt \
5061 key_file=data_files/server6.key \
5062 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384" \
5063 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01005064 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00005065 -c "Supported Signature Algorithm found: 4," \
5066 -c "Supported Signature Algorithm found: 5,"
5067
5068requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5069run_test "Authentication, CA callback: client SHA384, server required" \
5070 "$P_SRV ca_callback=1 debug_level=3 auth_mode=required" \
5071 "$P_CLI debug_level=3 crt_file=data_files/server6.crt \
5072 key_file=data_files/server6.key \
5073 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256" \
5074 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01005075 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00005076 -c "Supported Signature Algorithm found: 4," \
5077 -c "Supported Signature Algorithm found: 5,"
5078
5079requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5080run_test "Authentication, CA callback: client badcert, server required" \
5081 "$P_SRV ca_callback=1 debug_level=3 auth_mode=required" \
5082 "$P_CLI debug_level=3 crt_file=data_files/server5-badsign.crt \
5083 key_file=data_files/server5.key" \
5084 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01005085 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00005086 -S "skip write certificate request" \
5087 -C "skip parse certificate request" \
5088 -c "got a certificate request" \
5089 -C "skip write certificate" \
5090 -C "skip write certificate verify" \
5091 -S "skip parse certificate verify" \
5092 -s "x509_verify_cert() returned" \
5093 -s "! The certificate is not correctly signed by the trusted CA" \
5094 -s "! mbedtls_ssl_handshake returned" \
5095 -s "send alert level=2 message=48" \
5096 -c "! mbedtls_ssl_handshake returned" \
5097 -s "X509 - Certificate verification failed"
5098# We don't check that the client receives the alert because it might
5099# detect that its write end of the connection is closed and abort
5100# before reading the alert message.
5101
5102requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5103run_test "Authentication, CA callback: client cert not trusted, server required" \
5104 "$P_SRV ca_callback=1 debug_level=3 auth_mode=required" \
5105 "$P_CLI debug_level=3 crt_file=data_files/server5-selfsigned.crt \
5106 key_file=data_files/server5.key" \
5107 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01005108 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00005109 -S "skip write certificate request" \
5110 -C "skip parse certificate request" \
5111 -c "got a certificate request" \
5112 -C "skip write certificate" \
5113 -C "skip write certificate verify" \
5114 -S "skip parse certificate verify" \
5115 -s "x509_verify_cert() returned" \
5116 -s "! The certificate is not correctly signed by the trusted CA" \
5117 -s "! mbedtls_ssl_handshake returned" \
5118 -c "! mbedtls_ssl_handshake returned" \
5119 -s "X509 - Certificate verification failed"
5120
5121requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5122run_test "Authentication, CA callback: client badcert, server optional" \
5123 "$P_SRV ca_callback=1 debug_level=3 auth_mode=optional" \
5124 "$P_CLI debug_level=3 crt_file=data_files/server5-badsign.crt \
5125 key_file=data_files/server5.key" \
5126 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01005127 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00005128 -S "skip write certificate request" \
5129 -C "skip parse certificate request" \
5130 -c "got a certificate request" \
5131 -C "skip write certificate" \
5132 -C "skip write certificate verify" \
5133 -S "skip parse certificate verify" \
5134 -s "x509_verify_cert() returned" \
5135 -s "! The certificate is not correctly signed by the trusted CA" \
5136 -S "! mbedtls_ssl_handshake returned" \
5137 -C "! mbedtls_ssl_handshake returned" \
5138 -S "X509 - Certificate verification failed"
5139
Yuto Takano8a693ef2021-07-02 13:10:41 +01005140requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Hanno Becker746aaf32019-03-28 15:25:23 +00005141requires_full_size_output_buffer
5142requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5143run_test "Authentication, CA callback: server max_int chain, client default" \
5144 "$P_SRV crt_file=data_files/dir-maxpath/c09.pem \
5145 key_file=data_files/dir-maxpath/09.key" \
5146 "$P_CLI ca_callback=1 debug_level=3 server_name=CA09 ca_file=data_files/dir-maxpath/00.crt" \
5147 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01005148 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00005149 -C "X509 - A fatal error occurred"
5150
Yuto Takano8a693ef2021-07-02 13:10:41 +01005151requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Hanno Becker746aaf32019-03-28 15:25:23 +00005152requires_full_size_output_buffer
5153requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5154run_test "Authentication, CA callback: server max_int+1 chain, client default" \
5155 "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \
5156 key_file=data_files/dir-maxpath/10.key" \
5157 "$P_CLI debug_level=3 ca_callback=1 server_name=CA10 ca_file=data_files/dir-maxpath/00.crt" \
5158 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01005159 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00005160 -c "X509 - A fatal error occurred"
5161
Yuto Takano8a693ef2021-07-02 13:10:41 +01005162requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Hanno Becker746aaf32019-03-28 15:25:23 +00005163requires_full_size_output_buffer
5164requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5165run_test "Authentication, CA callback: server max_int+1 chain, client optional" \
5166 "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \
5167 key_file=data_files/dir-maxpath/10.key" \
5168 "$P_CLI ca_callback=1 server_name=CA10 ca_file=data_files/dir-maxpath/00.crt \
5169 debug_level=3 auth_mode=optional" \
5170 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01005171 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00005172 -c "X509 - A fatal error occurred"
5173
Yuto Takano8a693ef2021-07-02 13:10:41 +01005174requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Hanno Becker746aaf32019-03-28 15:25:23 +00005175requires_full_size_output_buffer
5176requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5177run_test "Authentication, CA callback: client max_int+1 chain, server optional" \
5178 "$P_SRV ca_callback=1 debug_level=3 ca_file=data_files/dir-maxpath/00.crt auth_mode=optional" \
5179 "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \
5180 key_file=data_files/dir-maxpath/10.key" \
5181 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01005182 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00005183 -s "X509 - A fatal error occurred"
5184
Yuto Takano8a693ef2021-07-02 13:10:41 +01005185requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Hanno Becker746aaf32019-03-28 15:25:23 +00005186requires_full_size_output_buffer
5187requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5188run_test "Authentication, CA callback: client max_int+1 chain, server required" \
5189 "$P_SRV ca_callback=1 debug_level=3 ca_file=data_files/dir-maxpath/00.crt auth_mode=required" \
5190 "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \
5191 key_file=data_files/dir-maxpath/10.key" \
5192 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01005193 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00005194 -s "X509 - A fatal error occurred"
5195
Yuto Takano8a693ef2021-07-02 13:10:41 +01005196requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Hanno Becker746aaf32019-03-28 15:25:23 +00005197requires_full_size_output_buffer
5198requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5199run_test "Authentication, CA callback: client max_int chain, server required" \
5200 "$P_SRV ca_callback=1 debug_level=3 ca_file=data_files/dir-maxpath/00.crt auth_mode=required" \
5201 "$P_CLI crt_file=data_files/dir-maxpath/c09.pem \
5202 key_file=data_files/dir-maxpath/09.key" \
5203 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01005204 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00005205 -S "X509 - A fatal error occurred"
5206
Shaun Case0e7791f2021-12-20 21:14:10 -08005207# Tests for certificate selection based on SHA version
Manuel Pégourié-Gonnarddf331a52015-01-08 16:43:07 +01005208
5209run_test "Certificate hash: client TLS 1.2 -> SHA-2" \
5210 "$P_SRV crt_file=data_files/server5.crt \
5211 key_file=data_files/server5.key \
5212 crt_file2=data_files/server5-sha1.crt \
5213 key_file2=data_files/server5.key" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00005214 "$P_CLI force_version=tls12" \
Manuel Pégourié-Gonnarddf331a52015-01-08 16:43:07 +01005215 0 \
5216 -c "signed using.*ECDSA with SHA256" \
5217 -C "signed using.*ECDSA with SHA1"
5218
5219run_test "Certificate hash: client TLS 1.1 -> SHA-1" \
5220 "$P_SRV crt_file=data_files/server5.crt \
5221 key_file=data_files/server5.key \
5222 crt_file2=data_files/server5-sha1.crt \
5223 key_file2=data_files/server5.key" \
5224 "$P_CLI force_version=tls1_1" \
5225 0 \
5226 -C "signed using.*ECDSA with SHA256" \
5227 -c "signed using.*ECDSA with SHA1"
5228
5229run_test "Certificate hash: client TLS 1.0 -> SHA-1" \
5230 "$P_SRV crt_file=data_files/server5.crt \
5231 key_file=data_files/server5.key \
5232 crt_file2=data_files/server5-sha1.crt \
5233 key_file2=data_files/server5.key" \
5234 "$P_CLI force_version=tls1" \
5235 0 \
5236 -C "signed using.*ECDSA with SHA256" \
5237 -c "signed using.*ECDSA with SHA1"
5238
5239run_test "Certificate hash: client TLS 1.1, no SHA-1 -> SHA-2 (order 1)" \
5240 "$P_SRV crt_file=data_files/server5.crt \
5241 key_file=data_files/server5.key \
5242 crt_file2=data_files/server6.crt \
5243 key_file2=data_files/server6.key" \
5244 "$P_CLI force_version=tls1_1" \
5245 0 \
5246 -c "serial number.*09" \
5247 -c "signed using.*ECDSA with SHA256" \
5248 -C "signed using.*ECDSA with SHA1"
5249
5250run_test "Certificate hash: client TLS 1.1, no SHA-1 -> SHA-2 (order 2)" \
5251 "$P_SRV crt_file=data_files/server6.crt \
5252 key_file=data_files/server6.key \
5253 crt_file2=data_files/server5.crt \
5254 key_file2=data_files/server5.key" \
5255 "$P_CLI force_version=tls1_1" \
5256 0 \
5257 -c "serial number.*0A" \
5258 -c "signed using.*ECDSA with SHA256" \
5259 -C "signed using.*ECDSA with SHA1"
5260
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005261# tests for SNI
5262
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005263run_test "SNI: no SNI callback" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02005264 "$P_SRV debug_level=3 \
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005265 crt_file=data_files/server5.crt key_file=data_files/server5.key" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02005266 "$P_CLI server_name=localhost" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005267 0 \
5268 -S "parse ServerName extension" \
5269 -c "issuer name *: C=NL, O=PolarSSL, CN=Polarssl Test EC CA" \
5270 -c "subject name *: C=NL, O=PolarSSL, CN=localhost"
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005271
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005272run_test "SNI: matching cert 1" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02005273 "$P_SRV debug_level=3 \
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005274 crt_file=data_files/server5.crt key_file=data_files/server5.key \
Manuel Pégourié-Gonnard4d6f1782015-06-19 14:40:39 +02005275 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 +02005276 "$P_CLI server_name=localhost" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005277 0 \
5278 -s "parse ServerName extension" \
5279 -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
5280 -c "subject name *: C=NL, O=PolarSSL, CN=localhost"
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005281
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005282run_test "SNI: matching cert 2" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02005283 "$P_SRV debug_level=3 \
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005284 crt_file=data_files/server5.crt key_file=data_files/server5.key \
Manuel Pégourié-Gonnard4d6f1782015-06-19 14:40:39 +02005285 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 +02005286 "$P_CLI server_name=polarssl.example" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005287 0 \
5288 -s "parse ServerName extension" \
5289 -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
5290 -c "subject name *: C=NL, O=PolarSSL, CN=polarssl.example"
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005291
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005292run_test "SNI: no matching cert" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02005293 "$P_SRV debug_level=3 \
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005294 crt_file=data_files/server5.crt key_file=data_files/server5.key \
Manuel Pégourié-Gonnard4d6f1782015-06-19 14:40:39 +02005295 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 +02005296 "$P_CLI server_name=nonesuch.example" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005297 1 \
5298 -s "parse ServerName extension" \
5299 -s "ssl_sni_wrapper() returned" \
5300 -s "mbedtls_ssl_handshake returned" \
5301 -c "mbedtls_ssl_handshake returned" \
5302 -c "SSL - A fatal alert message was received from our peer"
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01005303
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02005304run_test "SNI: client auth no override: optional" \
5305 "$P_SRV debug_level=3 auth_mode=optional \
5306 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5307 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-" \
5308 "$P_CLI debug_level=3 server_name=localhost" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005309 0 \
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02005310 -S "skip write certificate request" \
5311 -C "skip parse certificate request" \
5312 -c "got a certificate request" \
5313 -C "skip write certificate" \
5314 -C "skip write certificate verify" \
5315 -S "skip parse certificate verify"
5316
5317run_test "SNI: client auth override: none -> optional" \
5318 "$P_SRV debug_level=3 auth_mode=none \
5319 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5320 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,optional" \
5321 "$P_CLI debug_level=3 server_name=localhost" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005322 0 \
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02005323 -S "skip write certificate request" \
5324 -C "skip parse certificate request" \
5325 -c "got a certificate request" \
5326 -C "skip write certificate" \
5327 -C "skip write certificate verify" \
5328 -S "skip parse certificate verify"
5329
5330run_test "SNI: client auth override: optional -> none" \
5331 "$P_SRV debug_level=3 auth_mode=optional \
5332 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5333 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,none" \
5334 "$P_CLI debug_level=3 server_name=localhost" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005335 0 \
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02005336 -s "skip write certificate request" \
5337 -C "skip parse certificate request" \
5338 -c "got no certificate request" \
5339 -c "skip write certificate" \
5340 -c "skip write certificate verify" \
5341 -s "skip parse certificate verify"
5342
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02005343run_test "SNI: CA no override" \
5344 "$P_SRV debug_level=3 auth_mode=optional \
5345 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5346 ca_file=data_files/test-ca.crt \
5347 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,required" \
5348 "$P_CLI debug_level=3 server_name=localhost \
5349 crt_file=data_files/server6.crt key_file=data_files/server6.key" \
5350 1 \
5351 -S "skip write certificate request" \
5352 -C "skip parse certificate request" \
5353 -c "got a certificate request" \
5354 -C "skip write certificate" \
5355 -C "skip write certificate verify" \
5356 -S "skip parse certificate verify" \
5357 -s "x509_verify_cert() returned" \
5358 -s "! The certificate is not correctly signed by the trusted CA" \
5359 -S "The certificate has been revoked (is on a CRL)"
5360
5361run_test "SNI: CA override" \
5362 "$P_SRV debug_level=3 auth_mode=optional \
5363 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5364 ca_file=data_files/test-ca.crt \
5365 sni=localhost,data_files/server2.crt,data_files/server2.key,data_files/test-ca2.crt,-,required" \
5366 "$P_CLI debug_level=3 server_name=localhost \
5367 crt_file=data_files/server6.crt key_file=data_files/server6.key" \
5368 0 \
5369 -S "skip write certificate request" \
5370 -C "skip parse certificate request" \
5371 -c "got a certificate request" \
5372 -C "skip write certificate" \
5373 -C "skip write certificate verify" \
5374 -S "skip parse certificate verify" \
5375 -S "x509_verify_cert() returned" \
5376 -S "! The certificate is not correctly signed by the trusted CA" \
5377 -S "The certificate has been revoked (is on a CRL)"
5378
5379run_test "SNI: CA override with CRL" \
5380 "$P_SRV debug_level=3 auth_mode=optional \
5381 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5382 ca_file=data_files/test-ca.crt \
5383 sni=localhost,data_files/server2.crt,data_files/server2.key,data_files/test-ca2.crt,data_files/crl-ec-sha256.pem,required" \
5384 "$P_CLI debug_level=3 server_name=localhost \
5385 crt_file=data_files/server6.crt key_file=data_files/server6.key" \
5386 1 \
5387 -S "skip write certificate request" \
5388 -C "skip parse certificate request" \
5389 -c "got a certificate request" \
5390 -C "skip write certificate" \
5391 -C "skip write certificate verify" \
5392 -S "skip parse certificate verify" \
5393 -s "x509_verify_cert() returned" \
5394 -S "! The certificate is not correctly signed by the trusted CA" \
5395 -s "The certificate has been revoked (is on a CRL)"
5396
Andres AG1a834452016-12-07 10:01:30 +00005397# Tests for SNI and DTLS
5398
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01005399run_test "SNI: DTLS, no SNI callback" \
5400 "$P_SRV debug_level=3 dtls=1 \
5401 crt_file=data_files/server5.crt key_file=data_files/server5.key" \
5402 "$P_CLI server_name=localhost dtls=1" \
5403 0 \
5404 -S "parse ServerName extension" \
5405 -c "issuer name *: C=NL, O=PolarSSL, CN=Polarssl Test EC CA" \
5406 -c "subject name *: C=NL, O=PolarSSL, CN=localhost"
5407
Andres Amaya Garciaf77d3d32018-05-01 20:26:47 +01005408run_test "SNI: DTLS, matching cert 1" \
Andres AG1a834452016-12-07 10:01:30 +00005409 "$P_SRV debug_level=3 dtls=1 \
5410 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5411 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
5412 "$P_CLI server_name=localhost dtls=1" \
5413 0 \
5414 -s "parse ServerName extension" \
5415 -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
5416 -c "subject name *: C=NL, O=PolarSSL, CN=localhost"
5417
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01005418run_test "SNI: DTLS, matching cert 2" \
5419 "$P_SRV debug_level=3 dtls=1 \
5420 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5421 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
5422 "$P_CLI server_name=polarssl.example dtls=1" \
5423 0 \
5424 -s "parse ServerName extension" \
5425 -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
5426 -c "subject name *: C=NL, O=PolarSSL, CN=polarssl.example"
5427
5428run_test "SNI: DTLS, no matching cert" \
5429 "$P_SRV debug_level=3 dtls=1 \
5430 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5431 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
5432 "$P_CLI server_name=nonesuch.example dtls=1" \
5433 1 \
5434 -s "parse ServerName extension" \
5435 -s "ssl_sni_wrapper() returned" \
5436 -s "mbedtls_ssl_handshake returned" \
5437 -c "mbedtls_ssl_handshake returned" \
5438 -c "SSL - A fatal alert message was received from our peer"
5439
5440run_test "SNI: DTLS, client auth no override: optional" \
5441 "$P_SRV debug_level=3 auth_mode=optional dtls=1 \
5442 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5443 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-" \
5444 "$P_CLI debug_level=3 server_name=localhost dtls=1" \
5445 0 \
5446 -S "skip write certificate request" \
5447 -C "skip parse certificate request" \
5448 -c "got a certificate request" \
5449 -C "skip write certificate" \
5450 -C "skip write certificate verify" \
5451 -S "skip parse certificate verify"
5452
5453run_test "SNI: DTLS, client auth override: none -> optional" \
5454 "$P_SRV debug_level=3 auth_mode=none dtls=1 \
5455 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5456 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,optional" \
5457 "$P_CLI debug_level=3 server_name=localhost dtls=1" \
5458 0 \
5459 -S "skip write certificate request" \
5460 -C "skip parse certificate request" \
5461 -c "got a certificate request" \
5462 -C "skip write certificate" \
5463 -C "skip write certificate verify" \
5464 -S "skip parse certificate verify"
5465
5466run_test "SNI: DTLS, client auth override: optional -> none" \
5467 "$P_SRV debug_level=3 auth_mode=optional dtls=1 \
5468 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5469 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,none" \
5470 "$P_CLI debug_level=3 server_name=localhost dtls=1" \
5471 0 \
5472 -s "skip write certificate request" \
5473 -C "skip parse certificate request" \
5474 -c "got no certificate request" \
5475 -c "skip write certificate" \
5476 -c "skip write certificate verify" \
5477 -s "skip parse certificate verify"
5478
5479run_test "SNI: DTLS, CA no override" \
5480 "$P_SRV debug_level=3 auth_mode=optional dtls=1 \
5481 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5482 ca_file=data_files/test-ca.crt \
5483 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,required" \
5484 "$P_CLI debug_level=3 server_name=localhost dtls=1 \
5485 crt_file=data_files/server6.crt key_file=data_files/server6.key" \
5486 1 \
5487 -S "skip write certificate request" \
5488 -C "skip parse certificate request" \
5489 -c "got a certificate request" \
5490 -C "skip write certificate" \
5491 -C "skip write certificate verify" \
5492 -S "skip parse certificate verify" \
5493 -s "x509_verify_cert() returned" \
5494 -s "! The certificate is not correctly signed by the trusted CA" \
5495 -S "The certificate has been revoked (is on a CRL)"
5496
Andres Amaya Garciaf77d3d32018-05-01 20:26:47 +01005497run_test "SNI: DTLS, CA override" \
Andres AG1a834452016-12-07 10:01:30 +00005498 "$P_SRV debug_level=3 auth_mode=optional dtls=1 \
5499 crt_file=data_files/server5.crt key_file=data_files/server5.key \
5500 ca_file=data_files/test-ca.crt \
5501 sni=localhost,data_files/server2.crt,data_files/server2.key,data_files/test-ca2.crt,-,required" \
5502 "$P_CLI debug_level=3 server_name=localhost dtls=1 \
5503 crt_file=data_files/server6.crt key_file=data_files/server6.key" \
5504 0 \
5505 -S "skip write certificate request" \
5506 -C "skip parse certificate request" \
5507 -c "got a certificate request" \
5508 -C "skip write certificate" \
5509 -C "skip write certificate verify" \
5510 -S "skip parse certificate verify" \
5511 -S "x509_verify_cert() returned" \
5512 -S "! The certificate is not correctly signed by the trusted CA" \
5513 -S "The certificate has been revoked (is on a CRL)"
5514
Andres Amaya Garciaf77d3d32018-05-01 20:26:47 +01005515run_test "SNI: DTLS, CA override with CRL" \
Andres AG1a834452016-12-07 10:01:30 +00005516 "$P_SRV debug_level=3 auth_mode=optional \
5517 crt_file=data_files/server5.crt key_file=data_files/server5.key dtls=1 \
5518 ca_file=data_files/test-ca.crt \
5519 sni=localhost,data_files/server2.crt,data_files/server2.key,data_files/test-ca2.crt,data_files/crl-ec-sha256.pem,required" \
5520 "$P_CLI debug_level=3 server_name=localhost dtls=1 \
5521 crt_file=data_files/server6.crt key_file=data_files/server6.key" \
5522 1 \
5523 -S "skip write certificate request" \
5524 -C "skip parse certificate request" \
5525 -c "got a certificate request" \
5526 -C "skip write certificate" \
5527 -C "skip write certificate verify" \
5528 -S "skip parse certificate verify" \
5529 -s "x509_verify_cert() returned" \
5530 -S "! The certificate is not correctly signed by the trusted CA" \
5531 -s "The certificate has been revoked (is on a CRL)"
5532
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005533# Tests for non-blocking I/O: exercise a variety of handshake flows
5534
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005535run_test "Non-blocking I/O: basic handshake" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005536 "$P_SRV nbio=2 tickets=0 auth_mode=none" \
5537 "$P_CLI nbio=2 tickets=0" \
5538 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005539 -S "mbedtls_ssl_handshake returned" \
5540 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005541 -c "Read from server: .* bytes read"
5542
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005543run_test "Non-blocking I/O: client auth" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005544 "$P_SRV nbio=2 tickets=0 auth_mode=required" \
5545 "$P_CLI nbio=2 tickets=0" \
5546 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005547 -S "mbedtls_ssl_handshake returned" \
5548 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005549 -c "Read from server: .* bytes read"
5550
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005551run_test "Non-blocking I/O: ticket" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005552 "$P_SRV nbio=2 tickets=1 auth_mode=none" \
5553 "$P_CLI nbio=2 tickets=1" \
5554 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005555 -S "mbedtls_ssl_handshake returned" \
5556 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005557 -c "Read from server: .* bytes read"
5558
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005559run_test "Non-blocking I/O: ticket + client auth" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005560 "$P_SRV nbio=2 tickets=1 auth_mode=required" \
5561 "$P_CLI nbio=2 tickets=1" \
5562 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005563 -S "mbedtls_ssl_handshake returned" \
5564 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005565 -c "Read from server: .* bytes read"
5566
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005567run_test "Non-blocking I/O: ticket + client auth + resume" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005568 "$P_SRV nbio=2 tickets=1 auth_mode=required" \
5569 "$P_CLI nbio=2 tickets=1 reconnect=1" \
5570 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005571 -S "mbedtls_ssl_handshake returned" \
5572 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005573 -c "Read from server: .* bytes read"
5574
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005575run_test "Non-blocking I/O: ticket + resume" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005576 "$P_SRV nbio=2 tickets=1 auth_mode=none" \
5577 "$P_CLI nbio=2 tickets=1 reconnect=1" \
5578 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005579 -S "mbedtls_ssl_handshake returned" \
5580 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005581 -c "Read from server: .* bytes read"
5582
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005583run_test "Non-blocking I/O: session-id resume" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005584 "$P_SRV nbio=2 tickets=0 auth_mode=none" \
5585 "$P_CLI nbio=2 tickets=0 reconnect=1" \
5586 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005587 -S "mbedtls_ssl_handshake returned" \
5588 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01005589 -c "Read from server: .* bytes read"
5590
Hanno Becker00076712017-11-15 16:39:08 +00005591# Tests for event-driven I/O: exercise a variety of handshake flows
5592
5593run_test "Event-driven I/O: basic handshake" \
5594 "$P_SRV event=1 tickets=0 auth_mode=none" \
5595 "$P_CLI event=1 tickets=0" \
5596 0 \
5597 -S "mbedtls_ssl_handshake returned" \
5598 -C "mbedtls_ssl_handshake returned" \
5599 -c "Read from server: .* bytes read"
5600
5601run_test "Event-driven I/O: client auth" \
5602 "$P_SRV event=1 tickets=0 auth_mode=required" \
5603 "$P_CLI event=1 tickets=0" \
5604 0 \
5605 -S "mbedtls_ssl_handshake returned" \
5606 -C "mbedtls_ssl_handshake returned" \
5607 -c "Read from server: .* bytes read"
5608
5609run_test "Event-driven I/O: ticket" \
5610 "$P_SRV event=1 tickets=1 auth_mode=none" \
5611 "$P_CLI event=1 tickets=1" \
5612 0 \
5613 -S "mbedtls_ssl_handshake returned" \
5614 -C "mbedtls_ssl_handshake returned" \
5615 -c "Read from server: .* bytes read"
5616
5617run_test "Event-driven I/O: ticket + client auth" \
5618 "$P_SRV event=1 tickets=1 auth_mode=required" \
5619 "$P_CLI event=1 tickets=1" \
5620 0 \
5621 -S "mbedtls_ssl_handshake returned" \
5622 -C "mbedtls_ssl_handshake returned" \
5623 -c "Read from server: .* bytes read"
5624
5625run_test "Event-driven I/O: ticket + client auth + resume" \
5626 "$P_SRV event=1 tickets=1 auth_mode=required" \
5627 "$P_CLI event=1 tickets=1 reconnect=1" \
5628 0 \
5629 -S "mbedtls_ssl_handshake returned" \
5630 -C "mbedtls_ssl_handshake returned" \
5631 -c "Read from server: .* bytes read"
5632
5633run_test "Event-driven I/O: ticket + resume" \
5634 "$P_SRV event=1 tickets=1 auth_mode=none" \
5635 "$P_CLI event=1 tickets=1 reconnect=1" \
5636 0 \
5637 -S "mbedtls_ssl_handshake returned" \
5638 -C "mbedtls_ssl_handshake returned" \
5639 -c "Read from server: .* bytes read"
5640
5641run_test "Event-driven I/O: session-id resume" \
5642 "$P_SRV event=1 tickets=0 auth_mode=none" \
5643 "$P_CLI event=1 tickets=0 reconnect=1" \
5644 0 \
5645 -S "mbedtls_ssl_handshake returned" \
5646 -C "mbedtls_ssl_handshake returned" \
5647 -c "Read from server: .* bytes read"
5648
Hanno Becker6a33f592018-03-13 11:38:46 +00005649run_test "Event-driven I/O, DTLS: basic handshake" \
5650 "$P_SRV dtls=1 event=1 tickets=0 auth_mode=none" \
5651 "$P_CLI dtls=1 event=1 tickets=0" \
5652 0 \
5653 -c "Read from server: .* bytes read"
5654
5655run_test "Event-driven I/O, DTLS: client auth" \
5656 "$P_SRV dtls=1 event=1 tickets=0 auth_mode=required" \
5657 "$P_CLI dtls=1 event=1 tickets=0" \
5658 0 \
5659 -c "Read from server: .* bytes read"
5660
5661run_test "Event-driven I/O, DTLS: ticket" \
5662 "$P_SRV dtls=1 event=1 tickets=1 auth_mode=none" \
5663 "$P_CLI dtls=1 event=1 tickets=1" \
5664 0 \
5665 -c "Read from server: .* bytes read"
5666
5667run_test "Event-driven I/O, DTLS: ticket + client auth" \
5668 "$P_SRV dtls=1 event=1 tickets=1 auth_mode=required" \
5669 "$P_CLI dtls=1 event=1 tickets=1" \
5670 0 \
5671 -c "Read from server: .* bytes read"
5672
5673run_test "Event-driven I/O, DTLS: ticket + client auth + resume" \
5674 "$P_SRV dtls=1 event=1 tickets=1 auth_mode=required" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01005675 "$P_CLI dtls=1 event=1 tickets=1 reconnect=1 skip_close_notify=1" \
Hanno Becker6a33f592018-03-13 11:38:46 +00005676 0 \
5677 -c "Read from server: .* bytes read"
5678
5679run_test "Event-driven I/O, DTLS: ticket + resume" \
5680 "$P_SRV dtls=1 event=1 tickets=1 auth_mode=none" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01005681 "$P_CLI dtls=1 event=1 tickets=1 reconnect=1 skip_close_notify=1" \
Hanno Becker6a33f592018-03-13 11:38:46 +00005682 0 \
5683 -c "Read from server: .* bytes read"
5684
5685run_test "Event-driven I/O, DTLS: session-id resume" \
5686 "$P_SRV dtls=1 event=1 tickets=0 auth_mode=none" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01005687 "$P_CLI dtls=1 event=1 tickets=0 reconnect=1 skip_close_notify=1" \
Hanno Becker6a33f592018-03-13 11:38:46 +00005688 0 \
5689 -c "Read from server: .* bytes read"
Hanno Beckerbc6c1102018-03-13 11:39:40 +00005690
5691# This test demonstrates the need for the mbedtls_ssl_check_pending function.
5692# During session resumption, the client will send its ApplicationData record
5693# within the same datagram as the Finished messages. In this situation, the
5694# server MUST NOT idle on the underlying transport after handshake completion,
5695# because the ApplicationData request has already been queued internally.
5696run_test "Event-driven I/O, DTLS: session-id resume, UDP packing" \
Hanno Becker8d832182018-03-15 10:14:19 +00005697 -p "$P_PXY pack=50" \
Hanno Beckerbc6c1102018-03-13 11:39:40 +00005698 "$P_SRV dtls=1 event=1 tickets=0 auth_mode=required" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01005699 "$P_CLI dtls=1 event=1 tickets=0 reconnect=1 skip_close_notify=1" \
Hanno Beckerbc6c1102018-03-13 11:39:40 +00005700 0 \
5701 -c "Read from server: .* bytes read"
5702
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005703# Tests for version negotiation
5704
Gilles Peskinedf4ad902022-04-08 15:14:38 +02005705requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005706run_test "Version check: all -> 1.2" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005707 "$P_SRV" \
5708 "$P_CLI" \
5709 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005710 -S "mbedtls_ssl_handshake returned" \
5711 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005712 -s "Protocol is TLSv1.2" \
5713 -c "Protocol is TLSv1.2"
5714
Gilles Peskinedf4ad902022-04-08 15:14:38 +02005715requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005716run_test "Version check: cli max 1.1 -> 1.1" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005717 "$P_SRV" \
5718 "$P_CLI max_version=tls1_1" \
5719 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005720 -S "mbedtls_ssl_handshake returned" \
5721 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005722 -s "Protocol is TLSv1.1" \
5723 -c "Protocol is TLSv1.1"
5724
Gilles Peskinedf4ad902022-04-08 15:14:38 +02005725requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005726run_test "Version check: srv max 1.1 -> 1.1" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005727 "$P_SRV max_version=tls1_1" \
5728 "$P_CLI" \
5729 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005730 -S "mbedtls_ssl_handshake returned" \
5731 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005732 -s "Protocol is TLSv1.1" \
5733 -c "Protocol is TLSv1.1"
5734
Gilles Peskinedf4ad902022-04-08 15:14:38 +02005735requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005736run_test "Version check: cli+srv max 1.1 -> 1.1" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005737 "$P_SRV max_version=tls1_1" \
5738 "$P_CLI max_version=tls1_1" \
5739 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005740 -S "mbedtls_ssl_handshake returned" \
5741 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005742 -s "Protocol is TLSv1.1" \
5743 -c "Protocol is TLSv1.1"
5744
Gilles Peskinedf4ad902022-04-08 15:14:38 +02005745requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005746run_test "Version check: cli max 1.1, srv min 1.1 -> 1.1" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005747 "$P_SRV min_version=tls1_1" \
5748 "$P_CLI max_version=tls1_1" \
5749 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005750 -S "mbedtls_ssl_handshake returned" \
5751 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005752 -s "Protocol is TLSv1.1" \
5753 -c "Protocol is TLSv1.1"
5754
Gilles Peskinedf4ad902022-04-08 15:14:38 +02005755requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005756run_test "Version check: cli min 1.1, srv max 1.1 -> 1.1" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005757 "$P_SRV max_version=tls1_1" \
5758 "$P_CLI min_version=tls1_1" \
5759 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005760 -S "mbedtls_ssl_handshake returned" \
5761 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005762 -s "Protocol is TLSv1.1" \
5763 -c "Protocol is TLSv1.1"
5764
Gilles Peskinebcb2ab02022-04-09 00:11:16 +02005765requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1
5766requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005767run_test "Version check: cli min 1.2, srv max 1.1 -> fail" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005768 "$P_SRV max_version=tls1_1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00005769 "$P_CLI min_version=tls12" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005770 1 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005771 -s "mbedtls_ssl_handshake returned" \
5772 -c "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005773 -c "SSL - Handshake protocol not within min/max boundaries"
5774
Gilles Peskinebcb2ab02022-04-09 00:11:16 +02005775requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1
5776requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005777run_test "Version check: srv min 1.2, cli max 1.1 -> fail" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00005778 "$P_SRV min_version=tls12" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005779 "$P_CLI max_version=tls1_1" \
5780 1 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005781 -s "mbedtls_ssl_handshake returned" \
5782 -c "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01005783 -s "SSL - Handshake protocol not within min/max boundaries"
5784
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005785# Tests for ALPN extension
5786
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005787run_test "ALPN: none" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005788 "$P_SRV debug_level=3" \
5789 "$P_CLI debug_level=3" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005790 0 \
5791 -C "client hello, adding alpn extension" \
5792 -S "found alpn extension" \
5793 -C "got an alert message, type: \\[2:120]" \
5794 -S "server hello, adding alpn extension" \
5795 -C "found alpn extension " \
5796 -C "Application Layer Protocol is" \
5797 -S "Application Layer Protocol is"
5798
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005799run_test "ALPN: client only" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005800 "$P_SRV debug_level=3" \
5801 "$P_CLI debug_level=3 alpn=abc,1234" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005802 0 \
5803 -c "client hello, adding alpn extension" \
5804 -s "found alpn extension" \
5805 -C "got an alert message, type: \\[2:120]" \
5806 -S "server hello, adding alpn extension" \
5807 -C "found alpn extension " \
5808 -c "Application Layer Protocol is (none)" \
5809 -S "Application Layer Protocol is"
5810
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005811run_test "ALPN: server only" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005812 "$P_SRV debug_level=3 alpn=abc,1234" \
5813 "$P_CLI debug_level=3" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005814 0 \
5815 -C "client hello, adding alpn extension" \
5816 -S "found alpn extension" \
5817 -C "got an alert message, type: \\[2:120]" \
5818 -S "server hello, adding alpn extension" \
5819 -C "found alpn extension " \
5820 -C "Application Layer Protocol is" \
5821 -s "Application Layer Protocol is (none)"
5822
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005823run_test "ALPN: both, common cli1-srv1" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005824 "$P_SRV debug_level=3 alpn=abc,1234" \
5825 "$P_CLI debug_level=3 alpn=abc,1234" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005826 0 \
5827 -c "client hello, adding alpn extension" \
5828 -s "found alpn extension" \
5829 -C "got an alert message, type: \\[2:120]" \
5830 -s "server hello, adding alpn extension" \
5831 -c "found alpn extension" \
5832 -c "Application Layer Protocol is abc" \
5833 -s "Application Layer Protocol is abc"
5834
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005835run_test "ALPN: both, common cli2-srv1" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005836 "$P_SRV debug_level=3 alpn=abc,1234" \
5837 "$P_CLI debug_level=3 alpn=1234,abc" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005838 0 \
5839 -c "client hello, adding alpn extension" \
5840 -s "found alpn extension" \
5841 -C "got an alert message, type: \\[2:120]" \
5842 -s "server hello, adding alpn extension" \
5843 -c "found alpn extension" \
5844 -c "Application Layer Protocol is abc" \
5845 -s "Application Layer Protocol is abc"
5846
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005847run_test "ALPN: both, common cli1-srv2" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005848 "$P_SRV debug_level=3 alpn=abc,1234" \
5849 "$P_CLI debug_level=3 alpn=1234,abcde" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005850 0 \
5851 -c "client hello, adding alpn extension" \
5852 -s "found alpn extension" \
5853 -C "got an alert message, type: \\[2:120]" \
5854 -s "server hello, adding alpn extension" \
5855 -c "found alpn extension" \
5856 -c "Application Layer Protocol is 1234" \
5857 -s "Application Layer Protocol is 1234"
5858
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005859run_test "ALPN: both, no common" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005860 "$P_SRV debug_level=3 alpn=abc,123" \
5861 "$P_CLI debug_level=3 alpn=1234,abcde" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02005862 1 \
5863 -c "client hello, adding alpn extension" \
5864 -s "found alpn extension" \
5865 -c "got an alert message, type: \\[2:120]" \
5866 -S "server hello, adding alpn extension" \
5867 -C "found alpn extension" \
5868 -C "Application Layer Protocol is 1234" \
5869 -S "Application Layer Protocol is 1234"
5870
Manuel Pégourié-Gonnard83d8c732014-04-07 13:24:21 +02005871
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005872# Tests for keyUsage in leaf certificates, part 1:
5873# server-side certificate/suite selection
5874
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005875run_test "keyUsage srv: RSA, digitalSignature -> (EC)DHE-RSA" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005876 "$P_SRV key_file=data_files/server2.key \
5877 crt_file=data_files/server2.ku-ds.crt" \
5878 "$P_CLI" \
5879 0 \
Manuel Pégourié-Gonnard17cde5f2014-05-22 14:42:39 +02005880 -c "Ciphersuite is TLS-[EC]*DHE-RSA-WITH-"
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005881
5882
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005883run_test "keyUsage srv: RSA, keyEncipherment -> RSA" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005884 "$P_SRV key_file=data_files/server2.key \
5885 crt_file=data_files/server2.ku-ke.crt" \
5886 "$P_CLI" \
5887 0 \
5888 -c "Ciphersuite is TLS-RSA-WITH-"
5889
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005890run_test "keyUsage srv: RSA, keyAgreement -> fail" \
Manuel Pégourié-Gonnardf2629b92014-08-30 14:20:14 +02005891 "$P_SRV key_file=data_files/server2.key \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005892 crt_file=data_files/server2.ku-ka.crt" \
Manuel Pégourié-Gonnardf2629b92014-08-30 14:20:14 +02005893 "$P_CLI" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005894 1 \
5895 -C "Ciphersuite is "
5896
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005897run_test "keyUsage srv: ECDSA, digitalSignature -> ECDHE-ECDSA" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005898 "$P_SRV key_file=data_files/server5.key \
5899 crt_file=data_files/server5.ku-ds.crt" \
5900 "$P_CLI" \
5901 0 \
5902 -c "Ciphersuite is TLS-ECDHE-ECDSA-WITH-"
5903
5904
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005905run_test "keyUsage srv: ECDSA, keyAgreement -> ECDH-" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005906 "$P_SRV key_file=data_files/server5.key \
5907 crt_file=data_files/server5.ku-ka.crt" \
5908 "$P_CLI" \
5909 0 \
5910 -c "Ciphersuite is TLS-ECDH-"
5911
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005912run_test "keyUsage srv: ECDSA, keyEncipherment -> fail" \
Manuel Pégourié-Gonnardf2629b92014-08-30 14:20:14 +02005913 "$P_SRV key_file=data_files/server5.key \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005914 crt_file=data_files/server5.ku-ke.crt" \
Manuel Pégourié-Gonnardf2629b92014-08-30 14:20:14 +02005915 "$P_CLI" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005916 1 \
5917 -C "Ciphersuite is "
5918
5919# Tests for keyUsage in leaf certificates, part 2:
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005920# client-side checking of server cert
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005921
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005922run_test "keyUsage cli: DigitalSignature+KeyEncipherment, RSA: OK" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005923 "$O_SRV -key data_files/server2.key \
5924 -cert data_files/server2.ku-ds_ke.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005925 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005926 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
5927 0 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005928 -C "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005929 -C "Processing of the Certificate handshake message failed" \
5930 -c "Ciphersuite is TLS-"
5931
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005932run_test "keyUsage cli: DigitalSignature+KeyEncipherment, DHE-RSA: OK" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005933 "$O_SRV -key data_files/server2.key \
5934 -cert data_files/server2.ku-ds_ke.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005935 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005936 force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
5937 0 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005938 -C "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005939 -C "Processing of the Certificate handshake message failed" \
5940 -c "Ciphersuite is TLS-"
5941
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005942run_test "keyUsage cli: KeyEncipherment, RSA: OK" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005943 "$O_SRV -key data_files/server2.key \
5944 -cert data_files/server2.ku-ke.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005945 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005946 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
5947 0 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005948 -C "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005949 -C "Processing of the Certificate handshake message failed" \
5950 -c "Ciphersuite is TLS-"
5951
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005952run_test "keyUsage cli: KeyEncipherment, DHE-RSA: fail" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005953 "$O_SRV -key data_files/server2.key \
5954 -cert data_files/server2.ku-ke.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005955 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005956 force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
5957 1 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005958 -c "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005959 -c "Processing of the Certificate handshake message failed" \
5960 -C "Ciphersuite is TLS-"
5961
Manuel Pégourié-Gonnarde6efa6f2015-04-20 11:01:48 +01005962run_test "keyUsage cli: KeyEncipherment, DHE-RSA: fail, soft" \
5963 "$O_SRV -key data_files/server2.key \
5964 -cert data_files/server2.ku-ke.crt" \
5965 "$P_CLI debug_level=1 auth_mode=optional \
5966 force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
5967 0 \
5968 -c "bad certificate (usage extensions)" \
5969 -C "Processing of the Certificate handshake message failed" \
5970 -c "Ciphersuite is TLS-" \
5971 -c "! Usage does not match the keyUsage extension"
5972
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005973run_test "keyUsage cli: DigitalSignature, DHE-RSA: OK" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005974 "$O_SRV -key data_files/server2.key \
5975 -cert data_files/server2.ku-ds.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005976 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005977 force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
5978 0 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005979 -C "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005980 -C "Processing of the Certificate handshake message failed" \
5981 -c "Ciphersuite is TLS-"
5982
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005983run_test "keyUsage cli: DigitalSignature, RSA: fail" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005984 "$O_SRV -key data_files/server2.key \
5985 -cert data_files/server2.ku-ds.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005986 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005987 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
5988 1 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02005989 -c "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02005990 -c "Processing of the Certificate handshake message failed" \
5991 -C "Ciphersuite is TLS-"
5992
Manuel Pégourié-Gonnarde6efa6f2015-04-20 11:01:48 +01005993run_test "keyUsage cli: DigitalSignature, RSA: fail, soft" \
5994 "$O_SRV -key data_files/server2.key \
5995 -cert data_files/server2.ku-ds.crt" \
5996 "$P_CLI debug_level=1 auth_mode=optional \
5997 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
5998 0 \
5999 -c "bad certificate (usage extensions)" \
6000 -C "Processing of the Certificate handshake message failed" \
6001 -c "Ciphersuite is TLS-" \
6002 -c "! Usage does not match the keyUsage extension"
6003
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02006004# Tests for keyUsage in leaf certificates, part 3:
6005# server-side checking of client cert
6006
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006007run_test "keyUsage cli-auth: RSA, DigitalSignature: OK" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006008 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02006009 "$O_CLI -key data_files/server2.key \
6010 -cert data_files/server2.ku-ds.crt" \
6011 0 \
6012 -S "bad certificate (usage extensions)" \
6013 -S "Processing of the Certificate handshake message failed"
6014
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006015run_test "keyUsage cli-auth: RSA, KeyEncipherment: fail (soft)" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006016 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02006017 "$O_CLI -key data_files/server2.key \
6018 -cert data_files/server2.ku-ke.crt" \
6019 0 \
6020 -s "bad certificate (usage extensions)" \
6021 -S "Processing of the Certificate handshake message failed"
6022
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006023run_test "keyUsage cli-auth: RSA, KeyEncipherment: fail (hard)" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006024 "$P_SRV debug_level=1 auth_mode=required" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02006025 "$O_CLI -key data_files/server2.key \
6026 -cert data_files/server2.ku-ke.crt" \
6027 1 \
6028 -s "bad certificate (usage extensions)" \
6029 -s "Processing of the Certificate handshake message failed"
6030
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006031run_test "keyUsage cli-auth: ECDSA, DigitalSignature: OK" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006032 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02006033 "$O_CLI -key data_files/server5.key \
6034 -cert data_files/server5.ku-ds.crt" \
6035 0 \
6036 -S "bad certificate (usage extensions)" \
6037 -S "Processing of the Certificate handshake message failed"
6038
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006039run_test "keyUsage cli-auth: ECDSA, KeyAgreement: fail (soft)" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006040 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02006041 "$O_CLI -key data_files/server5.key \
6042 -cert data_files/server5.ku-ka.crt" \
6043 0 \
6044 -s "bad certificate (usage extensions)" \
6045 -S "Processing of the Certificate handshake message failed"
6046
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006047# Tests for extendedKeyUsage, part 1: server-side certificate/suite selection
6048
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006049run_test "extKeyUsage srv: serverAuth -> OK" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006050 "$P_SRV key_file=data_files/server5.key \
6051 crt_file=data_files/server5.eku-srv.crt" \
6052 "$P_CLI" \
6053 0
6054
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006055run_test "extKeyUsage srv: serverAuth,clientAuth -> OK" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006056 "$P_SRV key_file=data_files/server5.key \
6057 crt_file=data_files/server5.eku-srv.crt" \
6058 "$P_CLI" \
6059 0
6060
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006061run_test "extKeyUsage srv: codeSign,anyEKU -> OK" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006062 "$P_SRV key_file=data_files/server5.key \
6063 crt_file=data_files/server5.eku-cs_any.crt" \
6064 "$P_CLI" \
6065 0
6066
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006067run_test "extKeyUsage srv: codeSign -> fail" \
Manuel Pégourié-Gonnard7eb58cb2015-07-07 11:54:14 +02006068 "$P_SRV key_file=data_files/server5.key \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006069 crt_file=data_files/server5.eku-cli.crt" \
Manuel Pégourié-Gonnard7eb58cb2015-07-07 11:54:14 +02006070 "$P_CLI" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006071 1
6072
6073# Tests for extendedKeyUsage, part 2: client-side checking of server cert
6074
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006075run_test "extKeyUsage cli: serverAuth -> OK" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006076 "$O_SRV -key data_files/server5.key \
6077 -cert data_files/server5.eku-srv.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006078 "$P_CLI debug_level=1" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006079 0 \
6080 -C "bad certificate (usage extensions)" \
6081 -C "Processing of the Certificate handshake message failed" \
6082 -c "Ciphersuite is TLS-"
6083
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006084run_test "extKeyUsage cli: serverAuth,clientAuth -> OK" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006085 "$O_SRV -key data_files/server5.key \
6086 -cert data_files/server5.eku-srv_cli.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006087 "$P_CLI debug_level=1" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006088 0 \
6089 -C "bad certificate (usage extensions)" \
6090 -C "Processing of the Certificate handshake message failed" \
6091 -c "Ciphersuite is TLS-"
6092
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006093run_test "extKeyUsage cli: codeSign,anyEKU -> OK" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006094 "$O_SRV -key data_files/server5.key \
6095 -cert data_files/server5.eku-cs_any.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006096 "$P_CLI debug_level=1" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006097 0 \
6098 -C "bad certificate (usage extensions)" \
6099 -C "Processing of the Certificate handshake message failed" \
6100 -c "Ciphersuite is TLS-"
6101
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006102run_test "extKeyUsage cli: codeSign -> fail" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006103 "$O_SRV -key data_files/server5.key \
6104 -cert data_files/server5.eku-cs.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006105 "$P_CLI debug_level=1" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006106 1 \
6107 -c "bad certificate (usage extensions)" \
6108 -c "Processing of the Certificate handshake message failed" \
6109 -C "Ciphersuite is TLS-"
6110
6111# Tests for extendedKeyUsage, part 3: server-side checking of client cert
6112
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006113run_test "extKeyUsage cli-auth: clientAuth -> OK" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006114 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006115 "$O_CLI -key data_files/server5.key \
6116 -cert data_files/server5.eku-cli.crt" \
6117 0 \
6118 -S "bad certificate (usage extensions)" \
6119 -S "Processing of the Certificate handshake message failed"
6120
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006121run_test "extKeyUsage cli-auth: serverAuth,clientAuth -> OK" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006122 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006123 "$O_CLI -key data_files/server5.key \
6124 -cert data_files/server5.eku-srv_cli.crt" \
6125 0 \
6126 -S "bad certificate (usage extensions)" \
6127 -S "Processing of the Certificate handshake message failed"
6128
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006129run_test "extKeyUsage cli-auth: codeSign,anyEKU -> OK" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006130 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006131 "$O_CLI -key data_files/server5.key \
6132 -cert data_files/server5.eku-cs_any.crt" \
6133 0 \
6134 -S "bad certificate (usage extensions)" \
6135 -S "Processing of the Certificate handshake message failed"
6136
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006137run_test "extKeyUsage cli-auth: codeSign -> fail (soft)" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006138 "$P_SRV debug_level=1 auth_mode=optional" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006139 "$O_CLI -key data_files/server5.key \
6140 -cert data_files/server5.eku-cs.crt" \
6141 0 \
6142 -s "bad certificate (usage extensions)" \
6143 -S "Processing of the Certificate handshake message failed"
6144
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006145run_test "extKeyUsage cli-auth: codeSign -> fail (hard)" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006146 "$P_SRV debug_level=1 auth_mode=required" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02006147 "$O_CLI -key data_files/server5.key \
6148 -cert data_files/server5.eku-cs.crt" \
6149 1 \
6150 -s "bad certificate (usage extensions)" \
6151 -s "Processing of the Certificate handshake message failed"
6152
Manuel Pégourié-Gonnard0cc7e312014-06-09 11:36:47 +02006153# Tests for DHM parameters loading
6154
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006155run_test "DHM parameters: reference" \
Manuel Pégourié-Gonnard0cc7e312014-06-09 11:36:47 +02006156 "$P_SRV" \
6157 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
6158 debug_level=3" \
6159 0 \
6160 -c "value of 'DHM: P ' (2048 bits)" \
Hanno Becker13be9902017-09-27 17:17:30 +01006161 -c "value of 'DHM: G ' (2 bits)"
Manuel Pégourié-Gonnard0cc7e312014-06-09 11:36:47 +02006162
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006163run_test "DHM parameters: other parameters" \
Manuel Pégourié-Gonnard0cc7e312014-06-09 11:36:47 +02006164 "$P_SRV dhm_file=data_files/dhparams.pem" \
6165 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
6166 debug_level=3" \
6167 0 \
6168 -c "value of 'DHM: P ' (1024 bits)" \
6169 -c "value of 'DHM: G ' (2 bits)"
6170
Manuel Pégourié-Gonnard7a010aa2015-06-12 11:19:10 +02006171# Tests for DHM client-side size checking
6172
6173run_test "DHM size: server default, client default, OK" \
6174 "$P_SRV" \
6175 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
6176 debug_level=1" \
6177 0 \
6178 -C "DHM prime too short:"
6179
6180run_test "DHM size: server default, client 2048, OK" \
6181 "$P_SRV" \
6182 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
6183 debug_level=1 dhmlen=2048" \
6184 0 \
6185 -C "DHM prime too short:"
6186
6187run_test "DHM size: server 1024, client default, OK" \
6188 "$P_SRV dhm_file=data_files/dhparams.pem" \
6189 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
6190 debug_level=1" \
6191 0 \
6192 -C "DHM prime too short:"
6193
Gilles Peskinec6b0d962020-12-08 22:31:52 +01006194run_test "DHM size: server 999, client 999, OK" \
6195 "$P_SRV dhm_file=data_files/dh.999.pem" \
6196 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
6197 debug_level=1 dhmlen=999" \
6198 0 \
6199 -C "DHM prime too short:"
6200
6201run_test "DHM size: server 1000, client 1000, OK" \
6202 "$P_SRV dhm_file=data_files/dh.1000.pem" \
6203 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
6204 debug_level=1 dhmlen=1000" \
6205 0 \
6206 -C "DHM prime too short:"
6207
Manuel Pégourié-Gonnard7a010aa2015-06-12 11:19:10 +02006208run_test "DHM size: server 1000, client default, rejected" \
6209 "$P_SRV dhm_file=data_files/dh.1000.pem" \
6210 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
6211 debug_level=1" \
6212 1 \
6213 -c "DHM prime too short:"
6214
Gilles Peskinec6b0d962020-12-08 22:31:52 +01006215run_test "DHM size: server 1000, client 1001, rejected" \
6216 "$P_SRV dhm_file=data_files/dh.1000.pem" \
6217 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
6218 debug_level=1 dhmlen=1001" \
6219 1 \
6220 -c "DHM prime too short:"
6221
6222run_test "DHM size: server 999, client 1000, rejected" \
6223 "$P_SRV dhm_file=data_files/dh.999.pem" \
6224 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
6225 debug_level=1 dhmlen=1000" \
6226 1 \
6227 -c "DHM prime too short:"
6228
6229run_test "DHM size: server 998, client 999, rejected" \
6230 "$P_SRV dhm_file=data_files/dh.998.pem" \
6231 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
6232 debug_level=1 dhmlen=999" \
6233 1 \
6234 -c "DHM prime too short:"
6235
Manuel Pégourié-Gonnard7a010aa2015-06-12 11:19:10 +02006236run_test "DHM size: server default, client 2049, rejected" \
6237 "$P_SRV" \
6238 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
6239 debug_level=1 dhmlen=2049" \
6240 1 \
6241 -c "DHM prime too short:"
6242
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006243# Tests for PSK callback
6244
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006245run_test "PSK callback: psk, no callback" \
Gilles Peskined84733d2024-04-29 16:09:52 +02006246 "$P_SRV psk=73776f726466697368 psk_identity=foo" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006247 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Gilles Peskined84733d2024-04-29 16:09:52 +02006248 psk_identity=foo psk=73776f726466697368" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006249 0 \
Manuel Pégourié-Gonnardf01768c2015-01-08 17:06:16 +01006250 -S "SSL - None of the common ciphersuites is usable" \
Manuel Pégourié-Gonnard10c3c9f2014-06-10 15:28:52 +02006251 -S "SSL - Unknown identity received" \
6252 -S "SSL - Verification of the message MAC failed"
6253
Hanno Beckerf7027512018-10-23 15:27:39 +01006254requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6255run_test "PSK callback: opaque psk on client, no callback" \
Gilles Peskined84733d2024-04-29 16:09:52 +02006256 "$P_SRV extended_ms=0 debug_level=1 psk=73776f726466697368 psk_identity=foo" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006257 "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Gilles Peskined84733d2024-04-29 16:09:52 +02006258 psk_identity=foo psk=73776f726466697368 psk_opaque=1" \
Hanno Beckerf7027512018-10-23 15:27:39 +01006259 0 \
6260 -c "skip PMS generation for opaque PSK"\
6261 -S "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006262 -C "session hash for extended master secret"\
6263 -S "session hash for extended master secret"\
Hanno Beckerf7027512018-10-23 15:27:39 +01006264 -S "SSL - None of the common ciphersuites is usable" \
6265 -S "SSL - Unknown identity received" \
6266 -S "SSL - Verification of the message MAC failed"
6267
6268requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6269run_test "PSK callback: opaque psk on client, no callback, SHA-384" \
Gilles Peskined84733d2024-04-29 16:09:52 +02006270 "$P_SRV extended_ms=0 debug_level=1 psk=73776f726466697368 psk_identity=foo" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006271 "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 \
Gilles Peskined84733d2024-04-29 16:09:52 +02006272 psk_identity=foo psk=73776f726466697368 psk_opaque=1" \
Hanno Beckerf7027512018-10-23 15:27:39 +01006273 0 \
6274 -c "skip PMS generation for opaque PSK"\
6275 -S "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006276 -C "session hash for extended master secret"\
6277 -S "session hash for extended master secret"\
Hanno Beckerf7027512018-10-23 15:27:39 +01006278 -S "SSL - None of the common ciphersuites is usable" \
6279 -S "SSL - Unknown identity received" \
6280 -S "SSL - Verification of the message MAC failed"
6281
6282requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6283run_test "PSK callback: opaque psk on client, no callback, EMS" \
Gilles Peskined84733d2024-04-29 16:09:52 +02006284 "$P_SRV extended_ms=1 debug_level=3 psk=73776f726466697368 psk_identity=foo" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006285 "$P_CLI extended_ms=1 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Gilles Peskined84733d2024-04-29 16:09:52 +02006286 psk_identity=foo psk=73776f726466697368 psk_opaque=1" \
Hanno Beckerf7027512018-10-23 15:27:39 +01006287 0 \
6288 -c "skip PMS generation for opaque PSK"\
6289 -S "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006290 -c "session hash for extended master secret"\
6291 -s "session hash for extended master secret"\
Hanno Beckerf7027512018-10-23 15:27:39 +01006292 -S "SSL - None of the common ciphersuites is usable" \
6293 -S "SSL - Unknown identity received" \
6294 -S "SSL - Verification of the message MAC failed"
6295
6296requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6297run_test "PSK callback: opaque psk on client, no callback, SHA-384, EMS" \
Gilles Peskined84733d2024-04-29 16:09:52 +02006298 "$P_SRV extended_ms=1 debug_level=3 psk=73776f726466697368 psk_identity=foo" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006299 "$P_CLI extended_ms=1 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 \
Gilles Peskined84733d2024-04-29 16:09:52 +02006300 psk_identity=foo psk=73776f726466697368 psk_opaque=1" \
Hanno Beckerf7027512018-10-23 15:27:39 +01006301 0 \
6302 -c "skip PMS generation for opaque PSK"\
6303 -S "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006304 -c "session hash for extended master secret"\
6305 -s "session hash for extended master secret"\
Hanno Beckerf7027512018-10-23 15:27:39 +01006306 -S "SSL - None of the common ciphersuites is usable" \
6307 -S "SSL - Unknown identity received" \
6308 -S "SSL - Verification of the message MAC failed"
6309
Hanno Becker28c79dc2018-10-26 13:15:08 +01006310requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6311run_test "PSK callback: raw psk on client, static opaque on server, no callback" \
Gilles Peskined84733d2024-04-29 16:09:52 +02006312 "$P_SRV extended_ms=0 debug_level=1 psk=73776f726466697368 psk_identity=foo psk_opaque=1 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006313 "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Gilles Peskined84733d2024-04-29 16:09:52 +02006314 psk_identity=foo psk=73776f726466697368" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006315 0 \
6316 -C "skip PMS generation for opaque PSK"\
6317 -s "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006318 -C "session hash for extended master secret"\
6319 -S "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006320 -S "SSL - None of the common ciphersuites is usable" \
6321 -S "SSL - Unknown identity received" \
6322 -S "SSL - Verification of the message MAC failed"
6323
6324requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6325run_test "PSK callback: raw psk on client, static opaque on server, no callback, SHA-384" \
Gilles Peskined84733d2024-04-29 16:09:52 +02006326 "$P_SRV extended_ms=0 debug_level=1 psk=73776f726466697368 psk_identity=foo psk_opaque=1 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006327 "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 \
Gilles Peskined84733d2024-04-29 16:09:52 +02006328 psk_identity=foo psk=73776f726466697368" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006329 0 \
6330 -C "skip PMS generation for opaque PSK"\
6331 -s "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006332 -C "session hash for extended master secret"\
6333 -S "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006334 -S "SSL - None of the common ciphersuites is usable" \
6335 -S "SSL - Unknown identity received" \
6336 -S "SSL - Verification of the message MAC failed"
6337
6338requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6339run_test "PSK callback: raw psk on client, static opaque on server, no callback, EMS" \
Gilles Peskined84733d2024-04-29 16:09:52 +02006340 "$P_SRV debug_level=3 psk=73776f726466697368 psk_identity=foo psk_opaque=1 min_version=tls12 \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006341 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA extended_ms=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006342 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Gilles Peskined84733d2024-04-29 16:09:52 +02006343 psk_identity=foo psk=73776f726466697368 extended_ms=1" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006344 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006345 -c "session hash for extended master secret"\
6346 -s "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006347 -C "skip PMS generation for opaque PSK"\
6348 -s "skip PMS generation for opaque PSK"\
6349 -S "SSL - None of the common ciphersuites is usable" \
6350 -S "SSL - Unknown identity received" \
6351 -S "SSL - Verification of the message MAC failed"
6352
6353requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6354run_test "PSK callback: raw psk on client, static opaque on server, no callback, EMS, SHA384" \
Gilles Peskined84733d2024-04-29 16:09:52 +02006355 "$P_SRV debug_level=3 psk=73776f726466697368 psk_identity=foo psk_opaque=1 min_version=tls12 \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006356 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 extended_ms=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006357 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 \
Gilles Peskined84733d2024-04-29 16:09:52 +02006358 psk_identity=foo psk=73776f726466697368 extended_ms=1" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006359 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006360 -c "session hash for extended master secret"\
6361 -s "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006362 -C "skip PMS generation for opaque PSK"\
6363 -s "skip PMS generation for opaque PSK"\
6364 -S "SSL - None of the common ciphersuites is usable" \
6365 -S "SSL - Unknown identity received" \
6366 -S "SSL - Verification of the message MAC failed"
6367
6368requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6369run_test "PSK callback: raw psk on client, no static PSK on server, opaque PSK from callback" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006370 "$P_SRV extended_ms=0 debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA" \
6371 "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006372 psk_identity=def psk=beef" \
6373 0 \
6374 -C "skip PMS generation for opaque PSK"\
6375 -s "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006376 -C "session hash for extended master secret"\
6377 -S "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006378 -S "SSL - None of the common ciphersuites is usable" \
6379 -S "SSL - Unknown identity received" \
6380 -S "SSL - Verification of the message MAC failed"
6381
6382requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6383run_test "PSK callback: raw psk on client, no static PSK on server, opaque PSK from callback, SHA-384" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006384 "$P_SRV extended_ms=0 debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384" \
6385 "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006386 psk_identity=def psk=beef" \
6387 0 \
6388 -C "skip PMS generation for opaque PSK"\
6389 -s "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006390 -C "session hash for extended master secret"\
6391 -S "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006392 -S "SSL - None of the common ciphersuites is usable" \
6393 -S "SSL - Unknown identity received" \
6394 -S "SSL - Verification of the message MAC failed"
6395
6396requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6397run_test "PSK callback: raw psk on client, no static PSK on server, opaque PSK from callback, EMS" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006398 "$P_SRV debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006399 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA extended_ms=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006400 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006401 psk_identity=abc psk=dead extended_ms=1" \
6402 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006403 -c "session hash for extended master secret"\
6404 -s "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006405 -C "skip PMS generation for opaque PSK"\
6406 -s "skip PMS generation for opaque PSK"\
6407 -S "SSL - None of the common ciphersuites is usable" \
6408 -S "SSL - Unknown identity received" \
6409 -S "SSL - Verification of the message MAC failed"
6410
6411requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6412run_test "PSK callback: raw psk on client, no static PSK on server, opaque PSK from callback, EMS, SHA384" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006413 "$P_SRV debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006414 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 extended_ms=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006415 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006416 psk_identity=abc psk=dead extended_ms=1" \
6417 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006418 -c "session hash for extended master secret"\
6419 -s "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006420 -C "skip PMS generation for opaque PSK"\
6421 -s "skip PMS generation for opaque PSK"\
6422 -S "SSL - None of the common ciphersuites is usable" \
6423 -S "SSL - Unknown identity received" \
6424 -S "SSL - Verification of the message MAC failed"
6425
6426requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6427run_test "PSK callback: raw psk on client, mismatching static raw PSK on server, opaque PSK from callback" \
Gilles Peskined84733d2024-04-29 16:09:52 +02006428 "$P_SRV extended_ms=0 psk_identity=foo psk=73776f726466697368 debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006429 "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006430 psk_identity=def psk=beef" \
6431 0 \
6432 -C "skip PMS generation for opaque PSK"\
6433 -s "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006434 -C "session hash for extended master secret"\
6435 -S "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006436 -S "SSL - None of the common ciphersuites is usable" \
6437 -S "SSL - Unknown identity received" \
6438 -S "SSL - Verification of the message MAC failed"
6439
6440requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6441run_test "PSK callback: raw psk on client, mismatching static opaque PSK on server, opaque PSK from callback" \
Gilles Peskined84733d2024-04-29 16:09:52 +02006442 "$P_SRV extended_ms=0 psk_opaque=1 psk_identity=foo psk=73776f726466697368 debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006443 "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006444 psk_identity=def psk=beef" \
6445 0 \
6446 -C "skip PMS generation for opaque PSK"\
6447 -s "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006448 -C "session hash for extended master secret"\
6449 -S "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006450 -S "SSL - None of the common ciphersuites is usable" \
6451 -S "SSL - Unknown identity received" \
6452 -S "SSL - Verification of the message MAC failed"
6453
6454requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6455run_test "PSK callback: raw psk on client, mismatching static opaque PSK on server, raw PSK from callback" \
Gilles Peskined84733d2024-04-29 16:09:52 +02006456 "$P_SRV extended_ms=0 psk_opaque=1 psk_identity=foo psk=73776f726466697368 debug_level=3 psk_list=abc,dead,def,beef min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006457 "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006458 psk_identity=def psk=beef" \
6459 0 \
6460 -C "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006461 -C "session hash for extended master secret"\
6462 -S "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006463 -S "SSL - None of the common ciphersuites is usable" \
6464 -S "SSL - Unknown identity received" \
6465 -S "SSL - Verification of the message MAC failed"
6466
6467requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6468run_test "PSK callback: raw psk on client, id-matching but wrong raw PSK on server, opaque PSK from callback" \
Gilles Peskined84733d2024-04-29 16:09:52 +02006469 "$P_SRV extended_ms=0 psk_opaque=1 psk_identity=def psk=73776f726466697368 debug_level=3 psk_list=abc,dead,def,beef min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006470 "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006471 psk_identity=def psk=beef" \
6472 0 \
6473 -C "skip PMS generation for opaque PSK"\
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02006474 -C "session hash for extended master secret"\
6475 -S "session hash for extended master secret"\
Hanno Becker28c79dc2018-10-26 13:15:08 +01006476 -S "SSL - None of the common ciphersuites is usable" \
6477 -S "SSL - Unknown identity received" \
6478 -S "SSL - Verification of the message MAC failed"
6479
6480requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
6481run_test "PSK callback: raw psk on client, matching opaque PSK on server, wrong opaque PSK from callback" \
Gilles Peskined84733d2024-04-29 16:09:52 +02006482 "$P_SRV extended_ms=0 psk_opaque=1 psk_identity=def psk=beef debug_level=3 psk_list=abc,dead,def,73776f726466697368 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006483 "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Hanno Becker28c79dc2018-10-26 13:15:08 +01006484 psk_identity=def psk=beef" \
6485 1 \
6486 -s "SSL - Verification of the message MAC failed"
6487
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006488run_test "PSK callback: no psk, no callback" \
Manuel Pégourié-Gonnard10c3c9f2014-06-10 15:28:52 +02006489 "$P_SRV" \
6490 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Gilles Peskined84733d2024-04-29 16:09:52 +02006491 psk_identity=foo psk=73776f726466697368" \
Manuel Pégourié-Gonnard10c3c9f2014-06-10 15:28:52 +02006492 1 \
Manuel Pégourié-Gonnardf01768c2015-01-08 17:06:16 +01006493 -s "SSL - None of the common ciphersuites is usable" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006494 -S "SSL - Unknown identity received" \
6495 -S "SSL - Verification of the message MAC failed"
6496
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006497run_test "PSK callback: callback overrides other settings" \
Gilles Peskined84733d2024-04-29 16:09:52 +02006498 "$P_SRV psk=73776f726466697368 psk_identity=foo psk_list=abc,dead,def,beef" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006499 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Gilles Peskined84733d2024-04-29 16:09:52 +02006500 psk_identity=foo psk=73776f726466697368" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006501 1 \
Manuel Pégourié-Gonnardf01768c2015-01-08 17:06:16 +01006502 -S "SSL - None of the common ciphersuites is usable" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006503 -s "SSL - Unknown identity received" \
6504 -S "SSL - Verification of the message MAC failed"
6505
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006506run_test "PSK callback: first id matches" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006507 "$P_SRV psk_list=abc,dead,def,beef" \
6508 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
6509 psk_identity=abc psk=dead" \
6510 0 \
Manuel Pégourié-Gonnardf01768c2015-01-08 17:06:16 +01006511 -S "SSL - None of the common ciphersuites is usable" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006512 -S "SSL - Unknown identity received" \
6513 -S "SSL - Verification of the message MAC failed"
6514
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006515run_test "PSK callback: second id matches" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006516 "$P_SRV psk_list=abc,dead,def,beef" \
6517 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
6518 psk_identity=def psk=beef" \
6519 0 \
Manuel Pégourié-Gonnardf01768c2015-01-08 17:06:16 +01006520 -S "SSL - None of the common ciphersuites is usable" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006521 -S "SSL - Unknown identity received" \
6522 -S "SSL - Verification of the message MAC failed"
6523
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006524run_test "PSK callback: no match" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006525 "$P_SRV psk_list=abc,dead,def,beef" \
6526 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
6527 psk_identity=ghi psk=beef" \
6528 1 \
Manuel Pégourié-Gonnardf01768c2015-01-08 17:06:16 +01006529 -S "SSL - None of the common ciphersuites is usable" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006530 -s "SSL - Unknown identity received" \
6531 -S "SSL - Verification of the message MAC failed"
6532
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006533run_test "PSK callback: wrong key" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006534 "$P_SRV psk_list=abc,dead,def,beef" \
6535 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
6536 psk_identity=abc psk=beef" \
6537 1 \
Manuel Pégourié-Gonnardf01768c2015-01-08 17:06:16 +01006538 -S "SSL - None of the common ciphersuites is usable" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02006539 -S "SSL - Unknown identity received" \
6540 -s "SSL - Verification of the message MAC failed"
Manuel Pégourié-Gonnard0cc7e312014-06-09 11:36:47 +02006541
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006542# Tests for EC J-PAKE
6543
Hanno Beckerfa452c42020-08-14 15:42:49 +01006544requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006545run_test "ECJPAKE: client not configured" \
6546 "$P_SRV debug_level=3" \
6547 "$P_CLI debug_level=3" \
6548 0 \
Hanno Beckeree63af62020-08-14 15:41:23 +01006549 -C "add ciphersuite: 0xc0ff" \
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006550 -C "adding ecjpake_kkpp extension" \
Manuel Pégourié-Gonnardbf57be62015-09-16 15:04:01 +02006551 -S "found ecjpake kkpp extension" \
6552 -S "skip ecjpake kkpp extension" \
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006553 -S "ciphersuite mismatch: ecjpake not configured" \
Manuel Pégourié-Gonnard55c7f992015-09-16 15:35:27 +02006554 -S "server hello, ecjpake kkpp extension" \
Manuel Pégourié-Gonnard0a1324a2015-09-16 16:01:00 +02006555 -C "found ecjpake_kkpp extension" \
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006556 -S "None of the common ciphersuites is usable"
6557
Hanno Beckerfa452c42020-08-14 15:42:49 +01006558requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006559run_test "ECJPAKE: server not configured" \
6560 "$P_SRV debug_level=3" \
6561 "$P_CLI debug_level=3 ecjpake_pw=bla \
6562 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
6563 1 \
Hanno Beckeree63af62020-08-14 15:41:23 +01006564 -c "add ciphersuite: 0xc0ff" \
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006565 -c "adding ecjpake_kkpp extension" \
Manuel Pégourié-Gonnardbf57be62015-09-16 15:04:01 +02006566 -s "found ecjpake kkpp extension" \
6567 -s "skip ecjpake kkpp extension" \
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006568 -s "ciphersuite mismatch: ecjpake not configured" \
Manuel Pégourié-Gonnard55c7f992015-09-16 15:35:27 +02006569 -S "server hello, ecjpake kkpp extension" \
Manuel Pégourié-Gonnard0a1324a2015-09-16 16:01:00 +02006570 -C "found ecjpake_kkpp extension" \
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02006571 -s "None of the common ciphersuites is usable"
6572
Hanno Beckerfa452c42020-08-14 15:42:49 +01006573requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Manuel Pégourié-Gonnardbf57be62015-09-16 15:04:01 +02006574run_test "ECJPAKE: working, TLS" \
6575 "$P_SRV debug_level=3 ecjpake_pw=bla" \
6576 "$P_CLI debug_level=3 ecjpake_pw=bla \
6577 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
Manuel Pégourié-Gonnard0f1660a2015-09-16 22:41:06 +02006578 0 \
Hanno Beckeree63af62020-08-14 15:41:23 +01006579 -c "add ciphersuite: 0xc0ff" \
Manuel Pégourié-Gonnardbf57be62015-09-16 15:04:01 +02006580 -c "adding ecjpake_kkpp extension" \
Manuel Pégourié-Gonnardd0d8cb32015-09-17 14:16:30 +02006581 -C "re-using cached ecjpake parameters" \
Manuel Pégourié-Gonnardbf57be62015-09-16 15:04:01 +02006582 -s "found ecjpake kkpp extension" \
6583 -S "skip ecjpake kkpp extension" \
6584 -S "ciphersuite mismatch: ecjpake not configured" \
Manuel Pégourié-Gonnard55c7f992015-09-16 15:35:27 +02006585 -s "server hello, ecjpake kkpp extension" \
Manuel Pégourié-Gonnard0a1324a2015-09-16 16:01:00 +02006586 -c "found ecjpake_kkpp extension" \
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02006587 -S "None of the common ciphersuites is usable" \
6588 -S "SSL - Verification of the message MAC failed"
6589
Janos Follath74537a62016-09-02 13:45:28 +01006590server_needs_more_time 1
Dave Rodgman7ed75e22021-06-29 19:05:34 +01006591requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02006592run_test "ECJPAKE: password mismatch, TLS" \
6593 "$P_SRV debug_level=3 ecjpake_pw=bla" \
6594 "$P_CLI debug_level=3 ecjpake_pw=bad \
6595 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
6596 1 \
Manuel Pégourié-Gonnardd0d8cb32015-09-17 14:16:30 +02006597 -C "re-using cached ecjpake parameters" \
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02006598 -s "SSL - Verification of the message MAC failed"
6599
Dave Rodgman7ed75e22021-06-29 19:05:34 +01006600requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02006601run_test "ECJPAKE: working, DTLS" \
6602 "$P_SRV debug_level=3 dtls=1 ecjpake_pw=bla" \
6603 "$P_CLI debug_level=3 dtls=1 ecjpake_pw=bla \
6604 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
6605 0 \
Manuel Pégourié-Gonnardd0d8cb32015-09-17 14:16:30 +02006606 -c "re-using cached ecjpake parameters" \
6607 -S "SSL - Verification of the message MAC failed"
6608
Dave Rodgman7ed75e22021-06-29 19:05:34 +01006609requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Manuel Pégourié-Gonnardd0d8cb32015-09-17 14:16:30 +02006610run_test "ECJPAKE: working, DTLS, no cookie" \
6611 "$P_SRV debug_level=3 dtls=1 ecjpake_pw=bla cookies=0" \
6612 "$P_CLI debug_level=3 dtls=1 ecjpake_pw=bla \
6613 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
6614 0 \
6615 -C "re-using cached ecjpake parameters" \
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02006616 -S "SSL - Verification of the message MAC failed"
6617
Janos Follath74537a62016-09-02 13:45:28 +01006618server_needs_more_time 1
Dave Rodgman7ed75e22021-06-29 19:05:34 +01006619requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02006620run_test "ECJPAKE: password mismatch, DTLS" \
6621 "$P_SRV debug_level=3 dtls=1 ecjpake_pw=bla" \
6622 "$P_CLI debug_level=3 dtls=1 ecjpake_pw=bad \
6623 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
6624 1 \
Manuel Pégourié-Gonnardd0d8cb32015-09-17 14:16:30 +02006625 -c "re-using cached ecjpake parameters" \
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02006626 -s "SSL - Verification of the message MAC failed"
Manuel Pégourié-Gonnardbf57be62015-09-16 15:04:01 +02006627
Manuel Pégourié-Gonnardca700b22015-10-20 14:47:00 +02006628# for tests with configs/config-thread.h
Dave Rodgman7ed75e22021-06-29 19:05:34 +01006629requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Manuel Pégourié-Gonnardca700b22015-10-20 14:47:00 +02006630run_test "ECJPAKE: working, DTLS, nolog" \
6631 "$P_SRV dtls=1 ecjpake_pw=bla" \
6632 "$P_CLI dtls=1 ecjpake_pw=bla \
6633 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
6634 0
6635
Manuel Pégourié-Gonnard90805a82014-06-11 14:06:01 +02006636# Tests for ciphersuites per version
6637
Manuel Pégourié-Gonnardaa946b22019-03-01 10:14:58 +01006638requires_config_enabled MBEDTLS_CAMELLIA_C
6639requires_config_enabled MBEDTLS_AES_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006640run_test "Per-version suites: SSL3" \
Manuel Pégourié-Gonnardaa946b22019-03-01 10:14:58 +01006641 "$P_SRV min_version=ssl3 version_suites=TLS-RSA-WITH-CAMELLIA-128-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 +02006642 "$P_CLI force_version=ssl3" \
6643 0 \
Manuel Pégourié-Gonnardaa946b22019-03-01 10:14:58 +01006644 -c "Ciphersuite is TLS-RSA-WITH-CAMELLIA-128-CBC-SHA"
Manuel Pégourié-Gonnard90805a82014-06-11 14:06:01 +02006645
Manuel Pégourié-Gonnardaa946b22019-03-01 10:14:58 +01006646requires_config_enabled MBEDTLS_CAMELLIA_C
6647requires_config_enabled MBEDTLS_AES_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006648run_test "Per-version suites: TLS 1.0" \
Manuel Pégourié-Gonnardaa946b22019-03-01 10:14:58 +01006649 "$P_SRV version_suites=TLS-RSA-WITH-CAMELLIA-128-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 +01006650 "$P_CLI force_version=tls1 arc4=1" \
Manuel Pégourié-Gonnard90805a82014-06-11 14:06:01 +02006651 0 \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01006652 -c "Ciphersuite is TLS-RSA-WITH-AES-256-CBC-SHA"
Manuel Pégourié-Gonnard90805a82014-06-11 14:06:01 +02006653
Manuel Pégourié-Gonnardaa946b22019-03-01 10:14:58 +01006654requires_config_enabled MBEDTLS_CAMELLIA_C
6655requires_config_enabled MBEDTLS_AES_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006656run_test "Per-version suites: TLS 1.1" \
Manuel Pégourié-Gonnardaa946b22019-03-01 10:14:58 +01006657 "$P_SRV version_suites=TLS-RSA-WITH-CAMELLIA-128-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 +02006658 "$P_CLI force_version=tls1_1" \
6659 0 \
6660 -c "Ciphersuite is TLS-RSA-WITH-AES-128-CBC-SHA"
6661
Manuel Pégourié-Gonnardaa946b22019-03-01 10:14:58 +01006662requires_config_enabled MBEDTLS_CAMELLIA_C
6663requires_config_enabled MBEDTLS_AES_C
Przemek Stekielefc894b2022-10-06 12:15:21 +02006664requires_config_enabled MBEDTLS_GCM_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006665run_test "Per-version suites: TLS 1.2" \
Manuel Pégourié-Gonnardaa946b22019-03-01 10:14:58 +01006666 "$P_SRV version_suites=TLS-RSA-WITH-CAMELLIA-128-CBC-SHA,TLS-RSA-WITH-AES-256-CBC-SHA,TLS-RSA-WITH-AES-128-CBC-SHA,TLS-RSA-WITH-AES-128-GCM-SHA256" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006667 "$P_CLI force_version=tls12" \
Manuel Pégourié-Gonnard90805a82014-06-11 14:06:01 +02006668 0 \
6669 -c "Ciphersuite is TLS-RSA-WITH-AES-128-GCM-SHA256"
6670
Manuel Pégourié-Gonnard4cc8c632015-07-23 12:24:03 +02006671# Test for ClientHello without extensions
6672
Gilles Peskinee4d2ab82024-04-29 17:42:52 +02006673# Without extensions, ECC is impossible (no curve negotiation).
6674requires_config_enabled MBEDTLS_RSA_C
Manuel Pégourié-Gonnardd55bc202015-08-04 16:22:30 +02006675requires_gnutls
Gilles Peskinee4d2ab82024-04-29 17:42:52 +02006676run_test "ClientHello without extensions: RSA" \
Manuel Pégourié-Gonnard77cbeff2020-01-30 10:58:57 +01006677 "$P_SRV debug_level=3" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02006678 "$G_CLI --priority=NORMAL:%NO_EXTENSIONS:%DISABLE_SAFE_RENEGOTIATION localhost" \
Gilles Peskine5d2511c2017-05-12 13:16:40 +02006679 0 \
Gilles Peskinee4d2ab82024-04-29 17:42:52 +02006680 -s "Ciphersuite is .*-RSA-WITH-.*" \
6681 -S "Ciphersuite is .*-EC.*" \
6682 -s "dumping 'client hello extensions' (0 bytes)"
6683
Gilles Peskine0d16d812024-05-13 21:18:41 +02006684requires_config_enabled MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
Gilles Peskinee4d2ab82024-04-29 17:42:52 +02006685requires_gnutls
6686run_test "ClientHello without extensions: PSK" \
6687 "$P_SRV debug_level=3 psk=73776f726466697368" \
6688 "$G_CLI --priority=NORMAL:+PSK:-RSA:-DHE-RSA:%NO_EXTENSIONS:%DISABLE_SAFE_RENEGOTIATION --pskusername=Client_identity --pskkey=73776f726466697368 localhost" \
6689 0 \
6690 -s "Ciphersuite is .*-PSK-.*" \
6691 -S "Ciphersuite is .*-EC.*" \
Gilles Peskine5d2511c2017-05-12 13:16:40 +02006692 -s "dumping 'client hello extensions' (0 bytes)"
6693
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02006694# Tests for mbedtls_ssl_get_bytes_avail()
Manuel Pégourié-Gonnard95c0a632014-06-11 18:32:36 +02006695
Gilles Peskine5a1b3bd2022-04-06 23:35:56 +02006696# The server first reads buffer_size-1 bytes, then reads the remainder.
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02006697run_test "mbedtls_ssl_get_bytes_avail: no extra data" \
Gilles Peskine5a1b3bd2022-04-06 23:35:56 +02006698 "$P_SRV buffer_size=100" \
Manuel Pégourié-Gonnard95c0a632014-06-11 18:32:36 +02006699 "$P_CLI request_size=100" \
6700 0 \
6701 -s "Read from client: 100 bytes read$"
6702
Gilles Peskine5a1b3bd2022-04-06 23:35:56 +02006703run_test "mbedtls_ssl_get_bytes_avail: extra data (+1)" \
6704 "$P_SRV buffer_size=100" \
6705 "$P_CLI request_size=101" \
Manuel Pégourié-Gonnard95c0a632014-06-11 18:32:36 +02006706 0 \
Gilles Peskine5a1b3bd2022-04-06 23:35:56 +02006707 -s "Read from client: 101 bytes read (100 + 1)"
6708
6709requires_max_content_len 200
6710run_test "mbedtls_ssl_get_bytes_avail: extra data (*2)" \
6711 "$P_SRV buffer_size=100" \
6712 "$P_CLI request_size=200" \
6713 0 \
6714 -s "Read from client: 200 bytes read (100 + 100)"
6715
6716run_test "mbedtls_ssl_get_bytes_avail: extra data (max)" \
6717 "$P_SRV buffer_size=100" \
6718 "$P_CLI request_size=$MAX_CONTENT_LEN" \
6719 0 \
6720 -s "Read from client: $MAX_CONTENT_LEN bytes read (100 + $((MAX_CONTENT_LEN - 100)))"
Manuel Pégourié-Gonnard90805a82014-06-11 14:06:01 +02006721
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006722# Tests for small client packets
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006723
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006724run_test "Small client packet SSLv3 BlockCipher" \
Manuel Pégourié-Gonnard448ea502015-01-12 11:40:14 +01006725 "$P_SRV min_version=ssl3" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006726 "$P_CLI request_size=1 force_version=ssl3 \
6727 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6728 0 \
6729 -s "Read from client: 1 bytes read"
6730
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006731run_test "Small client packet SSLv3 StreamCipher" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01006732 "$P_SRV min_version=ssl3 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006733 "$P_CLI request_size=1 force_version=ssl3 \
6734 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
6735 0 \
6736 -s "Read from client: 1 bytes read"
6737
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006738run_test "Small client packet TLS 1.0 BlockCipher" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006739 "$P_SRV" \
6740 "$P_CLI request_size=1 force_version=tls1 \
6741 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6742 0 \
6743 -s "Read from client: 1 bytes read"
6744
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006745run_test "Small client packet TLS 1.0 BlockCipher, without EtM" \
Manuel Pégourié-Gonnard169dd6a2014-11-04 16:15:39 +01006746 "$P_SRV" \
6747 "$P_CLI request_size=1 force_version=tls1 etm=0 \
6748 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6749 0 \
6750 -s "Read from client: 1 bytes read"
6751
Hanno Becker32c55012017-11-10 08:42:54 +00006752requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006753run_test "Small client packet TLS 1.0 BlockCipher, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006754 "$P_SRV trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006755 "$P_CLI request_size=1 force_version=tls1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006756 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006757 0 \
6758 -s "Read from client: 1 bytes read"
6759
Hanno Becker32c55012017-11-10 08:42:54 +00006760requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006761run_test "Small client packet TLS 1.0 BlockCipher, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006762 "$P_SRV trunc_hmac=1" \
Hanno Becker8501f982017-11-10 08:59:04 +00006763 "$P_CLI request_size=1 force_version=tls1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006764 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
Hanno Becker8501f982017-11-10 08:59:04 +00006765 0 \
6766 -s "Read from client: 1 bytes read"
6767
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006768run_test "Small client packet TLS 1.0 StreamCipher" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01006769 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006770 "$P_CLI request_size=1 force_version=tls1 \
Hanno Becker8501f982017-11-10 08:59:04 +00006771 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
6772 0 \
6773 -s "Read from client: 1 bytes read"
6774
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006775run_test "Small client packet TLS 1.0 StreamCipher, without EtM" \
Hanno Becker8501f982017-11-10 08:59:04 +00006776 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
6777 "$P_CLI request_size=1 force_version=tls1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006778 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
Hanno Becker8501f982017-11-10 08:59:04 +00006779 0 \
6780 -s "Read from client: 1 bytes read"
6781
6782requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006783run_test "Small client packet TLS 1.0 StreamCipher, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006784 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006785 "$P_CLI request_size=1 force_version=tls1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006786 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006787 0 \
6788 -s "Read from client: 1 bytes read"
6789
Hanno Becker8501f982017-11-10 08:59:04 +00006790requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006791run_test "Small client packet TLS 1.0 StreamCipher, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006792 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
6793 "$P_CLI request_size=1 force_version=tls1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA \
6794 trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006795 0 \
6796 -s "Read from client: 1 bytes read"
6797
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006798run_test "Small client packet TLS 1.1 BlockCipher" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006799 "$P_SRV" \
6800 "$P_CLI request_size=1 force_version=tls1_1 \
6801 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6802 0 \
6803 -s "Read from client: 1 bytes read"
6804
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006805run_test "Small client packet TLS 1.1 BlockCipher, without EtM" \
Manuel Pégourié-Gonnard169dd6a2014-11-04 16:15:39 +01006806 "$P_SRV" \
Hanno Becker8501f982017-11-10 08:59:04 +00006807 "$P_CLI request_size=1 force_version=tls1_1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006808 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA etm=0" \
Hanno Becker8501f982017-11-10 08:59:04 +00006809 0 \
6810 -s "Read from client: 1 bytes read"
6811
6812requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006813run_test "Small client packet TLS 1.1 BlockCipher, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006814 "$P_SRV trunc_hmac=1" \
Hanno Becker8501f982017-11-10 08:59:04 +00006815 "$P_CLI request_size=1 force_version=tls1_1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006816 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
Hanno Becker8501f982017-11-10 08:59:04 +00006817 0 \
6818 -s "Read from client: 1 bytes read"
6819
6820requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006821run_test "Small client packet TLS 1.1 BlockCipher, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006822 "$P_SRV trunc_hmac=1" \
Hanno Becker8501f982017-11-10 08:59:04 +00006823 "$P_CLI request_size=1 force_version=tls1_1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006824 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnard169dd6a2014-11-04 16:15:39 +01006825 0 \
6826 -s "Read from client: 1 bytes read"
6827
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006828run_test "Small client packet TLS 1.1 StreamCipher" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01006829 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006830 "$P_CLI request_size=1 force_version=tls1_1 \
6831 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
6832 0 \
6833 -s "Read from client: 1 bytes read"
6834
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006835run_test "Small client packet TLS 1.1 StreamCipher, without EtM" \
Hanno Becker8501f982017-11-10 08:59:04 +00006836 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006837 "$P_CLI request_size=1 force_version=tls1_1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006838 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006839 0 \
6840 -s "Read from client: 1 bytes read"
6841
Hanno Becker8501f982017-11-10 08:59:04 +00006842requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006843run_test "Small client packet TLS 1.1 StreamCipher, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006844 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006845 "$P_CLI request_size=1 force_version=tls1_1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006846 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006847 0 \
6848 -s "Read from client: 1 bytes read"
6849
Hanno Becker32c55012017-11-10 08:42:54 +00006850requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006851run_test "Small client packet TLS 1.1 StreamCipher, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006852 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006853 "$P_CLI request_size=1 force_version=tls1_1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006854 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006855 0 \
6856 -s "Read from client: 1 bytes read"
6857
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006858run_test "Small client packet TLS 1.2 BlockCipher" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006859 "$P_SRV" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006860 "$P_CLI request_size=1 force_version=tls12 \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006861 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6862 0 \
6863 -s "Read from client: 1 bytes read"
6864
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006865run_test "Small client packet TLS 1.2 BlockCipher, without EtM" \
Manuel Pégourié-Gonnard169dd6a2014-11-04 16:15:39 +01006866 "$P_SRV" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006867 "$P_CLI request_size=1 force_version=tls12 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006868 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA etm=0" \
Manuel Pégourié-Gonnard169dd6a2014-11-04 16:15:39 +01006869 0 \
6870 -s "Read from client: 1 bytes read"
6871
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006872run_test "Small client packet TLS 1.2 BlockCipher larger MAC" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006873 "$P_SRV" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006874 "$P_CLI request_size=1 force_version=tls12 \
Manuel Pégourié-Gonnardc82ee352015-01-07 16:35:25 +01006875 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006876 0 \
6877 -s "Read from client: 1 bytes read"
6878
Hanno Becker32c55012017-11-10 08:42:54 +00006879requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006880run_test "Small client packet TLS 1.2 BlockCipher, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006881 "$P_SRV trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006882 "$P_CLI request_size=1 force_version=tls12 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006883 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006884 0 \
6885 -s "Read from client: 1 bytes read"
6886
Hanno Becker8501f982017-11-10 08:59:04 +00006887requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006888run_test "Small client packet TLS 1.2 BlockCipher, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006889 "$P_SRV trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006890 "$P_CLI request_size=1 force_version=tls12 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006891 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006892 0 \
6893 -s "Read from client: 1 bytes read"
6894
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006895run_test "Small client packet TLS 1.2 StreamCipher" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01006896 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006897 "$P_CLI request_size=1 force_version=tls12 \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006898 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
6899 0 \
6900 -s "Read from client: 1 bytes read"
6901
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006902run_test "Small client packet TLS 1.2 StreamCipher, without EtM" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01006903 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006904 "$P_CLI request_size=1 force_version=tls12 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006905 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
Hanno Becker8501f982017-11-10 08:59:04 +00006906 0 \
6907 -s "Read from client: 1 bytes read"
6908
Hanno Becker32c55012017-11-10 08:42:54 +00006909requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006910run_test "Small client packet TLS 1.2 StreamCipher, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006911 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006912 "$P_CLI request_size=1 force_version=tls12 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006913 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006914 0 \
6915 -s "Read from client: 1 bytes read"
6916
Hanno Becker8501f982017-11-10 08:59:04 +00006917requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006918run_test "Small client packet TLS 1.2 StreamCipher, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006919 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006920 "$P_CLI request_size=1 force_version=tls12 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006921 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006922 0 \
6923 -s "Read from client: 1 bytes read"
6924
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006925run_test "Small client packet TLS 1.2 AEAD" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006926 "$P_SRV" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006927 "$P_CLI request_size=1 force_version=tls12 \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006928 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \
6929 0 \
6930 -s "Read from client: 1 bytes read"
6931
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006932run_test "Small client packet TLS 1.2 AEAD shorter tag" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006933 "$P_SRV" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006934 "$P_CLI request_size=1 force_version=tls12 \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02006935 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \
6936 0 \
6937 -s "Read from client: 1 bytes read"
6938
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006939# Tests for small client packets in DTLS
Hanno Beckere2148042017-11-10 08:59:18 +00006940
6941requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006942run_test "Small client packet DTLS 1.0" \
Hanno Beckere2148042017-11-10 08:59:18 +00006943 "$P_SRV dtls=1 force_version=dtls1" \
6944 "$P_CLI dtls=1 request_size=1 \
6945 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6946 0 \
6947 -s "Read from client: 1 bytes read"
6948
6949requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006950run_test "Small client packet DTLS 1.0, without EtM" \
Hanno Beckere2148042017-11-10 08:59:18 +00006951 "$P_SRV dtls=1 force_version=dtls1 etm=0" \
6952 "$P_CLI dtls=1 request_size=1 \
6953 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6954 0 \
6955 -s "Read from client: 1 bytes read"
6956
6957requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
6958requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006959run_test "Small client packet DTLS 1.0, truncated hmac" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006960 "$P_SRV dtls=1 force_version=dtls1 trunc_hmac=1" \
6961 "$P_CLI dtls=1 request_size=1 trunc_hmac=1 \
Hanno Beckere2148042017-11-10 08:59:18 +00006962 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6963 0 \
6964 -s "Read from client: 1 bytes read"
6965
6966requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
6967requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006968run_test "Small client packet DTLS 1.0, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00006969 "$P_SRV dtls=1 force_version=dtls1 trunc_hmac=1 etm=0" \
Hanno Beckere2148042017-11-10 08:59:18 +00006970 "$P_CLI dtls=1 request_size=1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006971 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1"\
Hanno Beckere2148042017-11-10 08:59:18 +00006972 0 \
6973 -s "Read from client: 1 bytes read"
6974
6975requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006976run_test "Small client packet DTLS 1.2" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006977 "$P_SRV dtls=1 force_version=dtls12" \
Hanno Beckere2148042017-11-10 08:59:18 +00006978 "$P_CLI dtls=1 request_size=1 \
6979 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6980 0 \
6981 -s "Read from client: 1 bytes read"
6982
6983requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006984run_test "Small client packet DTLS 1.2, without EtM" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006985 "$P_SRV dtls=1 force_version=dtls12 etm=0" \
Hanno Beckere2148042017-11-10 08:59:18 +00006986 "$P_CLI dtls=1 request_size=1 \
6987 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
6988 0 \
6989 -s "Read from client: 1 bytes read"
6990
6991requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
6992requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04006993run_test "Small client packet DTLS 1.2, truncated hmac" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00006994 "$P_SRV dtls=1 force_version=dtls12 trunc_hmac=1" \
Hanno Beckere2148042017-11-10 08:59:18 +00006995 "$P_CLI dtls=1 request_size=1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00006996 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
Hanno Beckere2148042017-11-10 08:59:18 +00006997 0 \
6998 -s "Read from client: 1 bytes read"
6999
7000requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
7001requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007002run_test "Small client packet DTLS 1.2, without EtM, truncated MAC" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007003 "$P_SRV dtls=1 force_version=dtls12 trunc_hmac=1 etm=0" \
Hanno Beckere2148042017-11-10 08:59:18 +00007004 "$P_CLI dtls=1 request_size=1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007005 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1"\
Hanno Beckere2148042017-11-10 08:59:18 +00007006 0 \
7007 -s "Read from client: 1 bytes read"
7008
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007009# Tests for small server packets
7010
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007011run_test "Small server packet SSLv3 BlockCipher" \
7012 "$P_SRV response_size=1 min_version=ssl3" \
7013 "$P_CLI force_version=ssl3 \
7014 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7015 0 \
7016 -c "Read from server: 1 bytes read"
7017
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007018run_test "Small server packet SSLv3 StreamCipher" \
7019 "$P_SRV response_size=1 min_version=ssl3 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7020 "$P_CLI force_version=ssl3 \
7021 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7022 0 \
7023 -c "Read from server: 1 bytes read"
7024
7025run_test "Small server packet TLS 1.0 BlockCipher" \
7026 "$P_SRV response_size=1" \
7027 "$P_CLI force_version=tls1 \
7028 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7029 0 \
7030 -c "Read from server: 1 bytes read"
7031
7032run_test "Small server packet TLS 1.0 BlockCipher, without EtM" \
7033 "$P_SRV response_size=1" \
7034 "$P_CLI force_version=tls1 etm=0 \
7035 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7036 0 \
7037 -c "Read from server: 1 bytes read"
7038
7039requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7040run_test "Small server packet TLS 1.0 BlockCipher, truncated MAC" \
7041 "$P_SRV response_size=1 trunc_hmac=1" \
7042 "$P_CLI force_version=tls1 \
7043 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
7044 0 \
7045 -c "Read from server: 1 bytes read"
7046
7047requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7048run_test "Small server packet TLS 1.0 BlockCipher, without EtM, truncated MAC" \
7049 "$P_SRV response_size=1 trunc_hmac=1" \
7050 "$P_CLI force_version=tls1 \
7051 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
7052 0 \
7053 -c "Read from server: 1 bytes read"
7054
7055run_test "Small server packet TLS 1.0 StreamCipher" \
7056 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7057 "$P_CLI force_version=tls1 \
7058 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7059 0 \
7060 -c "Read from server: 1 bytes read"
7061
7062run_test "Small server packet TLS 1.0 StreamCipher, without EtM" \
7063 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7064 "$P_CLI force_version=tls1 \
7065 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
7066 0 \
7067 -c "Read from server: 1 bytes read"
7068
7069requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7070run_test "Small server packet TLS 1.0 StreamCipher, truncated MAC" \
7071 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
7072 "$P_CLI force_version=tls1 \
7073 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
7074 0 \
7075 -c "Read from server: 1 bytes read"
7076
7077requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7078run_test "Small server packet TLS 1.0 StreamCipher, without EtM, truncated MAC" \
7079 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
7080 "$P_CLI force_version=tls1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA \
7081 trunc_hmac=1 etm=0" \
7082 0 \
7083 -c "Read from server: 1 bytes read"
7084
7085run_test "Small server packet TLS 1.1 BlockCipher" \
7086 "$P_SRV response_size=1" \
7087 "$P_CLI force_version=tls1_1 \
7088 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7089 0 \
7090 -c "Read from server: 1 bytes read"
7091
7092run_test "Small server packet TLS 1.1 BlockCipher, without EtM" \
7093 "$P_SRV response_size=1" \
7094 "$P_CLI force_version=tls1_1 \
7095 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA etm=0" \
7096 0 \
7097 -c "Read from server: 1 bytes read"
7098
7099requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7100run_test "Small server packet TLS 1.1 BlockCipher, truncated MAC" \
7101 "$P_SRV response_size=1 trunc_hmac=1" \
7102 "$P_CLI force_version=tls1_1 \
7103 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
7104 0 \
7105 -c "Read from server: 1 bytes read"
7106
7107requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7108run_test "Small server packet TLS 1.1 BlockCipher, without EtM, truncated MAC" \
7109 "$P_SRV response_size=1 trunc_hmac=1" \
7110 "$P_CLI force_version=tls1_1 \
7111 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
7112 0 \
7113 -c "Read from server: 1 bytes read"
7114
7115run_test "Small server packet TLS 1.1 StreamCipher" \
7116 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7117 "$P_CLI force_version=tls1_1 \
7118 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7119 0 \
7120 -c "Read from server: 1 bytes read"
7121
7122run_test "Small server packet TLS 1.1 StreamCipher, without EtM" \
7123 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7124 "$P_CLI force_version=tls1_1 \
7125 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
7126 0 \
7127 -c "Read from server: 1 bytes read"
7128
7129requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7130run_test "Small server packet TLS 1.1 StreamCipher, truncated MAC" \
7131 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
7132 "$P_CLI force_version=tls1_1 \
7133 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
7134 0 \
7135 -c "Read from server: 1 bytes read"
7136
7137requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7138run_test "Small server packet TLS 1.1 StreamCipher, without EtM, truncated MAC" \
7139 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
7140 "$P_CLI force_version=tls1_1 \
7141 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
7142 0 \
7143 -c "Read from server: 1 bytes read"
7144
7145run_test "Small server packet TLS 1.2 BlockCipher" \
7146 "$P_SRV response_size=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007147 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007148 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7149 0 \
7150 -c "Read from server: 1 bytes read"
7151
7152run_test "Small server packet TLS 1.2 BlockCipher, without EtM" \
7153 "$P_SRV response_size=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007154 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007155 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA etm=0" \
7156 0 \
7157 -c "Read from server: 1 bytes read"
7158
7159run_test "Small server packet TLS 1.2 BlockCipher larger MAC" \
7160 "$P_SRV response_size=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007161 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007162 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \
7163 0 \
7164 -c "Read from server: 1 bytes read"
7165
7166requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7167run_test "Small server packet TLS 1.2 BlockCipher, truncated MAC" \
7168 "$P_SRV response_size=1 trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007169 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007170 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
7171 0 \
7172 -c "Read from server: 1 bytes read"
7173
7174requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7175run_test "Small server packet TLS 1.2 BlockCipher, without EtM, truncated MAC" \
7176 "$P_SRV response_size=1 trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007177 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007178 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
7179 0 \
7180 -c "Read from server: 1 bytes read"
7181
7182run_test "Small server packet TLS 1.2 StreamCipher" \
7183 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007184 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007185 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7186 0 \
7187 -c "Read from server: 1 bytes read"
7188
7189run_test "Small server packet TLS 1.2 StreamCipher, without EtM" \
7190 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007191 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007192 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
7193 0 \
7194 -c "Read from server: 1 bytes read"
7195
7196requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7197run_test "Small server packet TLS 1.2 StreamCipher, truncated MAC" \
7198 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007199 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007200 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
7201 0 \
7202 -c "Read from server: 1 bytes read"
7203
7204requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7205run_test "Small server packet TLS 1.2 StreamCipher, without EtM, truncated MAC" \
7206 "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007207 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007208 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
7209 0 \
7210 -c "Read from server: 1 bytes read"
7211
7212run_test "Small server packet TLS 1.2 AEAD" \
7213 "$P_SRV response_size=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007214 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007215 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \
7216 0 \
7217 -c "Read from server: 1 bytes read"
7218
7219run_test "Small server packet TLS 1.2 AEAD shorter tag" \
7220 "$P_SRV response_size=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007221 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007222 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \
7223 0 \
7224 -c "Read from server: 1 bytes read"
7225
7226# Tests for small server packets in DTLS
7227
7228requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
7229run_test "Small server packet DTLS 1.0" \
7230 "$P_SRV dtls=1 response_size=1 force_version=dtls1" \
7231 "$P_CLI dtls=1 \
7232 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7233 0 \
7234 -c "Read from server: 1 bytes read"
7235
7236requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
7237run_test "Small server packet DTLS 1.0, without EtM" \
7238 "$P_SRV dtls=1 response_size=1 force_version=dtls1 etm=0" \
7239 "$P_CLI dtls=1 \
7240 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7241 0 \
7242 -c "Read from server: 1 bytes read"
7243
7244requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
7245requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7246run_test "Small server packet DTLS 1.0, truncated hmac" \
7247 "$P_SRV dtls=1 response_size=1 force_version=dtls1 trunc_hmac=1" \
7248 "$P_CLI dtls=1 trunc_hmac=1 \
7249 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7250 0 \
7251 -c "Read from server: 1 bytes read"
7252
7253requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
7254requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7255run_test "Small server packet DTLS 1.0, without EtM, truncated MAC" \
7256 "$P_SRV dtls=1 response_size=1 force_version=dtls1 trunc_hmac=1 etm=0" \
7257 "$P_CLI dtls=1 \
7258 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1"\
7259 0 \
7260 -c "Read from server: 1 bytes read"
7261
7262requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
7263run_test "Small server packet DTLS 1.2" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007264 "$P_SRV dtls=1 response_size=1 force_version=dtls12" \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007265 "$P_CLI dtls=1 \
7266 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7267 0 \
7268 -c "Read from server: 1 bytes read"
7269
7270requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
7271run_test "Small server packet DTLS 1.2, without EtM" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007272 "$P_SRV dtls=1 response_size=1 force_version=dtls12 etm=0" \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007273 "$P_CLI dtls=1 \
7274 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7275 0 \
7276 -c "Read from server: 1 bytes read"
7277
7278requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
7279requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7280run_test "Small server packet DTLS 1.2, truncated hmac" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007281 "$P_SRV dtls=1 response_size=1 force_version=dtls12 trunc_hmac=1" \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007282 "$P_CLI dtls=1 \
7283 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
7284 0 \
7285 -c "Read from server: 1 bytes read"
7286
7287requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
7288requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7289run_test "Small server packet DTLS 1.2, without EtM, truncated MAC" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007290 "$P_SRV dtls=1 response_size=1 force_version=dtls12 trunc_hmac=1 etm=0" \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007291 "$P_CLI dtls=1 \
7292 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1"\
7293 0 \
7294 -c "Read from server: 1 bytes read"
7295
Janos Follath00efff72016-05-06 13:48:23 +01007296# A test for extensions in SSLv3
Yuto Takanoa49124e2021-07-08 15:56:33 +01007297requires_max_content_len 4096
Janos Follath00efff72016-05-06 13:48:23 +01007298run_test "SSLv3 with extensions, server side" \
7299 "$P_SRV min_version=ssl3 debug_level=3" \
7300 "$P_CLI force_version=ssl3 tickets=1 max_frag_len=4096 alpn=abc,1234" \
7301 0 \
7302 -S "dumping 'client hello extensions'" \
7303 -S "server hello, total extension length:"
7304
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007305# Test for large client packets
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007306
Angus Grattonc4dd0732018-04-11 16:28:39 +10007307# How many fragments do we expect to write $1 bytes?
7308fragments_for_write() {
7309 echo "$(( ( $1 + $MAX_OUT_LEN - 1 ) / $MAX_OUT_LEN ))"
7310}
7311
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007312run_test "Large client packet SSLv3 BlockCipher" \
Manuel Pégourié-Gonnard448ea502015-01-12 11:40:14 +01007313 "$P_SRV min_version=ssl3" \
Manuel Pégourié-Gonnardc82ee352015-01-07 16:35:25 +01007314 "$P_CLI request_size=16384 force_version=ssl3 recsplit=0 \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007315 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7316 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007317 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7318 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007319
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007320run_test "Large client packet SSLv3 StreamCipher" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01007321 "$P_SRV min_version=ssl3 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007322 "$P_CLI request_size=16384 force_version=ssl3 \
7323 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7324 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007325 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7326 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007327
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007328run_test "Large client packet TLS 1.0 BlockCipher" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007329 "$P_SRV" \
Manuel Pégourié-Gonnardc82ee352015-01-07 16:35:25 +01007330 "$P_CLI request_size=16384 force_version=tls1 recsplit=0 \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007331 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7332 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007333 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7334 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007335
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007336run_test "Large client packet TLS 1.0 BlockCipher, without EtM" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007337 "$P_SRV" \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007338 "$P_CLI request_size=16384 force_version=tls1 etm=0 recsplit=0 \
7339 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7340 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007341 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Hanno Becker278fc7a2017-11-10 09:16:28 +00007342
Hanno Becker32c55012017-11-10 08:42:54 +00007343requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007344run_test "Large client packet TLS 1.0 BlockCipher, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00007345 "$P_SRV trunc_hmac=1" \
Manuel Pégourié-Gonnardc82ee352015-01-07 16:35:25 +01007346 "$P_CLI request_size=16384 force_version=tls1 recsplit=0 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007347 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007348 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007349 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7350 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007351
Hanno Becker32c55012017-11-10 08:42:54 +00007352requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007353run_test "Large client packet TLS 1.0 BlockCipher, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00007354 "$P_SRV trunc_hmac=1" \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007355 "$P_CLI request_size=16384 force_version=tls1 etm=0 recsplit=0 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007356 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007357 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007358 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Hanno Becker278fc7a2017-11-10 09:16:28 +00007359
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007360run_test "Large client packet TLS 1.0 StreamCipher" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01007361 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007362 "$P_CLI request_size=16384 force_version=tls1 \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007363 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7364 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007365 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Hanno Becker278fc7a2017-11-10 09:16:28 +00007366
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007367run_test "Large client packet TLS 1.0 StreamCipher, without EtM" \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007368 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7369 "$P_CLI request_size=16384 force_version=tls1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007370 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007371 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007372 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Hanno Becker278fc7a2017-11-10 09:16:28 +00007373
7374requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007375run_test "Large client packet TLS 1.0 StreamCipher, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00007376 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007377 "$P_CLI request_size=16384 force_version=tls1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007378 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007379 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007380 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007381
Hanno Becker278fc7a2017-11-10 09:16:28 +00007382requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007383run_test "Large client packet TLS 1.0 StreamCipher, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00007384 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007385 "$P_CLI request_size=16384 force_version=tls1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007386 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007387 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007388 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7389 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007390
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007391run_test "Large client packet TLS 1.1 BlockCipher" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007392 "$P_SRV" \
7393 "$P_CLI request_size=16384 force_version=tls1_1 \
7394 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7395 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007396 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7397 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007398
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007399run_test "Large client packet TLS 1.1 BlockCipher, without EtM" \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007400 "$P_SRV" \
7401 "$P_CLI request_size=16384 force_version=tls1_1 etm=0 \
7402 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007403 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007404 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007405
Hanno Becker32c55012017-11-10 08:42:54 +00007406requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007407run_test "Large client packet TLS 1.1 BlockCipher, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00007408 "$P_SRV trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007409 "$P_CLI request_size=16384 force_version=tls1_1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007410 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007411 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007412 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007413
Hanno Becker32c55012017-11-10 08:42:54 +00007414requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007415run_test "Large client packet TLS 1.1 BlockCipher, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00007416 "$P_SRV trunc_hmac=1" \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007417 "$P_CLI request_size=16384 force_version=tls1_1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007418 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007419 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007420 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Hanno Becker278fc7a2017-11-10 09:16:28 +00007421
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007422run_test "Large client packet TLS 1.1 StreamCipher" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007423 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7424 "$P_CLI request_size=16384 force_version=tls1_1 \
7425 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7426 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007427 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7428 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007429
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007430run_test "Large client packet TLS 1.1 StreamCipher, without EtM" \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007431 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007432 "$P_CLI request_size=16384 force_version=tls1_1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007433 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007434 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007435 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7436 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007437
Hanno Becker278fc7a2017-11-10 09:16:28 +00007438requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007439run_test "Large client packet TLS 1.1 StreamCipher, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00007440 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007441 "$P_CLI request_size=16384 force_version=tls1_1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007442 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007443 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007444 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007445
Hanno Becker278fc7a2017-11-10 09:16:28 +00007446requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007447run_test "Large client packet TLS 1.1 StreamCipher, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00007448 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007449 "$P_CLI request_size=16384 force_version=tls1_1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007450 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007451 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007452 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7453 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007454
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007455run_test "Large client packet TLS 1.2 BlockCipher" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007456 "$P_SRV" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007457 "$P_CLI request_size=16384 force_version=tls12 \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007458 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7459 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007460 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7461 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007462
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007463run_test "Large client packet TLS 1.2 BlockCipher, without EtM" \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007464 "$P_SRV" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007465 "$P_CLI request_size=16384 force_version=tls12 etm=0 \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007466 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7467 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007468 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Hanno Becker278fc7a2017-11-10 09:16:28 +00007469
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007470run_test "Large client packet TLS 1.2 BlockCipher larger MAC" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007471 "$P_SRV" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007472 "$P_CLI request_size=16384 force_version=tls12 \
Manuel Pégourié-Gonnardc82ee352015-01-07 16:35:25 +01007473 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007474 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007475 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7476 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007477
Hanno Becker32c55012017-11-10 08:42:54 +00007478requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007479run_test "Large client packet TLS 1.2 BlockCipher, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00007480 "$P_SRV trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007481 "$P_CLI request_size=16384 force_version=tls12 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007482 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007483 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007484 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007485
Hanno Becker278fc7a2017-11-10 09:16:28 +00007486requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007487run_test "Large client packet TLS 1.2 BlockCipher, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00007488 "$P_SRV trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007489 "$P_CLI request_size=16384 force_version=tls12 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007490 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007491 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007492 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7493 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007494
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007495run_test "Large client packet TLS 1.2 StreamCipher" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01007496 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007497 "$P_CLI request_size=16384 force_version=tls12 \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007498 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7499 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007500 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7501 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007502
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007503run_test "Large client packet TLS 1.2 StreamCipher, without EtM" \
Manuel Pégourié-Gonnardea0920f2015-03-24 09:50:15 +01007504 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007505 "$P_CLI request_size=16384 force_version=tls12 \
Hanno Becker278fc7a2017-11-10 09:16:28 +00007506 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
7507 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007508 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Hanno Becker278fc7a2017-11-10 09:16:28 +00007509
Hanno Becker32c55012017-11-10 08:42:54 +00007510requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007511run_test "Large client packet TLS 1.2 StreamCipher, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00007512 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007513 "$P_CLI request_size=16384 force_version=tls12 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007514 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007515 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007516 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007517
Hanno Becker278fc7a2017-11-10 09:16:28 +00007518requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007519run_test "Large client packet TLS 1.2 StreamCipher, without EtM, truncated MAC" \
Hanno Becker909f9a32017-11-21 17:10:12 +00007520 "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007521 "$P_CLI request_size=16384 force_version=tls12 \
Hanno Becker909f9a32017-11-21 17:10:12 +00007522 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007523 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007524 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7525 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007526
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007527run_test "Large client packet TLS 1.2 AEAD" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007528 "$P_SRV" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007529 "$P_CLI request_size=16384 force_version=tls12 \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007530 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \
7531 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007532 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7533 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007534
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007535run_test "Large client packet TLS 1.2 AEAD shorter tag" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007536 "$P_SRV" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007537 "$P_CLI request_size=16384 force_version=tls12 \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007538 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \
7539 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10007540 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
7541 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02007542
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007543# Test for large server packets
Yuto Takanoa49124e2021-07-08 15:56:33 +01007544# The tests below fail when the server's OUT_CONTENT_LEN is less than 16384.
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007545run_test "Large server packet SSLv3 StreamCipher" \
7546 "$P_SRV response_size=16384 min_version=ssl3 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7547 "$P_CLI force_version=ssl3 \
7548 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7549 0 \
7550 -c "Read from server: 16384 bytes read"
7551
Andrzej Kurek6a4f2242018-08-27 08:00:13 -04007552# Checking next 4 tests logs for 1n-1 split against BEAST too
Andrzej Kurek6a4f2242018-08-27 08:00:13 -04007553run_test "Large server packet SSLv3 BlockCipher" \
7554 "$P_SRV response_size=16384 min_version=ssl3" \
7555 "$P_CLI force_version=ssl3 recsplit=0 \
7556 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7557 0 \
7558 -c "Read from server: 1 bytes read"\
7559 -c "16383 bytes read"\
7560 -C "Read from server: 16384 bytes read"
7561
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007562run_test "Large server packet TLS 1.0 BlockCipher" \
7563 "$P_SRV response_size=16384" \
7564 "$P_CLI force_version=tls1 recsplit=0 \
7565 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7566 0 \
7567 -c "Read from server: 1 bytes read"\
7568 -c "16383 bytes read"\
7569 -C "Read from server: 16384 bytes read"
7570
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007571run_test "Large server packet TLS 1.0 BlockCipher, without EtM" \
7572 "$P_SRV response_size=16384" \
7573 "$P_CLI force_version=tls1 etm=0 recsplit=0 \
7574 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7575 0 \
7576 -c "Read from server: 1 bytes read"\
7577 -c "16383 bytes read"\
7578 -C "Read from server: 16384 bytes read"
7579
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007580requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7581run_test "Large server packet TLS 1.0 BlockCipher truncated MAC" \
7582 "$P_SRV response_size=16384" \
7583 "$P_CLI force_version=tls1 recsplit=0 \
7584 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA \
7585 trunc_hmac=1" \
7586 0 \
7587 -c "Read from server: 1 bytes read"\
7588 -c "16383 bytes read"\
7589 -C "Read from server: 16384 bytes read"
7590
7591requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7592run_test "Large server packet TLS 1.0 StreamCipher truncated MAC" \
7593 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7594 "$P_CLI force_version=tls1 \
7595 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA \
7596 trunc_hmac=1" \
7597 0 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007598 -s "16384 bytes written in 1 fragments" \
7599 -c "Read from server: 16384 bytes read"
7600
7601run_test "Large server packet TLS 1.0 StreamCipher" \
7602 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7603 "$P_CLI force_version=tls1 \
7604 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7605 0 \
7606 -s "16384 bytes written in 1 fragments" \
7607 -c "Read from server: 16384 bytes read"
7608
7609run_test "Large server packet TLS 1.0 StreamCipher, without EtM" \
7610 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7611 "$P_CLI force_version=tls1 \
7612 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
7613 0 \
7614 -s "16384 bytes written in 1 fragments" \
7615 -c "Read from server: 16384 bytes read"
7616
7617requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7618run_test "Large server packet TLS 1.0 StreamCipher, truncated MAC" \
7619 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
7620 "$P_CLI force_version=tls1 \
7621 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
7622 0 \
7623 -s "16384 bytes written in 1 fragments" \
7624 -c "Read from server: 16384 bytes read"
7625
7626requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7627run_test "Large server packet TLS 1.0 StreamCipher, without EtM, truncated MAC" \
7628 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
7629 "$P_CLI force_version=tls1 \
7630 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
7631 0 \
7632 -s "16384 bytes written in 1 fragments" \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007633 -c "Read from server: 16384 bytes read"
7634
7635run_test "Large server packet TLS 1.1 BlockCipher" \
7636 "$P_SRV response_size=16384" \
7637 "$P_CLI force_version=tls1_1 \
7638 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7639 0 \
7640 -c "Read from server: 16384 bytes read"
7641
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007642run_test "Large server packet TLS 1.1 BlockCipher, without EtM" \
7643 "$P_SRV response_size=16384" \
7644 "$P_CLI force_version=tls1_1 etm=0 \
7645 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007646 0 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007647 -s "16384 bytes written in 1 fragments" \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007648 -c "Read from server: 16384 bytes read"
7649
7650requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7651run_test "Large server packet TLS 1.1 BlockCipher truncated MAC" \
7652 "$P_SRV response_size=16384" \
7653 "$P_CLI force_version=tls1_1 \
7654 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA \
7655 trunc_hmac=1" \
7656 0 \
7657 -c "Read from server: 16384 bytes read"
7658
7659requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007660run_test "Large server packet TLS 1.1 BlockCipher, without EtM, truncated MAC" \
7661 "$P_SRV response_size=16384 trunc_hmac=1" \
7662 "$P_CLI force_version=tls1_1 \
7663 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
7664 0 \
7665 -s "16384 bytes written in 1 fragments" \
7666 -c "Read from server: 16384 bytes read"
7667
7668run_test "Large server packet TLS 1.1 StreamCipher" \
7669 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7670 "$P_CLI force_version=tls1_1 \
7671 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7672 0 \
7673 -c "Read from server: 16384 bytes read"
7674
7675run_test "Large server packet TLS 1.1 StreamCipher, without EtM" \
7676 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7677 "$P_CLI force_version=tls1_1 \
7678 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
7679 0 \
7680 -s "16384 bytes written in 1 fragments" \
7681 -c "Read from server: 16384 bytes read"
7682
7683requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007684run_test "Large server packet TLS 1.1 StreamCipher truncated MAC" \
7685 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7686 "$P_CLI force_version=tls1_1 \
7687 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA \
7688 trunc_hmac=1" \
7689 0 \
7690 -c "Read from server: 16384 bytes read"
7691
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007692run_test "Large server packet TLS 1.1 StreamCipher, without EtM, truncated MAC" \
7693 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
7694 "$P_CLI force_version=tls1_1 \
7695 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
7696 0 \
7697 -s "16384 bytes written in 1 fragments" \
7698 -c "Read from server: 16384 bytes read"
7699
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007700run_test "Large server packet TLS 1.2 BlockCipher" \
7701 "$P_SRV response_size=16384" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007702 "$P_CLI force_version=tls12 \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007703 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7704 0 \
7705 -c "Read from server: 16384 bytes read"
7706
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007707run_test "Large server packet TLS 1.2 BlockCipher, without EtM" \
7708 "$P_SRV response_size=16384" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007709 "$P_CLI force_version=tls12 etm=0 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007710 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
7711 0 \
7712 -s "16384 bytes written in 1 fragments" \
7713 -c "Read from server: 16384 bytes read"
7714
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007715run_test "Large server packet TLS 1.2 BlockCipher larger MAC" \
7716 "$P_SRV response_size=16384" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007717 "$P_CLI force_version=tls12 \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007718 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \
7719 0 \
7720 -c "Read from server: 16384 bytes read"
7721
7722requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7723run_test "Large server packet TLS 1.2 BlockCipher truncated MAC" \
7724 "$P_SRV response_size=16384" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007725 "$P_CLI force_version=tls12 \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007726 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA \
7727 trunc_hmac=1" \
7728 0 \
7729 -c "Read from server: 16384 bytes read"
7730
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007731run_test "Large server packet TLS 1.2 BlockCipher, without EtM, truncated MAC" \
7732 "$P_SRV response_size=16384 trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007733 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007734 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
7735 0 \
7736 -s "16384 bytes written in 1 fragments" \
7737 -c "Read from server: 16384 bytes read"
7738
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007739run_test "Large server packet TLS 1.2 StreamCipher" \
7740 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007741 "$P_CLI force_version=tls12 \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007742 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
7743 0 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007744 -s "16384 bytes written in 1 fragments" \
7745 -c "Read from server: 16384 bytes read"
7746
7747run_test "Large server packet TLS 1.2 StreamCipher, without EtM" \
7748 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007749 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007750 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \
7751 0 \
7752 -s "16384 bytes written in 1 fragments" \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007753 -c "Read from server: 16384 bytes read"
7754
7755requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7756run_test "Large server packet TLS 1.2 StreamCipher truncated MAC" \
7757 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007758 "$P_CLI force_version=tls12 \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007759 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA \
7760 trunc_hmac=1" \
7761 0 \
7762 -c "Read from server: 16384 bytes read"
7763
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007764requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC
7765run_test "Large server packet TLS 1.2 StreamCipher, without EtM, truncated MAC" \
7766 "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007767 "$P_CLI force_version=tls12 \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04007768 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \
7769 0 \
7770 -s "16384 bytes written in 1 fragments" \
7771 -c "Read from server: 16384 bytes read"
7772
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007773run_test "Large server packet TLS 1.2 AEAD" \
7774 "$P_SRV response_size=16384" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007775 "$P_CLI force_version=tls12 \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007776 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \
7777 0 \
7778 -c "Read from server: 16384 bytes read"
7779
7780run_test "Large server packet TLS 1.2 AEAD shorter tag" \
7781 "$P_SRV response_size=16384" \
Xiaofei Baif40545d2021-12-02 08:43:35 +00007782 "$P_CLI force_version=tls12 \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02007783 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \
7784 0 \
7785 -c "Read from server: 16384 bytes read"
7786
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007787# Tests for restartable ECC
7788
Manuel Pégourié-Gonnard875d1eb2022-12-06 10:42:44 +01007789requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
7790requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007791requires_config_enabled MBEDTLS_ECP_RESTARTABLE
7792run_test "EC restart: TLS, default" \
Manuel Pégourié-Gonnard862cde52017-05-17 11:56:15 +02007793 "$P_SRV auth_mode=required" \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007794 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnard862cde52017-05-17 11:56:15 +02007795 key_file=data_files/server5.key crt_file=data_files/server5.crt \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007796 debug_level=1" \
7797 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02007798 -C "x509_verify_cert.*4b00" \
7799 -C "mbedtls_pk_verify.*4b00" \
7800 -C "mbedtls_ecdh_make_public.*4b00" \
7801 -C "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007802
Manuel Pégourié-Gonnard875d1eb2022-12-06 10:42:44 +01007803requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
7804requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007805requires_config_enabled MBEDTLS_ECP_RESTARTABLE
7806run_test "EC restart: TLS, max_ops=0" \
Manuel Pégourié-Gonnard862cde52017-05-17 11:56:15 +02007807 "$P_SRV auth_mode=required" \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007808 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnard862cde52017-05-17 11:56:15 +02007809 key_file=data_files/server5.key crt_file=data_files/server5.crt \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007810 debug_level=1 ec_max_ops=0" \
7811 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02007812 -C "x509_verify_cert.*4b00" \
7813 -C "mbedtls_pk_verify.*4b00" \
7814 -C "mbedtls_ecdh_make_public.*4b00" \
7815 -C "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007816
Manuel Pégourié-Gonnard875d1eb2022-12-06 10:42:44 +01007817requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
7818requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007819requires_config_enabled MBEDTLS_ECP_RESTARTABLE
7820run_test "EC restart: TLS, max_ops=65535" \
Manuel Pégourié-Gonnard862cde52017-05-17 11:56:15 +02007821 "$P_SRV auth_mode=required" \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007822 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnard862cde52017-05-17 11:56:15 +02007823 key_file=data_files/server5.key crt_file=data_files/server5.crt \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007824 debug_level=1 ec_max_ops=65535" \
7825 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02007826 -C "x509_verify_cert.*4b00" \
7827 -C "mbedtls_pk_verify.*4b00" \
7828 -C "mbedtls_ecdh_make_public.*4b00" \
7829 -C "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007830
Manuel Pégourié-Gonnard875d1eb2022-12-06 10:42:44 +01007831requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
7832requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007833requires_config_enabled MBEDTLS_ECP_RESTARTABLE
7834run_test "EC restart: TLS, max_ops=1000" \
Manuel Pégourié-Gonnard862cde52017-05-17 11:56:15 +02007835 "$P_SRV auth_mode=required" \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007836 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnard862cde52017-05-17 11:56:15 +02007837 key_file=data_files/server5.key crt_file=data_files/server5.crt \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007838 debug_level=1 ec_max_ops=1000" \
7839 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02007840 -c "x509_verify_cert.*4b00" \
7841 -c "mbedtls_pk_verify.*4b00" \
7842 -c "mbedtls_ecdh_make_public.*4b00" \
7843 -c "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007844
Manuel Pégourié-Gonnard875d1eb2022-12-06 10:42:44 +01007845requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
7846requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007847requires_config_enabled MBEDTLS_ECP_RESTARTABLE
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02007848run_test "EC restart: TLS, max_ops=1000, badsign" \
7849 "$P_SRV auth_mode=required \
7850 crt_file=data_files/server5-badsign.crt \
7851 key_file=data_files/server5.key" \
7852 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
7853 key_file=data_files/server5.key crt_file=data_files/server5.crt \
7854 debug_level=1 ec_max_ops=1000" \
7855 1 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02007856 -c "x509_verify_cert.*4b00" \
7857 -C "mbedtls_pk_verify.*4b00" \
7858 -C "mbedtls_ecdh_make_public.*4b00" \
7859 -C "mbedtls_pk_sign.*4b00" \
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02007860 -c "! The certificate is not correctly signed by the trusted CA" \
7861 -c "! mbedtls_ssl_handshake returned" \
7862 -c "X509 - Certificate verification failed"
7863
Manuel Pégourié-Gonnard875d1eb2022-12-06 10:42:44 +01007864requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
7865requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02007866requires_config_enabled MBEDTLS_ECP_RESTARTABLE
7867run_test "EC restart: TLS, max_ops=1000, auth_mode=optional badsign" \
7868 "$P_SRV auth_mode=required \
7869 crt_file=data_files/server5-badsign.crt \
7870 key_file=data_files/server5.key" \
7871 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
7872 key_file=data_files/server5.key crt_file=data_files/server5.crt \
7873 debug_level=1 ec_max_ops=1000 auth_mode=optional" \
7874 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02007875 -c "x509_verify_cert.*4b00" \
7876 -c "mbedtls_pk_verify.*4b00" \
7877 -c "mbedtls_ecdh_make_public.*4b00" \
7878 -c "mbedtls_pk_sign.*4b00" \
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02007879 -c "! The certificate is not correctly signed by the trusted CA" \
7880 -C "! mbedtls_ssl_handshake returned" \
7881 -C "X509 - Certificate verification failed"
7882
Manuel Pégourié-Gonnard875d1eb2022-12-06 10:42:44 +01007883requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
7884requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02007885requires_config_enabled MBEDTLS_ECP_RESTARTABLE
7886run_test "EC restart: TLS, max_ops=1000, auth_mode=none badsign" \
7887 "$P_SRV auth_mode=required \
7888 crt_file=data_files/server5-badsign.crt \
7889 key_file=data_files/server5.key" \
7890 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
7891 key_file=data_files/server5.key crt_file=data_files/server5.crt \
7892 debug_level=1 ec_max_ops=1000 auth_mode=none" \
7893 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02007894 -C "x509_verify_cert.*4b00" \
7895 -c "mbedtls_pk_verify.*4b00" \
7896 -c "mbedtls_ecdh_make_public.*4b00" \
7897 -c "mbedtls_pk_sign.*4b00" \
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02007898 -C "! The certificate is not correctly signed by the trusted CA" \
7899 -C "! mbedtls_ssl_handshake returned" \
7900 -C "X509 - Certificate verification failed"
7901
Manuel Pégourié-Gonnard875d1eb2022-12-06 10:42:44 +01007902requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
7903requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02007904requires_config_enabled MBEDTLS_ECP_RESTARTABLE
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007905run_test "EC restart: DTLS, max_ops=1000" \
Manuel Pégourié-Gonnard862cde52017-05-17 11:56:15 +02007906 "$P_SRV auth_mode=required dtls=1" \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007907 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnard862cde52017-05-17 11:56:15 +02007908 key_file=data_files/server5.key crt_file=data_files/server5.crt \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007909 dtls=1 debug_level=1 ec_max_ops=1000" \
7910 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02007911 -c "x509_verify_cert.*4b00" \
7912 -c "mbedtls_pk_verify.*4b00" \
7913 -c "mbedtls_ecdh_make_public.*4b00" \
7914 -c "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02007915
Manuel Pégourié-Gonnard875d1eb2022-12-06 10:42:44 +01007916requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
7917requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard32033da2017-05-18 12:49:27 +02007918requires_config_enabled MBEDTLS_ECP_RESTARTABLE
7919run_test "EC restart: TLS, max_ops=1000 no client auth" \
7920 "$P_SRV" \
7921 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
7922 debug_level=1 ec_max_ops=1000" \
7923 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02007924 -c "x509_verify_cert.*4b00" \
7925 -c "mbedtls_pk_verify.*4b00" \
7926 -c "mbedtls_ecdh_make_public.*4b00" \
7927 -C "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard32033da2017-05-18 12:49:27 +02007928
Manuel Pégourié-Gonnard875d1eb2022-12-06 10:42:44 +01007929
7930# Restartable is only for ECDHE-ECDSA, with another ciphersuite we expect no
7931# restartable behaviour at all (not even client auth).
7932# This is the same as "EC restart: TLS, max_ops=1000" except with ECDHE-RSA,
7933# and all 4 assertions negated.
Manuel Pégourié-Gonnard32033da2017-05-18 12:49:27 +02007934requires_config_enabled MBEDTLS_ECP_RESTARTABLE
Manuel Pégourié-Gonnard875d1eb2022-12-06 10:42:44 +01007935requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
7936requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7937run_test "EC restart: TLS, max_ops=1000, ECDHE-RSA" \
7938 "$P_SRV curves=secp256r1 auth_mode=required" \
7939 "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 \
7940 key_file=data_files/server5.key crt_file=data_files/server5.crt \
7941 debug_level=1 ec_max_ops=1000" \
Manuel Pégourié-Gonnard32033da2017-05-18 12:49:27 +02007942 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02007943 -C "x509_verify_cert.*4b00" \
7944 -C "mbedtls_pk_verify.*4b00" \
7945 -C "mbedtls_ecdh_make_public.*4b00" \
7946 -C "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard32033da2017-05-18 12:49:27 +02007947
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007948# Tests of asynchronous private key support in SSL
7949
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007950requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007951run_test "SSL async private: sign, delay=0" \
7952 "$P_SRV \
7953 async_operations=s async_private_delay1=0 async_private_delay2=0" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007954 "$P_CLI" \
7955 0 \
7956 -s "Async sign callback: using key slot " \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007957 -s "Async resume (slot [0-9]): sign done, status=0"
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007958
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007959requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007960run_test "SSL async private: sign, delay=1" \
7961 "$P_SRV \
7962 async_operations=s async_private_delay1=1 async_private_delay2=1" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01007963 "$P_CLI" \
7964 0 \
7965 -s "Async sign callback: using key slot " \
7966 -s "Async resume (slot [0-9]): call 0 more times." \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01007967 -s "Async resume (slot [0-9]): sign done, status=0"
7968
Gilles Peskine12d0cc12018-04-26 15:06:56 +02007969requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
7970run_test "SSL async private: sign, delay=2" \
7971 "$P_SRV \
7972 async_operations=s async_private_delay1=2 async_private_delay2=2" \
7973 "$P_CLI" \
7974 0 \
7975 -s "Async sign callback: using key slot " \
7976 -U "Async sign callback: using key slot " \
7977 -s "Async resume (slot [0-9]): call 1 more times." \
7978 -s "Async resume (slot [0-9]): call 0 more times." \
7979 -s "Async resume (slot [0-9]): sign done, status=0"
7980
Gilles Peskined3268832018-04-26 06:23:59 +02007981# Test that the async callback correctly signs the 36-byte hash of TLS 1.0/1.1
7982# with RSA PKCS#1v1.5 as used in TLS 1.0/1.1.
7983requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskined3268832018-04-26 06:23:59 +02007984run_test "SSL async private: sign, RSA, TLS 1.1" \
7985 "$P_SRV key_file=data_files/server2.key crt_file=data_files/server2.crt \
7986 async_operations=s async_private_delay1=0 async_private_delay2=0" \
7987 "$P_CLI force_version=tls1_1" \
7988 0 \
7989 -s "Async sign callback: using key slot " \
7990 -s "Async resume (slot [0-9]): sign done, status=0"
7991
Gilles Peskineb74a1c72018-04-24 13:09:22 +02007992requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine807d74a2018-04-30 10:30:49 +02007993run_test "SSL async private: sign, SNI" \
7994 "$P_SRV debug_level=3 \
7995 async_operations=s async_private_delay1=0 async_private_delay2=0 \
7996 crt_file=data_files/server5.crt key_file=data_files/server5.key \
7997 sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
7998 "$P_CLI server_name=polarssl.example" \
7999 0 \
8000 -s "Async sign callback: using key slot " \
8001 -s "Async resume (slot [0-9]): sign done, status=0" \
8002 -s "parse ServerName extension" \
8003 -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
8004 -c "subject name *: C=NL, O=PolarSSL, CN=polarssl.example"
8005
8006requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008007run_test "SSL async private: decrypt, delay=0" \
8008 "$P_SRV \
8009 async_operations=d async_private_delay1=0 async_private_delay2=0" \
8010 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
8011 0 \
8012 -s "Async decrypt callback: using key slot " \
8013 -s "Async resume (slot [0-9]): decrypt done, status=0"
8014
Gilles Peskineb74a1c72018-04-24 13:09:22 +02008015requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008016run_test "SSL async private: decrypt, delay=1" \
8017 "$P_SRV \
8018 async_operations=d async_private_delay1=1 async_private_delay2=1" \
8019 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
8020 0 \
8021 -s "Async decrypt callback: using key slot " \
8022 -s "Async resume (slot [0-9]): call 0 more times." \
8023 -s "Async resume (slot [0-9]): decrypt done, status=0"
8024
Gilles Peskineb74a1c72018-04-24 13:09:22 +02008025requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008026run_test "SSL async private: decrypt RSA-PSK, delay=0" \
Gilles Peskined84733d2024-04-29 16:09:52 +02008027 "$P_SRV psk=73776f726466697368 \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008028 async_operations=d async_private_delay1=0 async_private_delay2=0" \
Gilles Peskined84733d2024-04-29 16:09:52 +02008029 "$P_CLI psk=73776f726466697368 \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008030 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA256" \
8031 0 \
8032 -s "Async decrypt callback: using key slot " \
8033 -s "Async resume (slot [0-9]): decrypt done, status=0"
8034
Gilles Peskineb74a1c72018-04-24 13:09:22 +02008035requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008036run_test "SSL async private: decrypt RSA-PSK, delay=1" \
Gilles Peskined84733d2024-04-29 16:09:52 +02008037 "$P_SRV psk=73776f726466697368 \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008038 async_operations=d async_private_delay1=1 async_private_delay2=1" \
Gilles Peskined84733d2024-04-29 16:09:52 +02008039 "$P_CLI psk=73776f726466697368 \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008040 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA256" \
8041 0 \
8042 -s "Async decrypt callback: using key slot " \
8043 -s "Async resume (slot [0-9]): call 0 more times." \
8044 -s "Async resume (slot [0-9]): decrypt done, status=0"
8045
Gilles Peskineb74a1c72018-04-24 13:09:22 +02008046requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008047run_test "SSL async private: sign callback not present" \
8048 "$P_SRV \
8049 async_operations=d async_private_delay1=1 async_private_delay2=1" \
8050 "$P_CLI; [ \$? -eq 1 ] &&
8051 $P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
8052 0 \
8053 -S "Async sign callback" \
8054 -s "! mbedtls_ssl_handshake returned" \
8055 -s "The own private key or pre-shared key is not set, but needed" \
8056 -s "Async resume (slot [0-9]): decrypt done, status=0" \
8057 -s "Successful connection"
8058
Gilles Peskineb74a1c72018-04-24 13:09:22 +02008059requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008060run_test "SSL async private: decrypt callback not present" \
8061 "$P_SRV debug_level=1 \
8062 async_operations=s async_private_delay1=1 async_private_delay2=1" \
8063 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA;
8064 [ \$? -eq 1 ] && $P_CLI" \
8065 0 \
8066 -S "Async decrypt callback" \
8067 -s "! mbedtls_ssl_handshake returned" \
8068 -s "got no RSA private key" \
8069 -s "Async resume (slot [0-9]): sign done, status=0" \
8070 -s "Successful connection"
Gilles Peskine3665f1d2018-01-05 21:22:12 +01008071
8072# key1: ECDSA, key2: RSA; use key1 from slot 0
Gilles Peskineb74a1c72018-04-24 13:09:22 +02008073requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine3665f1d2018-01-05 21:22:12 +01008074run_test "SSL async private: slot 0 used with key1" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008075 "$P_SRV \
8076 async_operations=s async_private_delay1=1 \
8077 key_file=data_files/server5.key crt_file=data_files/server5.crt \
8078 key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01008079 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
8080 0 \
8081 -s "Async sign callback: using key slot 0," \
8082 -s "Async resume (slot 0): call 0 more times." \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008083 -s "Async resume (slot 0): sign done, status=0"
Gilles Peskine3665f1d2018-01-05 21:22:12 +01008084
8085# key1: ECDSA, key2: RSA; use key2 from slot 0
Gilles Peskineb74a1c72018-04-24 13:09:22 +02008086requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine3665f1d2018-01-05 21:22:12 +01008087run_test "SSL async private: slot 0 used with key2" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008088 "$P_SRV \
8089 async_operations=s async_private_delay2=1 \
8090 key_file=data_files/server5.key crt_file=data_files/server5.crt \
8091 key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01008092 "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \
8093 0 \
8094 -s "Async sign callback: using key slot 0," \
8095 -s "Async resume (slot 0): call 0 more times." \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008096 -s "Async resume (slot 0): sign done, status=0"
Gilles Peskine3665f1d2018-01-05 21:22:12 +01008097
8098# key1: ECDSA, key2: RSA; use key2 from slot 1
Gilles Peskineb74a1c72018-04-24 13:09:22 +02008099requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinead28bf02018-04-26 00:19:16 +02008100run_test "SSL async private: slot 1 used with key2" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008101 "$P_SRV \
Gilles Peskine168dae82018-04-25 23:35:42 +02008102 async_operations=s async_private_delay1=1 async_private_delay2=1 \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008103 key_file=data_files/server5.key crt_file=data_files/server5.crt \
8104 key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01008105 "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \
8106 0 \
8107 -s "Async sign callback: using key slot 1," \
8108 -s "Async resume (slot 1): call 0 more times." \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008109 -s "Async resume (slot 1): sign done, status=0"
Gilles Peskine3665f1d2018-01-05 21:22:12 +01008110
8111# key1: ECDSA, key2: RSA; use key2 directly
Gilles Peskineb74a1c72018-04-24 13:09:22 +02008112requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine3665f1d2018-01-05 21:22:12 +01008113run_test "SSL async private: fall back to transparent key" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008114 "$P_SRV \
8115 async_operations=s async_private_delay1=1 \
8116 key_file=data_files/server5.key crt_file=data_files/server5.crt \
8117 key_file2=data_files/server2.key crt_file2=data_files/server2.crt " \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01008118 "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \
8119 0 \
8120 -s "Async sign callback: no key matches this certificate."
8121
Gilles Peskineb74a1c72018-04-24 13:09:22 +02008122requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine725f1cb2018-06-12 15:06:40 +02008123run_test "SSL async private: sign, error in start" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008124 "$P_SRV \
8125 async_operations=s async_private_delay1=1 async_private_delay2=1 \
8126 async_private_error=1" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01008127 "$P_CLI" \
8128 1 \
8129 -s "Async sign callback: injected error" \
8130 -S "Async resume" \
Gilles Peskine37289cd2018-04-27 11:50:14 +02008131 -S "Async cancel" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01008132 -s "! mbedtls_ssl_handshake returned"
8133
Gilles Peskineb74a1c72018-04-24 13:09:22 +02008134requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine725f1cb2018-06-12 15:06:40 +02008135run_test "SSL async private: sign, cancel after start" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008136 "$P_SRV \
8137 async_operations=s async_private_delay1=1 async_private_delay2=1 \
8138 async_private_error=2" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01008139 "$P_CLI" \
8140 1 \
8141 -s "Async sign callback: using key slot " \
8142 -S "Async resume" \
8143 -s "Async cancel"
8144
Gilles Peskineb74a1c72018-04-24 13:09:22 +02008145requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine725f1cb2018-06-12 15:06:40 +02008146run_test "SSL async private: sign, error in resume" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008147 "$P_SRV \
8148 async_operations=s async_private_delay1=1 async_private_delay2=1 \
8149 async_private_error=3" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01008150 "$P_CLI" \
8151 1 \
8152 -s "Async sign callback: using key slot " \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008153 -s "Async resume callback: sign done but injected error" \
Gilles Peskine37289cd2018-04-27 11:50:14 +02008154 -S "Async cancel" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01008155 -s "! mbedtls_ssl_handshake returned"
8156
Gilles Peskineb74a1c72018-04-24 13:09:22 +02008157requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine725f1cb2018-06-12 15:06:40 +02008158run_test "SSL async private: decrypt, error in start" \
8159 "$P_SRV \
8160 async_operations=d async_private_delay1=1 async_private_delay2=1 \
8161 async_private_error=1" \
8162 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
8163 1 \
8164 -s "Async decrypt callback: injected error" \
8165 -S "Async resume" \
8166 -S "Async cancel" \
8167 -s "! mbedtls_ssl_handshake returned"
8168
8169requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8170run_test "SSL async private: decrypt, cancel after start" \
8171 "$P_SRV \
8172 async_operations=d async_private_delay1=1 async_private_delay2=1 \
8173 async_private_error=2" \
8174 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
8175 1 \
8176 -s "Async decrypt callback: using key slot " \
8177 -S "Async resume" \
8178 -s "Async cancel"
8179
8180requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8181run_test "SSL async private: decrypt, error in resume" \
8182 "$P_SRV \
8183 async_operations=d async_private_delay1=1 async_private_delay2=1 \
8184 async_private_error=3" \
8185 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
8186 1 \
8187 -s "Async decrypt callback: using key slot " \
8188 -s "Async resume callback: decrypt done but injected error" \
8189 -S "Async cancel" \
8190 -s "! mbedtls_ssl_handshake returned"
8191
8192requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine60ee4ca2018-01-08 11:28:05 +01008193run_test "SSL async private: cancel after start then operate correctly" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008194 "$P_SRV \
8195 async_operations=s async_private_delay1=1 async_private_delay2=1 \
8196 async_private_error=-2" \
Gilles Peskine60ee4ca2018-01-08 11:28:05 +01008197 "$P_CLI; [ \$? -eq 1 ] && $P_CLI" \
8198 0 \
8199 -s "Async cancel" \
8200 -s "! mbedtls_ssl_handshake returned" \
8201 -s "Async resume" \
8202 -s "Successful connection"
8203
Gilles Peskineb74a1c72018-04-24 13:09:22 +02008204requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine60ee4ca2018-01-08 11:28:05 +01008205run_test "SSL async private: error in resume then operate correctly" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008206 "$P_SRV \
8207 async_operations=s async_private_delay1=1 async_private_delay2=1 \
8208 async_private_error=-3" \
Gilles Peskine60ee4ca2018-01-08 11:28:05 +01008209 "$P_CLI; [ \$? -eq 1 ] && $P_CLI" \
8210 0 \
8211 -s "! mbedtls_ssl_handshake returned" \
8212 -s "Async resume" \
8213 -s "Successful connection"
8214
8215# key1: ECDSA, key2: RSA; use key1 through async, then key2 directly
Gilles Peskineb74a1c72018-04-24 13:09:22 +02008216requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine60ee4ca2018-01-08 11:28:05 +01008217run_test "SSL async private: cancel after start then fall back to transparent key" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008218 "$P_SRV \
8219 async_operations=s async_private_delay1=1 async_private_error=-2 \
8220 key_file=data_files/server5.key crt_file=data_files/server5.crt \
8221 key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \
Gilles Peskine60ee4ca2018-01-08 11:28:05 +01008222 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256;
8223 [ \$? -eq 1 ] &&
8224 $P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \
8225 0 \
Gilles Peskinededa75a2018-04-30 10:02:45 +02008226 -s "Async sign callback: using key slot 0" \
Gilles Peskine60ee4ca2018-01-08 11:28:05 +01008227 -S "Async resume" \
8228 -s "Async cancel" \
8229 -s "! mbedtls_ssl_handshake returned" \
8230 -s "Async sign callback: no key matches this certificate." \
8231 -s "Successful connection"
8232
8233# key1: ECDSA, key2: RSA; use key1 through async, then key2 directly
Gilles Peskineb74a1c72018-04-24 13:09:22 +02008234requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine725f1cb2018-06-12 15:06:40 +02008235run_test "SSL async private: sign, error in resume then fall back to transparent key" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008236 "$P_SRV \
8237 async_operations=s async_private_delay1=1 async_private_error=-3 \
8238 key_file=data_files/server5.key crt_file=data_files/server5.crt \
8239 key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \
Gilles Peskine60ee4ca2018-01-08 11:28:05 +01008240 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256;
8241 [ \$? -eq 1 ] &&
8242 $P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \
8243 0 \
8244 -s "Async resume" \
8245 -s "! mbedtls_ssl_handshake returned" \
8246 -s "Async sign callback: no key matches this certificate." \
8247 -s "Successful connection"
8248
Gilles Peskineb74a1c72018-04-24 13:09:22 +02008249requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine3665f1d2018-01-05 21:22:12 +01008250requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Gilles Peskine654bab72019-09-16 15:19:20 +02008251run_test "SSL async private: renegotiation: client-initiated, sign" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008252 "$P_SRV \
8253 async_operations=s async_private_delay1=1 async_private_delay2=1 \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01008254 exchanges=2 renegotiation=1" \
8255 "$P_CLI exchanges=2 renegotiation=1 renegotiate=1" \
8256 0 \
8257 -s "Async sign callback: using key slot " \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008258 -s "Async resume (slot [0-9]): sign done, status=0"
Gilles Peskine3665f1d2018-01-05 21:22:12 +01008259
Gilles Peskineb74a1c72018-04-24 13:09:22 +02008260requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine3665f1d2018-01-05 21:22:12 +01008261requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Gilles Peskine654bab72019-09-16 15:19:20 +02008262run_test "SSL async private: renegotiation: server-initiated, sign" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008263 "$P_SRV \
8264 async_operations=s async_private_delay1=1 async_private_delay2=1 \
Gilles Peskine3665f1d2018-01-05 21:22:12 +01008265 exchanges=2 renegotiation=1 renegotiate=1" \
8266 "$P_CLI exchanges=2 renegotiation=1" \
8267 0 \
8268 -s "Async sign callback: using key slot " \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008269 -s "Async resume (slot [0-9]): sign done, status=0"
8270
Gilles Peskineb74a1c72018-04-24 13:09:22 +02008271requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008272requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Gilles Peskine654bab72019-09-16 15:19:20 +02008273run_test "SSL async private: renegotiation: client-initiated, decrypt" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008274 "$P_SRV \
8275 async_operations=d async_private_delay1=1 async_private_delay2=1 \
8276 exchanges=2 renegotiation=1" \
8277 "$P_CLI exchanges=2 renegotiation=1 renegotiate=1 \
8278 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
8279 0 \
8280 -s "Async decrypt callback: using key slot " \
8281 -s "Async resume (slot [0-9]): decrypt done, status=0"
8282
Gilles Peskineb74a1c72018-04-24 13:09:22 +02008283requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008284requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Gilles Peskine654bab72019-09-16 15:19:20 +02008285run_test "SSL async private: renegotiation: server-initiated, decrypt" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +01008286 "$P_SRV \
8287 async_operations=d async_private_delay1=1 async_private_delay2=1 \
8288 exchanges=2 renegotiation=1 renegotiate=1" \
8289 "$P_CLI exchanges=2 renegotiation=1 \
8290 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
8291 0 \
8292 -s "Async decrypt callback: using key slot " \
8293 -s "Async resume (slot [0-9]): decrypt done, status=0"
Gilles Peskine3665f1d2018-01-05 21:22:12 +01008294
Ron Eldor58093c82018-06-28 13:22:05 +03008295# Tests for ECC extensions (rfc 4492)
8296
Ron Eldor643df7c2018-06-28 16:17:00 +03008297requires_config_enabled MBEDTLS_AES_C
8298requires_config_enabled MBEDTLS_CIPHER_MODE_CBC
8299requires_config_enabled MBEDTLS_SHA256_C
8300requires_config_enabled MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
Ron Eldor58093c82018-06-28 13:22:05 +03008301run_test "Force a non ECC ciphersuite in the client side" \
8302 "$P_SRV debug_level=3" \
Ron Eldor643df7c2018-06-28 16:17:00 +03008303 "$P_CLI debug_level=3 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA256" \
Ron Eldor58093c82018-06-28 13:22:05 +03008304 0 \
8305 -C "client hello, adding supported_elliptic_curves extension" \
8306 -C "client hello, adding supported_point_formats extension" \
8307 -S "found supported elliptic curves extension" \
8308 -S "found supported point formats extension"
8309
Ron Eldor643df7c2018-06-28 16:17:00 +03008310requires_config_enabled MBEDTLS_AES_C
8311requires_config_enabled MBEDTLS_CIPHER_MODE_CBC
8312requires_config_enabled MBEDTLS_SHA256_C
8313requires_config_enabled MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
Ron Eldor58093c82018-06-28 13:22:05 +03008314run_test "Force a non ECC ciphersuite in the server side" \
Ron Eldor643df7c2018-06-28 16:17:00 +03008315 "$P_SRV debug_level=3 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA256" \
Ron Eldor58093c82018-06-28 13:22:05 +03008316 "$P_CLI debug_level=3" \
8317 0 \
8318 -C "found supported_point_formats extension" \
8319 -S "server hello, supported_point_formats extension"
8320
Ron Eldor643df7c2018-06-28 16:17:00 +03008321requires_config_enabled MBEDTLS_AES_C
8322requires_config_enabled MBEDTLS_CIPHER_MODE_CBC
8323requires_config_enabled MBEDTLS_SHA256_C
8324requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Ron Eldor58093c82018-06-28 13:22:05 +03008325run_test "Force an ECC ciphersuite in the client side" \
8326 "$P_SRV debug_level=3" \
8327 "$P_CLI debug_level=3 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
8328 0 \
8329 -c "client hello, adding supported_elliptic_curves extension" \
8330 -c "client hello, adding supported_point_formats extension" \
8331 -s "found supported elliptic curves extension" \
8332 -s "found supported point formats extension"
8333
Ron Eldor643df7c2018-06-28 16:17:00 +03008334requires_config_enabled MBEDTLS_AES_C
8335requires_config_enabled MBEDTLS_CIPHER_MODE_CBC
8336requires_config_enabled MBEDTLS_SHA256_C
8337requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Ron Eldor58093c82018-06-28 13:22:05 +03008338run_test "Force an ECC ciphersuite in the server side" \
8339 "$P_SRV debug_level=3 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
8340 "$P_CLI debug_level=3" \
8341 0 \
8342 -c "found supported_point_formats extension" \
8343 -s "server hello, supported_point_formats extension"
8344
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02008345# Tests for DTLS HelloVerifyRequest
8346
8347run_test "DTLS cookie: enabled" \
8348 "$P_SRV dtls=1 debug_level=2" \
8349 "$P_CLI dtls=1 debug_level=2" \
8350 0 \
8351 -s "cookie verification failed" \
8352 -s "cookie verification passed" \
8353 -S "cookie verification skipped" \
8354 -c "received hello verify request" \
Manuel Pégourié-Gonnardcaecdae2014-10-13 19:04:37 +02008355 -s "hello verification requested" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02008356 -S "SSL - The requested feature is not available"
8357
8358run_test "DTLS cookie: disabled" \
8359 "$P_SRV dtls=1 debug_level=2 cookies=0" \
8360 "$P_CLI dtls=1 debug_level=2" \
8361 0 \
8362 -S "cookie verification failed" \
8363 -S "cookie verification passed" \
8364 -s "cookie verification skipped" \
8365 -C "received hello verify request" \
Manuel Pégourié-Gonnardcaecdae2014-10-13 19:04:37 +02008366 -S "hello verification requested" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02008367 -S "SSL - The requested feature is not available"
8368
Manuel Pégourié-Gonnardcaecdae2014-10-13 19:04:37 +02008369run_test "DTLS cookie: default (failing)" \
8370 "$P_SRV dtls=1 debug_level=2 cookies=-1" \
8371 "$P_CLI dtls=1 debug_level=2 hs_timeout=100-400" \
8372 1 \
8373 -s "cookie verification failed" \
8374 -S "cookie verification passed" \
8375 -S "cookie verification skipped" \
8376 -C "received hello verify request" \
8377 -S "hello verification requested" \
8378 -s "SSL - The requested feature is not available"
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02008379
8380requires_ipv6
8381run_test "DTLS cookie: enabled, IPv6" \
8382 "$P_SRV dtls=1 debug_level=2 server_addr=::1" \
8383 "$P_CLI dtls=1 debug_level=2 server_addr=::1" \
8384 0 \
8385 -s "cookie verification failed" \
8386 -s "cookie verification passed" \
8387 -S "cookie verification skipped" \
8388 -c "received hello verify request" \
Manuel Pégourié-Gonnardcaecdae2014-10-13 19:04:37 +02008389 -s "hello verification requested" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02008390 -S "SSL - The requested feature is not available"
8391
Manuel Pégourié-Gonnard579950c2014-09-29 17:47:33 +02008392run_test "DTLS cookie: enabled, nbio" \
8393 "$P_SRV dtls=1 nbio=2 debug_level=2" \
8394 "$P_CLI dtls=1 nbio=2 debug_level=2" \
8395 0 \
8396 -s "cookie verification failed" \
8397 -s "cookie verification passed" \
8398 -S "cookie verification skipped" \
8399 -c "received hello verify request" \
Manuel Pégourié-Gonnardcaecdae2014-10-13 19:04:37 +02008400 -s "hello verification requested" \
Manuel Pégourié-Gonnard579950c2014-09-29 17:47:33 +02008401 -S "SSL - The requested feature is not available"
8402
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02008403# Tests for client reconnecting from the same port with DTLS
8404
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +02008405not_with_valgrind # spurious resend
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02008406run_test "DTLS client reconnect from same port: reference" \
Manuel Pégourié-Gonnardb6929892019-09-09 11:14:37 +02008407 "$P_SRV dtls=1 exchanges=2 read_timeout=20000 hs_timeout=10000-20000" \
8408 "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=10000-20000" \
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02008409 0 \
8410 -C "resend" \
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +02008411 -S "The operation timed out" \
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02008412 -S "Client initiated reconnection from same port"
8413
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +02008414not_with_valgrind # spurious resend
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02008415run_test "DTLS client reconnect from same port: reconnect" \
Manuel Pégourié-Gonnardb6929892019-09-09 11:14:37 +02008416 "$P_SRV dtls=1 exchanges=2 read_timeout=20000 hs_timeout=10000-20000" \
8417 "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=10000-20000 reconnect_hard=1" \
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02008418 0 \
8419 -C "resend" \
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +02008420 -S "The operation timed out" \
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02008421 -s "Client initiated reconnection from same port"
8422
Paul Bakker362689d2016-05-13 10:33:25 +01008423not_with_valgrind # server/client too slow to respond in time (next test has higher timeouts)
8424run_test "DTLS client reconnect from same port: reconnect, nbio, no valgrind" \
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +02008425 "$P_SRV dtls=1 exchanges=2 read_timeout=1000 nbio=2" \
8426 "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=500-1000 reconnect_hard=1" \
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02008427 0 \
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +02008428 -S "The operation timed out" \
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +02008429 -s "Client initiated reconnection from same port"
8430
Paul Bakker362689d2016-05-13 10:33:25 +01008431only_with_valgrind # Only with valgrind, do previous test but with higher read_timeout and hs_timeout
8432run_test "DTLS client reconnect from same port: reconnect, nbio, valgrind" \
8433 "$P_SRV dtls=1 exchanges=2 read_timeout=2000 nbio=2 hs_timeout=1500-6000" \
8434 "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=1500-3000 reconnect_hard=1" \
8435 0 \
8436 -S "The operation timed out" \
8437 -s "Client initiated reconnection from same port"
8438
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +02008439run_test "DTLS client reconnect from same port: no cookies" \
8440 "$P_SRV dtls=1 exchanges=2 read_timeout=1000 cookies=0" \
Manuel Pégourié-Gonnard6ad23b92015-09-15 12:57:46 +02008441 "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=500-8000 reconnect_hard=1" \
8442 0 \
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +02008443 -s "The operation timed out" \
8444 -S "Client initiated reconnection from same port"
8445
Manuel Pégourié-Gonnardbaad2de2020-03-13 11:11:02 +01008446run_test "DTLS client reconnect from same port: attacker-injected" \
8447 -p "$P_PXY inject_clihlo=1" \
8448 "$P_SRV dtls=1 exchanges=2 debug_level=1" \
8449 "$P_CLI dtls=1 exchanges=2" \
8450 0 \
8451 -s "possible client reconnect from the same port" \
8452 -S "Client initiated reconnection from same port"
8453
Manuel Pégourié-Gonnard08a1d4b2014-09-26 10:35:50 +02008454# Tests for various cases of client authentication with DTLS
8455# (focused on handshake flows and message parsing)
8456
8457run_test "DTLS client auth: required" \
8458 "$P_SRV dtls=1 auth_mode=required" \
8459 "$P_CLI dtls=1" \
8460 0 \
8461 -s "Verifying peer X.509 certificate... ok"
8462
8463run_test "DTLS client auth: optional, client has no cert" \
8464 "$P_SRV dtls=1 auth_mode=optional" \
8465 "$P_CLI dtls=1 crt_file=none key_file=none" \
8466 0 \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01008467 -s "! Certificate was missing"
Manuel Pégourié-Gonnard08a1d4b2014-09-26 10:35:50 +02008468
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01008469run_test "DTLS client auth: none, client has no cert" \
Manuel Pégourié-Gonnard08a1d4b2014-09-26 10:35:50 +02008470 "$P_SRV dtls=1 auth_mode=none" \
8471 "$P_CLI dtls=1 crt_file=none key_file=none debug_level=2" \
8472 0 \
8473 -c "skip write certificate$" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01008474 -s "! Certificate verification was skipped"
Manuel Pégourié-Gonnard08a1d4b2014-09-26 10:35:50 +02008475
Manuel Pégourié-Gonnard0a885742015-08-04 12:08:35 +02008476run_test "DTLS wrong PSK: badmac alert" \
Gilles Peskined84733d2024-04-29 16:09:52 +02008477 "$P_SRV dtls=1 psk=73776f726466697368 force_ciphersuite=TLS-PSK-WITH-AES-128-GCM-SHA256" \
Gilles Peskinedd539642024-05-13 21:06:26 +02008478 "$P_CLI dtls=1 psk=73776f726466697374" \
Manuel Pégourié-Gonnard0a885742015-08-04 12:08:35 +02008479 1 \
8480 -s "SSL - Verification of the message MAC failed" \
8481 -c "SSL - A fatal alert message was received from our peer"
8482
Manuel Pégourié-Gonnard502bf302014-08-20 13:12:58 +02008483# Tests for receiving fragmented handshake messages with DTLS
8484
8485requires_gnutls
8486run_test "DTLS reassembly: no fragmentation (gnutls server)" \
8487 "$G_SRV -u --mtu 2048 -a" \
8488 "$P_CLI dtls=1 debug_level=2" \
8489 0 \
8490 -C "found fragmented DTLS handshake message" \
8491 -C "error"
8492
8493requires_gnutls
8494run_test "DTLS reassembly: some fragmentation (gnutls server)" \
8495 "$G_SRV -u --mtu 512" \
8496 "$P_CLI dtls=1 debug_level=2" \
8497 0 \
8498 -c "found fragmented DTLS handshake message" \
8499 -C "error"
8500
8501requires_gnutls
8502run_test "DTLS reassembly: more fragmentation (gnutls server)" \
8503 "$G_SRV -u --mtu 128" \
8504 "$P_CLI dtls=1 debug_level=2" \
8505 0 \
8506 -c "found fragmented DTLS handshake message" \
8507 -C "error"
8508
8509requires_gnutls
8510run_test "DTLS reassembly: more fragmentation, nbio (gnutls server)" \
8511 "$G_SRV -u --mtu 128" \
8512 "$P_CLI dtls=1 nbio=2 debug_level=2" \
8513 0 \
8514 -c "found fragmented DTLS handshake message" \
8515 -C "error"
8516
Manuel Pégourié-Gonnard0c4cbc72014-09-02 14:47:31 +02008517requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01008518requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard0c4cbc72014-09-02 14:47:31 +02008519run_test "DTLS reassembly: fragmentation, renego (gnutls server)" \
8520 "$G_SRV -u --mtu 256" \
8521 "$P_CLI debug_level=3 dtls=1 renegotiation=1 renegotiate=1" \
8522 0 \
8523 -c "found fragmented DTLS handshake message" \
8524 -c "client hello, adding renegotiation extension" \
8525 -c "found renegotiation extension" \
8526 -c "=> renegotiate" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02008527 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0c4cbc72014-09-02 14:47:31 +02008528 -C "error" \
8529 -s "Extra-header:"
8530
8531requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01008532requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard0c4cbc72014-09-02 14:47:31 +02008533run_test "DTLS reassembly: fragmentation, nbio, renego (gnutls server)" \
8534 "$G_SRV -u --mtu 256" \
8535 "$P_CLI debug_level=3 nbio=2 dtls=1 renegotiation=1 renegotiate=1" \
8536 0 \
8537 -c "found fragmented DTLS handshake message" \
8538 -c "client hello, adding renegotiation extension" \
8539 -c "found renegotiation extension" \
8540 -c "=> renegotiate" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02008541 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0c4cbc72014-09-02 14:47:31 +02008542 -C "error" \
8543 -s "Extra-header:"
8544
Manuel Pégourié-Gonnarda7756172014-08-31 18:37:01 +02008545run_test "DTLS reassembly: no fragmentation (openssl server)" \
8546 "$O_SRV -dtls1 -mtu 2048" \
8547 "$P_CLI dtls=1 debug_level=2" \
8548 0 \
8549 -C "found fragmented DTLS handshake message" \
8550 -C "error"
8551
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02008552run_test "DTLS reassembly: some fragmentation (openssl server)" \
8553 "$O_SRV -dtls1 -mtu 768" \
Manuel Pégourié-Gonnard64dffc52014-09-02 13:39:16 +02008554 "$P_CLI dtls=1 debug_level=2" \
8555 0 \
8556 -c "found fragmented DTLS handshake message" \
8557 -C "error"
8558
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02008559run_test "DTLS reassembly: more fragmentation (openssl server)" \
Manuel Pégourié-Gonnard64dffc52014-09-02 13:39:16 +02008560 "$O_SRV -dtls1 -mtu 256" \
8561 "$P_CLI dtls=1 debug_level=2" \
8562 0 \
8563 -c "found fragmented DTLS handshake message" \
8564 -C "error"
8565
8566run_test "DTLS reassembly: fragmentation, nbio (openssl server)" \
8567 "$O_SRV -dtls1 -mtu 256" \
8568 "$P_CLI dtls=1 nbio=2 debug_level=2" \
8569 0 \
8570 -c "found fragmented DTLS handshake message" \
8571 -C "error"
Manuel Pégourié-Gonnarda7756172014-08-31 18:37:01 +02008572
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008573# Tests for sending fragmented handshake messages with DTLS
8574#
8575# Use client auth when we need the client to send large messages,
8576# and use large cert chains on both sides too (the long chains we have all use
8577# both RSA and ECDSA, but ideally we should have long chains with either).
8578# Sizes reached (UDP payload):
8579# - 2037B for server certificate
8580# - 1542B for client certificate
8581# - 1013B for newsessionticket
8582# - all others below 512B
8583# All those tests assume MAX_CONTENT_LEN is at least 2048
8584
8585requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8586requires_config_enabled MBEDTLS_RSA_C
8587requires_config_enabled MBEDTLS_ECDSA_C
8588requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanoa49124e2021-07-08 15:56:33 +01008589requires_max_content_len 4096
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008590run_test "DTLS fragmenting: none (for reference)" \
8591 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8592 crt_file=data_files/server7_int-ca.crt \
8593 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008594 hs_timeout=2500-60000 \
Hanno Becker12405e72018-08-13 16:45:46 +01008595 max_frag_len=4096" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008596 "$P_CLI dtls=1 debug_level=2 \
8597 crt_file=data_files/server8_int-ca2.crt \
8598 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008599 hs_timeout=2500-60000 \
Hanno Becker12405e72018-08-13 16:45:46 +01008600 max_frag_len=4096" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008601 0 \
8602 -S "found fragmented DTLS handshake message" \
8603 -C "found fragmented DTLS handshake message" \
8604 -C "error"
8605
8606requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8607requires_config_enabled MBEDTLS_RSA_C
8608requires_config_enabled MBEDTLS_ECDSA_C
8609requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanoa49124e2021-07-08 15:56:33 +01008610requires_max_content_len 2048
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008611run_test "DTLS fragmenting: server only (max_frag_len)" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008612 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8613 crt_file=data_files/server7_int-ca.crt \
8614 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008615 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008616 max_frag_len=1024" \
8617 "$P_CLI dtls=1 debug_level=2 \
8618 crt_file=data_files/server8_int-ca2.crt \
8619 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008620 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008621 max_frag_len=2048" \
8622 0 \
8623 -S "found fragmented DTLS handshake message" \
8624 -c "found fragmented DTLS handshake message" \
8625 -C "error"
8626
Hanno Becker69ca0ad2018-08-24 12:11:35 +01008627# With the MFL extension, the server has no way of forcing
8628# the client to not exceed a certain MTU; hence, the following
8629# test can't be replicated with an MTU proxy such as the one
8630# `client-initiated, server only (max_frag_len)` below.
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008631requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8632requires_config_enabled MBEDTLS_RSA_C
8633requires_config_enabled MBEDTLS_ECDSA_C
8634requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanoa49124e2021-07-08 15:56:33 +01008635requires_max_content_len 4096
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008636run_test "DTLS fragmenting: server only (more) (max_frag_len)" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008637 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8638 crt_file=data_files/server7_int-ca.crt \
8639 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008640 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008641 max_frag_len=512" \
8642 "$P_CLI dtls=1 debug_level=2 \
8643 crt_file=data_files/server8_int-ca2.crt \
8644 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008645 hs_timeout=2500-60000 \
Hanno Becker69ca0ad2018-08-24 12:11:35 +01008646 max_frag_len=4096" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008647 0 \
8648 -S "found fragmented DTLS handshake message" \
8649 -c "found fragmented DTLS handshake message" \
8650 -C "error"
8651
8652requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8653requires_config_enabled MBEDTLS_RSA_C
8654requires_config_enabled MBEDTLS_ECDSA_C
8655requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanoa49124e2021-07-08 15:56:33 +01008656requires_max_content_len 2048
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008657run_test "DTLS fragmenting: client-initiated, server only (max_frag_len)" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008658 "$P_SRV dtls=1 debug_level=2 auth_mode=none \
8659 crt_file=data_files/server7_int-ca.crt \
8660 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008661 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008662 max_frag_len=2048" \
8663 "$P_CLI dtls=1 debug_level=2 \
8664 crt_file=data_files/server8_int-ca2.crt \
8665 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008666 hs_timeout=2500-60000 \
8667 max_frag_len=1024" \
8668 0 \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008669 -S "found fragmented DTLS handshake message" \
8670 -c "found fragmented DTLS handshake message" \
8671 -C "error"
8672
Hanno Beckerc92b5c82018-08-24 11:48:01 +01008673# While not required by the standard defining the MFL extension
8674# (according to which it only applies to records, not to datagrams),
8675# Mbed TLS will never send datagrams larger than MFL + { Max record expansion },
8676# as otherwise there wouldn't be any means to communicate MTU restrictions
8677# to the peer.
8678# The next test checks that no datagrams significantly larger than the
8679# negotiated MFL are sent.
8680requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8681requires_config_enabled MBEDTLS_RSA_C
8682requires_config_enabled MBEDTLS_ECDSA_C
8683requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanoa49124e2021-07-08 15:56:33 +01008684requires_max_content_len 2048
Hanno Beckerc92b5c82018-08-24 11:48:01 +01008685run_test "DTLS fragmenting: client-initiated, server only (max_frag_len), proxy MTU" \
Andrzej Kurek0fc9cf42018-10-09 03:09:41 -04008686 -p "$P_PXY mtu=1110" \
Hanno Beckerc92b5c82018-08-24 11:48:01 +01008687 "$P_SRV dtls=1 debug_level=2 auth_mode=none \
8688 crt_file=data_files/server7_int-ca.crt \
8689 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008690 hs_timeout=2500-60000 \
Hanno Beckerc92b5c82018-08-24 11:48:01 +01008691 max_frag_len=2048" \
8692 "$P_CLI dtls=1 debug_level=2 \
8693 crt_file=data_files/server8_int-ca2.crt \
8694 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008695 hs_timeout=2500-60000 \
8696 max_frag_len=1024" \
Hanno Beckerc92b5c82018-08-24 11:48:01 +01008697 0 \
8698 -S "found fragmented DTLS handshake message" \
8699 -c "found fragmented DTLS handshake message" \
8700 -C "error"
8701
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008702requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8703requires_config_enabled MBEDTLS_RSA_C
8704requires_config_enabled MBEDTLS_ECDSA_C
8705requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanoa49124e2021-07-08 15:56:33 +01008706requires_max_content_len 2048
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008707run_test "DTLS fragmenting: client-initiated, both (max_frag_len)" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008708 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8709 crt_file=data_files/server7_int-ca.crt \
8710 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008711 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008712 max_frag_len=2048" \
8713 "$P_CLI dtls=1 debug_level=2 \
8714 crt_file=data_files/server8_int-ca2.crt \
8715 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008716 hs_timeout=2500-60000 \
8717 max_frag_len=1024" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +02008718 0 \
8719 -s "found fragmented DTLS handshake message" \
8720 -c "found fragmented DTLS handshake message" \
8721 -C "error"
8722
Hanno Beckerc92b5c82018-08-24 11:48:01 +01008723# While not required by the standard defining the MFL extension
8724# (according to which it only applies to records, not to datagrams),
8725# Mbed TLS will never send datagrams larger than MFL + { Max record expansion },
8726# as otherwise there wouldn't be any means to communicate MTU restrictions
8727# to the peer.
8728# The next test checks that no datagrams significantly larger than the
8729# negotiated MFL are sent.
8730requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8731requires_config_enabled MBEDTLS_RSA_C
8732requires_config_enabled MBEDTLS_ECDSA_C
8733requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanoa49124e2021-07-08 15:56:33 +01008734requires_max_content_len 2048
Hanno Beckerc92b5c82018-08-24 11:48:01 +01008735run_test "DTLS fragmenting: client-initiated, both (max_frag_len), proxy MTU" \
Andrzej Kurek0fc9cf42018-10-09 03:09:41 -04008736 -p "$P_PXY mtu=1110" \
Hanno Beckerc92b5c82018-08-24 11:48:01 +01008737 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8738 crt_file=data_files/server7_int-ca.crt \
8739 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008740 hs_timeout=2500-60000 \
Hanno Beckerc92b5c82018-08-24 11:48:01 +01008741 max_frag_len=2048" \
8742 "$P_CLI dtls=1 debug_level=2 \
8743 crt_file=data_files/server8_int-ca2.crt \
8744 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008745 hs_timeout=2500-60000 \
8746 max_frag_len=1024" \
Hanno Beckerc92b5c82018-08-24 11:48:01 +01008747 0 \
8748 -s "found fragmented DTLS handshake message" \
8749 -c "found fragmented DTLS handshake message" \
8750 -C "error"
8751
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008752requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8753requires_config_enabled MBEDTLS_RSA_C
8754requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01008755requires_max_content_len 4096
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008756run_test "DTLS fragmenting: none (for reference) (MTU)" \
8757 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8758 crt_file=data_files/server7_int-ca.crt \
8759 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008760 hs_timeout=2500-60000 \
Hanno Becker12405e72018-08-13 16:45:46 +01008761 mtu=4096" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008762 "$P_CLI dtls=1 debug_level=2 \
8763 crt_file=data_files/server8_int-ca2.crt \
8764 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008765 hs_timeout=2500-60000 \
Hanno Becker12405e72018-08-13 16:45:46 +01008766 mtu=4096" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008767 0 \
8768 -S "found fragmented DTLS handshake message" \
8769 -C "found fragmented DTLS handshake message" \
8770 -C "error"
8771
8772requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8773requires_config_enabled MBEDTLS_RSA_C
8774requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01008775requires_max_content_len 4096
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008776run_test "DTLS fragmenting: client (MTU)" \
8777 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8778 crt_file=data_files/server7_int-ca.crt \
8779 key_file=data_files/server7.key \
Andrzej Kurek948fe802018-10-05 15:42:44 -04008780 hs_timeout=3500-60000 \
Hanno Becker12405e72018-08-13 16:45:46 +01008781 mtu=4096" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008782 "$P_CLI dtls=1 debug_level=2 \
8783 crt_file=data_files/server8_int-ca2.crt \
8784 key_file=data_files/server8.key \
Andrzej Kurek948fe802018-10-05 15:42:44 -04008785 hs_timeout=3500-60000 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008786 mtu=1024" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008787 0 \
8788 -s "found fragmented DTLS handshake message" \
8789 -C "found fragmented DTLS handshake message" \
8790 -C "error"
8791
8792requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8793requires_config_enabled MBEDTLS_RSA_C
8794requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01008795requires_max_content_len 2048
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008796run_test "DTLS fragmenting: server (MTU)" \
8797 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8798 crt_file=data_files/server7_int-ca.crt \
8799 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008800 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008801 mtu=512" \
8802 "$P_CLI dtls=1 debug_level=2 \
8803 crt_file=data_files/server8_int-ca2.crt \
8804 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008805 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008806 mtu=2048" \
8807 0 \
8808 -S "found fragmented DTLS handshake message" \
8809 -c "found fragmented DTLS handshake message" \
8810 -C "error"
8811
8812requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8813requires_config_enabled MBEDTLS_RSA_C
8814requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01008815requires_max_content_len 2048
Andrzej Kurek7311c782018-10-11 06:49:41 -04008816run_test "DTLS fragmenting: both (MTU=1024)" \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008817 -p "$P_PXY mtu=1024" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008818 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8819 crt_file=data_files/server7_int-ca.crt \
8820 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008821 hs_timeout=2500-60000 \
Andrzej Kurek95805282018-10-11 08:55:37 -04008822 mtu=1024" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008823 "$P_CLI dtls=1 debug_level=2 \
8824 crt_file=data_files/server8_int-ca2.crt \
8825 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008826 hs_timeout=2500-60000 \
8827 mtu=1024" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +02008828 0 \
8829 -s "found fragmented DTLS handshake message" \
8830 -c "found fragmented DTLS handshake message" \
8831 -C "error"
8832
Andrzej Kurek77826052018-10-11 07:34:08 -04008833# Forcing ciphersuite for this test to fit the MTU of 512 with full config.
Andrzej Kurek7311c782018-10-11 06:49:41 -04008834requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8835requires_config_enabled MBEDTLS_RSA_C
8836requires_config_enabled MBEDTLS_ECDSA_C
8837requires_config_enabled MBEDTLS_SHA256_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02008838requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek7311c782018-10-11 06:49:41 -04008839requires_config_enabled MBEDTLS_AES_C
8840requires_config_enabled MBEDTLS_GCM_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01008841requires_max_content_len 2048
Andrzej Kurek7311c782018-10-11 06:49:41 -04008842run_test "DTLS fragmenting: both (MTU=512)" \
Hanno Becker8d832182018-03-15 10:14:19 +00008843 -p "$P_PXY mtu=512" \
Hanno Becker72a4f032017-11-15 16:39:20 +00008844 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8845 crt_file=data_files/server7_int-ca.crt \
8846 key_file=data_files/server7.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008847 hs_timeout=2500-60000 \
Hanno Becker72a4f032017-11-15 16:39:20 +00008848 mtu=512" \
8849 "$P_CLI dtls=1 debug_level=2 \
8850 crt_file=data_files/server8_int-ca2.crt \
8851 key_file=data_files/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008852 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
8853 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02008854 mtu=512" \
Manuel Pégourié-Gonnard63eca932014-09-08 16:39:08 +02008855 0 \
Manuel Pégourié-Gonnard246c13a2014-09-24 13:56:09 +02008856 -s "found fragmented DTLS handshake message" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +02008857 -c "found fragmented DTLS handshake message" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +02008858 -C "error"
Manuel Pégourié-Gonnard74a13782014-10-14 22:34:08 +02008859
Andrzej Kurek7311c782018-10-11 06:49:41 -04008860# Test for automatic MTU reduction on repeated resend.
Andrzej Kurek77826052018-10-11 07:34:08 -04008861# Forcing ciphersuite for this test to fit the MTU of 508 with full config.
Andrzej Kurek7311c782018-10-11 06:49:41 -04008862# The ratio of max/min timeout should ideally equal 4 to accept two
8863# retransmissions, but in some cases (like both the server and client using
8864# fragmentation and auto-reduction) an extra retransmission might occur,
8865# hence the ratio of 8.
Hanno Becker37029eb2018-08-29 17:01:40 +01008866not_with_valgrind
Manuel Pégourié-Gonnardb8eec192018-08-20 09:34:02 +02008867requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8868requires_config_enabled MBEDTLS_RSA_C
8869requires_config_enabled MBEDTLS_ECDSA_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02008870requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek7311c782018-10-11 06:49:41 -04008871requires_config_enabled MBEDTLS_AES_C
8872requires_config_enabled MBEDTLS_GCM_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01008873requires_max_content_len 2048
Gilles Peskine0d8b86a2019-09-20 18:03:11 +02008874run_test "DTLS fragmenting: proxy MTU: auto-reduction (not valgrind)" \
Manuel Pégourié-Gonnardb8eec192018-08-20 09:34:02 +02008875 -p "$P_PXY mtu=508" \
8876 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8877 crt_file=data_files/server7_int-ca.crt \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008878 key_file=data_files/server7.key \
8879 hs_timeout=400-3200" \
Manuel Pégourié-Gonnardb8eec192018-08-20 09:34:02 +02008880 "$P_CLI dtls=1 debug_level=2 \
8881 crt_file=data_files/server8_int-ca2.crt \
8882 key_file=data_files/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008883 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
8884 hs_timeout=400-3200" \
Manuel Pégourié-Gonnardb8eec192018-08-20 09:34:02 +02008885 0 \
8886 -s "found fragmented DTLS handshake message" \
8887 -c "found fragmented DTLS handshake message" \
8888 -C "error"
8889
Andrzej Kurek77826052018-10-11 07:34:08 -04008890# Forcing ciphersuite for this test to fit the MTU of 508 with full config.
Hanno Becker108992e2018-08-29 17:04:18 +01008891only_with_valgrind
8892requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8893requires_config_enabled MBEDTLS_RSA_C
8894requires_config_enabled MBEDTLS_ECDSA_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02008895requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek7311c782018-10-11 06:49:41 -04008896requires_config_enabled MBEDTLS_AES_C
8897requires_config_enabled MBEDTLS_GCM_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01008898requires_max_content_len 2048
Gilles Peskine0d8b86a2019-09-20 18:03:11 +02008899run_test "DTLS fragmenting: proxy MTU: auto-reduction (with valgrind)" \
Hanno Becker108992e2018-08-29 17:04:18 +01008900 -p "$P_PXY mtu=508" \
8901 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8902 crt_file=data_files/server7_int-ca.crt \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008903 key_file=data_files/server7.key \
Hanno Becker108992e2018-08-29 17:04:18 +01008904 hs_timeout=250-10000" \
8905 "$P_CLI dtls=1 debug_level=2 \
8906 crt_file=data_files/server8_int-ca2.crt \
8907 key_file=data_files/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008908 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Hanno Becker108992e2018-08-29 17:04:18 +01008909 hs_timeout=250-10000" \
8910 0 \
8911 -s "found fragmented DTLS handshake message" \
8912 -c "found fragmented DTLS handshake message" \
8913 -C "error"
8914
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008915# the proxy shouldn't drop or mess up anything, so we shouldn't need to resend
Manuel Pégourié-Gonnard3d183ce2018-08-22 09:56:22 +02008916# OTOH the client might resend if the server is to slow to reset after sending
8917# a HelloVerifyRequest, so only check for no retransmission server-side
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008918not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008919requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8920requires_config_enabled MBEDTLS_RSA_C
8921requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01008922requires_max_content_len 2048
Andrzej Kurek7311c782018-10-11 06:49:41 -04008923run_test "DTLS fragmenting: proxy MTU, simple handshake (MTU=1024)" \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008924 -p "$P_PXY mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008925 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8926 crt_file=data_files/server7_int-ca.crt \
8927 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008928 hs_timeout=10000-60000 \
8929 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008930 "$P_CLI dtls=1 debug_level=2 \
8931 crt_file=data_files/server8_int-ca2.crt \
8932 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008933 hs_timeout=10000-60000 \
8934 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008935 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008936 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008937 -s "found fragmented DTLS handshake message" \
8938 -c "found fragmented DTLS handshake message" \
8939 -C "error"
8940
Andrzej Kurek77826052018-10-11 07:34:08 -04008941# Forcing ciphersuite for this test to fit the MTU of 512 with full config.
Andrzej Kurek7311c782018-10-11 06:49:41 -04008942# the proxy shouldn't drop or mess up anything, so we shouldn't need to resend
8943# OTOH the client might resend if the server is to slow to reset after sending
8944# a HelloVerifyRequest, so only check for no retransmission server-side
Andrzej Kurek35f2f302018-10-09 08:52:14 -04008945not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02008946requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8947requires_config_enabled MBEDTLS_RSA_C
8948requires_config_enabled MBEDTLS_ECDSA_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02008949requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek7311c782018-10-11 06:49:41 -04008950requires_config_enabled MBEDTLS_AES_C
8951requires_config_enabled MBEDTLS_GCM_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01008952requires_max_content_len 2048
Andrzej Kurek7311c782018-10-11 06:49:41 -04008953run_test "DTLS fragmenting: proxy MTU, simple handshake (MTU=512)" \
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02008954 -p "$P_PXY mtu=512" \
8955 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8956 crt_file=data_files/server7_int-ca.crt \
8957 key_file=data_files/server7.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008958 hs_timeout=10000-60000 \
8959 mtu=512" \
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02008960 "$P_CLI dtls=1 debug_level=2 \
8961 crt_file=data_files/server8_int-ca2.crt \
8962 key_file=data_files/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008963 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
8964 hs_timeout=10000-60000 \
8965 mtu=512" \
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02008966 0 \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008967 -S "autoreduction" \
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02008968 -s "found fragmented DTLS handshake message" \
8969 -c "found fragmented DTLS handshake message" \
8970 -C "error"
8971
Andrzej Kurek7311c782018-10-11 06:49:41 -04008972not_with_valgrind # spurious autoreduction due to timeout
8973requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8974requires_config_enabled MBEDTLS_RSA_C
8975requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01008976requires_max_content_len 2048
Andrzej Kurek7311c782018-10-11 06:49:41 -04008977run_test "DTLS fragmenting: proxy MTU, simple handshake, nbio (MTU=1024)" \
Andrzej Kurek52f84912018-10-05 07:53:40 -04008978 -p "$P_PXY mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008979 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
8980 crt_file=data_files/server7_int-ca.crt \
8981 key_file=data_files/server7.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008982 hs_timeout=10000-60000 \
8983 mtu=1024 nbio=2" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02008984 "$P_CLI dtls=1 debug_level=2 \
8985 crt_file=data_files/server8_int-ca2.crt \
8986 key_file=data_files/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04008987 hs_timeout=10000-60000 \
8988 mtu=1024 nbio=2" \
8989 0 \
8990 -S "autoreduction" \
8991 -s "found fragmented DTLS handshake message" \
8992 -c "found fragmented DTLS handshake message" \
8993 -C "error"
8994
Andrzej Kurek77826052018-10-11 07:34:08 -04008995# Forcing ciphersuite for this test to fit the MTU of 512 with full config.
Andrzej Kurek7311c782018-10-11 06:49:41 -04008996not_with_valgrind # spurious autoreduction due to timeout
8997requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8998requires_config_enabled MBEDTLS_RSA_C
8999requires_config_enabled MBEDTLS_ECDSA_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02009000requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek7311c782018-10-11 06:49:41 -04009001requires_config_enabled MBEDTLS_AES_C
9002requires_config_enabled MBEDTLS_GCM_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01009003requires_max_content_len 2048
Andrzej Kurek7311c782018-10-11 06:49:41 -04009004run_test "DTLS fragmenting: proxy MTU, simple handshake, nbio (MTU=512)" \
9005 -p "$P_PXY mtu=512" \
9006 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9007 crt_file=data_files/server7_int-ca.crt \
9008 key_file=data_files/server7.key \
9009 hs_timeout=10000-60000 \
9010 mtu=512 nbio=2" \
9011 "$P_CLI dtls=1 debug_level=2 \
9012 crt_file=data_files/server8_int-ca2.crt \
9013 key_file=data_files/server8.key \
9014 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
9015 hs_timeout=10000-60000 \
9016 mtu=512 nbio=2" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009017 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -04009018 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009019 -s "found fragmented DTLS handshake message" \
9020 -c "found fragmented DTLS handshake message" \
9021 -C "error"
9022
Andrzej Kurek77826052018-10-11 07:34:08 -04009023# Forcing ciphersuite for this test to fit the MTU of 1450 with full config.
Hanno Beckerb841b4f2018-08-28 10:25:51 +01009024# This ensures things still work after session_reset().
9025# It also exercises the "resumed handshake" flow.
Manuel Pégourié-Gonnard19c62f92018-08-16 10:50:39 +02009026# Since we don't support reading fragmented ClientHello yet,
9027# up the MTU to 1450 (larger than ClientHello with session ticket,
9028# but still smaller than client's Certificate to ensure fragmentation).
Andrzej Kurek35f2f302018-10-09 08:52:14 -04009029# An autoreduction on the client-side might happen if the server is
9030# slow to reset, therefore omitting '-C "autoreduction"' below.
Manuel Pégourié-Gonnard2f2d9022018-08-21 12:17:54 +02009031# reco_delay avoids races where the client reconnects before the server has
Andrzej Kurek35f2f302018-10-09 08:52:14 -04009032# resumed listening, which would result in a spurious autoreduction.
9033not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard19c62f92018-08-16 10:50:39 +02009034requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9035requires_config_enabled MBEDTLS_RSA_C
9036requires_config_enabled MBEDTLS_ECDSA_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02009037requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek7311c782018-10-11 06:49:41 -04009038requires_config_enabled MBEDTLS_AES_C
9039requires_config_enabled MBEDTLS_GCM_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01009040requires_max_content_len 2048
Manuel Pégourié-Gonnard19c62f92018-08-16 10:50:39 +02009041run_test "DTLS fragmenting: proxy MTU, resumed handshake" \
9042 -p "$P_PXY mtu=1450" \
9043 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9044 crt_file=data_files/server7_int-ca.crt \
9045 key_file=data_files/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04009046 hs_timeout=10000-60000 \
Manuel Pégourié-Gonnard19c62f92018-08-16 10:50:39 +02009047 mtu=1450" \
9048 "$P_CLI dtls=1 debug_level=2 \
9049 crt_file=data_files/server8_int-ca2.crt \
9050 key_file=data_files/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -04009051 hs_timeout=10000-60000 \
Andrzej Kurek7311c782018-10-11 06:49:41 -04009052 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01009053 mtu=1450 reconnect=1 skip_close_notify=1 reco_delay=1" \
Manuel Pégourié-Gonnard19c62f92018-08-16 10:50:39 +02009054 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -04009055 -S "autoreduction" \
Manuel Pégourié-Gonnard19c62f92018-08-16 10:50:39 +02009056 -s "found fragmented DTLS handshake message" \
9057 -c "found fragmented DTLS handshake message" \
9058 -C "error"
9059
Andrzej Kurek35f2f302018-10-09 08:52:14 -04009060# An autoreduction on the client-side might happen if the server is
9061# slow to reset, therefore omitting '-C "autoreduction"' below.
9062not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009063requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9064requires_config_enabled MBEDTLS_RSA_C
9065requires_config_enabled MBEDTLS_ECDSA_C
9066requires_config_enabled MBEDTLS_SHA256_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02009067requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009068requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Yuto Takanoa49124e2021-07-08 15:56:33 +01009069requires_max_content_len 2048
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009070run_test "DTLS fragmenting: proxy MTU, ChachaPoly renego" \
9071 -p "$P_PXY mtu=512" \
9072 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9073 crt_file=data_files/server7_int-ca.crt \
9074 key_file=data_files/server7.key \
9075 exchanges=2 renegotiation=1 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04009076 hs_timeout=10000-60000 \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009077 mtu=512" \
9078 "$P_CLI dtls=1 debug_level=2 \
9079 crt_file=data_files/server8_int-ca2.crt \
9080 key_file=data_files/server8.key \
9081 exchanges=2 renegotiation=1 renegotiate=1 \
Ronald Cronba77a662023-11-28 17:52:42 +01009082 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04009083 hs_timeout=10000-60000 \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009084 mtu=512" \
9085 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -04009086 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009087 -s "found fragmented DTLS handshake message" \
9088 -c "found fragmented DTLS handshake message" \
9089 -C "error"
9090
Andrzej Kurek35f2f302018-10-09 08:52:14 -04009091# An autoreduction on the client-side might happen if the server is
9092# slow to reset, therefore omitting '-C "autoreduction"' below.
9093not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009094requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9095requires_config_enabled MBEDTLS_RSA_C
9096requires_config_enabled MBEDTLS_ECDSA_C
9097requires_config_enabled MBEDTLS_SHA256_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02009098requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009099requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Yuto Takanoa49124e2021-07-08 15:56:33 +01009100requires_max_content_len 2048
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009101run_test "DTLS fragmenting: proxy MTU, AES-GCM renego" \
9102 -p "$P_PXY mtu=512" \
9103 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9104 crt_file=data_files/server7_int-ca.crt \
9105 key_file=data_files/server7.key \
9106 exchanges=2 renegotiation=1 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04009107 hs_timeout=10000-60000 \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009108 mtu=512" \
9109 "$P_CLI dtls=1 debug_level=2 \
9110 crt_file=data_files/server8_int-ca2.crt \
9111 key_file=data_files/server8.key \
9112 exchanges=2 renegotiation=1 renegotiate=1 \
Andrzej Kurek7311c782018-10-11 06:49:41 -04009113 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04009114 hs_timeout=10000-60000 \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009115 mtu=512" \
9116 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -04009117 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009118 -s "found fragmented DTLS handshake message" \
9119 -c "found fragmented DTLS handshake message" \
9120 -C "error"
9121
Andrzej Kurek35f2f302018-10-09 08:52:14 -04009122# An autoreduction on the client-side might happen if the server is
9123# slow to reset, therefore omitting '-C "autoreduction"' below.
9124not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009125requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9126requires_config_enabled MBEDTLS_RSA_C
9127requires_config_enabled MBEDTLS_ECDSA_C
9128requires_config_enabled MBEDTLS_SHA256_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02009129requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009130requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Yuto Takanoa49124e2021-07-08 15:56:33 +01009131requires_max_content_len 2048
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009132run_test "DTLS fragmenting: proxy MTU, AES-CCM renego" \
Andrzej Kurek52f84912018-10-05 07:53:40 -04009133 -p "$P_PXY mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009134 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9135 crt_file=data_files/server7_int-ca.crt \
9136 key_file=data_files/server7.key \
9137 exchanges=2 renegotiation=1 \
9138 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04009139 hs_timeout=10000-60000 \
9140 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009141 "$P_CLI dtls=1 debug_level=2 \
9142 crt_file=data_files/server8_int-ca2.crt \
9143 key_file=data_files/server8.key \
9144 exchanges=2 renegotiation=1 renegotiate=1 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04009145 hs_timeout=10000-60000 \
9146 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009147 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -04009148 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009149 -s "found fragmented DTLS handshake message" \
9150 -c "found fragmented DTLS handshake message" \
9151 -C "error"
9152
Andrzej Kurek35f2f302018-10-09 08:52:14 -04009153# An autoreduction on the client-side might happen if the server is
9154# slow to reset, therefore omitting '-C "autoreduction"' below.
9155not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009156requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9157requires_config_enabled MBEDTLS_RSA_C
9158requires_config_enabled MBEDTLS_ECDSA_C
9159requires_config_enabled MBEDTLS_SHA256_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02009160requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009161requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009162requires_config_enabled MBEDTLS_SSL_ENCRYPT_THEN_MAC
Yuto Takanoa49124e2021-07-08 15:56:33 +01009163requires_max_content_len 2048
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009164run_test "DTLS fragmenting: proxy MTU, AES-CBC EtM renego" \
Andrzej Kurek52f84912018-10-05 07:53:40 -04009165 -p "$P_PXY mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009166 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9167 crt_file=data_files/server7_int-ca.crt \
9168 key_file=data_files/server7.key \
9169 exchanges=2 renegotiation=1 \
9170 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04009171 hs_timeout=10000-60000 \
9172 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009173 "$P_CLI dtls=1 debug_level=2 \
9174 crt_file=data_files/server8_int-ca2.crt \
9175 key_file=data_files/server8.key \
9176 exchanges=2 renegotiation=1 renegotiate=1 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04009177 hs_timeout=10000-60000 \
9178 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009179 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -04009180 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009181 -s "found fragmented DTLS handshake message" \
9182 -c "found fragmented DTLS handshake message" \
9183 -C "error"
9184
Andrzej Kurek35f2f302018-10-09 08:52:14 -04009185# An autoreduction on the client-side might happen if the server is
9186# slow to reset, therefore omitting '-C "autoreduction"' below.
9187not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009188requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9189requires_config_enabled MBEDTLS_RSA_C
9190requires_config_enabled MBEDTLS_ECDSA_C
9191requires_config_enabled MBEDTLS_SHA256_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02009192requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009193requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Yuto Takanoa49124e2021-07-08 15:56:33 +01009194requires_max_content_len 2048
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009195run_test "DTLS fragmenting: proxy MTU, AES-CBC non-EtM renego" \
Andrzej Kurek52f84912018-10-05 07:53:40 -04009196 -p "$P_PXY mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009197 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9198 crt_file=data_files/server7_int-ca.crt \
9199 key_file=data_files/server7.key \
9200 exchanges=2 renegotiation=1 \
9201 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256 etm=0 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04009202 hs_timeout=10000-60000 \
9203 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009204 "$P_CLI dtls=1 debug_level=2 \
9205 crt_file=data_files/server8_int-ca2.crt \
9206 key_file=data_files/server8.key \
9207 exchanges=2 renegotiation=1 renegotiate=1 \
Andrzej Kurek52f84912018-10-05 07:53:40 -04009208 hs_timeout=10000-60000 \
9209 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009210 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -04009211 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +02009212 -s "found fragmented DTLS handshake message" \
9213 -c "found fragmented DTLS handshake message" \
9214 -C "error"
9215
Andrzej Kurek77826052018-10-11 07:34:08 -04009216# Forcing ciphersuite for this test to fit the MTU of 512 with full config.
Manuel Pégourié-Gonnard2d56f0d2018-08-16 11:09:03 +02009217requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9218requires_config_enabled MBEDTLS_RSA_C
9219requires_config_enabled MBEDTLS_ECDSA_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02009220requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek7311c782018-10-11 06:49:41 -04009221requires_config_enabled MBEDTLS_AES_C
9222requires_config_enabled MBEDTLS_GCM_C
Manuel Pégourié-Gonnard2d56f0d2018-08-16 11:09:03 +02009223client_needs_more_time 2
Yuto Takanoa49124e2021-07-08 15:56:33 +01009224requires_max_content_len 2048
Manuel Pégourié-Gonnard2d56f0d2018-08-16 11:09:03 +02009225run_test "DTLS fragmenting: proxy MTU + 3d" \
9226 -p "$P_PXY mtu=512 drop=8 delay=8 duplicate=8" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01009227 "$P_SRV dgram_packing=0 dtls=1 debug_level=2 auth_mode=required \
Manuel Pégourié-Gonnard2d56f0d2018-08-16 11:09:03 +02009228 crt_file=data_files/server7_int-ca.crt \
9229 key_file=data_files/server7.key \
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +02009230 hs_timeout=250-10000 mtu=512" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01009231 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
Manuel Pégourié-Gonnard2d56f0d2018-08-16 11:09:03 +02009232 crt_file=data_files/server8_int-ca2.crt \
9233 key_file=data_files/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04009234 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +02009235 hs_timeout=250-10000 mtu=512" \
Manuel Pégourié-Gonnard2d56f0d2018-08-16 11:09:03 +02009236 0 \
9237 -s "found fragmented DTLS handshake message" \
9238 -c "found fragmented DTLS handshake message" \
9239 -C "error"
9240
Andrzej Kurek77826052018-10-11 07:34:08 -04009241# Forcing ciphersuite for this test to fit the MTU of 512 with full config.
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02009242requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9243requires_config_enabled MBEDTLS_RSA_C
9244requires_config_enabled MBEDTLS_ECDSA_C
Gilles Peskinee7738c32021-07-13 20:34:55 +02009245requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek7311c782018-10-11 06:49:41 -04009246requires_config_enabled MBEDTLS_AES_C
9247requires_config_enabled MBEDTLS_GCM_C
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02009248client_needs_more_time 2
Yuto Takanoa49124e2021-07-08 15:56:33 +01009249requires_max_content_len 2048
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02009250run_test "DTLS fragmenting: proxy MTU + 3d, nbio" \
9251 -p "$P_PXY mtu=512 drop=8 delay=8 duplicate=8" \
9252 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9253 crt_file=data_files/server7_int-ca.crt \
9254 key_file=data_files/server7.key \
9255 hs_timeout=250-10000 mtu=512 nbio=2" \
9256 "$P_CLI dtls=1 debug_level=2 \
9257 crt_file=data_files/server8_int-ca2.crt \
9258 key_file=data_files/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -04009259 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +02009260 hs_timeout=250-10000 mtu=512 nbio=2" \
9261 0 \
9262 -s "found fragmented DTLS handshake message" \
9263 -c "found fragmented DTLS handshake message" \
9264 -C "error"
9265
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009266# interop tests for DTLS fragmentating with reliable connection
9267#
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009268# here and below we just want to test that the we fragment in a way that
9269# pleases other implementations, so we don't need the peer to fragment
9270requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9271requires_config_enabled MBEDTLS_RSA_C
9272requires_config_enabled MBEDTLS_ECDSA_C
Manuel Pégourié-Gonnard61512982018-08-21 09:40:07 +02009273requires_gnutls
Yuto Takanoa49124e2021-07-08 15:56:33 +01009274requires_max_content_len 2048
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009275run_test "DTLS fragmenting: gnutls server, DTLS 1.2" \
9276 "$G_SRV -u" \
9277 "$P_CLI dtls=1 debug_level=2 \
9278 crt_file=data_files/server8_int-ca2.crt \
9279 key_file=data_files/server8.key \
Xiaofei Baif40545d2021-12-02 08:43:35 +00009280 mtu=512 force_version=dtls12" \
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009281 0 \
9282 -c "fragmenting handshake message" \
9283 -C "error"
9284
9285requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9286requires_config_enabled MBEDTLS_RSA_C
9287requires_config_enabled MBEDTLS_ECDSA_C
Manuel Pégourié-Gonnard61512982018-08-21 09:40:07 +02009288requires_gnutls
Yuto Takano75ab9282021-07-26 08:27:47 +01009289requires_max_content_len 2048
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009290run_test "DTLS fragmenting: gnutls server, DTLS 1.0" \
9291 "$G_SRV -u" \
9292 "$P_CLI dtls=1 debug_level=2 \
9293 crt_file=data_files/server8_int-ca2.crt \
9294 key_file=data_files/server8.key \
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +02009295 mtu=512 force_version=dtls1" \
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009296 0 \
9297 -c "fragmenting handshake message" \
9298 -C "error"
9299
Hanno Beckerb9a00862018-08-28 10:20:22 +01009300# We use --insecure for the GnuTLS client because it expects
9301# the hostname / IP it connects to to be the name used in the
9302# certificate obtained from the server. Here, however, it
9303# connects to 127.0.0.1 while our test certificates use 'localhost'
9304# as the server name in the certificate. This will make the
Shaun Case0e7791f2021-12-20 21:14:10 -08009305# certificate validation fail, but passing --insecure makes
Hanno Beckerb9a00862018-08-28 10:20:22 +01009306# GnuTLS continue the connection nonetheless.
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009307requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9308requires_config_enabled MBEDTLS_RSA_C
9309requires_config_enabled MBEDTLS_ECDSA_C
Manuel Pégourié-Gonnard61512982018-08-21 09:40:07 +02009310requires_gnutls
Andrzej Kurekb4593462018-10-11 08:43:30 -04009311requires_not_i686
Yuto Takanoa49124e2021-07-08 15:56:33 +01009312requires_max_content_len 2048
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009313run_test "DTLS fragmenting: gnutls client, DTLS 1.2" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02009314 "$P_SRV dtls=1 debug_level=2 \
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009315 crt_file=data_files/server7_int-ca.crt \
9316 key_file=data_files/server7.key \
Xiaofei Baif40545d2021-12-02 08:43:35 +00009317 mtu=512 force_version=dtls12" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02009318 "$G_CLI -u --insecure 127.0.0.1" \
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009319 0 \
9320 -s "fragmenting handshake message"
9321
Hanno Beckerb9a00862018-08-28 10:20:22 +01009322# See previous test for the reason to use --insecure
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009323requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9324requires_config_enabled MBEDTLS_RSA_C
9325requires_config_enabled MBEDTLS_ECDSA_C
Manuel Pégourié-Gonnard61512982018-08-21 09:40:07 +02009326requires_gnutls
Andrzej Kurekb4593462018-10-11 08:43:30 -04009327requires_not_i686
Yuto Takano75ab9282021-07-26 08:27:47 +01009328requires_max_content_len 2048
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009329run_test "DTLS fragmenting: gnutls client, DTLS 1.0" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02009330 "$P_SRV dtls=1 debug_level=2 \
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009331 crt_file=data_files/server7_int-ca.crt \
9332 key_file=data_files/server7.key \
9333 mtu=512 force_version=dtls1" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02009334 "$G_CLI -u --insecure 127.0.0.1" \
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009335 0 \
9336 -s "fragmenting handshake message"
9337
9338requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9339requires_config_enabled MBEDTLS_RSA_C
9340requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01009341requires_max_content_len 2048
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009342run_test "DTLS fragmenting: openssl server, DTLS 1.2" \
9343 "$O_SRV -dtls1_2 -verify 10" \
9344 "$P_CLI dtls=1 debug_level=2 \
9345 crt_file=data_files/server8_int-ca2.crt \
9346 key_file=data_files/server8.key \
Xiaofei Baif40545d2021-12-02 08:43:35 +00009347 mtu=512 force_version=dtls12" \
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009348 0 \
9349 -c "fragmenting handshake message" \
9350 -C "error"
9351
9352requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9353requires_config_enabled MBEDTLS_RSA_C
9354requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takano75ab9282021-07-26 08:27:47 +01009355requires_max_content_len 2048
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009356run_test "DTLS fragmenting: openssl server, DTLS 1.0" \
9357 "$O_SRV -dtls1 -verify 10" \
9358 "$P_CLI dtls=1 debug_level=2 \
9359 crt_file=data_files/server8_int-ca2.crt \
9360 key_file=data_files/server8.key \
9361 mtu=512 force_version=dtls1" \
9362 0 \
9363 -c "fragmenting handshake message" \
9364 -C "error"
9365
9366requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9367requires_config_enabled MBEDTLS_RSA_C
9368requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takanoa49124e2021-07-08 15:56:33 +01009369requires_max_content_len 2048
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009370run_test "DTLS fragmenting: openssl client, DTLS 1.2" \
9371 "$P_SRV dtls=1 debug_level=2 \
9372 crt_file=data_files/server7_int-ca.crt \
9373 key_file=data_files/server7.key \
Xiaofei Baif40545d2021-12-02 08:43:35 +00009374 mtu=512 force_version=dtls12" \
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009375 "$O_CLI -dtls1_2" \
9376 0 \
9377 -s "fragmenting handshake message"
9378
9379requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9380requires_config_enabled MBEDTLS_RSA_C
9381requires_config_enabled MBEDTLS_ECDSA_C
Yuto Takano75ab9282021-07-26 08:27:47 +01009382requires_max_content_len 2048
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +02009383run_test "DTLS fragmenting: openssl client, DTLS 1.0" \
9384 "$P_SRV dtls=1 debug_level=2 \
9385 crt_file=data_files/server7_int-ca.crt \
9386 key_file=data_files/server7.key \
9387 mtu=512 force_version=dtls1" \
9388 "$O_CLI -dtls1" \
9389 0 \
9390 -s "fragmenting handshake message"
9391
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009392# interop tests for DTLS fragmentating with unreliable connection
9393#
9394# again we just want to test that the we fragment in a way that
9395# pleases other implementations, so we don't need the peer to fragment
9396requires_gnutls_next
9397requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9398requires_config_enabled MBEDTLS_RSA_C
9399requires_config_enabled MBEDTLS_ECDSA_C
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +02009400client_needs_more_time 4
Yuto Takanoa49124e2021-07-08 15:56:33 +01009401requires_max_content_len 2048
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009402run_test "DTLS fragmenting: 3d, gnutls server, DTLS 1.2" \
9403 -p "$P_PXY drop=8 delay=8 duplicate=8" \
9404 "$G_NEXT_SRV -u" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01009405 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009406 crt_file=data_files/server8_int-ca2.crt \
9407 key_file=data_files/server8.key \
Xiaofei Baif40545d2021-12-02 08:43:35 +00009408 hs_timeout=250-60000 mtu=512 force_version=dtls12" \
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009409 0 \
9410 -c "fragmenting handshake message" \
9411 -C "error"
9412
9413requires_gnutls_next
9414requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9415requires_config_enabled MBEDTLS_RSA_C
9416requires_config_enabled MBEDTLS_ECDSA_C
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +02009417client_needs_more_time 4
Yuto Takano75ab9282021-07-26 08:27:47 +01009418requires_max_content_len 2048
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009419run_test "DTLS fragmenting: 3d, gnutls server, DTLS 1.0" \
9420 -p "$P_PXY drop=8 delay=8 duplicate=8" \
9421 "$G_NEXT_SRV -u" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01009422 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009423 crt_file=data_files/server8_int-ca2.crt \
9424 key_file=data_files/server8.key \
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +02009425 hs_timeout=250-60000 mtu=512 force_version=dtls1" \
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009426 0 \
9427 -c "fragmenting handshake message" \
9428 -C "error"
9429
k-stachowiak17a38d32019-02-18 15:29:56 +01009430requires_gnutls_next
Hanno Becker3b8b40c2018-08-28 10:25:41 +01009431requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9432requires_config_enabled MBEDTLS_RSA_C
9433requires_config_enabled MBEDTLS_ECDSA_C
Hanno Becker3b8b40c2018-08-28 10:25:41 +01009434client_needs_more_time 4
Yuto Takanoa49124e2021-07-08 15:56:33 +01009435requires_max_content_len 2048
Hanno Becker3b8b40c2018-08-28 10:25:41 +01009436run_test "DTLS fragmenting: 3d, gnutls client, DTLS 1.2" \
9437 -p "$P_PXY drop=8 delay=8 duplicate=8" \
9438 "$P_SRV dtls=1 debug_level=2 \
9439 crt_file=data_files/server7_int-ca.crt \
9440 key_file=data_files/server7.key \
Xiaofei Baif40545d2021-12-02 08:43:35 +00009441 hs_timeout=250-60000 mtu=512 force_version=dtls12" \
k-stachowiak17a38d32019-02-18 15:29:56 +01009442 "$G_NEXT_CLI -u --insecure 127.0.0.1" \
Hanno Becker3b8b40c2018-08-28 10:25:41 +01009443 0 \
9444 -s "fragmenting handshake message"
9445
k-stachowiak17a38d32019-02-18 15:29:56 +01009446requires_gnutls_next
Hanno Becker3b8b40c2018-08-28 10:25:41 +01009447requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9448requires_config_enabled MBEDTLS_RSA_C
9449requires_config_enabled MBEDTLS_ECDSA_C
Hanno Becker3b8b40c2018-08-28 10:25:41 +01009450client_needs_more_time 4
Yuto Takano75ab9282021-07-26 08:27:47 +01009451requires_max_content_len 2048
Hanno Becker3b8b40c2018-08-28 10:25:41 +01009452run_test "DTLS fragmenting: 3d, gnutls client, DTLS 1.0" \
9453 -p "$P_PXY drop=8 delay=8 duplicate=8" \
9454 "$P_SRV dtls=1 debug_level=2 \
9455 crt_file=data_files/server7_int-ca.crt \
9456 key_file=data_files/server7.key \
9457 hs_timeout=250-60000 mtu=512 force_version=dtls1" \
k-stachowiak17a38d32019-02-18 15:29:56 +01009458 "$G_NEXT_CLI -u --insecure 127.0.0.1" \
Hanno Becker3b8b40c2018-08-28 10:25:41 +01009459 0 \
9460 -s "fragmenting handshake message"
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009461
Zhangsen Wang1c981f52022-08-02 06:18:40 +00009462## The two tests below require 1.1.1a or higher version of openssl, otherwise
Zhangsen Wang7d0e6582022-06-29 07:33:35 +00009463## it might trigger a bug due to openssl (https://github.com/openssl/openssl/issues/6902)
9464requires_openssl_next
Hanno Becker3b8b40c2018-08-28 10:25:41 +01009465requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9466requires_config_enabled MBEDTLS_RSA_C
9467requires_config_enabled MBEDTLS_ECDSA_C
Hanno Becker3b8b40c2018-08-28 10:25:41 +01009468client_needs_more_time 4
Yuto Takanoa49124e2021-07-08 15:56:33 +01009469requires_max_content_len 2048
Hanno Becker3b8b40c2018-08-28 10:25:41 +01009470run_test "DTLS fragmenting: 3d, openssl server, DTLS 1.2" \
9471 -p "$P_PXY drop=8 delay=8 duplicate=8" \
Zhangsen Wang7d0e6582022-06-29 07:33:35 +00009472 "$O_NEXT_SRV -dtls1_2 -verify 10" \
Hanno Becker3b8b40c2018-08-28 10:25:41 +01009473 "$P_CLI dtls=1 debug_level=2 \
9474 crt_file=data_files/server8_int-ca2.crt \
9475 key_file=data_files/server8.key \
Xiaofei Baif40545d2021-12-02 08:43:35 +00009476 hs_timeout=250-60000 mtu=512 force_version=dtls12" \
Hanno Becker3b8b40c2018-08-28 10:25:41 +01009477 0 \
9478 -c "fragmenting handshake message" \
9479 -C "error"
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009480
Zhangsen Wang7d0e6582022-06-29 07:33:35 +00009481requires_openssl_next
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009482requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9483requires_config_enabled MBEDTLS_RSA_C
9484requires_config_enabled MBEDTLS_ECDSA_C
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +02009485client_needs_more_time 4
Yuto Takano75ab9282021-07-26 08:27:47 +01009486requires_max_content_len 2048
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009487run_test "DTLS fragmenting: 3d, openssl server, DTLS 1.0" \
9488 -p "$P_PXY drop=8 delay=8 duplicate=8" \
Zhangsen Wang7d0e6582022-06-29 07:33:35 +00009489 "$O_NEXT_SRV -dtls1 -verify 10" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01009490 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009491 crt_file=data_files/server8_int-ca2.crt \
9492 key_file=data_files/server8.key \
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +02009493 hs_timeout=250-60000 mtu=512 force_version=dtls1" \
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009494 0 \
9495 -c "fragmenting handshake message" \
9496 -C "error"
9497
Zhangsen Wang1c981f52022-08-02 06:18:40 +00009498## the two tests below will time out with certain seed.
9499## The cause is an openssl bug (https://github.com/openssl/openssl/issues/18887)
9500skip_next_test
Manuel Pégourié-Gonnardc1eda672018-09-03 10:41:49 +02009501requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9502requires_config_enabled MBEDTLS_RSA_C
9503requires_config_enabled MBEDTLS_ECDSA_C
Manuel Pégourié-Gonnardc1eda672018-09-03 10:41:49 +02009504client_needs_more_time 4
Yuto Takanoa49124e2021-07-08 15:56:33 +01009505requires_max_content_len 2048
Manuel Pégourié-Gonnardc1eda672018-09-03 10:41:49 +02009506run_test "DTLS fragmenting: 3d, openssl client, DTLS 1.2" \
9507 -p "$P_PXY drop=8 delay=8 duplicate=8" \
9508 "$P_SRV dtls=1 debug_level=2 \
9509 crt_file=data_files/server7_int-ca.crt \
9510 key_file=data_files/server7.key \
Xiaofei Baif40545d2021-12-02 08:43:35 +00009511 hs_timeout=250-60000 mtu=512 force_version=dtls12" \
Manuel Pégourié-Gonnardc1eda672018-09-03 10:41:49 +02009512 "$O_CLI -dtls1_2" \
9513 0 \
9514 -s "fragmenting handshake message"
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009515
9516# -nbio is added to prevent s_client from blocking in case of duplicated
9517# messages at the end of the handshake
Zhangsen Wang1c981f52022-08-02 06:18:40 +00009518skip_next_test
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009519requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9520requires_config_enabled MBEDTLS_RSA_C
9521requires_config_enabled MBEDTLS_ECDSA_C
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +02009522client_needs_more_time 4
Yuto Takano75ab9282021-07-26 08:27:47 +01009523requires_max_content_len 2048
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009524run_test "DTLS fragmenting: 3d, openssl client, DTLS 1.0" \
9525 -p "$P_PXY drop=8 delay=8 duplicate=8" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +01009526 "$P_SRV dgram_packing=0 dtls=1 debug_level=2 \
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009527 crt_file=data_files/server7_int-ca.crt \
9528 key_file=data_files/server7.key \
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +02009529 hs_timeout=250-60000 mtu=512 force_version=dtls1" \
Manuel Pégourié-Gonnardc1eda672018-09-03 10:41:49 +02009530 "$O_CLI -nbio -dtls1" \
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +02009531 0 \
9532 -s "fragmenting handshake message"
9533
Ron Eldorb4655392018-07-05 18:25:39 +03009534# Tests for DTLS-SRTP (RFC 5764)
9535requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9536run_test "DTLS-SRTP all profiles supported" \
9537 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
9538 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
9539 0 \
9540 -s "found use_srtp extension" \
9541 -s "found srtp profile" \
9542 -s "selected srtp profile" \
9543 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009544 -s "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03009545 -c "client hello, adding use_srtp extension" \
9546 -c "found use_srtp extension" \
9547 -c "found srtp profile" \
9548 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009549 -c "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02009550 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldorb4655392018-07-05 18:25:39 +03009551 -C "error"
9552
Johan Pascal9bc50b02020-09-24 12:01:13 +02009553
Ron Eldorb4655392018-07-05 18:25:39 +03009554requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9555run_test "DTLS-SRTP server supports all profiles. Client supports one profile." \
9556 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
Johan Pascal43f94902020-09-22 12:25:52 +02009557 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=5 debug_level=3" \
Ron Eldorb4655392018-07-05 18:25:39 +03009558 0 \
9559 -s "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009560 -s "found srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80" \
9561 -s "selected srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80" \
Ron Eldorb4655392018-07-05 18:25:39 +03009562 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009563 -s "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03009564 -c "client hello, adding use_srtp extension" \
9565 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009566 -c "found srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80" \
Ron Eldorb4655392018-07-05 18:25:39 +03009567 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009568 -c "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02009569 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldorb4655392018-07-05 18:25:39 +03009570 -C "error"
9571
9572requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009573run_test "DTLS-SRTP server supports one profile. Client supports all profiles." \
Johan Pascal43f94902020-09-22 12:25:52 +02009574 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=6 debug_level=3" \
Ron Eldorb4655392018-07-05 18:25:39 +03009575 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
9576 0 \
9577 -s "found use_srtp extension" \
9578 -s "found srtp profile" \
Johan Pascal43f94902020-09-22 12:25:52 +02009579 -s "selected srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32" \
Ron Eldorb4655392018-07-05 18:25:39 +03009580 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009581 -s "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03009582 -c "client hello, adding use_srtp extension" \
9583 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009584 -c "found srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32" \
Ron Eldorb4655392018-07-05 18:25:39 +03009585 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009586 -c "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02009587 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldorb4655392018-07-05 18:25:39 +03009588 -C "error"
9589
9590requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9591run_test "DTLS-SRTP server and Client support only one matching profile." \
9592 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
9593 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
9594 0 \
9595 -s "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009596 -s "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
9597 -s "selected srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldorb4655392018-07-05 18:25:39 +03009598 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009599 -s "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03009600 -c "client hello, adding use_srtp extension" \
9601 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009602 -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldorb4655392018-07-05 18:25:39 +03009603 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009604 -c "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02009605 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldorb4655392018-07-05 18:25:39 +03009606 -C "error"
9607
9608requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9609run_test "DTLS-SRTP server and Client support only one different profile." \
9610 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
Johan Pascal43f94902020-09-22 12:25:52 +02009611 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=6 debug_level=3" \
Ron Eldorb4655392018-07-05 18:25:39 +03009612 0 \
9613 -s "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009614 -s "found srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32" \
Ron Eldorb4655392018-07-05 18:25:39 +03009615 -S "selected srtp profile" \
9616 -S "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009617 -S "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03009618 -c "client hello, adding use_srtp extension" \
9619 -C "found use_srtp extension" \
9620 -C "found srtp profile" \
9621 -C "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009622 -C "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03009623 -C "error"
9624
9625requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9626run_test "DTLS-SRTP server doesn't support use_srtp extension." \
9627 "$P_SRV dtls=1 debug_level=3" \
9628 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
9629 0 \
9630 -s "found use_srtp extension" \
9631 -S "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009632 -S "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03009633 -c "client hello, adding use_srtp extension" \
9634 -C "found use_srtp extension" \
9635 -C "found srtp profile" \
9636 -C "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009637 -C "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03009638 -C "error"
9639
9640requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9641run_test "DTLS-SRTP all profiles supported. mki used" \
9642 "$P_SRV dtls=1 use_srtp=1 support_mki=1 debug_level=3" \
9643 "$P_CLI dtls=1 use_srtp=1 mki=542310ab34290481 debug_level=3" \
9644 0 \
9645 -s "found use_srtp extension" \
9646 -s "found srtp profile" \
9647 -s "selected srtp profile" \
9648 -s "server hello, adding use_srtp extension" \
9649 -s "dumping 'using mki' (8 bytes)" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009650 -s "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +03009651 -c "client hello, adding use_srtp extension" \
9652 -c "found use_srtp extension" \
9653 -c "found srtp profile" \
9654 -c "selected srtp profile" \
9655 -c "dumping 'sending mki' (8 bytes)" \
9656 -c "dumping 'received mki' (8 bytes)" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009657 -c "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02009658 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Johan Pascal20c7db32020-10-26 22:45:58 +01009659 -g "find_in_both '^ *DTLS-SRTP mki value: [0-9A-F]*$'"\
Ron Eldorb4655392018-07-05 18:25:39 +03009660 -C "error"
9661
9662requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9663run_test "DTLS-SRTP all profiles supported. server doesn't support mki." \
9664 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
9665 "$P_CLI dtls=1 use_srtp=1 mki=542310ab34290481 debug_level=3" \
9666 0 \
9667 -s "found use_srtp extension" \
9668 -s "found srtp profile" \
9669 -s "selected srtp profile" \
9670 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009671 -s "DTLS-SRTP key material is"\
Johan Pascal5ef72d22020-10-28 17:05:47 +01009672 -s "DTLS-SRTP no mki value negotiated"\
Ron Eldorb4655392018-07-05 18:25:39 +03009673 -S "dumping 'using mki' (8 bytes)" \
9674 -c "client hello, adding use_srtp extension" \
9675 -c "found use_srtp extension" \
9676 -c "found srtp profile" \
9677 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009678 -c "DTLS-SRTP key material is"\
Johan Pascal5ef72d22020-10-28 17:05:47 +01009679 -c "DTLS-SRTP no mki value negotiated"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02009680 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldorb4655392018-07-05 18:25:39 +03009681 -c "dumping 'sending mki' (8 bytes)" \
9682 -C "dumping 'received mki' (8 bytes)" \
9683 -C "error"
9684
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009685requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9686run_test "DTLS-SRTP all profiles supported. openssl client." \
9687 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009688 "$O_CLI -dtls1 -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009689 0 \
9690 -s "found use_srtp extension" \
9691 -s "found srtp profile" \
9692 -s "selected srtp profile" \
9693 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009694 -s "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02009695 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009696 -c "SRTP Extension negotiated, profile=SRTP_AES128_CM_SHA1_80"
9697
9698requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9699run_test "DTLS-SRTP server supports all profiles. Client supports all profiles, in different order. openssl client." \
9700 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009701 "$O_CLI -dtls1 -use_srtp SRTP_AES128_CM_SHA1_32:SRTP_AES128_CM_SHA1_80 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009702 0 \
9703 -s "found use_srtp extension" \
9704 -s "found srtp profile" \
9705 -s "selected srtp profile" \
9706 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009707 -s "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02009708 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009709 -c "SRTP Extension negotiated, profile=SRTP_AES128_CM_SHA1_32"
9710
9711requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9712run_test "DTLS-SRTP server supports all profiles. Client supports one profile. openssl client." \
9713 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009714 "$O_CLI -dtls1 -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009715 0 \
9716 -s "found use_srtp extension" \
9717 -s "found srtp profile" \
9718 -s "selected srtp profile" \
9719 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009720 -s "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02009721 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009722 -c "SRTP Extension negotiated, profile=SRTP_AES128_CM_SHA1_32"
9723
9724requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9725run_test "DTLS-SRTP server supports one profile. Client supports all profiles. openssl client." \
9726 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009727 "$O_CLI -dtls1 -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009728 0 \
9729 -s "found use_srtp extension" \
9730 -s "found srtp profile" \
9731 -s "selected srtp profile" \
9732 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009733 -s "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02009734 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009735 -c "SRTP Extension negotiated, profile=SRTP_AES128_CM_SHA1_32"
9736
9737requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9738run_test "DTLS-SRTP server and Client support only one matching profile. openssl client." \
9739 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009740 "$O_CLI -dtls1 -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009741 0 \
9742 -s "found use_srtp extension" \
9743 -s "found srtp profile" \
9744 -s "selected srtp profile" \
9745 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009746 -s "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +02009747 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009748 -c "SRTP Extension negotiated, profile=SRTP_AES128_CM_SHA1_32"
9749
9750requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9751run_test "DTLS-SRTP server and Client support only one different profile. openssl client." \
9752 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=1 debug_level=3" \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009753 "$O_CLI -dtls1 -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009754 0 \
9755 -s "found use_srtp extension" \
9756 -s "found srtp profile" \
9757 -S "selected srtp profile" \
9758 -S "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009759 -S "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009760 -C "SRTP Extension negotiated, profile"
9761
9762requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9763run_test "DTLS-SRTP server doesn't support use_srtp extension. openssl client" \
9764 "$P_SRV dtls=1 debug_level=3" \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009765 "$O_CLI -dtls1 -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009766 0 \
9767 -s "found use_srtp extension" \
9768 -S "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009769 -S "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009770 -C "SRTP Extension negotiated, profile"
9771
9772requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9773run_test "DTLS-SRTP all profiles supported. openssl server" \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009774 "$O_SRV -dtls1 -verify 0 -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009775 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
9776 0 \
9777 -c "client hello, adding use_srtp extension" \
9778 -c "found use_srtp extension" \
9779 -c "found srtp profile" \
Johan Pascal43f94902020-09-22 12:25:52 +02009780 -c "selected srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009781 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009782 -C "error"
9783
9784requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9785run_test "DTLS-SRTP server supports all profiles. Client supports all profiles, in different order. openssl server." \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009786 "$O_SRV -dtls1 -verify 0 -use_srtp SRTP_AES128_CM_SHA1_32:SRTP_AES128_CM_SHA1_80 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009787 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
9788 0 \
9789 -c "client hello, adding use_srtp extension" \
9790 -c "found use_srtp extension" \
9791 -c "found srtp profile" \
9792 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009793 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009794 -C "error"
9795
9796requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9797run_test "DTLS-SRTP server supports all profiles. Client supports one profile. openssl server." \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009798 "$O_SRV -dtls1 -verify 0 -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009799 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
9800 0 \
9801 -c "client hello, adding use_srtp extension" \
9802 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009803 -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009804 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009805 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009806 -C "error"
9807
9808requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9809run_test "DTLS-SRTP server supports one profile. Client supports all profiles. openssl server." \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009810 "$O_SRV -dtls1 -verify 0 -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009811 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
9812 0 \
9813 -c "client hello, adding use_srtp extension" \
9814 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009815 -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009816 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009817 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009818 -C "error"
9819
9820requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9821run_test "DTLS-SRTP server and Client support only one matching profile. openssl server." \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009822 "$O_SRV -dtls1 -verify 0 -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009823 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
9824 0 \
9825 -c "client hello, adding use_srtp extension" \
9826 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009827 -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009828 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009829 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009830 -C "error"
9831
9832requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9833run_test "DTLS-SRTP server and Client support only one different profile. openssl server." \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009834 "$O_SRV -dtls1 -verify 0 -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Johan Pascal43f94902020-09-22 12:25:52 +02009835 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=6 debug_level=3" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009836 0 \
9837 -c "client hello, adding use_srtp extension" \
9838 -C "found use_srtp extension" \
9839 -C "found srtp profile" \
9840 -C "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009841 -C "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009842 -C "error"
9843
9844requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9845run_test "DTLS-SRTP server doesn't support use_srtp extension. openssl server" \
9846 "$O_SRV -dtls1" \
9847 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
9848 0 \
9849 -c "client hello, adding use_srtp extension" \
9850 -C "found use_srtp extension" \
9851 -C "found srtp profile" \
9852 -C "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009853 -C "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009854 -C "error"
9855
9856requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
9857run_test "DTLS-SRTP all profiles supported. server doesn't support mki. openssl server." \
Johan Pascal39cfd3b2020-09-23 18:49:13 +02009858 "$O_SRV -dtls1 -verify 0 -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009859 "$P_CLI dtls=1 use_srtp=1 mki=542310ab34290481 debug_level=3" \
9860 0 \
9861 -c "client hello, adding use_srtp extension" \
9862 -c "found use_srtp extension" \
9863 -c "found srtp profile" \
9864 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009865 -c "DTLS-SRTP key material is"\
Johan Pascal5ef72d22020-10-28 17:05:47 +01009866 -c "DTLS-SRTP no mki value negotiated"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009867 -c "dumping 'sending mki' (8 bytes)" \
9868 -C "dumping 'received mki' (8 bytes)" \
9869 -C "error"
9870
9871requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009872requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009873run_test "DTLS-SRTP all profiles supported. gnutls client." \
Ron Eldor5d991c92019-01-15 18:54:03 +02009874 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
9875 "$G_CLI -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_80:SRTP_AES128_CM_HMAC_SHA1_32:SRTP_NULL_HMAC_SHA1_80:SRTP_NULL_SHA1_32 --insecure 127.0.0.1" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009876 0 \
9877 -s "found use_srtp extension" \
9878 -s "found srtp profile" \
9879 -s "selected srtp profile" \
9880 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009881 -s "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009882 -c "SRTP profile: SRTP_AES128_CM_HMAC_SHA1_80"
9883
9884requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009885requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009886run_test "DTLS-SRTP server supports all profiles. Client supports all profiles, in different order. gnutls client." \
Ron Eldor5d991c92019-01-15 18:54:03 +02009887 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
9888 "$G_CLI -u --srtp-profiles=SRTP_NULL_HMAC_SHA1_80:SRTP_AES128_CM_HMAC_SHA1_80:SRTP_NULL_SHA1_32:SRTP_AES128_CM_HMAC_SHA1_32 --insecure 127.0.0.1" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009889 0 \
9890 -s "found use_srtp extension" \
9891 -s "found srtp profile" \
9892 -s "selected srtp profile" \
9893 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009894 -s "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009895 -c "SRTP profile: SRTP_NULL_HMAC_SHA1_80"
9896
9897requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009898requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009899run_test "DTLS-SRTP server supports all profiles. Client supports one profile. gnutls client." \
Ron Eldor5d991c92019-01-15 18:54:03 +02009900 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
9901 "$G_CLI -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_32 --insecure 127.0.0.1" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009902 0 \
9903 -s "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009904 -s "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
9905 -s "selected srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009906 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009907 -s "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009908 -c "SRTP profile: SRTP_AES128_CM_HMAC_SHA1_32"
9909
9910requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009911requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009912run_test "DTLS-SRTP server supports one profile. Client supports all profiles. gnutls client." \
Johan Pascal43f94902020-09-22 12:25:52 +02009913 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=6 debug_level=3" \
Ron Eldor5d991c92019-01-15 18:54:03 +02009914 "$G_CLI -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_80:SRTP_AES128_CM_HMAC_SHA1_32:SRTP_NULL_HMAC_SHA1_80:SRTP_NULL_SHA1_32 --insecure 127.0.0.1" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009915 0 \
9916 -s "found use_srtp extension" \
9917 -s "found srtp profile" \
Johan Pascal43f94902020-09-22 12:25:52 +02009918 -s "selected srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009919 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009920 -s "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009921 -c "SRTP profile: SRTP_NULL_SHA1_32"
9922
9923requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009924requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009925run_test "DTLS-SRTP server and Client support only one matching profile. gnutls client." \
Ron Eldor5d991c92019-01-15 18:54:03 +02009926 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
9927 "$G_CLI -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_32 --insecure 127.0.0.1" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009928 0 \
9929 -s "found use_srtp extension" \
9930 -s "found srtp profile" \
9931 -s "selected srtp profile" \
9932 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009933 -s "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009934 -c "SRTP profile: SRTP_AES128_CM_HMAC_SHA1_32"
9935
9936requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009937requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009938run_test "DTLS-SRTP server and Client support only one different profile. gnutls client." \
Ron Eldor5d991c92019-01-15 18:54:03 +02009939 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=1 debug_level=3" \
9940 "$G_CLI -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_32 --insecure 127.0.0.1" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009941 0 \
9942 -s "found use_srtp extension" \
9943 -s "found srtp profile" \
9944 -S "selected srtp profile" \
9945 -S "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009946 -S "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009947 -C "SRTP profile:"
9948
9949requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009950requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009951run_test "DTLS-SRTP server doesn't support use_srtp extension. gnutls client" \
Ron Eldor5d991c92019-01-15 18:54:03 +02009952 "$P_SRV dtls=1 debug_level=3" \
9953 "$G_CLI -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_80:SRTP_AES128_CM_HMAC_SHA1_32:SRTP_NULL_HMAC_SHA1_80:SRTP_NULL_SHA1_32 --insecure 127.0.0.1" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009954 0 \
9955 -s "found use_srtp extension" \
9956 -S "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009957 -S "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009958 -C "SRTP profile:"
9959
9960requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009961requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009962run_test "DTLS-SRTP all profiles supported. gnutls server" \
9963 "$G_SRV -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_80:SRTP_AES128_CM_HMAC_SHA1_32:SRTP_NULL_HMAC_SHA1_80:SRTP_NULL_SHA1_32" \
9964 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
9965 0 \
9966 -c "client hello, adding use_srtp extension" \
9967 -c "found use_srtp extension" \
9968 -c "found srtp profile" \
Johan Pascal43f94902020-09-22 12:25:52 +02009969 -c "selected srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009970 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009971 -C "error"
9972
9973requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009974requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009975run_test "DTLS-SRTP server supports all profiles. Client supports all profiles, in different order. gnutls server." \
9976 "$G_SRV -u --srtp-profiles=SRTP_NULL_SHA1_32:SRTP_AES128_CM_HMAC_SHA1_32:SRTP_AES128_CM_HMAC_SHA1_80:SRTP_NULL_HMAC_SHA1_80:SRTP_NULL_SHA1_32" \
9977 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
9978 0 \
9979 -c "client hello, adding use_srtp extension" \
9980 -c "found use_srtp extension" \
9981 -c "found srtp profile" \
Johan Pascal43f94902020-09-22 12:25:52 +02009982 -c "selected srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009983 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009984 -C "error"
9985
9986requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +02009987requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009988run_test "DTLS-SRTP server supports all profiles. Client supports one profile. gnutls server." \
9989 "$G_SRV -u --srtp-profiles=SRTP_NULL_SHA1_32:SRTP_AES128_CM_HMAC_SHA1_32:SRTP_AES128_CM_HMAC_SHA1_80:SRTP_NULL_HMAC_SHA1_80:SRTP_NULL_SHA1_32" \
9990 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
9991 0 \
9992 -c "client hello, adding use_srtp extension" \
9993 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +02009994 -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009995 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +02009996 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +03009997 -C "error"
9998
9999requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +020010000requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +030010001run_test "DTLS-SRTP server supports one profile. Client supports all profiles. gnutls server." \
10002 "$G_SRV -u --srtp-profiles=SRTP_NULL_HMAC_SHA1_80" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020010003 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +030010004 0 \
10005 -c "client hello, adding use_srtp extension" \
10006 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +020010007 -c "found srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +030010008 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020010009 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +030010010 -C "error"
10011
10012requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +020010013requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +030010014run_test "DTLS-SRTP server and Client support only one matching profile. gnutls server." \
10015 "$G_SRV -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_32" \
10016 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
10017 0 \
10018 -c "client hello, adding use_srtp extension" \
10019 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +020010020 -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +030010021 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020010022 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +030010023 -C "error"
10024
10025requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +020010026requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +030010027run_test "DTLS-SRTP server and Client support only one different profile. gnutls server." \
10028 "$G_SRV -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_32" \
Johan Pascal43f94902020-09-22 12:25:52 +020010029 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=6 debug_level=3" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +030010030 0 \
10031 -c "client hello, adding use_srtp extension" \
10032 -C "found use_srtp extension" \
10033 -C "found srtp profile" \
10034 -C "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020010035 -C "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +030010036 -C "error"
10037
10038requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +020010039requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +030010040run_test "DTLS-SRTP server doesn't support use_srtp extension. gnutls server" \
10041 "$G_SRV -u" \
10042 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
10043 0 \
10044 -c "client hello, adding use_srtp extension" \
10045 -C "found use_srtp extension" \
10046 -C "found srtp profile" \
10047 -C "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020010048 -C "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +030010049 -C "error"
10050
10051requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +020010052requires_gnutls
Ron Eldor3c6a44b2018-07-10 10:32:10 +030010053run_test "DTLS-SRTP all profiles supported. mki used. gnutls server." \
10054 "$G_SRV -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_80:SRTP_AES128_CM_HMAC_SHA1_32:SRTP_NULL_HMAC_SHA1_80:SRTP_NULL_SHA1_32" \
10055 "$P_CLI dtls=1 use_srtp=1 mki=542310ab34290481 debug_level=3" \
10056 0 \
10057 -c "client hello, adding use_srtp extension" \
10058 -c "found use_srtp extension" \
10059 -c "found srtp profile" \
10060 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020010061 -c "DTLS-SRTP key material is"\
Johan Pascal20c7db32020-10-26 22:45:58 +010010062 -c "DTLS-SRTP mki value:"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +030010063 -c "dumping 'sending mki' (8 bytes)" \
10064 -c "dumping 'received mki' (8 bytes)" \
10065 -C "error"
10066
Manuel Pégourié-Gonnarda7756172014-08-31 18:37:01 +020010067# Tests for specific things with "unreliable" UDP connection
10068
10069not_with_valgrind # spurious resend due to timeout
10070run_test "DTLS proxy: reference" \
10071 -p "$P_PXY" \
Manuel Pégourié-Gonnardb6929892019-09-09 11:14:37 +020010072 "$P_SRV dtls=1 debug_level=2 hs_timeout=10000-20000" \
10073 "$P_CLI dtls=1 debug_level=2 hs_timeout=10000-20000" \
Manuel Pégourié-Gonnarda7756172014-08-31 18:37:01 +020010074 0 \
10075 -C "replayed record" \
10076 -S "replayed record" \
Hanno Beckerb2a86c32019-07-19 15:43:09 +010010077 -C "Buffer record from epoch" \
10078 -S "Buffer record from epoch" \
10079 -C "ssl_buffer_message" \
10080 -S "ssl_buffer_message" \
Manuel Pégourié-Gonnarda7756172014-08-31 18:37:01 +020010081 -C "discarding invalid record" \
Manuel Pégourié-Gonnard990f9e42014-09-06 12:27:02 +020010082 -S "discarding invalid record" \
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +020010083 -S "resend" \
Manuel Pégourié-Gonnard990f9e42014-09-06 12:27:02 +020010084 -s "Extra-header:" \
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +020010085 -c "HTTP/1.0 200 OK"
10086
10087not_with_valgrind # spurious resend due to timeout
Manuel Pégourié-Gonnard990f9e42014-09-06 12:27:02 +020010088run_test "DTLS proxy: duplicate every packet" \
10089 -p "$P_PXY duplicate=1" \
Manuel Pégourié-Gonnardb6929892019-09-09 11:14:37 +020010090 "$P_SRV dtls=1 dgram_packing=0 debug_level=2 hs_timeout=10000-20000" \
10091 "$P_CLI dtls=1 dgram_packing=0 debug_level=2 hs_timeout=10000-20000" \
Manuel Pégourié-Gonnard990f9e42014-09-06 12:27:02 +020010092 0 \
10093 -c "replayed record" \
10094 -s "replayed record" \
10095 -c "record from another epoch" \
10096 -s "record from another epoch" \
10097 -S "resend" \
10098 -s "Extra-header:" \
10099 -c "HTTP/1.0 200 OK"
10100
10101run_test "DTLS proxy: duplicate every packet, server anti-replay off" \
10102 -p "$P_PXY duplicate=1" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +010010103 "$P_SRV dtls=1 dgram_packing=0 debug_level=2 anti_replay=0" \
10104 "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \
Manuel Pégourié-Gonnard63eca932014-09-08 16:39:08 +020010105 0 \
10106 -c "replayed record" \
10107 -S "replayed record" \
10108 -c "record from another epoch" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020010109 -s "record from another epoch" \
10110 -c "resend" \
10111 -s "resend" \
Manuel Pégourié-Gonnard246c13a2014-09-24 13:56:09 +020010112 -s "Extra-header:" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020010113 -c "HTTP/1.0 200 OK"
10114
10115run_test "DTLS proxy: multiple records in same datagram" \
10116 -p "$P_PXY pack=50" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +010010117 "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \
10118 "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \
Manuel Pégourié-Gonnard63eca932014-09-08 16:39:08 +020010119 0 \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020010120 -c "next record in same datagram" \
10121 -s "next record in same datagram"
10122
10123run_test "DTLS proxy: multiple records in same datagram, duplicate every packet" \
10124 -p "$P_PXY pack=50 duplicate=1" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +010010125 "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \
10126 "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \
Manuel Pégourié-Gonnard246c13a2014-09-24 13:56:09 +020010127 0 \
10128 -c "next record in same datagram" \
10129 -s "next record in same datagram"
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020010130
Manuel Pégourié-Gonnard246c13a2014-09-24 13:56:09 +020010131run_test "DTLS proxy: inject invalid AD record, default badmac_limit" \
10132 -p "$P_PXY bad_ad=1" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +010010133 "$P_SRV dtls=1 dgram_packing=0 debug_level=1" \
10134 "$P_CLI dtls=1 dgram_packing=0 debug_level=1 read_timeout=100" \
Manuel Pégourié-Gonnard63eca932014-09-08 16:39:08 +020010135 0 \
Manuel Pégourié-Gonnard74a13782014-10-14 22:34:08 +020010136 -c "discarding invalid record (mac)" \
10137 -s "discarding invalid record (mac)" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020010138 -s "Extra-header:" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +020010139 -c "HTTP/1.0 200 OK" \
10140 -S "too many records with bad MAC" \
10141 -S "Verification of the message MAC failed"
10142
10143run_test "DTLS proxy: inject invalid AD record, badmac_limit 1" \
10144 -p "$P_PXY bad_ad=1" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +010010145 "$P_SRV dtls=1 dgram_packing=0 debug_level=1 badmac_limit=1" \
10146 "$P_CLI dtls=1 dgram_packing=0 debug_level=1 read_timeout=100" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +020010147 1 \
Manuel Pégourié-Gonnard74a13782014-10-14 22:34:08 +020010148 -C "discarding invalid record (mac)" \
10149 -S "discarding invalid record (mac)" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +020010150 -S "Extra-header:" \
10151 -C "HTTP/1.0 200 OK" \
10152 -s "too many records with bad MAC" \
10153 -s "Verification of the message MAC failed"
10154
10155run_test "DTLS proxy: inject invalid AD record, badmac_limit 2" \
10156 -p "$P_PXY bad_ad=1" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +010010157 "$P_SRV dtls=1 dgram_packing=0 debug_level=1 badmac_limit=2" \
10158 "$P_CLI dtls=1 dgram_packing=0 debug_level=1 read_timeout=100" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +020010159 0 \
Manuel Pégourié-Gonnard74a13782014-10-14 22:34:08 +020010160 -c "discarding invalid record (mac)" \
10161 -s "discarding invalid record (mac)" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +020010162 -s "Extra-header:" \
10163 -c "HTTP/1.0 200 OK" \
10164 -S "too many records with bad MAC" \
10165 -S "Verification of the message MAC failed"
10166
10167run_test "DTLS proxy: inject invalid AD record, badmac_limit 2, exchanges 2"\
10168 -p "$P_PXY bad_ad=1" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +010010169 "$P_SRV dtls=1 dgram_packing=0 debug_level=1 badmac_limit=2 exchanges=2" \
10170 "$P_CLI dtls=1 dgram_packing=0 debug_level=1 read_timeout=100 exchanges=2" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +020010171 1 \
Manuel Pégourié-Gonnard74a13782014-10-14 22:34:08 +020010172 -c "discarding invalid record (mac)" \
10173 -s "discarding invalid record (mac)" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +020010174 -s "Extra-header:" \
10175 -c "HTTP/1.0 200 OK" \
10176 -s "too many records with bad MAC" \
10177 -s "Verification of the message MAC failed"
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020010178
10179run_test "DTLS proxy: delay ChangeCipherSpec" \
10180 -p "$P_PXY delay_ccs=1" \
Hanno Beckerc4305232018-08-14 13:41:21 +010010181 "$P_SRV dtls=1 debug_level=1 dgram_packing=0" \
10182 "$P_CLI dtls=1 debug_level=1 dgram_packing=0" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020010183 0 \
10184 -c "record from another epoch" \
10185 -s "record from another epoch" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020010186 -s "Extra-header:" \
10187 -c "HTTP/1.0 200 OK"
10188
Hanno Beckeraa5d0c42018-08-16 13:15:19 +010010189# Tests for reordering support with DTLS
10190
Gilles Peskine22cc6492022-03-14 18:21:24 +010010191requires_certificate_authentication
Hanno Becker56cdfd12018-08-17 13:42:15 +010010192run_test "DTLS reordering: Buffer out-of-order handshake message on client" \
10193 -p "$P_PXY delay_srv=ServerHello" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010194 "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
10195 hs_timeout=2500-60000" \
10196 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
10197 hs_timeout=2500-60000" \
Hanno Beckere3842212018-08-16 15:28:59 +010010198 0 \
10199 -c "Buffering HS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010010200 -c "Next handshake message has been buffered - load"\
10201 -S "Buffering HS message" \
10202 -S "Next handshake message has been buffered - load"\
Hanno Becker39b8bc92018-08-28 17:17:13 +010010203 -C "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010010204 -C "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +010010205 -S "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010010206 -S "Remember CCS message"
Hanno Beckere3842212018-08-16 15:28:59 +010010207
Gilles Peskine22cc6492022-03-14 18:21:24 +010010208requires_certificate_authentication
Hanno Beckerdc1e9502018-08-28 16:02:33 +010010209run_test "DTLS reordering: Buffer out-of-order handshake message fragment on client" \
10210 -p "$P_PXY delay_srv=ServerHello" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010211 "$P_SRV mtu=512 dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
10212 hs_timeout=2500-60000" \
10213 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
10214 hs_timeout=2500-60000" \
Hanno Beckerdc1e9502018-08-28 16:02:33 +010010215 0 \
10216 -c "Buffering HS message" \
10217 -c "found fragmented DTLS handshake message"\
10218 -c "Next handshake message 1 not or only partially bufffered" \
10219 -c "Next handshake message has been buffered - load"\
10220 -S "Buffering HS message" \
10221 -S "Next handshake message has been buffered - load"\
Hanno Becker39b8bc92018-08-28 17:17:13 +010010222 -C "Injecting buffered CCS message" \
Hanno Beckerdc1e9502018-08-28 16:02:33 +010010223 -C "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +010010224 -S "Injecting buffered CCS message" \
Hanno Beckeraa5d0c42018-08-16 13:15:19 +010010225 -S "Remember CCS message"
10226
Hanno Beckera1adcca2018-08-24 14:41:07 +010010227# The client buffers the ServerKeyExchange before receiving the fragmented
10228# Certificate message; at the time of writing, together these are aroudn 1200b
10229# in size, so that the bound below ensures that the certificate can be reassembled
10230# while keeping the ServerKeyExchange.
Gilles Peskine22cc6492022-03-14 18:21:24 +010010231requires_certificate_authentication
Hanno Beckera1adcca2018-08-24 14:41:07 +010010232requires_config_value_at_least "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 1300
10233run_test "DTLS reordering: Buffer out-of-order hs msg before reassembling next" \
Hanno Beckere3567052018-08-21 16:50:43 +010010234 -p "$P_PXY delay_srv=Certificate delay_srv=Certificate" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010235 "$P_SRV mtu=512 dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
10236 hs_timeout=2500-60000" \
10237 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
10238 hs_timeout=2500-60000" \
Hanno Beckere3567052018-08-21 16:50:43 +010010239 0 \
10240 -c "Buffering HS message" \
10241 -c "Next handshake message has been buffered - load"\
Hanno Beckera1adcca2018-08-24 14:41:07 +010010242 -C "attempt to make space by freeing buffered messages" \
10243 -S "Buffering HS message" \
10244 -S "Next handshake message has been buffered - load"\
Hanno Becker39b8bc92018-08-28 17:17:13 +010010245 -C "Injecting buffered CCS message" \
Hanno Beckera1adcca2018-08-24 14:41:07 +010010246 -C "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +010010247 -S "Injecting buffered CCS message" \
Hanno Beckera1adcca2018-08-24 14:41:07 +010010248 -S "Remember CCS message"
10249
10250# The size constraints ensure that the delayed certificate message can't
10251# be reassembled while keeping the ServerKeyExchange message, but it can
10252# when dropping it first.
Gilles Peskine22cc6492022-03-14 18:21:24 +010010253requires_certificate_authentication
Hanno Beckera1adcca2018-08-24 14:41:07 +010010254requires_config_value_at_least "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 900
10255requires_config_value_at_most "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 1299
10256run_test "DTLS reordering: Buffer out-of-order hs msg before reassembling next, free buffered msg" \
10257 -p "$P_PXY delay_srv=Certificate delay_srv=Certificate" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010258 "$P_SRV mtu=512 dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
10259 hs_timeout=2500-60000" \
10260 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
10261 hs_timeout=2500-60000" \
Hanno Beckera1adcca2018-08-24 14:41:07 +010010262 0 \
10263 -c "Buffering HS message" \
10264 -c "attempt to make space by freeing buffered future messages" \
10265 -c "Enough space available after freeing buffered HS messages" \
Hanno Beckere3567052018-08-21 16:50:43 +010010266 -S "Buffering HS message" \
10267 -S "Next handshake message has been buffered - load"\
Hanno Becker39b8bc92018-08-28 17:17:13 +010010268 -C "Injecting buffered CCS message" \
Hanno Beckere3567052018-08-21 16:50:43 +010010269 -C "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +010010270 -S "Injecting buffered CCS message" \
Hanno Beckere3567052018-08-21 16:50:43 +010010271 -S "Remember CCS message"
10272
Gilles Peskine22cc6492022-03-14 18:21:24 +010010273requires_certificate_authentication
Hanno Becker56cdfd12018-08-17 13:42:15 +010010274run_test "DTLS reordering: Buffer out-of-order handshake message on server" \
10275 -p "$P_PXY delay_cli=Certificate" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010276 "$P_SRV dgram_packing=0 auth_mode=required cookies=0 dtls=1 debug_level=2 \
10277 hs_timeout=2500-60000" \
10278 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
10279 hs_timeout=2500-60000" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010010280 0 \
10281 -C "Buffering HS message" \
10282 -C "Next handshake message has been buffered - load"\
10283 -s "Buffering HS message" \
10284 -s "Next handshake message has been buffered - load" \
Hanno Becker39b8bc92018-08-28 17:17:13 +010010285 -C "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010010286 -C "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +010010287 -S "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010010288 -S "Remember CCS message"
10289
Gilles Peskine22cc6492022-03-14 18:21:24 +010010290requires_certificate_authentication
Hanno Becker56cdfd12018-08-17 13:42:15 +010010291run_test "DTLS reordering: Buffer out-of-order CCS message on client"\
10292 -p "$P_PXY delay_srv=NewSessionTicket" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010293 "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
10294 hs_timeout=2500-60000" \
10295 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
10296 hs_timeout=2500-60000" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010010297 0 \
10298 -C "Buffering HS message" \
10299 -C "Next handshake message has been buffered - load"\
10300 -S "Buffering HS message" \
10301 -S "Next handshake message has been buffered - load" \
Hanno Becker39b8bc92018-08-28 17:17:13 +010010302 -c "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010010303 -c "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +010010304 -S "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010010305 -S "Remember CCS message"
10306
Gilles Peskine22cc6492022-03-14 18:21:24 +010010307requires_certificate_authentication
Hanno Becker56cdfd12018-08-17 13:42:15 +010010308run_test "DTLS reordering: Buffer out-of-order CCS message on server"\
10309 -p "$P_PXY delay_cli=ClientKeyExchange" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010310 "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
10311 hs_timeout=2500-60000" \
10312 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
10313 hs_timeout=2500-60000" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010010314 0 \
10315 -C "Buffering HS message" \
10316 -C "Next handshake message has been buffered - load"\
10317 -S "Buffering HS message" \
10318 -S "Next handshake message has been buffered - load" \
Hanno Becker39b8bc92018-08-28 17:17:13 +010010319 -C "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010010320 -C "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +010010321 -s "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010010322 -s "Remember CCS message"
10323
Hanno Beckera1adcca2018-08-24 14:41:07 +010010324run_test "DTLS reordering: Buffer encrypted Finished message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010010325 -p "$P_PXY delay_ccs=1" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010326 "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
10327 hs_timeout=2500-60000" \
10328 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
10329 hs_timeout=2500-60000" \
Hanno Beckerb34149c2018-08-16 15:29:06 +010010330 0 \
10331 -s "Buffer record from epoch 1" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010010332 -s "Found buffered record from current epoch - load" \
10333 -c "Buffer record from epoch 1" \
10334 -c "Found buffered record from current epoch - load"
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020010335
Hanno Beckera1adcca2018-08-24 14:41:07 +010010336# In this test, both the fragmented NewSessionTicket and the ChangeCipherSpec
10337# from the server are delayed, so that the encrypted Finished message
10338# is received and buffered. When the fragmented NewSessionTicket comes
10339# in afterwards, the encrypted Finished message must be freed in order
10340# to make space for the NewSessionTicket to be reassembled.
10341# This works only in very particular circumstances:
10342# - MBEDTLS_SSL_DTLS_MAX_BUFFERING must be large enough to allow buffering
10343# of the NewSessionTicket, but small enough to also allow buffering of
10344# the encrypted Finished message.
10345# - The MTU setting on the server must be so small that the NewSessionTicket
10346# needs to be fragmented.
10347# - All messages sent by the server must be small enough to be either sent
10348# without fragmentation or be reassembled within the bounds of
10349# MBEDTLS_SSL_DTLS_MAX_BUFFERING. Achieve this by testing with a PSK-based
10350# handshake, omitting CRTs.
Manuel Pégourié-Gonnardeef4c752019-05-28 10:21:30 +020010351requires_config_value_at_least "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 190
10352requires_config_value_at_most "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 230
Hanno Beckera1adcca2018-08-24 14:41:07 +010010353run_test "DTLS reordering: Buffer encrypted Finished message, drop for fragmented NewSessionTicket" \
10354 -p "$P_PXY delay_srv=NewSessionTicket delay_srv=NewSessionTicket delay_ccs=1" \
Gilles Peskined84733d2024-04-29 16:09:52 +020010355 "$P_SRV mtu=140 response_size=90 dgram_packing=0 psk=73776f726466697368 psk_identity=foo cookies=0 dtls=1 debug_level=2" \
10356 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8 psk=73776f726466697368 psk_identity=foo" \
Hanno Beckera1adcca2018-08-24 14:41:07 +010010357 0 \
10358 -s "Buffer record from epoch 1" \
10359 -s "Found buffered record from current epoch - load" \
10360 -c "Buffer record from epoch 1" \
10361 -C "Found buffered record from current epoch - load" \
10362 -c "Enough space available after freeing future epoch record"
10363
Manuel Pégourié-Gonnarda0719722014-09-20 12:46:27 +020010364# Tests for "randomly unreliable connection": try a variety of flows and peers
10365
10366client_needs_more_time 2
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020010367run_test "DTLS proxy: 3d (drop, delay, duplicate), \"short\" PSK handshake" \
10368 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010369 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
Gilles Peskined84733d2024-04-29 16:09:52 +020010370 psk=73776f726466697368" \
10371 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=73776f726466697368 \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020010372 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
10373 0 \
10374 -s "Extra-header:" \
10375 -c "HTTP/1.0 200 OK"
10376
Janos Follath74537a62016-09-02 13:45:28 +010010377client_needs_more_time 2
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020010378run_test "DTLS proxy: 3d, \"short\" RSA handshake" \
10379 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010380 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none" \
10381 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020010382 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
10383 0 \
10384 -s "Extra-header:" \
10385 -c "HTTP/1.0 200 OK"
10386
Janos Follath74537a62016-09-02 13:45:28 +010010387client_needs_more_time 2
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020010388run_test "DTLS proxy: 3d, \"short\" (no ticket, no cli_auth) FS handshake" \
10389 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010390 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none" \
10391 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0" \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020010392 0 \
10393 -s "Extra-header:" \
10394 -c "HTTP/1.0 200 OK"
10395
Janos Follath74537a62016-09-02 13:45:28 +010010396client_needs_more_time 2
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020010397run_test "DTLS proxy: 3d, FS, client auth" \
10398 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010399 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=required" \
10400 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0" \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020010401 0 \
10402 -s "Extra-header:" \
10403 -c "HTTP/1.0 200 OK"
10404
Janos Follath74537a62016-09-02 13:45:28 +010010405client_needs_more_time 2
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020010406run_test "DTLS proxy: 3d, FS, ticket" \
10407 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010408 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=1 auth_mode=none" \
10409 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=1" \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020010410 0 \
10411 -s "Extra-header:" \
10412 -c "HTTP/1.0 200 OK"
10413
Janos Follath74537a62016-09-02 13:45:28 +010010414client_needs_more_time 2
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020010415run_test "DTLS proxy: 3d, max handshake (FS, ticket + client auth)" \
10416 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010417 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=1 auth_mode=required" \
10418 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=1" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020010419 0 \
10420 -s "Extra-header:" \
10421 -c "HTTP/1.0 200 OK"
10422
Janos Follath74537a62016-09-02 13:45:28 +010010423client_needs_more_time 2
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020010424run_test "DTLS proxy: 3d, max handshake, nbio" \
10425 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010426 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 nbio=2 tickets=1 \
Manuel Pégourié-Gonnard37a4de22014-10-01 16:38:03 +020010427 auth_mode=required" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010428 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 nbio=2 tickets=1" \
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020010429 0 \
10430 -s "Extra-header:" \
10431 -c "HTTP/1.0 200 OK"
10432
Janos Follath74537a62016-09-02 13:45:28 +010010433client_needs_more_time 4
Gilles Peskine111fde42022-02-25 19:51:52 +010010434requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard7a26d732014-10-02 14:50:46 +020010435run_test "DTLS proxy: 3d, min handshake, resumption" \
10436 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010437 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
Gilles Peskined84733d2024-04-29 16:09:52 +020010438 psk=73776f726466697368 debug_level=3" \
10439 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=73776f726466697368 \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +010010440 debug_level=3 reconnect=1 skip_close_notify=1 read_timeout=1000 max_resend=10 \
Manuel Pégourié-Gonnard7a26d732014-10-02 14:50:46 +020010441 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
10442 0 \
10443 -s "a session has been resumed" \
10444 -c "a session has been resumed" \
10445 -s "Extra-header:" \
10446 -c "HTTP/1.0 200 OK"
10447
Janos Follath74537a62016-09-02 13:45:28 +010010448client_needs_more_time 4
Gilles Peskine111fde42022-02-25 19:51:52 +010010449requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard85beb302014-10-02 17:59:19 +020010450run_test "DTLS proxy: 3d, min handshake, resumption, nbio" \
10451 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010452 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
Gilles Peskined84733d2024-04-29 16:09:52 +020010453 psk=73776f726466697368 debug_level=3 nbio=2" \
10454 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=73776f726466697368 \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +010010455 debug_level=3 reconnect=1 skip_close_notify=1 read_timeout=1000 max_resend=10 \
Manuel Pégourié-Gonnard85beb302014-10-02 17:59:19 +020010456 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8 nbio=2" \
10457 0 \
10458 -s "a session has been resumed" \
10459 -c "a session has been resumed" \
10460 -s "Extra-header:" \
10461 -c "HTTP/1.0 200 OK"
10462
Janos Follath74537a62016-09-02 13:45:28 +010010463client_needs_more_time 4
Hanno Becker6a243642017-10-12 15:18:45 +010010464requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020010465run_test "DTLS proxy: 3d, min handshake, client-initiated renego" \
Manuel Pégourié-Gonnard1b753f12014-09-25 16:09:36 +020010466 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010467 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
Gilles Peskined84733d2024-04-29 16:09:52 +020010468 psk=73776f726466697368 renegotiation=1 debug_level=2" \
10469 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=73776f726466697368 \
Manuel Pégourié-Gonnard37a4de22014-10-01 16:38:03 +020010470 renegotiate=1 debug_level=2 \
Manuel Pégourié-Gonnard1b753f12014-09-25 16:09:36 +020010471 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
10472 0 \
10473 -c "=> renegotiate" \
10474 -s "=> renegotiate" \
10475 -s "Extra-header:" \
10476 -c "HTTP/1.0 200 OK"
10477
Janos Follath74537a62016-09-02 13:45:28 +010010478client_needs_more_time 4
Hanno Becker6a243642017-10-12 15:18:45 +010010479requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020010480run_test "DTLS proxy: 3d, min handshake, client-initiated renego, nbio" \
10481 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010482 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
Gilles Peskined84733d2024-04-29 16:09:52 +020010483 psk=73776f726466697368 renegotiation=1 debug_level=2" \
10484 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=73776f726466697368 \
Manuel Pégourié-Gonnard37a4de22014-10-01 16:38:03 +020010485 renegotiate=1 debug_level=2 \
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020010486 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
10487 0 \
10488 -c "=> renegotiate" \
10489 -s "=> renegotiate" \
10490 -s "Extra-header:" \
10491 -c "HTTP/1.0 200 OK"
10492
Janos Follath74537a62016-09-02 13:45:28 +010010493client_needs_more_time 4
Hanno Becker6a243642017-10-12 15:18:45 +010010494requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +020010495run_test "DTLS proxy: 3d, min handshake, server-initiated renego" \
Manuel Pégourié-Gonnarda6ace042014-10-15 12:44:41 +020010496 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010497 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
Gilles Peskined84733d2024-04-29 16:09:52 +020010498 psk=73776f726466697368 renegotiate=1 renegotiation=1 exchanges=4 \
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +020010499 debug_level=2" \
Gilles Peskined84733d2024-04-29 16:09:52 +020010500 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=73776f726466697368 \
Manuel Pégourié-Gonnarda6ace042014-10-15 12:44:41 +020010501 renegotiation=1 exchanges=4 debug_level=2 \
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +020010502 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
10503 0 \
10504 -c "=> renegotiate" \
10505 -s "=> renegotiate" \
10506 -s "Extra-header:" \
10507 -c "HTTP/1.0 200 OK"
10508
Janos Follath74537a62016-09-02 13:45:28 +010010509client_needs_more_time 4
Hanno Becker6a243642017-10-12 15:18:45 +010010510requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +020010511run_test "DTLS proxy: 3d, min handshake, server-initiated renego, nbio" \
Manuel Pégourié-Gonnarda6ace042014-10-15 12:44:41 +020010512 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010513 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
Gilles Peskined84733d2024-04-29 16:09:52 +020010514 psk=73776f726466697368 renegotiate=1 renegotiation=1 exchanges=4 \
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +020010515 debug_level=2 nbio=2" \
Gilles Peskined84733d2024-04-29 16:09:52 +020010516 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=73776f726466697368 \
Manuel Pégourié-Gonnarda6ace042014-10-15 12:44:41 +020010517 renegotiation=1 exchanges=4 debug_level=2 nbio=2 \
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +020010518 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
10519 0 \
10520 -c "=> renegotiate" \
10521 -s "=> renegotiate" \
10522 -s "Extra-header:" \
10523 -c "HTTP/1.0 200 OK"
10524
Zhangsen Wang7d0e6582022-06-29 07:33:35 +000010525## The three tests below require 1.1.1a or higher version of openssl, otherwise
10526## it might trigger a bug due to openssl (https://github.com/openssl/openssl/issues/6902)
10527requires_openssl_next
Janos Follath74537a62016-09-02 13:45:28 +010010528client_needs_more_time 6
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +020010529not_with_valgrind # risk of non-mbedtls peer timing out
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +020010530run_test "DTLS proxy: 3d, openssl server" \
Manuel Pégourié-Gonnardd0fd1da2014-09-25 17:00:27 +020010531 -p "$P_PXY drop=5 delay=5 duplicate=5 protect_hvr=1" \
Zhangsen Wang7d0e6582022-06-29 07:33:35 +000010532 "$O_NEXT_SRV -dtls1 -mtu 2048" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010533 "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000 tickets=0" \
Manuel Pégourié-Gonnardd0fd1da2014-09-25 17:00:27 +020010534 0 \
Manuel Pégourié-Gonnardd0fd1da2014-09-25 17:00:27 +020010535 -c "HTTP/1.0 200 OK"
10536
Zhangsen Wang7d0e6582022-06-29 07:33:35 +000010537requires_openssl_next
Janos Follath74537a62016-09-02 13:45:28 +010010538client_needs_more_time 8
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +020010539not_with_valgrind # risk of non-mbedtls peer timing out
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +020010540run_test "DTLS proxy: 3d, openssl server, fragmentation" \
10541 -p "$P_PXY drop=5 delay=5 duplicate=5 protect_hvr=1" \
Zhangsen Wang7d0e6582022-06-29 07:33:35 +000010542 "$O_NEXT_SRV -dtls1 -mtu 768" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010543 "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000 tickets=0" \
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +020010544 0 \
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +020010545 -c "HTTP/1.0 200 OK"
10546
Zhangsen Wang7d0e6582022-06-29 07:33:35 +000010547requires_openssl_next
Janos Follath74537a62016-09-02 13:45:28 +010010548client_needs_more_time 8
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +020010549not_with_valgrind # risk of non-mbedtls peer timing out
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020010550run_test "DTLS proxy: 3d, openssl server, fragmentation, nbio" \
10551 -p "$P_PXY drop=5 delay=5 duplicate=5 protect_hvr=1" \
Zhangsen Wang1c981f52022-08-02 06:18:40 +000010552 "$O_NEXT_SRV -dtls1 -mtu 768" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010553 "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000 nbio=2 tickets=0" \
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020010554 0 \
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020010555 -c "HTTP/1.0 200 OK"
10556
Manuel Pégourié-Gonnard96999962015-02-17 16:02:37 +000010557requires_gnutls
Janos Follath74537a62016-09-02 13:45:28 +010010558client_needs_more_time 6
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +020010559not_with_valgrind # risk of non-mbedtls peer timing out
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +020010560run_test "DTLS proxy: 3d, gnutls server" \
10561 -p "$P_PXY drop=5 delay=5 duplicate=5" \
10562 "$G_SRV -u --mtu 2048 -a" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010563 "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000" \
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +020010564 0 \
10565 -s "Extra-header:" \
10566 -c "Extra-header:"
10567
k-stachowiak17a38d32019-02-18 15:29:56 +010010568requires_gnutls_next
Janos Follath74537a62016-09-02 13:45:28 +010010569client_needs_more_time 8
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +020010570not_with_valgrind # risk of non-mbedtls peer timing out
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +020010571run_test "DTLS proxy: 3d, gnutls server, fragmentation" \
10572 -p "$P_PXY drop=5 delay=5 duplicate=5" \
k-stachowiak17a38d32019-02-18 15:29:56 +010010573 "$G_NEXT_SRV -u --mtu 512" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010574 "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000" \
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +020010575 0 \
10576 -s "Extra-header:" \
10577 -c "Extra-header:"
10578
k-stachowiak17a38d32019-02-18 15:29:56 +010010579requires_gnutls_next
Janos Follath74537a62016-09-02 13:45:28 +010010580client_needs_more_time 8
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +020010581not_with_valgrind # risk of non-mbedtls peer timing out
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020010582run_test "DTLS proxy: 3d, gnutls server, fragmentation, nbio" \
10583 -p "$P_PXY drop=5 delay=5 duplicate=5" \
k-stachowiak17a38d32019-02-18 15:29:56 +010010584 "$G_NEXT_SRV -u --mtu 512" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010585 "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000 nbio=2" \
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020010586 0 \
10587 -s "Extra-header:" \
10588 -c "Extra-header:"
10589
Ron Eldorf75e2522019-05-14 20:38:49 +030010590requires_config_enabled MBEDTLS_SSL_EXPORT_KEYS
10591run_test "export keys functionality" \
10592 "$P_SRV eap_tls=1 debug_level=3" \
10593 "$P_CLI eap_tls=1 debug_level=3" \
10594 0 \
10595 -s "exported maclen is " \
10596 -s "exported keylen is " \
10597 -s "exported ivlen is " \
10598 -c "exported maclen is " \
10599 -c "exported keylen is " \
Ron Eldor65d8c262019-06-04 13:05:36 +030010600 -c "exported ivlen is " \
10601 -c "EAP-TLS key material is:"\
10602 -s "EAP-TLS key material is:"\
10603 -c "EAP-TLS IV is:" \
10604 -s "EAP-TLS IV is:"
Ron Eldorf75e2522019-05-14 20:38:49 +030010605
Piotr Nowicki0937ed22019-11-26 16:32:40 +010010606# Test heap memory usage after handshake
10607requires_config_enabled MBEDTLS_MEMORY_DEBUG
10608requires_config_enabled MBEDTLS_MEMORY_BUFFER_ALLOC_C
10609requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanoa49124e2021-07-08 15:56:33 +010010610requires_max_content_len 16384
Wenxing Hou20e964f2024-06-19 11:04:13 +080010611run_tests_memory_after_handshake
Piotr Nowicki0937ed22019-11-26 16:32:40 +010010612
Tomás Gonzálezcbb2e452023-09-13 11:47:13 +010010613if [ "$LIST_TESTS" -eq 0 ]; then
10614 # Final report
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +010010615
Tomás Gonzálezcbb2e452023-09-13 11:47:13 +010010616 echo "------------------------------------------------------------------------"
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +010010617
Tomás Gonzálezcbb2e452023-09-13 11:47:13 +010010618 if [ $FAILS = 0 ]; then
10619 printf "PASSED"
10620 else
10621 printf "FAILED"
10622 fi
10623 PASSES=$(( $TESTS - $FAILS ))
10624 echo " ($PASSES / $TESTS tests ($SKIPS skipped))"
Gilles Peskined2c41892024-05-17 11:55:15 +020010625
10626 if [ $((TESTS - SKIPS)) -lt $MIN_TESTS ]; then
10627 cat <<EOF
10628Error: Expected to run at least $MIN_TESTS, but only ran $((TESTS - SKIPS)).
10629Maybe a bad filter ('$FILTER') or a bad configuration?
10630EOF
10631 if [ $FAILS -eq 0 ]; then
10632 FAILS=1
10633 fi
10634 fi
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +010010635fi
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +010010636
Tom Cosgrovec1ae9f92023-01-13 12:13:41 +000010637if [ $FAILS -gt 255 ]; then
10638 # Clamp at 255 as caller gets exit code & 0xFF
10639 # (so 256 would be 0, or success, etc)
10640 FAILS=255
10641fi
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +010010642exit $FAILS