blob: 2750fa9ab323decaa9f3887359a790f21ba5682e [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 Rodgman16799db2023-11-02 19:47:20 +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
David Horstmann5ab92be2024-07-01 17:01:28 +010032DATA_FILES_PATH=../framework/data_files
33
Antonin Décimo36e89b52019-01-23 15:24:37 +010034# default values, can be overridden by the environment
Manuel Pégourié-Gonnardf7a26902014-02-27 12:25:54 +010035: ${P_SRV:=../programs/ssl/ssl_server2}
36: ${P_CLI:=../programs/ssl/ssl_client2}
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +020037: ${P_PXY:=../programs/test/udp_proxy}
Jerry Yud04fd352021-12-06 16:52:57 +080038: ${P_QUERY:=../programs/test/query_compile_time_config}
Manuel Pégourié-Gonnardc5722462022-12-19 11:42:12 +010039: ${OPENSSL:=openssl}
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +020040: ${GNUTLS_CLI:=gnutls-cli}
41: ${GNUTLS_SERV:=gnutls-serv}
Gilles Peskined50177f2017-05-16 17:53:03 +020042: ${PERL:=perl}
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +010043
Manuel Pégourié-Gonnardc5722462022-12-19 11:42:12 +010044# The OPENSSL variable used to be OPENSSL_CMD for historical reasons.
45# To help the migration, error out if the old variable is set,
46# but only if it has a different value than the new one.
47if [ "${OPENSSL_CMD+set}" = set ]; then
48 # the variable is set, we can now check its value
49 if [ "$OPENSSL_CMD" != "$OPENSSL" ]; then
50 echo "Please use OPENSSL instead of OPENSSL_CMD." >&2
51 exit 125
52 fi
53fi
54
Gilles Peskine560280b2019-09-16 15:17:38 +020055guess_config_name() {
Bence Szépkútibb0cfeb2021-05-28 09:42:25 +020056 if git diff --quiet ../include/mbedtls/mbedtls_config.h 2>/dev/null; then
Gilles Peskine560280b2019-09-16 15:17:38 +020057 echo "default"
58 else
59 echo "unknown"
60 fi
61}
62: ${MBEDTLS_TEST_OUTCOME_FILE=}
63: ${MBEDTLS_TEST_CONFIGURATION:="$(guess_config_name)"}
64: ${MBEDTLS_TEST_PLATFORM:="$(uname -s | tr -c \\n0-9A-Za-z _)-$(uname -m | tr -c \\n0-9A-Za-z _)"}
David Horstmann5ab92be2024-07-01 17:01:28 +010065: ${EARLY_DATA_INPUT:="$DATA_FILES_PATH/tls13_early_data.txt"}
Gilles Peskine560280b2019-09-16 15:17:38 +020066
David Horstmann5ab92be2024-07-01 17:01:28 +010067O_SRV="$OPENSSL s_server -www -cert $DATA_FILES_PATH/server5.crt -key $DATA_FILES_PATH/server5.key"
Manuel Pégourié-Gonnardc5722462022-12-19 11:42:12 +010068O_CLI="echo 'GET / HTTP/1.0' | $OPENSSL s_client"
David Horstmann5ab92be2024-07-01 17:01:28 +010069G_SRV="$GNUTLS_SERV --x509certfile $DATA_FILES_PATH/server5.crt --x509keyfile $DATA_FILES_PATH/server5.key"
70G_CLI="echo 'GET / HTTP/1.0' | $GNUTLS_CLI --x509cafile $DATA_FILES_PATH/test-ca_cat12.crt"
Gilles Peskined50177f2017-05-16 17:53:03 +020071TCP_CLIENT="$PERL scripts/tcp_client.pl"
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +010072
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +020073# alternative versions of OpenSSL and GnuTLS (no default path)
74
Gilles Peskinef9c798c2024-04-29 17:46:24 +020075# If $OPENSSL is at least 1.1.1, use it as OPENSSL_NEXT as well.
76if [ -z "${OPENSSL_NEXT:-}" ]; then
77 case $($OPENSSL version) in
78 OpenSSL\ 1.1.[1-9]*) OPENSSL_NEXT=$OPENSSL;;
79 OpenSSL\ [3-9]*) OPENSSL_NEXT=$OPENSSL;;
80 esac
81fi
82
83# If $GNUTLS_CLI is at least 3.7, use it as GNUTLS_NEXT_CLI as well.
84if [ -z "${GNUTLS_NEXT_CLI:-}" ]; then
85 case $($GNUTLS_CLI --version) in
86 gnutls-cli\ 3.[1-9][0-9]*) GNUTLS_NEXT_CLI=$GNUTLS_CLI;;
87 gnutls-cli\ 3.[7-9].*) GNUTLS_NEXT_CLI=$GNUTLS_CLI;;
88 gnutls-cli\ [4-9]*) GNUTLS_NEXT_CLI=$GNUTLS_CLI;;
89 esac
90fi
91
92# If $GNUTLS_SERV is at least 3.7, use it as GNUTLS_NEXT_SERV as well.
93if [ -z "${GNUTLS_NEXT_SERV:-}" ]; then
94 case $($GNUTLS_SERV --version) in
95 gnutls-cli\ 3.[1-9][0-9]*) GNUTLS_NEXT_SERV=$GNUTLS_SERV;;
96 gnutls-cli\ 3.[7-9].*) GNUTLS_NEXT_SERV=$GNUTLS_SERV;;
97 gnutls-cli\ [4-9]*) GNUTLS_NEXT_SERV=$GNUTLS_SERV;;
98 esac
99fi
100
Jerry Yu04029792021-08-10 16:45:37 +0800101if [ -n "${OPENSSL_NEXT:-}" ]; then
David Horstmann5ab92be2024-07-01 17:01:28 +0100102 O_NEXT_SRV="$OPENSSL_NEXT s_server -www -cert $DATA_FILES_PATH/server5.crt -key $DATA_FILES_PATH/server5.key"
103 O_NEXT_SRV_EARLY_DATA="$OPENSSL_NEXT s_server -early_data -cert $DATA_FILES_PATH/server5.crt -key $DATA_FILES_PATH/server5.key"
Jerry Yu305bfc32021-11-24 16:04:47 +0800104 O_NEXT_SRV_NO_CERT="$OPENSSL_NEXT s_server -www "
David Horstmann5ab92be2024-07-01 17:01:28 +0100105 O_NEXT_CLI="echo 'GET / HTTP/1.0' | $OPENSSL_NEXT s_client -CAfile $DATA_FILES_PATH/test-ca_cat12.crt"
XiaokangQiand5d5b602022-05-23 09:16:20 +0000106 O_NEXT_CLI_NO_CERT="echo 'GET / HTTP/1.0' | $OPENSSL_NEXT s_client"
Jerry Yu04029792021-08-10 16:45:37 +0800107else
108 O_NEXT_SRV=false
Jerry Yu305bfc32021-11-24 16:04:47 +0800109 O_NEXT_SRV_NO_CERT=false
Xiaokang Qianb0c32d82022-11-02 10:51:13 +0000110 O_NEXT_SRV_EARLY_DATA=false
XiaokangQianb1847a22022-06-08 07:49:31 +0000111 O_NEXT_CLI_NO_CERT=false
Jerry Yu04029792021-08-10 16:45:37 +0800112 O_NEXT_CLI=false
113fi
114
Hanno Becker58e9dc32018-08-17 15:53:21 +0100115if [ -n "${GNUTLS_NEXT_SERV:-}" ]; then
David Horstmann5ab92be2024-07-01 17:01:28 +0100116 G_NEXT_SRV="$GNUTLS_NEXT_SERV --x509certfile $DATA_FILES_PATH/server5.crt --x509keyfile $DATA_FILES_PATH/server5.key"
Jerry Yu305bfc32021-11-24 16:04:47 +0800117 G_NEXT_SRV_NO_CERT="$GNUTLS_NEXT_SERV"
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +0200118else
119 G_NEXT_SRV=false
Jerry Yu305bfc32021-11-24 16:04:47 +0800120 G_NEXT_SRV_NO_CERT=false
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +0200121fi
122
Hanno Becker58e9dc32018-08-17 15:53:21 +0100123if [ -n "${GNUTLS_NEXT_CLI:-}" ]; then
David Horstmann5ab92be2024-07-01 17:01:28 +0100124 G_NEXT_CLI="echo 'GET / HTTP/1.0' | $GNUTLS_NEXT_CLI --x509cafile $DATA_FILES_PATH/test-ca_cat12.crt"
XiaokangQiand5d5b602022-05-23 09:16:20 +0000125 G_NEXT_CLI_NO_CERT="echo 'GET / HTTP/1.0' | $GNUTLS_NEXT_CLI"
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +0200126else
127 G_NEXT_CLI=false
XiaokangQianfb1a3fe2022-06-09 06:37:33 +0000128 G_NEXT_CLI_NO_CERT=false
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +0200129fi
130
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +0100131TESTS=0
132FAILS=0
Manuel Pégourié-Gonnard6f4fbbb2014-08-14 14:31:29 +0200133SKIPS=0
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +0100134
Bence Szépkútibb0cfeb2021-05-28 09:42:25 +0200135CONFIG_H='../include/mbedtls/mbedtls_config.h'
Manuel Pégourié-Gonnard83d8c732014-04-07 13:24:21 +0200136
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100137MEMCHECK=0
Manuel Pégourié-Gonnard417d46c2014-03-13 19:17:53 +0100138FILTER='.*'
Manuel Pégourié-Gonnard6f4fbbb2014-08-14 14:31:29 +0200139EXCLUDE='^$'
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100140
Paul Bakkere20310a2016-05-10 11:18:17 +0100141SHOW_TEST_NUMBER=0
Tomás González24552ff2023-08-17 15:10:03 +0100142LIST_TESTS=0
Paul Bakkerb7584a52016-05-10 10:50:43 +0100143RUN_TEST_NUMBER=''
Jerry Yu50d07bd2023-11-06 10:49:01 +0800144RUN_TEST_SUITE=''
Paul Bakkerb7584a52016-05-10 10:50:43 +0100145
Gilles Peskinec75048c2024-05-17 11:55:15 +0200146MIN_TESTS=1
Paul Bakkeracaac852016-05-10 11:47:13 +0100147PRESERVE_LOGS=0
148
Gilles Peskinef93c7d32017-04-14 17:55:28 +0200149# Pick a "unique" server port in the range 10000-19999, and a proxy
150# port which is this plus 10000. Each port number may be independently
151# overridden by a command line option.
152SRV_PORT=$(($$ % 10000 + 10000))
153PXY_PORT=$((SRV_PORT + 10000))
154
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100155print_usage() {
156 echo "Usage: $0 [options]"
Manuel Pégourié-Gonnardf46f1282014-12-11 11:51:28 +0100157 printf " -h|--help\tPrint this help.\n"
158 printf " -m|--memcheck\tCheck memory leaks and errors.\n"
Gilles Peskine9fa4ed62020-08-26 22:35:46 +0200159 printf " -f|--filter\tOnly matching tests are executed (substring or BRE)\n"
160 printf " -e|--exclude\tMatching tests are excluded (substring or BRE)\n"
Paul Bakkerb7584a52016-05-10 10:50:43 +0100161 printf " -n|--number\tExecute only numbered test (comma-separated, e.g. '245,256')\n"
Paul Bakkere20310a2016-05-10 11:18:17 +0100162 printf " -s|--show-numbers\tShow test numbers in front of test names\n"
Paul Bakkeracaac852016-05-10 11:47:13 +0100163 printf " -p|--preserve-logs\tPreserve logs of successful tests as well\n"
Tomás González12787c92023-09-04 10:26:00 +0100164 printf " --list-test-cases\tList all potential test cases (No Execution)\n"
Gilles Peskinec75048c2024-05-17 11:55:15 +0200165 printf " --min \tMinimum number of non-skipped tests (default 1)\n"
Gilles Peskine560280b2019-09-16 15:17:38 +0200166 printf " --outcome-file\tFile where test outcomes are written\n"
167 printf " \t(default: \$MBEDTLS_TEST_OUTCOME_FILE, none if empty)\n"
168 printf " --port \tTCP/UDP port (default: randomish 1xxxx)\n"
Gilles Peskinef93c7d32017-04-14 17:55:28 +0200169 printf " --proxy-port\tTCP/UDP proxy port (default: randomish 2xxxx)\n"
Gilles Peskine560280b2019-09-16 15:17:38 +0200170 printf " --seed \tInteger seed value to use for this test run\n"
Jerry Yu50d07bd2023-11-06 10:49:01 +0800171 printf " --test-suite\tOnly matching test suites are executed\n"
172 printf " \t(comma-separated, e.g. 'ssl-opt,tls13-compat')\n\n"
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100173}
174
175get_options() {
176 while [ $# -gt 0 ]; do
177 case "$1" in
Manuel Pégourié-Gonnard417d46c2014-03-13 19:17:53 +0100178 -f|--filter)
179 shift; FILTER=$1
180 ;;
181 -e|--exclude)
182 shift; EXCLUDE=$1
183 ;;
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100184 -m|--memcheck)
185 MEMCHECK=1
186 ;;
Paul Bakkerb7584a52016-05-10 10:50:43 +0100187 -n|--number)
188 shift; RUN_TEST_NUMBER=$1
189 ;;
Paul Bakkere20310a2016-05-10 11:18:17 +0100190 -s|--show-numbers)
191 SHOW_TEST_NUMBER=1
192 ;;
Tomás González4a86da22023-09-01 17:41:16 +0100193 -l|--list-test-cases)
Tomás González24552ff2023-08-17 15:10:03 +0100194 LIST_TESTS=1
195 ;;
Paul Bakkeracaac852016-05-10 11:47:13 +0100196 -p|--preserve-logs)
197 PRESERVE_LOGS=1
198 ;;
Gilles Peskinec75048c2024-05-17 11:55:15 +0200199 --min)
200 shift; MIN_TESTS=$1
201 ;;
Yanray Wang5b33f642023-02-28 11:56:59 +0800202 --outcome-file)
203 shift; MBEDTLS_TEST_OUTCOME_FILE=$1
204 ;;
Gilles Peskinef93c7d32017-04-14 17:55:28 +0200205 --port)
206 shift; SRV_PORT=$1
207 ;;
208 --proxy-port)
209 shift; PXY_PORT=$1
210 ;;
Andres AGf04f54d2016-10-10 15:46:20 +0100211 --seed)
212 shift; SEED="$1"
213 ;;
Jerry Yu50d07bd2023-11-06 10:49:01 +0800214 --test-suite)
215 shift; RUN_TEST_SUITE="$1"
216 ;;
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100217 -h|--help)
218 print_usage
219 exit 0
220 ;;
221 *)
Paul Bakker1ebc0c52014-05-22 15:47:58 +0200222 echo "Unknown argument: '$1'"
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +0100223 print_usage
224 exit 1
225 ;;
226 esac
227 shift
228 done
229}
230
Tomás González0e8a08a2023-08-23 15:29:57 +0100231get_options "$@"
232
Bence Szépkútibb0cfeb2021-05-28 09:42:25 +0200233# Read boolean configuration options from mbedtls_config.h for easy and quick
Gilles Peskine64457492020-08-26 21:53:33 +0200234# testing. Skip non-boolean options (with something other than spaces
235# and a comment after "#define SYMBOL"). The variable contains a
236# space-separated list of symbols.
Tomás Gonzálezf162b4f2023-08-23 15:31:12 +0100237if [ "$LIST_TESTS" -eq 0 ];then
238 CONFIGS_ENABLED=" $(echo `$P_QUERY -l` )"
239else
Tomás Gonzálezbe2c66e2023-09-01 10:34:49 +0100240 P_QUERY=":"
Tomás Gonzálezf162b4f2023-08-23 15:31:12 +0100241 CONFIGS_ENABLED=""
242fi
Hanno Becker3b8b40c2018-08-28 10:25:41 +0100243# Skip next test; use this macro to skip tests which are legitimate
244# in theory and expected to be re-introduced at some point, but
245# aren't expected to succeed at the moment due to problems outside
246# our control (such as bugs in other TLS implementations).
247skip_next_test() {
248 SKIP_NEXT="YES"
249}
250
Valerio Settid1f991c2023-02-22 12:54:13 +0100251# Check if the required configuration ($1) is enabled
252is_config_enabled()
253{
254 case $CONFIGS_ENABLED in
255 *" $1"[\ =]*) return 0;;
256 *) return 1;;
257 esac
258}
259
Bence Szépkútibb0cfeb2021-05-28 09:42:25 +0200260# skip next test if the flag is not enabled in mbedtls_config.h
Manuel Pégourié-Gonnard988209f2015-03-24 10:43:55 +0100261requires_config_enabled() {
Gilles Peskine64457492020-08-26 21:53:33 +0200262 case $CONFIGS_ENABLED in
Jerry Yu2e8b0012021-12-10 20:29:02 +0800263 *" $1"[\ =]*) :;;
Gilles Peskine64457492020-08-26 21:53:33 +0200264 *) SKIP_NEXT="YES";;
265 esac
Manuel Pégourié-Gonnard988209f2015-03-24 10:43:55 +0100266}
267
Bence Szépkútibb0cfeb2021-05-28 09:42:25 +0200268# skip next test if the flag is enabled in mbedtls_config.h
Manuel Pégourié-Gonnardaf63c212017-06-08 17:51:08 +0200269requires_config_disabled() {
Gilles Peskine64457492020-08-26 21:53:33 +0200270 case $CONFIGS_ENABLED in
Jerry Yu2e8b0012021-12-10 20:29:02 +0800271 *" $1"[\ =]*) SKIP_NEXT="YES";;
Gilles Peskine64457492020-08-26 21:53:33 +0200272 esac
Manuel Pégourié-Gonnardaf63c212017-06-08 17:51:08 +0200273}
274
Jerry Yu2fcb0562022-07-27 17:30:49 +0800275requires_all_configs_enabled() {
Gilles Peskine0bc57292024-09-06 14:43:17 +0200276 for x in "$@"; do
277 if ! is_config_enabled "$x"; then
278 SKIP_NEXT="YES"
279 return
280 fi
281 done
Jerry Yu2fcb0562022-07-27 17:30:49 +0800282}
283
284requires_all_configs_disabled() {
Gilles Peskine0bc57292024-09-06 14:43:17 +0200285 for x in "$@"; do
286 if is_config_enabled "$x"; then
287 SKIP_NEXT="YES"
288 return
289 fi
290 done
Jerry Yu2fcb0562022-07-27 17:30:49 +0800291}
292
293requires_any_configs_enabled() {
Gilles Peskine0bc57292024-09-06 14:43:17 +0200294 for x in "$@"; do
295 if is_config_enabled "$x"; then
296 return
297 fi
298 done
299 SKIP_NEXT="YES"
Jerry Yu2fcb0562022-07-27 17:30:49 +0800300}
301
302requires_any_configs_disabled() {
Gilles Peskine0bc57292024-09-06 14:43:17 +0200303 for x in "$@"; do
304 if ! is_config_enabled "$x"; then
305 return
306 fi
307 done
308 SKIP_NEXT="YES"
Jerry Yu2fcb0562022-07-27 17:30:49 +0800309}
310
Ronald Cron454eb912022-10-21 08:56:04 +0200311TLS1_2_KEY_EXCHANGES_WITH_CERT="MBEDTLS_KEY_EXCHANGE_RSA_ENABLED \
Ronald Cronbc5adf42022-10-04 11:06:14 +0200312 MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED \
313 MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED \
314 MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED \
315 MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED \
316 MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED \
317 MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED"
318
Valerio Settid1f991c2023-02-22 12:54:13 +0100319TLS1_2_KEY_EXCHANGES_WITH_ECDSA_CERT="MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED \
320 MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED"
321
Valerio Setti6ba247c2023-03-14 17:13:43 +0100322TLS1_2_KEY_EXCHANGES_WITH_CERT_WO_ECDH="MBEDTLS_KEY_EXCHANGE_RSA_ENABLED \
323 MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED \
324 MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED \
325 MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED \
326 MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED"
327
Gilles Peskine0a9f9d62024-09-06 15:38:47 +0200328requires_certificate_authentication () {
Gilles Peskinecfbaffd2024-09-10 12:24:23 +0200329 if is_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cron928cbd32022-10-04 16:14:26 +0200330 then
Gilles Peskinecfbaffd2024-09-10 12:24:23 +0200331 # TLS 1.3 is negotiated by default, so check whether it supports
332 # certificate-based authentication.
333 requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
334 else # Only TLS 1.2 is enabled.
Valerio Settie7f896d2023-03-13 13:55:28 +0100335 requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Ronald Cron928cbd32022-10-04 16:14:26 +0200336 fi
Ronald Cronbc5adf42022-10-04 11:06:14 +0200337}
338
Hanno Becker7c48dd12018-08-28 16:09:22 +0100339get_config_value_or_default() {
Andres Amaya Garcia3169dc02018-10-16 21:29:07 +0100340 # This function uses the query_config command line option to query the
341 # required Mbed TLS compile time configuration from the ssl_server2
342 # program. The command will always return a success value if the
343 # configuration is defined and the value will be printed to stdout.
344 #
345 # Note that if the configuration is not defined or is defined to nothing,
346 # the output of this function will be an empty string.
Tomás González06956a12023-08-23 15:46:20 +0100347 if [ "$LIST_TESTS" -eq 0 ];then
348 ${P_SRV} "query_config=${1}"
349 else
350 echo "1"
351 fi
352
Hanno Becker7c48dd12018-08-28 16:09:22 +0100353}
354
355requires_config_value_at_least() {
Andres Amaya Garcia3169dc02018-10-16 21:29:07 +0100356 VAL="$( get_config_value_or_default "$1" )"
357 if [ -z "$VAL" ]; then
358 # Should never happen
359 echo "Mbed TLS configuration $1 is not defined"
360 exit 1
361 elif [ "$VAL" -lt "$2" ]; then
Hanno Becker5cd017f2018-08-24 14:40:12 +0100362 SKIP_NEXT="YES"
363 fi
364}
365
366requires_config_value_at_most() {
Hanno Becker7c48dd12018-08-28 16:09:22 +0100367 VAL=$( get_config_value_or_default "$1" )
Andres Amaya Garcia3169dc02018-10-16 21:29:07 +0100368 if [ -z "$VAL" ]; then
369 # Should never happen
370 echo "Mbed TLS configuration $1 is not defined"
371 exit 1
372 elif [ "$VAL" -gt "$2" ]; then
Hanno Becker5cd017f2018-08-24 14:40:12 +0100373 SKIP_NEXT="YES"
374 fi
375}
376
Yuto Takano6f657432021-07-02 13:10:41 +0100377requires_config_value_equals() {
378 VAL=$( get_config_value_or_default "$1" )
379 if [ -z "$VAL" ]; then
380 # Should never happen
381 echo "Mbed TLS configuration $1 is not defined"
382 exit 1
383 elif [ "$VAL" -ne "$2" ]; then
384 SKIP_NEXT="YES"
385 fi
386}
387
Gilles Peskinec9126732022-04-08 19:33:07 +0200388# Require Mbed TLS to support the given protocol version.
389#
390# Inputs:
391# * $1: protocol version in mbedtls syntax (argument to force_version=)
392requires_protocol_version() {
393 # Support for DTLS is detected separately in detect_dtls().
394 case "$1" in
395 tls12|dtls12) requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2;;
396 tls13|dtls13) requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3;;
397 *) echo "Unknown required protocol version: $1"; exit 1;;
398 esac
399}
400
Gilles Peskine64457492020-08-26 21:53:33 +0200401# Space-separated list of ciphersuites supported by this build of
402# Mbed TLS.
Ronald Cron5b73de82023-11-28 15:49:25 +0100403P_CIPHERSUITES=""
404if [ "$LIST_TESTS" -eq 0 ]; then
405 P_CIPHERSUITES=" $($P_CLI help_ciphersuites 2>/dev/null |
406 grep 'TLS-\|TLS1-3' |
407 tr -s ' \n' ' ')"
408
409 if [ -z "${P_CIPHERSUITES# }" ]; then
410 echo >&2 "$0: fatal error: no cipher suites found!"
411 exit 125
412 fi
413fi
414
Hanno Becker9d76d562018-11-16 17:27:29 +0000415requires_ciphersuite_enabled() {
Gilles Peskine64457492020-08-26 21:53:33 +0200416 case $P_CIPHERSUITES in
417 *" $1 "*) :;;
418 *) SKIP_NEXT="YES";;
419 esac
Hanno Becker9d76d562018-11-16 17:27:29 +0000420}
421
Valerio Setti73d05312023-11-09 16:53:59 +0100422requires_cipher_enabled() {
423 KEY_TYPE=$1
424 MODE=${2:-}
425 if is_config_enabled MBEDTLS_USE_PSA_CRYPTO; then
426 case "$KEY_TYPE" in
427 CHACHA20)
428 requires_config_enabled PSA_WANT_ALG_CHACHA20_POLY1305
429 requires_config_enabled PSA_WANT_KEY_TYPE_CHACHA20
430 ;;
431 *)
432 requires_config_enabled PSA_WANT_ALG_${MODE}
433 requires_config_enabled PSA_WANT_KEY_TYPE_${KEY_TYPE}
434 ;;
435 esac
436 else
437 case "$KEY_TYPE" in
438 CHACHA20)
439 requires_config_enabled MBEDTLS_CHACHA20_C
440 requires_config_enabled MBEDTLS_CHACHAPOLY_C
441 ;;
442 *)
443 requires_config_enabled MBEDTLS_${MODE}_C
444 requires_config_enabled MBEDTLS_${KEY_TYPE}_C
445 ;;
446 esac
447 fi
448}
449
Valerio Setti1af76d12023-02-23 15:55:10 +0100450# Automatically detect required features based on command line parameters.
451# Parameters are:
452# - $1 = command line (call to a TLS client or server program)
453# - $2 = client/server
454# - $3 = TLS version (TLS12 or TLS13)
Valerio Setti6ba247c2023-03-14 17:13:43 +0100455# - $4 = Use an external tool without ECDH support
456# - $5 = run test options
Gilles Peskineb898b3d2022-04-08 19:26:26 +0200457detect_required_features() {
Valerio Setti6ba247c2023-03-14 17:13:43 +0100458 CMD_LINE=$1
459 ROLE=$2
460 TLS_VERSION=$3
461 EXT_WO_ECDH=$4
462 TEST_OPTIONS=${5:-}
463
464 case "$CMD_LINE" in
Gilles Peskinec9126732022-04-08 19:33:07 +0200465 *\ force_version=*)
Valerio Setti6ba247c2023-03-14 17:13:43 +0100466 tmp="${CMD_LINE##*\ force_version=}"
Gilles Peskinec9126732022-04-08 19:33:07 +0200467 tmp="${tmp%%[!-0-9A-Z_a-z]*}"
468 requires_protocol_version "$tmp";;
Gilles Peskine0d721652020-06-26 23:35:53 +0200469 esac
Gilles Peskine0d721652020-06-26 23:35:53 +0200470
Valerio Setti6ba247c2023-03-14 17:13:43 +0100471 case "$CMD_LINE" in
Gilles Peskineb898b3d2022-04-08 19:26:26 +0200472 *\ force_ciphersuite=*)
Valerio Setti6ba247c2023-03-14 17:13:43 +0100473 tmp="${CMD_LINE##*\ force_ciphersuite=}"
Gilles Peskineb898b3d2022-04-08 19:26:26 +0200474 tmp="${tmp%%[!-0-9A-Z_a-z]*}"
475 requires_ciphersuite_enabled "$tmp";;
Gilles Peskine0d721652020-06-26 23:35:53 +0200476 esac
Gilles Peskine0d721652020-06-26 23:35:53 +0200477
Valerio Setti6ba247c2023-03-14 17:13:43 +0100478 case " $CMD_LINE " in
Gilles Peskine740b7342022-04-08 19:29:27 +0200479 *[-_\ =]tickets=[^0]*)
480 requires_config_enabled MBEDTLS_SSL_TICKET_C;;
481 esac
Valerio Setti6ba247c2023-03-14 17:13:43 +0100482 case " $CMD_LINE " in
Gilles Peskine740b7342022-04-08 19:29:27 +0200483 *[-_\ =]alpn=*)
484 requires_config_enabled MBEDTLS_SSL_ALPN;;
485 esac
486
Gilles Peskine6eff90f2024-09-06 15:34:59 +0200487 case " $CMD_LINE " in
488 *\ auth_mode=*|*[-_\ =]crt[_=]*)
Gilles Peskined57212e2024-09-10 12:06:33 +0200489 # The test case involves certificates (crt), or a relevant
490 # aspect of it is the (certificate-based) authentication mode.
Gilles Peskine6eff90f2024-09-06 15:34:59 +0200491 requires_certificate_authentication;;
492 esac
493
Gilles Peskinee6b82502024-09-04 16:06:10 +0200494 case " $CMD_LINE " in
Gilles Peskinef8b373e2024-09-04 16:07:56 +0200495 *"programs/ssl/dtls_client "*|\
Gilles Peskinee6b82502024-09-04 16:06:10 +0200496 *"programs/ssl/ssl_client1 "*)
497 requires_config_enabled MBEDTLS_CTR_DRBG_C
498 requires_config_enabled MBEDTLS_ENTROPY_C
499 requires_config_enabled MBEDTLS_PEM_PARSE_C
500 requires_config_enabled MBEDTLS_SSL_CLI_C
501 requires_certificate_authentication
502 ;;
Gilles Peskine9d104e92024-09-04 16:51:50 +0200503 *"programs/ssl/dtls_server "*|\
Gilles Peskine2a0af352024-09-04 17:47:14 +0200504 *"programs/ssl/ssl_fork_server "*|\
Gilles Peskinefab60992024-09-04 16:31:06 +0200505 *"programs/ssl/ssl_pthread_server "*|\
Gilles Peskine37c37492024-09-04 16:30:32 +0200506 *"programs/ssl/ssl_server "*)
507 requires_config_enabled MBEDTLS_CTR_DRBG_C
508 requires_config_enabled MBEDTLS_ENTROPY_C
509 requires_config_enabled MBEDTLS_PEM_PARSE_C
510 requires_config_enabled MBEDTLS_SSL_SRV_C
511 requires_certificate_authentication
Gilles Peskine5bf54ca2024-09-13 23:08:48 +0200512 # The actual minimum depends on the configuration since it's
513 # mostly about the certificate size.
514 # In config-suite-b.h, for the test certificates (server5.crt),
515 # 1024 is not enough.
516 requires_config_value_at_least MBEDTLS_SSL_OUT_CONTENT_LEN 2000
Gilles Peskine37c37492024-09-04 16:30:32 +0200517 ;;
Gilles Peskinee6b82502024-09-04 16:06:10 +0200518 esac
519
Gilles Peskinefab60992024-09-04 16:31:06 +0200520 case " $CMD_LINE " in
521 *"programs/ssl/ssl_pthread_server "*)
522 requires_config_enabled MBEDTLS_THREADING_PTHREAD;;
523 esac
524
Valerio Setti6ba247c2023-03-14 17:13:43 +0100525 case "$CMD_LINE" in
Gilles Peskine5c766dc2024-09-06 15:35:58 +0200526 *[-_\ =]psk*|*[-_\ =]PSK*) :;; # No certificate requirement with PSK
Gilles Peskine1bc28fe2024-04-26 21:28:49 +0200527 */server5*|\
528 */server7*|\
529 */dir-maxpath*)
Gilles Peskine6eff90f2024-09-06 15:34:59 +0200530 requires_certificate_authentication
Valerio Setti6ba247c2023-03-14 17:13:43 +0100531 if [ "$TLS_VERSION" = "TLS13" ]; then
Valerio Setti1af76d12023-02-23 15:55:10 +0100532 # In case of TLS13 the support for ECDSA is enough
533 requires_pk_alg "ECDSA"
534 else
535 # For TLS12 requirements are different between server and client
Valerio Setti6ba247c2023-03-14 17:13:43 +0100536 if [ "$ROLE" = "server" ]; then
Valerio Setti194e2bd2023-03-02 17:18:10 +0100537 # If the server uses "server5*" certificates, then an ECDSA based
Valerio Setti6ba247c2023-03-14 17:13:43 +0100538 # key exchange is required. However gnutls also does not
539 # support ECDH, so this limit the choice to ECDHE-ECDSA
540 if [ "$EXT_WO_ECDH" = "yes" ]; then
541 requires_any_configs_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
542 else
543 requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_ECDSA_CERT
544 fi
545 elif [ "$ROLE" = "client" ]; then
546 # On the client side it is enough to have any certificate
547 # based authentication together with support for ECDSA.
548 # Of course the GnuTLS limitation mentioned above applies
549 # also here.
550 if [ "$EXT_WO_ECDH" = "yes" ]; then
551 requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT_WO_ECDH
552 else
553 requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
554 fi
Valerio Setti1af76d12023-02-23 15:55:10 +0100555 requires_pk_alg "ECDSA"
556 fi
557 fi
558 ;;
559 esac
560
Valerio Setti4f577f32023-07-31 18:58:25 +0200561 case "$CMD_LINE" in
Gilles Peskine5c766dc2024-09-06 15:35:58 +0200562 *[-_\ =]psk*|*[-_\ =]PSK*) :;; # No certificate requirement with PSK
Gilles Peskine121a7bf2024-04-29 16:03:02 +0200563 */server1*|\
Gilles Peskine1bc28fe2024-04-26 21:28:49 +0200564 */server2*|\
565 */server7*)
Gilles Peskine6eff90f2024-09-06 15:34:59 +0200566 requires_certificate_authentication
Gilles Peskine121a7bf2024-04-29 16:03:02 +0200567 # Certificates with an RSA key. The algorithm requirement is
568 # some subset of {PKCS#1v1.5 encryption, PKCS#1v1.5 signature,
569 # PSS signature}. We can't easily tell which subset works, and
570 # we aren't currently running ssl-opt.sh in configurations
571 # where partial RSA support is a problem, so generically, we
572 # just require RSA and it works out for our tests so far.
Valerio Setti4f577f32023-07-31 18:58:25 +0200573 requires_config_enabled "MBEDTLS_RSA_C"
574 esac
575
Gilles Peskineb898b3d2022-04-08 19:26:26 +0200576 unset tmp
Gilles Peskine0d721652020-06-26 23:35:53 +0200577}
578
Gilles Peskine6e86e542022-02-25 19:52:52 +0100579adapt_cmd_for_psk () {
580 case "$2" in
Gilles Peskine02cd7162024-04-29 16:09:52 +0200581 *openssl*s_server*) s='-psk 73776f726466697368 -nocert';;
582 *openssl*) s='-psk 73776f726466697368';;
Gilles Peskine9cd58482024-09-06 15:27:57 +0200583 *gnutls-cli*) s='--pskusername=Client_identity --pskkey=73776f726466697368';;
584 *gnutls-serv*) s='--pskpasswd=../framework/data_files/simplepass.psk';;
Gilles Peskine02cd7162024-04-29 16:09:52 +0200585 *) s='psk=73776f726466697368';;
Gilles Peskine6e86e542022-02-25 19:52:52 +0100586 esac
587 eval $1='"$2 $s"'
588 unset s
589}
590
591# maybe_adapt_for_psk [RUN_TEST_OPTION...]
592# If running in a PSK-only build, maybe adapt the test to use a pre-shared key.
593#
594# If not running in a PSK-only build, do nothing.
595# If the test looks like it doesn't use a pre-shared key but can run with a
596# pre-shared key, pass a pre-shared key. If the test looks like it can't run
597# with a pre-shared key, skip it. If the test looks like it's already using
598# a pre-shared key, do nothing.
599#
Gilles Peskine59601d72022-04-05 22:00:17 +0200600# This code does not consider builds with ECDHE-PSK or RSA-PSK.
Gilles Peskine6e86e542022-02-25 19:52:52 +0100601#
602# Inputs:
603# * $CLI_CMD, $SRV_CMD, $PXY_CMD: client/server/proxy commands.
604# * $PSK_ONLY: YES if running in a PSK-only build (no asymmetric key exchanges).
605# * "$@": options passed to run_test.
606#
607# Outputs:
608# * $CLI_CMD, $SRV_CMD: may be modified to add PSK-relevant arguments.
609# * $SKIP_NEXT: set to YES if the test can't run with PSK.
610maybe_adapt_for_psk() {
611 if [ "$PSK_ONLY" != "YES" ]; then
612 return
613 fi
614 if [ "$SKIP_NEXT" = "YES" ]; then
615 return
616 fi
617 case "$CLI_CMD $SRV_CMD" in
618 *[-_\ =]psk*|*[-_\ =]PSK*)
619 return;;
620 *force_ciphersuite*)
621 # The test case forces a non-PSK cipher suite. In some cases, a
622 # PSK cipher suite could be substituted, but we're not ready for
623 # that yet.
624 SKIP_NEXT="YES"
625 return;;
626 *\ auth_mode=*|*[-_\ =]crt[_=]*)
627 # The test case involves certificates. PSK won't do.
628 SKIP_NEXT="YES"
629 return;;
630 esac
631 adapt_cmd_for_psk CLI_CMD "$CLI_CMD"
632 adapt_cmd_for_psk SRV_CMD "$SRV_CMD"
633}
634
Gilles Peskined98b3632024-09-06 19:08:41 +0200635# PSK_PRESENT="YES" if at least one protocol versions supports at least
636# one PSK key exchange mode.
Gilles Peskinebbdc1a32024-09-06 15:38:20 +0200637PSK_PRESENT="NO"
Gilles Peskined98b3632024-09-06 19:08:41 +0200638# PSK_ONLY="YES" if all the available key exchange modes are PSK-based
639# (pure-PSK or PSK-ephemeral, possibly both).
Gilles Peskinebbdc1a32024-09-06 15:38:20 +0200640PSK_ONLY=""
641for c in $CONFIGS_ENABLED; do
642 case $c in
643 MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) PSK_PRESENT="YES";;
Gilles Peskine19c60d22024-09-09 11:24:17 +0200644 MBEDTLS_KEY_EXCHANGE_*_PSK_ENABLED) PSK_PRESENT="YES";;
Gilles Peskinebbdc1a32024-09-06 15:38:20 +0200645 MBEDTLS_KEY_EXCHANGE_*_ENABLED) PSK_ONLY="NO";;
646 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED) PSK_PRESENT="YES";;
Gilles Peskined98b3632024-09-06 19:08:41 +0200647 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_*_ENABLED) PSK_PRESENT="YES";;
Gilles Peskinebbdc1a32024-09-06 15:38:20 +0200648 MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_*_ENABLED) PSK_ONLY="NO";;
649 esac
650done
Gilles Peskine5838a642024-09-09 10:57:01 +0200651# At this stage, $PSK_ONLY is empty if we haven't detected a non-PSK
652# key exchange, i.e. if we're in a PSK-only build or a build with no
653# key exchanges at all. We avoid triggering PSK-only adaptation code in
Gilles Peskined57212e2024-09-10 12:06:33 +0200654# the edge case of no key exchanges.
Gilles Peskinebbdc1a32024-09-06 15:38:20 +0200655: ${PSK_ONLY:=$PSK_PRESENT}
656unset c
Gilles Peskine6e86e542022-02-25 19:52:52 +0100657
Sam Berry06b91be2024-06-19 11:43:03 +0100658HAS_ALG_MD5="NO"
Andrzej Kurek9c061a22022-09-05 10:51:19 -0400659HAS_ALG_SHA_1="NO"
660HAS_ALG_SHA_224="NO"
661HAS_ALG_SHA_256="NO"
662HAS_ALG_SHA_384="NO"
663HAS_ALG_SHA_512="NO"
664
665check_for_hash_alg()
666{
667 CURR_ALG="INVALID";
668 USE_PSA="NO"
Valerio Settid1f991c2023-02-22 12:54:13 +0100669 if is_config_enabled "MBEDTLS_USE_PSA_CRYPTO"; then
670 USE_PSA="YES";
671 fi
Andrzej Kurek9c061a22022-09-05 10:51:19 -0400672 if [ $USE_PSA = "YES" ]; then
673 CURR_ALG=PSA_WANT_ALG_${1}
674 else
675 CURR_ALG=MBEDTLS_${1}_C
676 # Remove the second underscore to match MBEDTLS_* naming convention
Sam Berry06b91be2024-06-19 11:43:03 +0100677 # MD5 is an exception to this convention
678 if [ "${1}" != "MD5" ]; then
679 CURR_ALG=$(echo "$CURR_ALG" | sed 's/_//2')
680 fi
Andrzej Kurek9c061a22022-09-05 10:51:19 -0400681 fi
682
683 case $CONFIGS_ENABLED in
684 *" $CURR_ALG"[\ =]*)
685 return 0
686 ;;
687 *) :;;
688 esac
689 return 1
690}
691
692populate_enabled_hash_algs()
693{
Sam Berry06b91be2024-06-19 11:43:03 +0100694 for hash_alg in SHA_1 SHA_224 SHA_256 SHA_384 SHA_512 MD5; do
Andrzej Kurek9c061a22022-09-05 10:51:19 -0400695 if check_for_hash_alg "$hash_alg"; then
696 hash_alg_variable=HAS_ALG_${hash_alg}
697 eval ${hash_alg_variable}=YES
698 fi
Valerio Settie7f896d2023-03-13 13:55:28 +0100699 done
Andrzej Kurek9c061a22022-09-05 10:51:19 -0400700}
701
702# skip next test if the given hash alg is not supported
703requires_hash_alg() {
704 HASH_DEFINE="Invalid"
705 HAS_HASH_ALG="NO"
706 case $1 in
Sam Berry06b91be2024-06-19 11:43:03 +0100707 MD5):;;
Andrzej Kurek9c061a22022-09-05 10:51:19 -0400708 SHA_1):;;
709 SHA_224):;;
710 SHA_256):;;
711 SHA_384):;;
712 SHA_512):;;
713 *)
714 echo "Unsupported hash alg - $1"
715 exit 1
716 ;;
717 esac
718
719 HASH_DEFINE=HAS_ALG_${1}
720 eval "HAS_HASH_ALG=\${${HASH_DEFINE}}"
721 if [ "$HAS_HASH_ALG" = "NO" ]
722 then
723 SKIP_NEXT="YES"
724 fi
725}
726
Valerio Settid1f991c2023-02-22 12:54:13 +0100727# Skip next test if the given pk alg is not enabled
728requires_pk_alg() {
729 case $1 in
730 ECDSA)
731 if is_config_enabled MBEDTLS_USE_PSA_CRYPTO; then
732 requires_config_enabled PSA_WANT_ALG_ECDSA
733 else
734 requires_config_enabled MBEDTLS_ECDSA_C
735 fi
736 ;;
737 *)
738 echo "Unknown/unimplemented case $1 in requires_pk_alg"
739 exit 1
740 ;;
741 esac
742}
743
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +0200744# skip next test if OpenSSL doesn't support FALLBACK_SCSV
745requires_openssl_with_fallback_scsv() {
746 if [ -z "${OPENSSL_HAS_FBSCSV:-}" ]; then
Manuel Pégourié-Gonnardc5722462022-12-19 11:42:12 +0100747 if $OPENSSL s_client -help 2>&1 | grep fallback_scsv >/dev/null
Manuel Pégourié-Gonnard1cbd39d2014-10-20 13:34:59 +0200748 then
749 OPENSSL_HAS_FBSCSV="YES"
750 else
751 OPENSSL_HAS_FBSCSV="NO"
752 fi
753 fi
754 if [ "$OPENSSL_HAS_FBSCSV" = "NO" ]; then
755 SKIP_NEXT="YES"
756 fi
757}
758
Yuto Takanob0a1c5b2021-07-02 10:10:49 +0100759# skip next test if either IN_CONTENT_LEN or MAX_CONTENT_LEN are below a value
760requires_max_content_len() {
761 requires_config_value_at_least "MBEDTLS_SSL_IN_CONTENT_LEN" $1
762 requires_config_value_at_least "MBEDTLS_SSL_OUT_CONTENT_LEN" $1
763}
764
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +0200765# skip next test if GnuTLS isn't available
766requires_gnutls() {
767 if [ -z "${GNUTLS_AVAILABLE:-}" ]; then
Manuel Pégourié-Gonnard03db6b02015-06-26 15:45:30 +0200768 if ( which "$GNUTLS_CLI" && which "$GNUTLS_SERV" ) >/dev/null 2>&1; then
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +0200769 GNUTLS_AVAILABLE="YES"
770 else
771 GNUTLS_AVAILABLE="NO"
772 fi
773 fi
774 if [ "$GNUTLS_AVAILABLE" = "NO" ]; then
775 SKIP_NEXT="YES"
776 fi
777}
778
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +0200779# skip next test if GnuTLS-next isn't available
780requires_gnutls_next() {
781 if [ -z "${GNUTLS_NEXT_AVAILABLE:-}" ]; then
782 if ( which "${GNUTLS_NEXT_CLI:-}" && which "${GNUTLS_NEXT_SERV:-}" ) >/dev/null 2>&1; then
783 GNUTLS_NEXT_AVAILABLE="YES"
784 else
785 GNUTLS_NEXT_AVAILABLE="NO"
786 fi
787 fi
788 if [ "$GNUTLS_NEXT_AVAILABLE" = "NO" ]; then
789 SKIP_NEXT="YES"
790 fi
791}
792
Jerry Yu04029792021-08-10 16:45:37 +0800793requires_openssl_next() {
794 if [ -z "${OPENSSL_NEXT_AVAILABLE:-}" ]; then
795 if which "${OPENSSL_NEXT:-}" >/dev/null 2>&1; then
796 OPENSSL_NEXT_AVAILABLE="YES"
797 else
798 OPENSSL_NEXT_AVAILABLE="NO"
799 fi
800 fi
801 if [ "$OPENSSL_NEXT_AVAILABLE" = "NO" ]; then
802 SKIP_NEXT="YES"
803 fi
804}
805
Przemek Stekiel422ab1f2023-06-14 11:04:28 +0200806# skip next test if openssl version is lower than 3.0
807requires_openssl_3_x() {
808 requires_openssl_next
809 if [ "$OPENSSL_NEXT_AVAILABLE" = "NO" ]; then
810 OPENSSL_3_X_AVAILABLE="NO"
811 fi
812 if [ -z "${OPENSSL_3_X_AVAILABLE:-}" ]; then
Przemek Stekiela53dca12023-06-14 20:53:09 +0200813 if $OPENSSL_NEXT version 2>&1 | grep "OpenSSL 3." >/dev/null
Przemek Stekiel422ab1f2023-06-14 11:04:28 +0200814 then
815 OPENSSL_3_X_AVAILABLE="YES"
816 else
817 OPENSSL_3_X_AVAILABLE="NO"
818 fi
819 fi
820 if [ "$OPENSSL_3_X_AVAILABLE" = "NO" ]; then
821 SKIP_NEXT="YES"
822 fi
823}
824
Przemek Stekiel8bfe8972023-06-26 12:59:45 +0200825# skip next test if openssl does not support ffdh keys
826requires_openssl_tls1_3_with_ffdh() {
827 requires_openssl_3_x
828}
829
Przemek Stekiel7dda2712023-06-27 14:43:33 +0200830# skip next test if openssl cannot handle ephemeral key exchange
Przemek Stekiel8bfe8972023-06-26 12:59:45 +0200831requires_openssl_tls1_3_with_compatible_ephemeral() {
832 requires_openssl_next
833
834 if !(is_config_enabled "PSA_WANT_ALG_ECDH"); then
835 requires_openssl_tls1_3_with_ffdh
836 fi
837}
838
Jerry Yu04029792021-08-10 16:45:37 +0800839# skip next test if tls1_3 is not available
Przemek Stekiel1f5c2ba2023-06-15 17:04:44 +0200840requires_openssl_tls1_3() {
Przemek Stekiel8bfe8972023-06-26 12:59:45 +0200841 requires_openssl_next
Przemek Stekiel1f5c2ba2023-06-15 17:04:44 +0200842 if [ "$OPENSSL_NEXT_AVAILABLE" = "NO" ]; then
843 OPENSSL_TLS1_3_AVAILABLE="NO"
844 fi
845 if [ -z "${OPENSSL_TLS1_3_AVAILABLE:-}" ]; then
846 if $OPENSSL_NEXT s_client -help 2>&1 | grep tls1_3 >/dev/null
847 then
848 OPENSSL_TLS1_3_AVAILABLE="YES"
849 else
850 OPENSSL_TLS1_3_AVAILABLE="NO"
851 fi
852 fi
Przemek Stekiel1f5c2ba2023-06-15 17:04:44 +0200853 if [ "$OPENSSL_TLS1_3_AVAILABLE" = "NO" ]; then
854 SKIP_NEXT="YES"
Przemek Stekiel1f5c2ba2023-06-15 17:04:44 +0200855 fi
856}
857
Gilles Peskine5838a642024-09-09 10:57:01 +0200858# OpenSSL servers forbid client renegotiation by default since OpenSSL 3.0.
859# Older versions always allow it and have no command-line option.
Gilles Peskineed8cc462024-09-06 13:52:14 +0200860OPENSSL_S_SERVER_CLIENT_RENEGOTIATION=
861case $($OPENSSL s_server -help 2>&1) in
862 *-client_renegotiation*)
863 OPENSSL_S_SERVER_CLIENT_RENEGOTIATION=-client_renegotiation;;
864esac
865
Przemek Stekiel1f5c2ba2023-06-15 17:04:44 +0200866# skip next test if tls1_3 is not available
Jerry Yu04029792021-08-10 16:45:37 +0800867requires_gnutls_tls1_3() {
868 requires_gnutls_next
869 if [ "$GNUTLS_NEXT_AVAILABLE" = "NO" ]; then
870 GNUTLS_TLS1_3_AVAILABLE="NO"
871 fi
872 if [ -z "${GNUTLS_TLS1_3_AVAILABLE:-}" ]; then
873 if $GNUTLS_NEXT_CLI -l 2>&1 | grep VERS-TLS1.3 >/dev/null
874 then
875 GNUTLS_TLS1_3_AVAILABLE="YES"
876 else
877 GNUTLS_TLS1_3_AVAILABLE="NO"
878 fi
879 fi
880 if [ "$GNUTLS_TLS1_3_AVAILABLE" = "NO" ]; then
881 SKIP_NEXT="YES"
882 fi
883}
884
Jerry Yu75261df2021-09-02 17:40:08 +0800885# Check %NO_TICKETS option
Jerry Yub12d81d2021-08-17 10:56:08 +0800886requires_gnutls_next_no_ticket() {
887 requires_gnutls_next
888 if [ "$GNUTLS_NEXT_AVAILABLE" = "NO" ]; then
889 GNUTLS_NO_TICKETS_AVAILABLE="NO"
890 fi
891 if [ -z "${GNUTLS_NO_TICKETS_AVAILABLE:-}" ]; then
892 if $GNUTLS_NEXT_CLI --priority-list 2>&1 | grep NO_TICKETS >/dev/null
893 then
894 GNUTLS_NO_TICKETS_AVAILABLE="YES"
895 else
896 GNUTLS_NO_TICKETS_AVAILABLE="NO"
897 fi
898 fi
899 if [ "$GNUTLS_NO_TICKETS_AVAILABLE" = "NO" ]; then
900 SKIP_NEXT="YES"
901 fi
902}
903
Jerry Yu75261df2021-09-02 17:40:08 +0800904# Check %DISABLE_TLS13_COMPAT_MODE option
Jerry Yub12d81d2021-08-17 10:56:08 +0800905requires_gnutls_next_disable_tls13_compat() {
906 requires_gnutls_next
907 if [ "$GNUTLS_NEXT_AVAILABLE" = "NO" ]; then
908 GNUTLS_DISABLE_TLS13_COMPAT_MODE_AVAILABLE="NO"
909 fi
910 if [ -z "${GNUTLS_DISABLE_TLS13_COMPAT_MODE_AVAILABLE:-}" ]; then
911 if $GNUTLS_NEXT_CLI --priority-list 2>&1 | grep DISABLE_TLS13_COMPAT_MODE >/dev/null
912 then
913 GNUTLS_DISABLE_TLS13_COMPAT_MODE_AVAILABLE="YES"
914 else
915 GNUTLS_DISABLE_TLS13_COMPAT_MODE_AVAILABLE="NO"
916 fi
917 fi
918 if [ "$GNUTLS_DISABLE_TLS13_COMPAT_MODE_AVAILABLE" = "NO" ]; then
919 SKIP_NEXT="YES"
920 fi
921}
922
Jan Bruckneraa31b192023-02-06 12:54:29 +0100923# skip next test if GnuTLS does not support the record size limit extension
924requires_gnutls_record_size_limit() {
925 requires_gnutls_next
926 if [ "$GNUTLS_NEXT_AVAILABLE" = "NO" ]; then
927 GNUTLS_RECORD_SIZE_LIMIT_AVAILABLE="NO"
928 else
929 GNUTLS_RECORD_SIZE_LIMIT_AVAILABLE="YES"
930 fi
931 if [ "$GNUTLS_RECORD_SIZE_LIMIT_AVAILABLE" = "NO" ]; then
932 SKIP_NEXT="YES"
933 fi
934}
935
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +0200936# skip next test if IPv6 isn't available on this host
937requires_ipv6() {
938 if [ -z "${HAS_IPV6:-}" ]; then
939 $P_SRV server_addr='::1' > $SRV_OUT 2>&1 &
940 SRV_PID=$!
941 sleep 1
942 kill $SRV_PID >/dev/null 2>&1
943 if grep "NET - Binding of the socket failed" $SRV_OUT >/dev/null; then
944 HAS_IPV6="NO"
945 else
946 HAS_IPV6="YES"
947 fi
948 rm -r $SRV_OUT
949 fi
950
951 if [ "$HAS_IPV6" = "NO" ]; then
952 SKIP_NEXT="YES"
953 fi
954}
955
Andrzej Kurekb4593462018-10-11 08:43:30 -0400956# skip next test if it's i686 or uname is not available
957requires_not_i686() {
958 if [ -z "${IS_I686:-}" ]; then
959 IS_I686="YES"
960 if which "uname" >/dev/null 2>&1; then
961 if [ -z "$(uname -a | grep i686)" ]; then
962 IS_I686="NO"
963 fi
964 fi
965 fi
966 if [ "$IS_I686" = "YES" ]; then
967 SKIP_NEXT="YES"
968 fi
969}
970
David Horstmann95d516f2021-05-04 18:36:56 +0100971MAX_CONTENT_LEN=16384
Yuto Takano2be6f1a2021-06-22 07:16:40 +0100972MAX_IN_LEN=$( get_config_value_or_default "MBEDTLS_SSL_IN_CONTENT_LEN" )
973MAX_OUT_LEN=$( get_config_value_or_default "MBEDTLS_SSL_OUT_CONTENT_LEN" )
Tomás González06956a12023-08-23 15:46:20 +0100974if [ "$LIST_TESTS" -eq 0 ];then
975 # Calculate the input & output maximum content lengths set in the config
Angus Grattonc4dd0732018-04-11 16:28:39 +1000976
Tomás González06956a12023-08-23 15:46:20 +0100977 # Calculate the maximum content length that fits both
978 if [ "$MAX_IN_LEN" -lt "$MAX_CONTENT_LEN" ]; then
979 MAX_CONTENT_LEN="$MAX_IN_LEN"
980 fi
981 if [ "$MAX_OUT_LEN" -lt "$MAX_CONTENT_LEN" ]; then
982 MAX_CONTENT_LEN="$MAX_OUT_LEN"
983 fi
Angus Grattonc4dd0732018-04-11 16:28:39 +1000984fi
Angus Grattonc4dd0732018-04-11 16:28:39 +1000985# skip the next test if the SSL output buffer is less than 16KB
986requires_full_size_output_buffer() {
987 if [ "$MAX_OUT_LEN" -ne 16384 ]; then
988 SKIP_NEXT="YES"
989 fi
990}
991
Gilles Peskine6bdebfe2024-10-31 18:52:40 +0100992# Skip the next test if called by all.sh in a component with MSan
993# (which we also call MemSan) or Valgrind.
994not_with_msan_or_valgrind() {
995 case "_${MBEDTLS_TEST_CONFIGURATION:-}_" in
996 *_msan_*|*_memsan_*|*_valgrind_*) SKIP_NEXT="YES";;
997 esac
998}
999
Manuel Pégourié-Gonnard76fe9e42014-09-24 15:17:31 +02001000# skip the next test if valgrind is in use
1001not_with_valgrind() {
1002 if [ "$MEMCHECK" -gt 0 ]; then
1003 SKIP_NEXT="YES"
1004 fi
1005}
1006
Paul Bakker362689d2016-05-13 10:33:25 +01001007# skip the next test if valgrind is NOT in use
1008only_with_valgrind() {
1009 if [ "$MEMCHECK" -eq 0 ]; then
1010 SKIP_NEXT="YES"
1011 fi
1012}
1013
Manuel Pégourié-Gonnarda0719722014-09-20 12:46:27 +02001014# multiply the client timeout delay by the given factor for the next test
Janos Follath74537a62016-09-02 13:45:28 +01001015client_needs_more_time() {
Manuel Pégourié-Gonnarda0719722014-09-20 12:46:27 +02001016 CLI_DELAY_FACTOR=$1
1017}
1018
Janos Follath74537a62016-09-02 13:45:28 +01001019# wait for the given seconds after the client finished in the next test
1020server_needs_more_time() {
1021 SRV_DELAY_SECONDS=$1
1022}
1023
Manuel Pégourié-Gonnardf8bdbb52014-02-21 09:20:14 +01001024# print_name <name>
1025print_name() {
Paul Bakkere20310a2016-05-10 11:18:17 +01001026 TESTS=$(( $TESTS + 1 ))
1027 LINE=""
1028
1029 if [ "$SHOW_TEST_NUMBER" -gt 0 ]; then
1030 LINE="$TESTS "
1031 fi
1032
1033 LINE="$LINE$1"
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +01001034
Tomás González378e3642023-09-04 10:41:37 +01001035 printf "%s " "$LINE"
1036 LEN=$(( 72 - `echo "$LINE" | wc -c` ))
1037 for i in `seq 1 $LEN`; do printf '.'; done
1038 printf ' '
1039
Manuel Pégourié-Gonnardf8bdbb52014-02-21 09:20:14 +01001040}
1041
Gilles Peskine560280b2019-09-16 15:17:38 +02001042# record_outcome <outcome> [<failure-reason>]
1043# The test name must be in $NAME.
Gilles Peskine5eb2b022022-01-07 15:47:02 +01001044# Use $TEST_SUITE_NAME as the test suite name if set.
Gilles Peskine560280b2019-09-16 15:17:38 +02001045record_outcome() {
1046 echo "$1"
1047 if [ -n "$MBEDTLS_TEST_OUTCOME_FILE" ]; then
1048 printf '%s;%s;%s;%s;%s;%s\n' \
1049 "$MBEDTLS_TEST_PLATFORM" "$MBEDTLS_TEST_CONFIGURATION" \
Jerry Yu9e47b262023-11-06 10:52:01 +08001050 "${TEST_SUITE_NAME:-ssl-opt}" "$NAME" \
Gilles Peskine560280b2019-09-16 15:17:38 +02001051 "$1" "${2-}" \
1052 >>"$MBEDTLS_TEST_OUTCOME_FILE"
1053 fi
1054}
Gilles Peskine5eb2b022022-01-07 15:47:02 +01001055unset TEST_SUITE_NAME
Gilles Peskine560280b2019-09-16 15:17:38 +02001056
Gilles Peskine788ad332021-10-20 14:17:02 +02001057# True if the presence of the given pattern in a log definitely indicates
1058# that the test has failed. False if the presence is inconclusive.
1059#
1060# Inputs:
1061# * $1: pattern found in the logs
1062# * $TIMES_LEFT: >0 if retrying is an option
1063#
1064# Outputs:
1065# * $outcome: set to a retry reason if the pattern is inconclusive,
1066# unchanged otherwise.
1067# * Return value: 1 if the pattern is inconclusive,
1068# 0 if the failure is definitive.
1069log_pattern_presence_is_conclusive() {
1070 # If we've run out of attempts, then don't retry no matter what.
1071 if [ $TIMES_LEFT -eq 0 ]; then
1072 return 0
1073 fi
1074 case $1 in
1075 "resend")
1076 # An undesired resend may have been caused by the OS dropping or
1077 # delaying a packet at an inopportune time.
1078 outcome="RETRY(resend)"
1079 return 1;;
1080 esac
1081}
1082
Manuel Pégourié-Gonnardf8bdbb52014-02-21 09:20:14 +01001083# fail <message>
1084fail() {
Gilles Peskine560280b2019-09-16 15:17:38 +02001085 record_outcome "FAIL" "$1"
Manuel Pégourié-Gonnard3eec6042014-02-27 15:37:24 +01001086 echo " ! $1"
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +01001087
Manuel Pégourié-Gonnardc2b00922014-08-31 16:46:04 +02001088 mv $SRV_OUT o-srv-${TESTS}.log
1089 mv $CLI_OUT o-cli-${TESTS}.log
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02001090 if [ -n "$PXY_CMD" ]; then
1091 mv $PXY_OUT o-pxy-${TESTS}.log
1092 fi
1093 echo " ! outputs saved to o-XXX-${TESTS}.log"
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +01001094
Manuel Pégourié-Gonnard3f3302f2020-06-08 11:49:05 +02001095 if [ "${LOG_FAILURE_ON_STDOUT:-0}" != 0 ]; then
Manuel Pégourié-Gonnard7fa67722014-08-31 17:42:53 +02001096 echo " ! server output:"
1097 cat o-srv-${TESTS}.log
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02001098 echo " ! ========================================================"
Manuel Pégourié-Gonnard7fa67722014-08-31 17:42:53 +02001099 echo " ! client output:"
1100 cat o-cli-${TESTS}.log
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02001101 if [ -n "$PXY_CMD" ]; then
1102 echo " ! ========================================================"
1103 echo " ! proxy output:"
1104 cat o-pxy-${TESTS}.log
1105 fi
1106 echo ""
Manuel Pégourié-Gonnard7fa67722014-08-31 17:42:53 +02001107 fi
1108
Manuel Pégourié-Gonnard72e51ee2014-08-31 10:22:11 +02001109 FAILS=$(( $FAILS + 1 ))
Manuel Pégourié-Gonnardf8bdbb52014-02-21 09:20:14 +01001110}
1111
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +01001112# is_polar <cmd_line>
1113is_polar() {
Gilles Peskine64457492020-08-26 21:53:33 +02001114 case "$1" in
1115 *ssl_client2*) true;;
1116 *ssl_server2*) true;;
1117 *) false;;
1118 esac
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +01001119}
1120
Manuel Pégourié-Gonnardfa60f122014-09-26 16:07:29 +02001121# openssl s_server doesn't have -www with DTLS
1122check_osrv_dtls() {
Gilles Peskine64457492020-08-26 21:53:33 +02001123 case "$SRV_CMD" in
1124 *s_server*-dtls*)
1125 NEEDS_INPUT=1
1126 SRV_CMD="$( echo $SRV_CMD | sed s/-www// )";;
1127 *) NEEDS_INPUT=0;;
1128 esac
Manuel Pégourié-Gonnardfa60f122014-09-26 16:07:29 +02001129}
1130
1131# provide input to commands that need it
1132provide_input() {
1133 if [ $NEEDS_INPUT -eq 0 ]; then
1134 return
1135 fi
1136
1137 while true; do
1138 echo "HTTP/1.0 200 OK"
1139 sleep 1
1140 done
1141}
1142
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01001143# has_mem_err <log_file_name>
1144has_mem_err() {
1145 if ( grep -F 'All heap blocks were freed -- no leaks are possible' "$1" &&
1146 grep -F 'ERROR SUMMARY: 0 errors from 0 contexts' "$1" ) > /dev/null
1147 then
1148 return 1 # false: does not have errors
1149 else
1150 return 0 # true: has errors
1151 fi
1152}
1153
Unknownd364f4c2019-09-02 10:42:57 -04001154# Wait for process $2 named $3 to be listening on port $1. Print error to $4.
Gilles Peskine418b5362017-12-14 18:58:42 +01001155if type lsof >/dev/null 2>/dev/null; then
Unknownd364f4c2019-09-02 10:42:57 -04001156 wait_app_start() {
Paul Elliotte05e1262021-10-20 15:59:33 +01001157 newline='
1158'
Gilles Peskine418b5362017-12-14 18:58:42 +01001159 START_TIME=$(date +%s)
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02001160 if [ "$DTLS" -eq 1 ]; then
Gilles Peskine418b5362017-12-14 18:58:42 +01001161 proto=UDP
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02001162 else
Gilles Peskine418b5362017-12-14 18:58:42 +01001163 proto=TCP
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02001164 fi
Gilles Peskine418b5362017-12-14 18:58:42 +01001165 # Make a tight loop, server normally takes less than 1s to start.
Paul Elliott58ed8a72021-10-19 17:56:39 +01001166 while true; do
Gilles Peskine5bd0b512022-04-15 22:53:18 +02001167 SERVER_PIDS=$(lsof -a -n -b -i "$proto:$1" -t)
Paul Elliotte05e1262021-10-20 15:59:33 +01001168 # When we use a proxy, it will be listening on the same port we
1169 # are checking for as well as the server and lsof will list both.
Paul Elliotte05e1262021-10-20 15:59:33 +01001170 case ${newline}${SERVER_PIDS}${newline} in
Gilles Peskine5bd0b512022-04-15 22:53:18 +02001171 *${newline}${2}${newline}*) break;;
Paul Elliotte05e1262021-10-20 15:59:33 +01001172 esac
Gilles Peskine418b5362017-12-14 18:58:42 +01001173 if [ $(( $(date +%s) - $START_TIME )) -gt $DOG_DELAY ]; then
Unknownd364f4c2019-09-02 10:42:57 -04001174 echo "$3 START TIMEOUT"
1175 echo "$3 START TIMEOUT" >> $4
Gilles Peskine418b5362017-12-14 18:58:42 +01001176 break
1177 fi
1178 # Linux and *BSD support decimal arguments to sleep. On other
1179 # OSes this may be a tight loop.
1180 sleep 0.1 2>/dev/null || true
1181 done
1182 }
1183else
Unknownd364f4c2019-09-02 10:42:57 -04001184 echo "Warning: lsof not available, wait_app_start = sleep"
1185 wait_app_start() {
Manuel Pégourié-Gonnard0c1ec472014-06-20 18:41:11 +02001186 sleep "$START_DELAY"
Gilles Peskine418b5362017-12-14 18:58:42 +01001187 }
1188fi
Manuel Pégourié-Gonnard0c1ec472014-06-20 18:41:11 +02001189
Unknownd364f4c2019-09-02 10:42:57 -04001190# Wait for server process $2 to be listening on port $1.
1191wait_server_start() {
1192 wait_app_start $1 $2 "SERVER" $SRV_OUT
1193}
1194
1195# Wait for proxy process $2 to be listening on port $1.
1196wait_proxy_start() {
1197 wait_app_start $1 $2 "PROXY" $PXY_OUT
1198}
1199
Andres Amaya Garciab84c40b2017-09-06 15:44:01 +01001200# Given the client or server debug output, parse the unix timestamp that is
Andres Amaya Garcia3b1bdff2017-09-14 12:41:29 +01001201# included in the first 4 bytes of the random bytes and check that it's within
Andres Amaya Garciab84c40b2017-09-06 15:44:01 +01001202# acceptable bounds
1203check_server_hello_time() {
1204 # Extract the time from the debug (lvl 3) output of the client
Andres Amaya Garcia67d8da52017-09-15 15:49:24 +01001205 SERVER_HELLO_TIME="$(sed -n 's/.*server hello, current time: //p' < "$1")"
Andres Amaya Garciab84c40b2017-09-06 15:44:01 +01001206 # Get the Unix timestamp for now
1207 CUR_TIME=$(date +'%s')
1208 THRESHOLD_IN_SECS=300
1209
1210 # Check if the ServerHello time was printed
1211 if [ -z "$SERVER_HELLO_TIME" ]; then
1212 return 1
1213 fi
1214
1215 # Check the time in ServerHello is within acceptable bounds
1216 if [ $SERVER_HELLO_TIME -lt $(( $CUR_TIME - $THRESHOLD_IN_SECS )) ]; then
1217 # The time in ServerHello is at least 5 minutes before now
1218 return 1
1219 elif [ $SERVER_HELLO_TIME -gt $(( $CUR_TIME + $THRESHOLD_IN_SECS )) ]; then
Andres Amaya Garcia3b1bdff2017-09-14 12:41:29 +01001220 # The time in ServerHello is at least 5 minutes later than now
Andres Amaya Garciab84c40b2017-09-06 15:44:01 +01001221 return 1
1222 else
1223 return 0
1224 fi
1225}
1226
Piotr Nowicki0937ed22019-11-26 16:32:40 +01001227# Get handshake memory usage from server or client output and put it into the variable specified by the first argument
1228handshake_memory_get() {
1229 OUTPUT_VARIABLE="$1"
1230 OUTPUT_FILE="$2"
1231
1232 # Get memory usage from a pattern like "Heap memory usage after handshake: 23112 bytes. Peak memory usage was 33112"
1233 MEM_USAGE=$(sed -n 's/.*Heap memory usage after handshake: //p' < "$OUTPUT_FILE" | grep -o "[0-9]*" | head -1)
1234
1235 # Check if memory usage was read
1236 if [ -z "$MEM_USAGE" ]; then
1237 echo "Error: Can not read the value of handshake memory usage"
1238 return 1
1239 else
1240 eval "$OUTPUT_VARIABLE=$MEM_USAGE"
1241 return 0
1242 fi
1243}
1244
1245# Get handshake memory usage from server or client output and check if this value
1246# is not higher than the maximum given by the first argument
1247handshake_memory_check() {
1248 MAX_MEMORY="$1"
1249 OUTPUT_FILE="$2"
1250
1251 # Get memory usage
1252 if ! handshake_memory_get "MEMORY_USAGE" "$OUTPUT_FILE"; then
1253 return 1
1254 fi
1255
1256 # Check if memory usage is below max value
1257 if [ "$MEMORY_USAGE" -gt "$MAX_MEMORY" ]; then
1258 echo "\nFailed: Handshake memory usage was $MEMORY_USAGE bytes," \
1259 "but should be below $MAX_MEMORY bytes"
1260 return 1
1261 else
1262 return 0
1263 fi
1264}
1265
Manuel Pégourié-Gonnardc0f6a692014-08-30 22:41:47 +02001266# wait for client to terminate and set CLI_EXIT
1267# must be called right after starting the client
1268wait_client_done() {
1269 CLI_PID=$!
1270
Manuel Pégourié-Gonnarda0719722014-09-20 12:46:27 +02001271 CLI_DELAY=$(( $DOG_DELAY * $CLI_DELAY_FACTOR ))
1272 CLI_DELAY_FACTOR=1
1273
Manuel Pégourié-Gonnarda365add2015-08-04 20:57:59 +02001274 ( sleep $CLI_DELAY; echo "===CLIENT_TIMEOUT===" >> $CLI_OUT; kill $CLI_PID ) &
Manuel Pégourié-Gonnarda6189f02014-09-20 13:15:43 +02001275 DOG_PID=$!
Manuel Pégourié-Gonnardc0f6a692014-08-30 22:41:47 +02001276
Jerry Yud2d41102022-07-26 17:34:42 +08001277 # For Ubuntu 22.04, `Terminated` message is outputed by wait command.
1278 # To remove it from stdout, redirect stdout/stderr to CLI_OUT
1279 wait $CLI_PID >> $CLI_OUT 2>&1
Manuel Pégourié-Gonnardc0f6a692014-08-30 22:41:47 +02001280 CLI_EXIT=$?
1281
Manuel Pégourié-Gonnarda6189f02014-09-20 13:15:43 +02001282 kill $DOG_PID >/dev/null 2>&1
Jerry Yufe52e552022-07-09 04:23:43 +00001283 wait $DOG_PID >> $CLI_OUT 2>&1
Manuel Pégourié-Gonnardc0f6a692014-08-30 22:41:47 +02001284
1285 echo "EXIT: $CLI_EXIT" >> $CLI_OUT
Janos Follath74537a62016-09-02 13:45:28 +01001286
1287 sleep $SRV_DELAY_SECONDS
1288 SRV_DELAY_SECONDS=0
Manuel Pégourié-Gonnardc0f6a692014-08-30 22:41:47 +02001289}
1290
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02001291# check if the given command uses dtls and sets global variable DTLS
1292detect_dtls() {
Gilles Peskine64457492020-08-26 21:53:33 +02001293 case "$1" in
Gilles Peskine9d104e92024-09-04 16:51:50 +02001294 *dtls=1*|*-dtls*|*-u*|*/dtls_*) DTLS=1;;
Gilles Peskine64457492020-08-26 21:53:33 +02001295 *) DTLS=0;;
1296 esac
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02001297}
1298
Dave Rodgman0279c2f2021-02-10 12:45:41 +00001299# check if the given command uses gnutls and sets global variable CMD_IS_GNUTLS
1300is_gnutls() {
1301 case "$1" in
1302 *gnutls-cli*)
1303 CMD_IS_GNUTLS=1
1304 ;;
1305 *gnutls-serv*)
1306 CMD_IS_GNUTLS=1
1307 ;;
1308 *)
1309 CMD_IS_GNUTLS=0
1310 ;;
1311 esac
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001312}
1313
Valerio Setti2f8eb622023-03-16 13:04:44 +01001314# Some external tools (gnutls or openssl) might not have support for static ECDH
1315# and this limit the tests that can be run with them. This function checks server
Valerio Setti6ba247c2023-03-14 17:13:43 +01001316# and client command lines, given as input, to verify if the current test
1317# is using one of these tools.
1318use_ext_tool_without_ecdh_support() {
1319 case "$1" in
1320 *$GNUTLS_SERV*|\
1321 *${GNUTLS_NEXT_SERV:-"gnutls-serv-dummy"}*|\
1322 *${OPENSSL_NEXT:-"openssl-dummy"}*)
1323 echo "yes"
1324 return;;
1325 esac
1326 case "$2" in
1327 *$GNUTLS_CLI*|\
1328 *${GNUTLS_NEXT_CLI:-"gnutls-cli-dummy"}*|\
1329 *${OPENSSL_NEXT:-"openssl-dummy"}*)
1330 echo "yes"
1331 return;;
1332 esac
1333 echo "no"
1334}
1335
Jerry Yuf467d462022-11-07 13:12:44 +08001336# Generate random psk_list argument for ssl_server2
1337get_srv_psk_list ()
1338{
1339 case $(( TESTS % 3 )) in
1340 0) echo "psk_list=abc,dead,def,beef,Client_identity,6162636465666768696a6b6c6d6e6f70";;
1341 1) echo "psk_list=abc,dead,Client_identity,6162636465666768696a6b6c6d6e6f70,def,beef";;
1342 2) echo "psk_list=Client_identity,6162636465666768696a6b6c6d6e6f70,abc,dead,def,beef";;
1343 esac
1344}
1345
Gilles Peskine309ca652022-03-14 17:55:04 +01001346# Determine what calc_verify trace is to be expected, if any.
1347#
1348# calc_verify is only called for two things: to calculate the
1349# extended master secret, and to process client authentication.
1350#
1351# Warning: the current implementation assumes that extended_ms is not
1352# disabled on the client or on the server.
1353#
1354# Inputs:
Gilles Peskinec8d242f2022-04-06 22:23:45 +02001355# * $1: the value of the server auth_mode parameter.
1356# 'required' if client authentication is expected,
1357# 'none' or absent if not.
Gilles Peskine309ca652022-03-14 17:55:04 +01001358# * $CONFIGS_ENABLED
1359#
1360# Outputs:
1361# * $maybe_calc_verify: set to a trace expected in the debug logs
1362set_maybe_calc_verify() {
1363 maybe_calc_verify=
1364 case $CONFIGS_ENABLED in
1365 *\ MBEDTLS_SSL_EXTENDED_MASTER_SECRET\ *) :;;
1366 *)
1367 case ${1-} in
Gilles Peskinec8d242f2022-04-06 22:23:45 +02001368 ''|none) return;;
1369 required) :;;
Gilles Peskine309ca652022-03-14 17:55:04 +01001370 *) echo "Bad parameter 1 to set_maybe_calc_verify: $1"; exit 1;;
1371 esac
1372 esac
1373 case $CONFIGS_ENABLED in
1374 *\ MBEDTLS_USE_PSA_CRYPTO\ *) maybe_calc_verify="PSA calc verify";;
1375 *) maybe_calc_verify="<= calc verify";;
1376 esac
1377}
1378
Johan Pascal9bc50b02020-09-24 12:01:13 +02001379# Compare file content
1380# Usage: find_in_both pattern file1 file2
1381# extract from file1 the first line matching the pattern
1382# check in file2 that the same line can be found
1383find_in_both() {
1384 srv_pattern=$(grep -m 1 "$1" "$2");
1385 if [ -z "$srv_pattern" ]; then
1386 return 1;
1387 fi
1388
1389 if grep "$srv_pattern" $3 >/dev/null; then :
Johan Pascal10403152020-10-09 20:43:51 +02001390 return 0;
Johan Pascal9bc50b02020-09-24 12:01:13 +02001391 else
1392 return 1;
1393 fi
1394}
1395
Jerry Yuc46e9b42021-08-06 11:22:24 +08001396SKIP_HANDSHAKE_CHECK="NO"
1397skip_handshake_stage_check() {
1398 SKIP_HANDSHAKE_CHECK="YES"
1399}
1400
Gilles Peskine236bf982021-10-19 16:25:10 +02001401# Analyze the commands that will be used in a test.
1402#
1403# Analyze and possibly instrument $PXY_CMD, $CLI_CMD, $SRV_CMD to pass
1404# extra arguments or go through wrappers.
Gilles Peskine59601d72022-04-05 22:00:17 +02001405#
1406# Inputs:
1407# * $@: supplemental options to run_test() (after the mandatory arguments).
1408# * $CLI_CMD, $PXY_CMD, $SRV_CMD: the client, proxy and server commands.
1409# * $DTLS: 1 if DTLS, otherwise 0.
1410#
1411# Outputs:
1412# * $CLI_CMD, $PXY_CMD, $SRV_CMD: may be tweaked.
Gilles Peskine236bf982021-10-19 16:25:10 +02001413analyze_test_commands() {
Gilles Peskinef8b373e2024-09-04 16:07:56 +02001414 # If the test uses DTLS, does not force a specific port, and does not
1415 # specify a custom proxy, add a simple proxy.
1416 # It provides timing info that's useful to debug failures.
1417 if [ "$DTLS" -eq 1 ] &&
1418 [ "$THIS_SRV_PORT" = "$SRV_PORT" ] &&
1419 [ -z "$PXY_CMD" ]
1420 then
Manuel Pégourié-Gonnardf4557862020-06-08 11:40:06 +02001421 PXY_CMD="$P_PXY"
Manuel Pégourié-Gonnard8779e9a2020-07-16 10:19:32 +02001422 case " $SRV_CMD " in
1423 *' server_addr=::1 '*)
1424 PXY_CMD="$PXY_CMD server_addr=::1 listen_addr=::1";;
1425 esac
Manuel Pégourié-Gonnardf4557862020-06-08 11:40:06 +02001426 fi
1427
Dave Rodgman0279c2f2021-02-10 12:45:41 +00001428 # update CMD_IS_GNUTLS variable
1429 is_gnutls "$SRV_CMD"
1430
1431 # if the server uses gnutls but doesn't set priority, explicitly
1432 # set the default priority
1433 if [ "$CMD_IS_GNUTLS" -eq 1 ]; then
1434 case "$SRV_CMD" in
1435 *--priority*) :;;
1436 *) SRV_CMD="$SRV_CMD --priority=NORMAL";;
1437 esac
1438 fi
1439
1440 # update CMD_IS_GNUTLS variable
1441 is_gnutls "$CLI_CMD"
1442
1443 # if the client uses gnutls but doesn't set priority, explicitly
1444 # set the default priority
1445 if [ "$CMD_IS_GNUTLS" -eq 1 ]; then
1446 case "$CLI_CMD" in
1447 *--priority*) :;;
1448 *) CLI_CMD="$CLI_CMD --priority=NORMAL";;
1449 esac
1450 fi
1451
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02001452 # fix client port
1453 if [ -n "$PXY_CMD" ]; then
1454 CLI_CMD=$( echo "$CLI_CMD" | sed s/+SRV_PORT/$PXY_PORT/g )
1455 else
Gilles Peskine6c798ef2024-09-04 16:05:11 +02001456 CLI_CMD=$( echo "$CLI_CMD" | sed s/+SRV_PORT/$THIS_SRV_PORT/g )
1457 fi
1458
1459 # If the test forces a specific port and the server is OpenSSL or
1460 # GnuTLS, override its port specification.
1461 if [ "$THIS_SRV_PORT" != "$SRV_PORT" ]; then
1462 case "$SRV_CMD" in
Gilles Peskine8d64fe12024-09-04 23:33:36 +02001463 "$G_SRV"*|"$G_NEXT_SRV"*)
1464 SRV_CMD=$(
1465 printf %s "$SRV_CMD " |
1466 sed -e "s/ -p $SRV_PORT / -p $THIS_SRV_PORT /"
1467 );;
Gilles Peskine6c798ef2024-09-04 16:05:11 +02001468 "$O_SRV"*|"$O_NEXT_SRV"*) SRV_CMD="$SRV_CMD -accept $THIS_SRV_PORT";;
1469 esac
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02001470 fi
1471
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01001472 # prepend valgrind to our commands if active
1473 if [ "$MEMCHECK" -gt 0 ]; then
1474 if is_polar "$SRV_CMD"; then
1475 SRV_CMD="valgrind --leak-check=full $SRV_CMD"
1476 fi
1477 if is_polar "$CLI_CMD"; then
1478 CLI_CMD="valgrind --leak-check=full $CLI_CMD"
1479 fi
1480 fi
Gilles Peskine236bf982021-10-19 16:25:10 +02001481}
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01001482
Gilles Peskine236bf982021-10-19 16:25:10 +02001483# Check for failure conditions after a test case.
1484#
1485# Inputs from run_test:
1486# * positional parameters: test options (see run_test documentation)
1487# * $CLI_EXIT: client return code
1488# * $CLI_EXPECT: expected client return code
1489# * $SRV_RET: server return code
1490# * $CLI_OUT, $SRV_OUT, $PXY_OUT: files containing client/server/proxy logs
Gilles Peskine0e3534c2021-10-19 17:23:25 +02001491# * $TIMES_LEFT: if nonzero, a RETRY outcome is allowed
Gilles Peskine236bf982021-10-19 16:25:10 +02001492#
1493# Outputs:
Gilles Peskinef11d30e2021-10-19 18:00:10 +02001494# * $outcome: one of PASS/RETRY*/FAIL
Gilles Peskine236bf982021-10-19 16:25:10 +02001495check_test_failure() {
Gilles Peskine0e3534c2021-10-19 17:23:25 +02001496 outcome=FAIL
Manuel Pégourié-Gonnarda365add2015-08-04 20:57:59 +02001497
Gilles Peskine0e3534c2021-10-19 17:23:25 +02001498 if [ $TIMES_LEFT -gt 0 ] &&
1499 grep '===CLIENT_TIMEOUT===' $CLI_OUT >/dev/null
1500 then
Gilles Peskinef11d30e2021-10-19 18:00:10 +02001501 outcome="RETRY(client-timeout)"
Gilles Peskine0e3534c2021-10-19 17:23:25 +02001502 return
1503 fi
Manuel Pégourié-Gonnarda365add2015-08-04 20:57:59 +02001504
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +01001505 # check if the client and server went at least to the handshake stage
Paul Bakker1ebc0c52014-05-22 15:47:58 +02001506 # (useful to avoid tests with only negative assertions and non-zero
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +01001507 # expected client exit to incorrectly succeed in case of catastrophic
1508 # failure)
Jerry Yuc46e9b42021-08-06 11:22:24 +08001509 if [ "X$SKIP_HANDSHAKE_CHECK" != "XYES" ]
1510 then
1511 if is_polar "$SRV_CMD"; then
1512 if grep "Performing the SSL/TLS handshake" $SRV_OUT >/dev/null; then :;
1513 else
1514 fail "server or client failed to reach handshake stage"
1515 return
1516 fi
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +01001517 fi
Jerry Yuc46e9b42021-08-06 11:22:24 +08001518 if is_polar "$CLI_CMD"; then
1519 if grep "Performing the SSL/TLS handshake" $CLI_OUT >/dev/null; then :;
1520 else
1521 fail "server or client failed to reach handshake stage"
1522 return
1523 fi
Manuel Pégourié-Gonnard677884d2014-02-25 16:42:31 +01001524 fi
1525 fi
1526
Jerry Yuc46e9b42021-08-06 11:22:24 +08001527 SKIP_HANDSHAKE_CHECK="NO"
Gilles Peskineaaf866e2021-02-09 21:01:33 +01001528 # Check server exit code (only for Mbed TLS: GnuTLS and OpenSSL don't
1529 # exit with status 0 when interrupted by a signal, and we don't really
1530 # care anyway), in case e.g. the server reports a memory leak.
1531 if [ $SRV_RET != 0 ] && is_polar "$SRV_CMD"; then
Gilles Peskine7f919de2021-02-02 23:29:03 +01001532 fail "Server exited with status $SRV_RET"
Manuel Pégourié-Gonnardf8bdbb52014-02-21 09:20:14 +01001533 return
1534 fi
1535
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001536 # check client exit code
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +01001537 if [ \( "$CLI_EXPECT" = 0 -a "$CLI_EXIT" != 0 \) -o \
1538 \( "$CLI_EXPECT" != 0 -a "$CLI_EXIT" = 0 \) ]
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01001539 then
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02001540 fail "bad client exit code (expected $CLI_EXPECT, got $CLI_EXIT)"
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001541 return
1542 fi
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001543
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01001544 # check other assertions
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +02001545 # lines beginning with == are added by valgrind, ignore them
Paul Bakker1f650922016-05-13 10:16:46 +01001546 # lines with 'Serious error when reading debug info', are valgrind issues as well
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001547 while [ $# -gt 0 ]
1548 do
1549 case $1 in
1550 "-s")
Paul Bakker1f650922016-05-13 10:16:46 +01001551 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 +01001552 fail "pattern '$2' MUST be present in the Server output"
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001553 return
1554 fi
1555 ;;
1556
1557 "-c")
Paul Bakker1f650922016-05-13 10:16:46 +01001558 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 +01001559 fail "pattern '$2' MUST be present in the Client output"
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001560 return
1561 fi
1562 ;;
1563
1564 "-S")
Paul Bakker1f650922016-05-13 10:16:46 +01001565 if grep -v '^==' $SRV_OUT | grep -v 'Serious error when reading debug info' | grep "$2" >/dev/null; then
Gilles Peskine788ad332021-10-20 14:17:02 +02001566 if log_pattern_presence_is_conclusive "$2"; then
Gilles Peskinef11d30e2021-10-19 18:00:10 +02001567 fail "pattern '$2' MUST NOT be present in the Server output"
1568 fi
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001569 return
1570 fi
1571 ;;
1572
1573 "-C")
Paul Bakker1f650922016-05-13 10:16:46 +01001574 if grep -v '^==' $CLI_OUT | grep -v 'Serious error when reading debug info' | grep "$2" >/dev/null; then
Gilles Peskine788ad332021-10-20 14:17:02 +02001575 if log_pattern_presence_is_conclusive "$2"; then
Gilles Peskinef11d30e2021-10-19 18:00:10 +02001576 fail "pattern '$2' MUST NOT be present in the Client output"
1577 fi
Simon Butcher8e004102016-10-14 00:48:33 +01001578 return
1579 fi
1580 ;;
1581
1582 # The filtering in the following two options (-u and -U) do the following
1583 # - ignore valgrind output
Antonin Décimo36e89b52019-01-23 15:24:37 +01001584 # - filter out everything but lines right after the pattern occurrences
Simon Butcher8e004102016-10-14 00:48:33 +01001585 # - keep one of each non-unique line
1586 # - count how many lines remain
1587 # A line with '--' will remain in the result from previous outputs, so the number of lines in the result will be 1
1588 # if there were no duplicates.
1589 "-U")
1590 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
1591 fail "lines following pattern '$2' must be unique in Server output"
1592 return
1593 fi
1594 ;;
1595
1596 "-u")
1597 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
1598 fail "lines following pattern '$2' must be unique in Client output"
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001599 return
1600 fi
1601 ;;
Andres Amaya Garcia93993de2017-09-06 15:38:07 +01001602 "-F")
1603 if ! $2 "$SRV_OUT"; then
1604 fail "function call to '$2' failed on Server output"
1605 return
1606 fi
1607 ;;
1608 "-f")
1609 if ! $2 "$CLI_OUT"; then
1610 fail "function call to '$2' failed on Client output"
1611 return
1612 fi
1613 ;;
Johan Pascal9bc50b02020-09-24 12:01:13 +02001614 "-g")
1615 if ! eval "$2 '$SRV_OUT' '$CLI_OUT'"; then
1616 fail "function call to '$2' failed on Server and Client output"
1617 return
1618 fi
1619 ;;
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001620
1621 *)
Paul Bakker1ebc0c52014-05-22 15:47:58 +02001622 echo "Unknown test: $1" >&2
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001623 exit 1
1624 esac
1625 shift 2
1626 done
1627
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01001628 # check valgrind's results
1629 if [ "$MEMCHECK" -gt 0 ]; then
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02001630 if is_polar "$SRV_CMD" && has_mem_err $SRV_OUT; then
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01001631 fail "Server has memory errors"
1632 return
1633 fi
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02001634 if is_polar "$CLI_CMD" && has_mem_err $CLI_OUT; then
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01001635 fail "Client has memory errors"
1636 return
1637 fi
1638 fi
1639
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001640 # if we're here, everything is ok
Gilles Peskine0e3534c2021-10-19 17:23:25 +02001641 outcome=PASS
Gilles Peskine236bf982021-10-19 16:25:10 +02001642}
1643
Gilles Peskine196d73b2021-10-19 16:35:35 +02001644# Run the current test case: start the server and if applicable the proxy, run
1645# the client, wait for all processes to finish or time out.
1646#
1647# Inputs:
1648# * $NAME: test case name
1649# * $CLI_CMD, $SRV_CMD, $PXY_CMD: commands to run
1650# * $CLI_OUT, $SRV_OUT, $PXY_OUT: files to contain client/server/proxy logs
1651#
1652# Outputs:
1653# * $CLI_EXIT: client return code
1654# * $SRV_RET: server return code
1655do_run_test_once() {
1656 # run the commands
1657 if [ -n "$PXY_CMD" ]; then
1658 printf "# %s\n%s\n" "$NAME" "$PXY_CMD" > $PXY_OUT
1659 $PXY_CMD >> $PXY_OUT 2>&1 &
1660 PXY_PID=$!
1661 wait_proxy_start "$PXY_PORT" "$PXY_PID"
1662 fi
1663
1664 check_osrv_dtls
1665 printf '# %s\n%s\n' "$NAME" "$SRV_CMD" > $SRV_OUT
1666 provide_input | $SRV_CMD >> $SRV_OUT 2>&1 &
1667 SRV_PID=$!
Gilles Peskine6c798ef2024-09-04 16:05:11 +02001668 wait_server_start "$THIS_SRV_PORT" "$SRV_PID"
Gilles Peskine196d73b2021-10-19 16:35:35 +02001669
1670 printf '# %s\n%s\n' "$NAME" "$CLI_CMD" > $CLI_OUT
Andrzej Kurek140b5892022-05-27 06:44:19 -04001671 # The client must be a subprocess of the script in order for killing it to
1672 # work properly, that's why the ampersand is placed inside the eval command,
1673 # not at the end of the line: the latter approach will spawn eval as a
1674 # subprocess, and the $CLI_CMD as a grandchild.
1675 eval "$CLI_CMD &" >> $CLI_OUT 2>&1
Gilles Peskine196d73b2021-10-19 16:35:35 +02001676 wait_client_done
1677
1678 sleep 0.05
1679
1680 # terminate the server (and the proxy)
1681 kill $SRV_PID
Jerry Yud2d41102022-07-26 17:34:42 +08001682 # For Ubuntu 22.04, `Terminated` message is outputed by wait command.
Jerry Yu27d80922022-08-02 21:28:55 +08001683 # To remove it from stdout, redirect stdout/stderr to SRV_OUT
Jerry Yud2d41102022-07-26 17:34:42 +08001684 wait $SRV_PID >> $SRV_OUT 2>&1
Gilles Peskine196d73b2021-10-19 16:35:35 +02001685 SRV_RET=$?
1686
1687 if [ -n "$PXY_CMD" ]; then
1688 kill $PXY_PID >/dev/null 2>&1
Jerry Yu6969eee2022-10-10 10:25:26 +08001689 wait $PXY_PID >> $PXY_OUT 2>&1
Gilles Peskine196d73b2021-10-19 16:35:35 +02001690 fi
1691}
1692
Ronald Cron097ba142023-03-08 16:18:00 +01001693# Detect if the current test is going to use TLS 1.3 or TLS 1.2.
Valerio Setti194e2bd2023-03-02 17:18:10 +01001694# $1 and $2 contain the server and client command lines, respectively.
Valerio Setti213c4ea2023-03-07 19:29:57 +01001695#
1696# Note: this function only provides some guess about TLS version by simply
Yanray Wang7b320fa2023-11-08 10:33:30 +08001697# looking at the server/client command lines. Even though this works
Valerio Setti213c4ea2023-03-07 19:29:57 +01001698# for the sake of tests' filtering (especially in conjunction with the
1699# detect_required_features() function), it does NOT guarantee that the
1700# result is accurate. It does not check other conditions, such as:
Valerio Setti213c4ea2023-03-07 19:29:57 +01001701# - we can force a ciphersuite which contains "WITH" in its name, meaning
1702# that we are going to use TLS 1.2
1703# - etc etc
Valerio Setti1af76d12023-02-23 15:55:10 +01001704get_tls_version() {
Ronald Cron097ba142023-03-08 16:18:00 +01001705 # First check if the version is forced on an Mbed TLS peer
Valerio Setti1af76d12023-02-23 15:55:10 +01001706 case $1 in
Ronald Cron097ba142023-03-08 16:18:00 +01001707 *tls12*)
1708 echo "TLS12"
1709 return;;
1710 *tls13*)
Valerio Setti1af76d12023-02-23 15:55:10 +01001711 echo "TLS13"
1712 return;;
1713 esac
1714 case $2 in
Ronald Cron097ba142023-03-08 16:18:00 +01001715 *tls12*)
1716 echo "TLS12"
1717 return;;
1718 *tls13*)
Valerio Setti1af76d12023-02-23 15:55:10 +01001719 echo "TLS13"
1720 return;;
1721 esac
Ronald Cron097ba142023-03-08 16:18:00 +01001722 # Second check if the version is forced on an OpenSSL or GnuTLS peer
1723 case $1 in
1724 tls1_2*)
1725 echo "TLS12"
1726 return;;
1727 *tls1_3)
1728 echo "TLS13"
1729 return;;
1730 esac
1731 case $2 in
1732 *tls1_2)
1733 echo "TLS12"
1734 return;;
1735 *tls1_3)
1736 echo "TLS13"
1737 return;;
1738 esac
1739 # Third if the version is not forced, if TLS 1.3 is enabled then the test
1740 # is aimed to run a TLS 1.3 handshake.
Gilles Peskine0bc57292024-09-06 14:43:17 +02001741 if is_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cron097ba142023-03-08 16:18:00 +01001742 then
1743 echo "TLS13"
1744 else
1745 echo "TLS12"
1746 fi
Valerio Setti1af76d12023-02-23 15:55:10 +01001747}
1748
Gilles Peskine236bf982021-10-19 16:25:10 +02001749# Usage: run_test name [-p proxy_cmd] srv_cmd cli_cmd cli_exit [option [...]]
1750# Options: -s pattern pattern that must be present in server output
1751# -c pattern pattern that must be present in client output
1752# -u pattern lines after pattern must be unique in client output
1753# -f call shell function on client output
1754# -S pattern pattern that must be absent in server output
1755# -C pattern pattern that must be absent in client output
1756# -U pattern lines after pattern must be unique in server output
1757# -F call shell function on server output
1758# -g call shell function on server and client output
1759run_test() {
1760 NAME="$1"
1761 shift 1
1762
Tomás González787428a2023-08-23 15:27:19 +01001763 if is_excluded "$NAME"; then
1764 SKIP_NEXT="NO"
1765 # There was no request to run the test, so don't record its outcome.
1766 return
1767 fi
1768
Tomás González37a87392023-09-01 11:25:44 +01001769 if [ "$LIST_TESTS" -gt 0 ]; then
Pengyu Lv3c170d32023-11-29 13:53:34 +08001770 printf "%s\n" "${TEST_SUITE_NAME:-ssl-opt};$NAME"
Tomás González37a87392023-09-01 11:25:44 +01001771 return
1772 fi
1773
Jerry Yu50d07bd2023-11-06 10:49:01 +08001774 # Use ssl-opt as default test suite name. Also see record_outcome function
1775 if is_excluded_test_suite "${TEST_SUITE_NAME:-ssl-opt}"; then
1776 # Do not skip next test and skip current test.
1777 SKIP_NEXT="NO"
1778 return
1779 fi
1780
Tomás González51cb7042023-09-07 10:21:19 +01001781 print_name "$NAME"
1782
Gilles Peskine236bf982021-10-19 16:25:10 +02001783 # Do we only run numbered tests?
1784 if [ -n "$RUN_TEST_NUMBER" ]; then
1785 case ",$RUN_TEST_NUMBER," in
1786 *",$TESTS,"*) :;;
1787 *) SKIP_NEXT="YES";;
1788 esac
1789 fi
1790
Gilles Peskinef8b373e2024-09-04 16:07:56 +02001791 # Does this test specify a proxy?
Gilles Peskine236bf982021-10-19 16:25:10 +02001792 if [ "X$1" = "X-p" ]; then
1793 PXY_CMD="$2"
1794 shift 2
1795 else
1796 PXY_CMD=""
1797 fi
1798
Gilles Peskine6c798ef2024-09-04 16:05:11 +02001799 # Does this test force a specific port?
1800 if [ "$1" = "-P" ]; then
1801 THIS_SRV_PORT="$2"
1802 shift 2
1803 else
1804 THIS_SRV_PORT="$SRV_PORT"
1805 fi
1806
Gilles Peskine236bf982021-10-19 16:25:10 +02001807 # get commands and client output
1808 SRV_CMD="$1"
1809 CLI_CMD="$2"
1810 CLI_EXPECT="$3"
1811 shift 3
1812
1813 # Check if test uses files
1814 case "$SRV_CMD $CLI_CMD" in
David Horstmann5ab92be2024-07-01 17:01:28 +01001815 *$DATA_FILES_PATH/*)
Gilles Peskine236bf982021-10-19 16:25:10 +02001816 requires_config_enabled MBEDTLS_FS_IO;;
1817 esac
1818
Gilles Peskine82a4ab22022-02-25 19:46:30 +01001819 # Check if the test uses DTLS.
1820 detect_dtls "$SRV_CMD"
1821 if [ "$DTLS" -eq 1 ]; then
1822 requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
1823 fi
1824
Yanray Wang7b320fa2023-11-08 10:33:30 +08001825 # Check if we are trying to use an external tool which does not support ECDH
Valerio Setti6ba247c2023-03-14 17:13:43 +01001826 EXT_WO_ECDH=$(use_ext_tool_without_ecdh_support "$SRV_CMD" "$CLI_CMD")
1827
Gilles Peskine927f2f12024-09-11 21:03:05 +02001828 # Guess the TLS version which is going to be used.
1829 # Note that this detection is wrong in some cases, which causes unduly
1830 # skipped test cases in builds with TLS 1.3 but not TLS 1.2.
1831 # https://github.com/Mbed-TLS/mbedtls/issues/9560
Valerio Setti726ffbf2023-08-02 20:02:44 +02001832 if [ "$EXT_WO_ECDH" = "no" ]; then
1833 TLS_VERSION=$(get_tls_version "$SRV_CMD" "$CLI_CMD")
1834 else
1835 TLS_VERSION="TLS12"
1836 fi
1837
Gilles Peskine5c766dc2024-09-06 15:35:58 +02001838 # If we're in a PSK-only build and the test can be adapted to PSK, do that.
1839 maybe_adapt_for_psk "$@"
1840
Valerio Setti726ffbf2023-08-02 20:02:44 +02001841 # If the client or server requires certain features that can be detected
Manuel Pégourié-Gonnardf299efd2023-09-18 11:19:04 +02001842 # from their command-line arguments, check whether they're enabled.
Valerio Setti6ba247c2023-03-14 17:13:43 +01001843 detect_required_features "$SRV_CMD" "server" "$TLS_VERSION" "$EXT_WO_ECDH" "$@"
1844 detect_required_features "$CLI_CMD" "client" "$TLS_VERSION" "$EXT_WO_ECDH" "$@"
Gilles Peskine236bf982021-10-19 16:25:10 +02001845
1846 # should we skip?
1847 if [ "X$SKIP_NEXT" = "XYES" ]; then
1848 SKIP_NEXT="NO"
1849 record_outcome "SKIP"
1850 SKIPS=$(( $SKIPS + 1 ))
1851 return
1852 fi
1853
1854 analyze_test_commands "$@"
1855
Andrzej Kurek8db7c0e2022-04-01 08:52:06 -04001856 # One regular run and two retries
1857 TIMES_LEFT=3
Gilles Peskine236bf982021-10-19 16:25:10 +02001858 while [ $TIMES_LEFT -gt 0 ]; do
1859 TIMES_LEFT=$(( $TIMES_LEFT - 1 ))
1860
Gilles Peskine196d73b2021-10-19 16:35:35 +02001861 do_run_test_once
Gilles Peskine236bf982021-10-19 16:25:10 +02001862
Gilles Peskine0e3534c2021-10-19 17:23:25 +02001863 check_test_failure "$@"
1864 case $outcome in
1865 PASS) break;;
Gilles Peskinef11d30e2021-10-19 18:00:10 +02001866 RETRY*) printf "$outcome ";;
Gilles Peskine0e3534c2021-10-19 17:23:25 +02001867 FAIL) return;;
1868 esac
Gilles Peskine236bf982021-10-19 16:25:10 +02001869 done
1870
Gilles Peskine0e3534c2021-10-19 17:23:25 +02001871 # If we get this far, the test case passed.
Gilles Peskine560280b2019-09-16 15:17:38 +02001872 record_outcome "PASS"
Paul Bakkeracaac852016-05-10 11:47:13 +01001873 if [ "$PRESERVE_LOGS" -gt 0 ]; then
1874 mv $SRV_OUT o-srv-${TESTS}.log
1875 mv $CLI_OUT o-cli-${TESTS}.log
Hanno Becker7be2e5b2018-08-20 12:21:35 +01001876 if [ -n "$PXY_CMD" ]; then
1877 mv $PXY_OUT o-pxy-${TESTS}.log
1878 fi
Paul Bakkeracaac852016-05-10 11:47:13 +01001879 fi
1880
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02001881 rm -f $SRV_OUT $CLI_OUT $PXY_OUT
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001882}
1883
Hanno Becker9b5853c2018-11-16 17:28:40 +00001884run_test_psa() {
1885 requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Gilles Peskine309ca652022-03-14 17:55:04 +01001886 set_maybe_calc_verify none
Hanno Beckere9420c22018-11-20 11:37:34 +00001887 run_test "PSA-supported ciphersuite: $1" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00001888 "$P_SRV debug_level=3 force_version=tls12" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01001889 "$P_CLI debug_level=3 force_ciphersuite=$1" \
Hanno Becker9b5853c2018-11-16 17:28:40 +00001890 0 \
Gilles Peskine309ca652022-03-14 17:55:04 +01001891 -c "$maybe_calc_verify" \
Andrzej Kurek92dd4d02019-01-30 04:10:19 -05001892 -c "calc PSA finished" \
Gilles Peskine309ca652022-03-14 17:55:04 +01001893 -s "$maybe_calc_verify" \
Andrzej Kurek92dd4d02019-01-30 04:10:19 -05001894 -s "calc PSA finished" \
Hanno Becker9b5853c2018-11-16 17:28:40 +00001895 -s "Protocol is TLSv1.2" \
Hanno Becker28f78442019-02-18 16:47:50 +00001896 -c "Perform PSA-based ECDH computation."\
Andrzej Kureke85414e2019-01-15 05:23:59 -05001897 -c "Perform PSA-based computation of digest of ServerKeyExchange" \
Hanno Becker9b5853c2018-11-16 17:28:40 +00001898 -S "error" \
1899 -C "error"
Gilles Peskine309ca652022-03-14 17:55:04 +01001900 unset maybe_calc_verify
Hanno Becker9b5853c2018-11-16 17:28:40 +00001901}
1902
Hanno Becker354e2482019-01-08 11:40:25 +00001903run_test_psa_force_curve() {
1904 requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Gilles Peskine309ca652022-03-14 17:55:04 +01001905 set_maybe_calc_verify none
Hanno Becker354e2482019-01-08 11:40:25 +00001906 run_test "PSA - ECDH with $1" \
Przemek Stekiel45255e42023-06-29 13:56:36 +02001907 "$P_SRV debug_level=4 force_version=tls12 groups=$1" \
1908 "$P_CLI debug_level=4 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 groups=$1" \
Hanno Becker354e2482019-01-08 11:40:25 +00001909 0 \
Gilles Peskine309ca652022-03-14 17:55:04 +01001910 -c "$maybe_calc_verify" \
Hanno Becker28f78442019-02-18 16:47:50 +00001911 -c "calc PSA finished" \
Gilles Peskine309ca652022-03-14 17:55:04 +01001912 -s "$maybe_calc_verify" \
Hanno Becker28f78442019-02-18 16:47:50 +00001913 -s "calc PSA finished" \
Hanno Becker354e2482019-01-08 11:40:25 +00001914 -s "Protocol is TLSv1.2" \
Hanno Becker28f78442019-02-18 16:47:50 +00001915 -c "Perform PSA-based ECDH computation."\
Manuel Pégourié-Gonnarda9062e92014-02-25 16:21:22 +01001916 -c "Perform PSA-based computation of digest of ServerKeyExchange" \
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02001917 -S "error" \
Manuel Pégourié-Gonnarda6189f02014-09-20 13:15:43 +02001918 -C "error"
Gilles Peskine309ca652022-03-14 17:55:04 +01001919 unset maybe_calc_verify
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01001920}
1921
Piotr Nowicki0937ed22019-11-26 16:32:40 +01001922# Test that the server's memory usage after a handshake is reduced when a client specifies
1923# a maximum fragment length.
1924# first argument ($1) is MFL for SSL client
1925# second argument ($2) is memory usage for SSL client with default MFL (16k)
Wenxing Hou848bccf2024-06-19 11:04:13 +08001926run_test_memory_after_handshake_with_mfl()
Piotr Nowicki0937ed22019-11-26 16:32:40 +01001927{
1928 # The test passes if the difference is around 2*(16k-MFL)
Gilles Peskine5b428d72020-08-26 21:52:23 +02001929 MEMORY_USAGE_LIMIT="$(( $2 - ( 2 * ( 16384 - $1 )) ))"
Piotr Nowicki0937ed22019-11-26 16:32:40 +01001930
1931 # Leave some margin for robustness
1932 MEMORY_USAGE_LIMIT="$(( ( MEMORY_USAGE_LIMIT * 110 ) / 100 ))"
1933
1934 run_test "Handshake memory usage (MFL $1)" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00001935 "$P_SRV debug_level=3 auth_mode=required force_version=tls12" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01001936 "$P_CLI debug_level=3 \
David Horstmann5ab92be2024-07-01 17:01:28 +01001937 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key \
Piotr Nowicki0937ed22019-11-26 16:32:40 +01001938 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM max_frag_len=$1" \
1939 0 \
1940 -F "handshake_memory_check $MEMORY_USAGE_LIMIT"
1941}
1942
1943
1944# Test that the server's memory usage after a handshake is reduced when a client specifies
1945# different values of Maximum Fragment Length: default (16k), 4k, 2k, 1k and 512 bytes
Wenxing Hou848bccf2024-06-19 11:04:13 +08001946run_tests_memory_after_handshake()
Piotr Nowicki0937ed22019-11-26 16:32:40 +01001947{
1948 # all tests in this sequence requires the same configuration (see requires_config_enabled())
1949 SKIP_THIS_TESTS="$SKIP_NEXT"
1950
1951 # first test with default MFU is to get reference memory usage
1952 MEMORY_USAGE_MFL_16K=0
1953 run_test "Handshake memory usage initial (MFL 16384 - default)" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00001954 "$P_SRV debug_level=3 auth_mode=required force_version=tls12" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01001955 "$P_CLI debug_level=3 \
David Horstmann5ab92be2024-07-01 17:01:28 +01001956 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key \
Piotr Nowicki0937ed22019-11-26 16:32:40 +01001957 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM" \
1958 0 \
1959 -F "handshake_memory_get MEMORY_USAGE_MFL_16K"
1960
1961 SKIP_NEXT="$SKIP_THIS_TESTS"
Wenxing Hou848bccf2024-06-19 11:04:13 +08001962 run_test_memory_after_handshake_with_mfl 4096 "$MEMORY_USAGE_MFL_16K"
Piotr Nowicki0937ed22019-11-26 16:32:40 +01001963
1964 SKIP_NEXT="$SKIP_THIS_TESTS"
Wenxing Hou848bccf2024-06-19 11:04:13 +08001965 run_test_memory_after_handshake_with_mfl 2048 "$MEMORY_USAGE_MFL_16K"
Piotr Nowicki0937ed22019-11-26 16:32:40 +01001966
1967 SKIP_NEXT="$SKIP_THIS_TESTS"
Wenxing Hou848bccf2024-06-19 11:04:13 +08001968 run_test_memory_after_handshake_with_mfl 1024 "$MEMORY_USAGE_MFL_16K"
Piotr Nowicki0937ed22019-11-26 16:32:40 +01001969
1970 SKIP_NEXT="$SKIP_THIS_TESTS"
Wenxing Hou848bccf2024-06-19 11:04:13 +08001971 run_test_memory_after_handshake_with_mfl 512 "$MEMORY_USAGE_MFL_16K"
Piotr Nowicki0937ed22019-11-26 16:32:40 +01001972}
1973
Manuel Pégourié-Gonnarda9062e92014-02-25 16:21:22 +01001974cleanup() {
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02001975 rm -f $CLI_OUT $SRV_OUT $PXY_OUT $SESSION
Piotr Nowicki3de298f2020-04-16 14:35:19 +02001976 rm -f context_srv.txt
1977 rm -f context_cli.txt
Manuel Pégourié-Gonnarda6189f02014-09-20 13:15:43 +02001978 test -n "${SRV_PID:-}" && kill $SRV_PID >/dev/null 2>&1
1979 test -n "${PXY_PID:-}" && kill $PXY_PID >/dev/null 2>&1
1980 test -n "${CLI_PID:-}" && kill $CLI_PID >/dev/null 2>&1
1981 test -n "${DOG_PID:-}" && kill $DOG_PID >/dev/null 2>&1
Manuel Pégourié-Gonnarda9062e92014-02-25 16:21:22 +01001982 exit 1
1983}
1984
Manuel Pégourié-Gonnard9dea8bd2014-02-26 18:21:02 +01001985#
1986# MAIN
1987#
1988
Yanray Wang5b33f642023-02-28 11:56:59 +08001989# Make the outcome file path relative to the original directory, not
1990# to .../tests
1991case "$MBEDTLS_TEST_OUTCOME_FILE" in
1992 [!/]*)
1993 MBEDTLS_TEST_OUTCOME_FILE="$ORIGINAL_PWD/$MBEDTLS_TEST_OUTCOME_FILE"
1994 ;;
1995esac
1996
Andrzej Kurek9c061a22022-09-05 10:51:19 -04001997populate_enabled_hash_algs
1998
Gilles Peskine9fa4ed62020-08-26 22:35:46 +02001999# Optimize filters: if $FILTER and $EXCLUDE can be expressed as shell
2000# patterns rather than regular expressions, use a case statement instead
2001# of calling grep. To keep the optimizer simple, it is incomplete and only
2002# detects simple cases: plain substring, everything, nothing.
2003#
2004# As an exception, the character '.' is treated as an ordinary character
2005# if it is the only special character in the string. This is because it's
2006# rare to need "any one character", but needing a literal '.' is common
2007# (e.g. '-f "DTLS 1.2"').
2008need_grep=
2009case "$FILTER" in
2010 '^$') simple_filter=;;
2011 '.*') simple_filter='*';;
Gilles Peskineb09e0012020-09-29 23:48:39 +02002012 *[][$+*?\\^{\|}]*) # Regexp special characters (other than .), we need grep
Gilles Peskine9fa4ed62020-08-26 22:35:46 +02002013 need_grep=1;;
2014 *) # No regexp or shell-pattern special character
2015 simple_filter="*$FILTER*";;
2016esac
2017case "$EXCLUDE" in
2018 '^$') simple_exclude=;;
2019 '.*') simple_exclude='*';;
Gilles Peskineb09e0012020-09-29 23:48:39 +02002020 *[][$+*?\\^{\|}]*) # Regexp special characters (other than .), we need grep
Gilles Peskine9fa4ed62020-08-26 22:35:46 +02002021 need_grep=1;;
2022 *) # No regexp or shell-pattern special character
2023 simple_exclude="*$EXCLUDE*";;
2024esac
2025if [ -n "$need_grep" ]; then
2026 is_excluded () {
2027 ! echo "$1" | grep "$FILTER" | grep -q -v "$EXCLUDE"
2028 }
2029else
2030 is_excluded () {
2031 case "$1" in
2032 $simple_exclude) true;;
2033 $simple_filter) false;;
2034 *) true;;
2035 esac
2036 }
2037fi
2038
Jerry Yu50d07bd2023-11-06 10:49:01 +08002039# Filter tests according to TEST_SUITE_NAME
2040is_excluded_test_suite () {
2041 if [ -n "$RUN_TEST_SUITE" ]
2042 then
2043 case ",$RUN_TEST_SUITE," in
2044 *",$1,"*) false;;
2045 *) true;;
2046 esac
2047 else
2048 false
2049 fi
2050
2051}
2052
2053
Tomás González06956a12023-08-23 15:46:20 +01002054if [ "$LIST_TESTS" -eq 0 ];then
2055
2056 # sanity checks, avoid an avalanche of errors
2057 P_SRV_BIN="${P_SRV%%[ ]*}"
2058 P_CLI_BIN="${P_CLI%%[ ]*}"
2059 P_PXY_BIN="${P_PXY%%[ ]*}"
2060 if [ ! -x "$P_SRV_BIN" ]; then
2061 echo "Command '$P_SRV_BIN' is not an executable file"
Simon Butcher3c0d7b82016-05-23 11:13:17 +01002062 exit 1
2063 fi
Tomás González06956a12023-08-23 15:46:20 +01002064 if [ ! -x "$P_CLI_BIN" ]; then
2065 echo "Command '$P_CLI_BIN' is not an executable file"
2066 exit 1
2067 fi
2068 if [ ! -x "$P_PXY_BIN" ]; then
2069 echo "Command '$P_PXY_BIN' is not an executable file"
2070 exit 1
2071 fi
2072 if [ "$MEMCHECK" -gt 0 ]; then
2073 if which valgrind >/dev/null 2>&1; then :; else
2074 echo "Memcheck not possible. Valgrind not found"
2075 exit 1
2076 fi
2077 fi
2078 if which $OPENSSL >/dev/null 2>&1; then :; else
2079 echo "Command '$OPENSSL' not found"
2080 exit 1
2081 fi
2082
2083 # used by watchdog
2084 MAIN_PID="$$"
2085
2086 # We use somewhat arbitrary delays for tests:
2087 # - how long do we wait for the server to start (when lsof not available)?
2088 # - how long do we allow for the client to finish?
2089 # (not to check performance, just to avoid waiting indefinitely)
2090 # Things are slower with valgrind, so give extra time here.
2091 #
2092 # Note: without lsof, there is a trade-off between the running time of this
2093 # script and the risk of spurious errors because we didn't wait long enough.
2094 # The watchdog delay on the other hand doesn't affect normal running time of
2095 # the script, only the case where a client or server gets stuck.
2096 if [ "$MEMCHECK" -gt 0 ]; then
2097 START_DELAY=6
2098 DOG_DELAY=60
2099 else
2100 START_DELAY=2
2101 DOG_DELAY=20
2102 fi
2103
2104 # some particular tests need more time:
2105 # - for the client, we multiply the usual watchdog limit by a factor
2106 # - for the server, we sleep for a number of seconds after the client exits
2107 # see client_need_more_time() and server_needs_more_time()
2108 CLI_DELAY_FACTOR=1
2109 SRV_DELAY_SECONDS=0
2110
2111 # fix commands to use this port, force IPv4 while at it
2112 # +SRV_PORT will be replaced by either $SRV_PORT or $PXY_PORT later
2113 # Note: Using 'localhost' rather than 127.0.0.1 here is unwise, as on many
2114 # machines that will resolve to ::1, and we don't want ipv6 here.
2115 P_SRV="$P_SRV server_addr=127.0.0.1 server_port=$SRV_PORT"
2116 P_CLI="$P_CLI server_addr=127.0.0.1 server_port=+SRV_PORT"
2117 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"}"
2118 O_SRV="$O_SRV -accept $SRV_PORT"
2119 O_CLI="$O_CLI -connect 127.0.0.1:+SRV_PORT"
2120 G_SRV="$G_SRV -p $SRV_PORT"
2121 G_CLI="$G_CLI -p +SRV_PORT"
2122
2123 # Newer versions of OpenSSL have a syntax to enable all "ciphers", even
2124 # low-security ones. This covers not just cipher suites but also protocol
2125 # versions. It is necessary, for example, to use (D)TLS 1.0/1.1 on
2126 # OpenSSL 1.1.1f from Ubuntu 20.04. The syntax was only introduced in
2127 # OpenSSL 1.1.0 (21e0c1d23afff48601eb93135defddae51f7e2e3) and I can't find
2128 # a way to discover it from -help, so check the openssl version.
2129 case $($OPENSSL version) in
2130 "OpenSSL 0"*|"OpenSSL 1.0"*) :;;
2131 *)
2132 O_CLI="$O_CLI -cipher ALL@SECLEVEL=0"
2133 O_SRV="$O_SRV -cipher ALL@SECLEVEL=0"
2134 ;;
2135 esac
2136
2137 if [ -n "${OPENSSL_NEXT:-}" ]; then
2138 O_NEXT_SRV="$O_NEXT_SRV -accept $SRV_PORT"
2139 O_NEXT_SRV_NO_CERT="$O_NEXT_SRV_NO_CERT -accept $SRV_PORT"
2140 O_NEXT_SRV_EARLY_DATA="$O_NEXT_SRV_EARLY_DATA -accept $SRV_PORT"
2141 O_NEXT_CLI="$O_NEXT_CLI -connect 127.0.0.1:+SRV_PORT"
2142 O_NEXT_CLI_NO_CERT="$O_NEXT_CLI_NO_CERT -connect 127.0.0.1:+SRV_PORT"
2143 fi
2144
2145 if [ -n "${GNUTLS_NEXT_SERV:-}" ]; then
2146 G_NEXT_SRV="$G_NEXT_SRV -p $SRV_PORT"
2147 G_NEXT_SRV_NO_CERT="$G_NEXT_SRV_NO_CERT -p $SRV_PORT"
2148 fi
2149
2150 if [ -n "${GNUTLS_NEXT_CLI:-}" ]; then
2151 G_NEXT_CLI="$G_NEXT_CLI -p +SRV_PORT"
2152 G_NEXT_CLI_NO_CERT="$G_NEXT_CLI_NO_CERT -p +SRV_PORT localhost"
2153 fi
2154
2155 # Allow SHA-1, because many of our test certificates use it
2156 P_SRV="$P_SRV allow_sha1=1"
2157 P_CLI="$P_CLI allow_sha1=1"
2158
Simon Butcher3c0d7b82016-05-23 11:13:17 +01002159fi
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02002160# Also pick a unique name for intermediate files
2161SRV_OUT="srv_out.$$"
2162CLI_OUT="cli_out.$$"
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +02002163PXY_OUT="pxy_out.$$"
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02002164SESSION="session.$$"
2165
Manuel Pégourié-Gonnard6f4fbbb2014-08-14 14:31:29 +02002166SKIP_NEXT="NO"
2167
Manuel Pégourié-Gonnarda9062e92014-02-25 16:21:22 +01002168trap cleanup INT TERM HUP
Manuel Pégourié-Gonnardeaadc502014-02-20 11:01:30 +01002169
Manuel Pégourié-Gonnarde73b2632014-07-12 04:00:00 +02002170# Basic test
2171
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +02002172# Checks that:
2173# - things work with all ciphersuites active (used with config-full in all.sh)
Gilles Peskine799eee62021-06-02 22:14:15 +02002174# - the expected parameters are selected
Gilles Peskine35615262022-02-25 19:50:38 +01002175requires_ciphersuite_enabled TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002176requires_hash_alg SHA_512 # "signature_algorithm ext: 6"
Gilles Peskine07e24e92024-09-07 19:50:17 +02002177requires_any_configs_enabled MBEDTLS_ECP_DP_CURVE25519_ENABLED \
2178 PSA_WANT_ECC_MONTGOMERY_255
Ronald Cronf95d1692023-03-14 17:19:42 +01002179run_test "Default, TLS 1.2" \
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +02002180 "$P_SRV debug_level=3" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002181 "$P_CLI force_version=tls12" \
Manuel Pégourié-Gonnarde73b2632014-07-12 04:00:00 +02002182 0 \
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +02002183 -s "Protocol is TLSv1.2" \
Manuel Pégourié-Gonnardce66d5e2018-06-14 11:11:15 +02002184 -s "Ciphersuite is TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256" \
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +02002185 -s "client hello v3, signature_algorithm ext: 6" \
Gilles Peskine799eee62021-06-02 22:14:15 +02002186 -s "ECDHE curve: x25519" \
Manuel Pégourié-Gonnard480905d2014-08-21 19:38:32 +02002187 -S "error" \
2188 -C "error"
Manuel Pégourié-Gonnarde73b2632014-07-12 04:00:00 +02002189
Jerry Yuab082902021-12-23 18:02:22 +08002190requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine35615262022-02-25 19:50:38 +01002191requires_ciphersuite_enabled TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256
Manuel Pégourié-Gonnard3bb08012015-01-22 13:34:21 +00002192run_test "Default, DTLS" \
2193 "$P_SRV dtls=1" \
2194 "$P_CLI dtls=1" \
2195 0 \
2196 -s "Protocol is DTLSv1.2" \
Manuel Pégourié-Gonnardce66d5e2018-06-14 11:11:15 +02002197 -s "Ciphersuite is TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256"
Manuel Pégourié-Gonnard3bb08012015-01-22 13:34:21 +00002198
Hanno Becker721f7c12020-08-17 12:17:32 +01002199run_test "TLS client auth: required" \
2200 "$P_SRV auth_mode=required" \
2201 "$P_CLI" \
2202 0 \
2203 -s "Verifying peer X.509 certificate... ok"
2204
Glenn Strauss6eef5632022-01-23 08:37:02 -05002205run_test "key size: TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2206 "$P_SRV" \
2207 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2208 0 \
2209 -c "Ciphersuite is TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2210 -c "Key size is 256"
2211
2212run_test "key size: TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2213 "$P_SRV" \
2214 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2215 0 \
2216 -c "Ciphersuite is TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2217 -c "Key size is 128"
2218
Hanno Becker2f54a3c2020-08-17 12:14:06 +01002219requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
Valerio Settidd43d7b2023-11-09 14:10:51 +01002220# server5.key.enc is in PEM format and AES-256-CBC crypted. Unfortunately PEM
2221# module does not support PSA dispatching so we need builtin support.
2222requires_config_enabled MBEDTLS_CIPHER_MODE_CBC
2223requires_config_enabled MBEDTLS_AES_C
Sam Berry06b91be2024-06-19 11:43:03 +01002224requires_hash_alg MD5
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002225requires_hash_alg SHA_256
Hanno Becker2f54a3c2020-08-17 12:14:06 +01002226run_test "TLS: password protected client key" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002227 "$P_SRV force_version=tls12 auth_mode=required" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002228 "$P_CLI crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key.enc key_pwd=PolarSSLTest" \
Hanno Becker2f54a3c2020-08-17 12:14:06 +01002229 0
2230
2231requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
Valerio Settidd43d7b2023-11-09 14:10:51 +01002232# server5.key.enc is in PEM format and AES-256-CBC crypted. Unfortunately PEM
2233# module does not support PSA dispatching so we need builtin support.
2234requires_config_enabled MBEDTLS_CIPHER_MODE_CBC
2235requires_config_enabled MBEDTLS_AES_C
Sam Berry06b91be2024-06-19 11:43:03 +01002236requires_hash_alg MD5
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002237requires_hash_alg SHA_256
Hanno Becker2f54a3c2020-08-17 12:14:06 +01002238run_test "TLS: password protected server key" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002239 "$P_SRV crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key.enc key_pwd=PolarSSLTest" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002240 "$P_CLI force_version=tls12" \
Hanno Becker2f54a3c2020-08-17 12:14:06 +01002241 0
2242
2243requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
Hanno Becker2f54a3c2020-08-17 12:14:06 +01002244requires_config_enabled MBEDTLS_RSA_C
Valerio Settidd43d7b2023-11-09 14:10:51 +01002245# server5.key.enc is in PEM format and AES-256-CBC crypted. Unfortunately PEM
2246# module does not support PSA dispatching so we need builtin support.
2247requires_config_enabled MBEDTLS_CIPHER_MODE_CBC
2248requires_config_enabled MBEDTLS_AES_C
Sam Berry06b91be2024-06-19 11:43:03 +01002249requires_hash_alg MD5
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002250requires_hash_alg SHA_256
Hanno Becker2f54a3c2020-08-17 12:14:06 +01002251run_test "TLS: password protected server key, two certificates" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002252 "$P_SRV force_version=tls12\
David Horstmann5ab92be2024-07-01 17:01:28 +01002253 key_file=$DATA_FILES_PATH/server5.key.enc key_pwd=PolarSSLTest crt_file=$DATA_FILES_PATH/server5.crt \
2254 key_file2=$DATA_FILES_PATH/server2.key.enc key_pwd2=PolarSSLTest crt_file2=$DATA_FILES_PATH/server2.crt" \
Hanno Becker2f54a3c2020-08-17 12:14:06 +01002255 "$P_CLI" \
2256 0
2257
Hanno Becker746aaf32019-03-28 15:25:23 +00002258requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
2259run_test "CA callback on client" \
2260 "$P_SRV debug_level=3" \
Ronald Cron8d5da8f2024-04-03 09:10:02 +02002261 "$P_CLI ca_callback=1 debug_level=3 " \
Hanno Becker746aaf32019-03-28 15:25:23 +00002262 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01002263 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00002264 -S "error" \
2265 -C "error"
2266
2267requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
2268requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002269requires_hash_alg SHA_256
Hanno Becker746aaf32019-03-28 15:25:23 +00002270run_test "CA callback on server" \
Ronald Cron8d5da8f2024-04-03 09:10:02 +02002271 "$P_SRV auth_mode=required" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002272 "$P_CLI ca_callback=1 debug_level=3 crt_file=$DATA_FILES_PATH/server5.crt \
2273 key_file=$DATA_FILES_PATH/server5.key" \
Hanno Becker746aaf32019-03-28 15:25:23 +00002274 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01002275 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00002276 -s "Verifying peer X.509 certificate... ok" \
2277 -S "error" \
2278 -C "error"
2279
Neil Armstrong3e9a1422022-03-21 10:03:46 +01002280# Test using an EC opaque private key for client authentication
Manuel Pégourié-Gonnardcfdf8f42018-11-08 09:52:25 +01002281requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2282requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
Valerio Settid1f991c2023-02-22 12:54:13 +01002283requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002284requires_hash_alg SHA_256
Neil Armstrong1948a202022-06-30 18:05:57 +02002285run_test "Opaque key for client authentication: ECDHE-ECDSA" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002286 "$P_SRV force_version=tls12 auth_mode=required crt_file=$DATA_FILES_PATH/server5.crt \
2287 key_file=$DATA_FILES_PATH/server5.key" \
2288 "$P_CLI key_opaque=1 crt_file=$DATA_FILES_PATH/server5.crt \
2289 key_file=$DATA_FILES_PATH/server5.key key_opaque_algs=ecdsa-sign,none" \
Manuel Pégourié-Gonnardcfdf8f42018-11-08 09:52:25 +01002290 0 \
2291 -c "key type: Opaque" \
Przemyslaw Stekielbb5d4832021-10-26 12:25:27 +02002292 -c "Ciphersuite is TLS-ECDHE-ECDSA" \
Manuel Pégourié-Gonnardcfdf8f42018-11-08 09:52:25 +01002293 -s "Verifying peer X.509 certificate... ok" \
Przemyslaw Stekielbb5d4832021-10-26 12:25:27 +02002294 -s "Ciphersuite is TLS-ECDHE-ECDSA" \
Manuel Pégourié-Gonnardcfdf8f42018-11-08 09:52:25 +01002295 -S "error" \
2296 -C "error"
2297
Neil Armstrong3e9a1422022-03-21 10:03:46 +01002298# Test using a RSA opaque private key for client authentication
Neil Armstrong3e9a1422022-03-21 10:03:46 +01002299requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2300requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
Neil Armstrong3e9a1422022-03-21 10:03:46 +01002301requires_config_enabled MBEDTLS_RSA_C
valeriof27472b2023-03-09 16:19:35 +01002302requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002303requires_hash_alg SHA_256
Neil Armstrong1948a202022-06-30 18:05:57 +02002304run_test "Opaque key for client authentication: ECDHE-RSA" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002305 "$P_SRV force_version=tls12 auth_mode=required crt_file=$DATA_FILES_PATH/server2-sha256.crt \
2306 key_file=$DATA_FILES_PATH/server2.key" \
2307 "$P_CLI key_opaque=1 crt_file=$DATA_FILES_PATH/server2-sha256.crt \
2308 key_file=$DATA_FILES_PATH/server2.key key_opaque_algs=rsa-sign-pkcs1,none" \
Neil Armstrong3e9a1422022-03-21 10:03:46 +01002309 0 \
2310 -c "key type: Opaque" \
2311 -c "Ciphersuite is TLS-ECDHE-RSA" \
2312 -s "Verifying peer X.509 certificate... ok" \
2313 -s "Ciphersuite is TLS-ECDHE-RSA" \
2314 -S "error" \
2315 -C "error"
2316
Neil Armstronga4dbfdd2022-03-21 10:11:07 +01002317requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2318requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2319requires_config_enabled MBEDTLS_RSA_C
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002320requires_hash_alg SHA_256
Neil Armstrong1948a202022-06-30 18:05:57 +02002321run_test "Opaque key for client authentication: DHE-RSA" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002322 "$P_SRV force_version=tls12 auth_mode=required crt_file=$DATA_FILES_PATH/server2-sha256.crt \
2323 key_file=$DATA_FILES_PATH/server2.key" \
2324 "$P_CLI key_opaque=1 crt_file=$DATA_FILES_PATH/server2-sha256.crt \
2325 key_file=$DATA_FILES_PATH/server2.key force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
Neil Armstrong36b02232022-06-30 11:16:53 +02002326 key_opaque_algs=rsa-sign-pkcs1,none" \
Neil Armstronga4dbfdd2022-03-21 10:11:07 +01002327 0 \
2328 -c "key type: Opaque" \
2329 -c "Ciphersuite is TLS-DHE-RSA" \
2330 -s "Verifying peer X.509 certificate... ok" \
2331 -s "Ciphersuite is TLS-DHE-RSA" \
2332 -S "error" \
2333 -C "error"
2334
Neil Armstrong3e9a1422022-03-21 10:03:46 +01002335# Test using an EC opaque private key for server authentication
Przemyslaw Stekiel0483e3d2021-10-04 11:13:22 +02002336requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2337requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
Valerio Settid1f991c2023-02-22 12:54:13 +01002338requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002339requires_hash_alg SHA_256
Neil Armstrong1948a202022-06-30 18:05:57 +02002340run_test "Opaque key for server authentication: ECDHE-ECDSA" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002341 "$P_SRV key_opaque=1 crt_file=$DATA_FILES_PATH/server5.crt \
2342 key_file=$DATA_FILES_PATH/server5.key key_opaque_algs=ecdsa-sign,none" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002343 "$P_CLI force_version=tls12" \
Przemyslaw Stekiel0483e3d2021-10-04 11:13:22 +02002344 0 \
2345 -c "Verifying peer X.509 certificate... ok" \
Przemyslaw Stekielbb5d4832021-10-26 12:25:27 +02002346 -c "Ciphersuite is TLS-ECDHE-ECDSA" \
Gilles Peskine05bf89d2022-01-25 17:50:25 +01002347 -s "key types: Opaque, none" \
Przemyslaw Stekielbb5d4832021-10-26 12:25:27 +02002348 -s "Ciphersuite is TLS-ECDHE-ECDSA" \
Przemyslaw Stekiel0483e3d2021-10-04 11:13:22 +02002349 -S "error" \
2350 -C "error"
2351
Neil Armstrong023bf8d2022-03-23 14:04:04 +01002352requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2353requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002354requires_hash_alg SHA_256
Neil Armstrong1948a202022-06-30 18:05:57 +02002355run_test "Opaque key for server authentication: ECDH-" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002356 "$P_SRV auth_mode=required key_opaque=1\
David Horstmann5ab92be2024-07-01 17:01:28 +01002357 crt_file=$DATA_FILES_PATH/server5.ku-ka.crt\
2358 key_file=$DATA_FILES_PATH/server5.key key_opaque_algs=ecdh,none" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002359 "$P_CLI force_version=tls12" \
Neil Armstrong023bf8d2022-03-23 14:04:04 +01002360 0 \
2361 -c "Verifying peer X.509 certificate... ok" \
2362 -c "Ciphersuite is TLS-ECDH-" \
2363 -s "key types: Opaque, none" \
2364 -s "Ciphersuite is TLS-ECDH-" \
2365 -S "error" \
2366 -C "error"
2367
Neil Armstrong1948a202022-06-30 18:05:57 +02002368requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2369requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
Andrzej Kurekd6817462022-09-06 14:32:00 -04002370requires_config_disabled MBEDTLS_SSL_ASYNC_PRIVATE
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002371requires_hash_alg SHA_256
Andrzej Kurekd6817462022-09-06 14:32:00 -04002372run_test "Opaque key for server authentication: invalid key: decrypt with ECC key, no async" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002373 "$P_SRV key_opaque=1 crt_file=$DATA_FILES_PATH/server5.crt \
2374 key_file=$DATA_FILES_PATH/server5.key key_opaque_algs=rsa-decrypt,none \
Andrzej Kurekd6817462022-09-06 14:32:00 -04002375 debug_level=1" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002376 "$P_CLI force_version=tls12" \
Andrzej Kurekd6817462022-09-06 14:32:00 -04002377 1 \
2378 -s "key types: Opaque, none" \
2379 -s "error" \
2380 -c "error" \
2381 -c "Public key type mismatch"
2382
Andrzej Kurekd6817462022-09-06 14:32:00 -04002383requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2384requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2385requires_config_enabled MBEDTLS_ECDSA_C
2386requires_config_enabled MBEDTLS_RSA_C
2387requires_config_disabled MBEDTLS_SSL_ASYNC_PRIVATE
2388requires_hash_alg SHA_256
2389run_test "Opaque key for server authentication: invalid key: ecdh with RSA key, no async" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002390 "$P_SRV key_opaque=1 crt_file=$DATA_FILES_PATH/server2-sha256.crt \
2391 key_file=$DATA_FILES_PATH/server2.key key_opaque_algs=ecdh,none \
Andrzej Kurekd6817462022-09-06 14:32:00 -04002392 debug_level=1" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002393 "$P_CLI force_version=tls12" \
Andrzej Kurekd6817462022-09-06 14:32:00 -04002394 1 \
2395 -s "key types: Opaque, none" \
2396 -s "error" \
2397 -c "error" \
2398 -c "Public key type mismatch"
2399
Andrzej Kurekd6817462022-09-06 14:32:00 -04002400requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2401requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
Andrzej Kurekd6817462022-09-06 14:32:00 -04002402requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
2403requires_hash_alg SHA_256
2404run_test "Opaque key for server authentication: invalid alg: decrypt with ECC key, async" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002405 "$P_SRV key_opaque=1 crt_file=$DATA_FILES_PATH/server5.crt \
2406 key_file=$DATA_FILES_PATH/server5.key key_opaque_algs=rsa-decrypt,none \
Neil Armstrong36b02232022-06-30 11:16:53 +02002407 debug_level=1" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002408 "$P_CLI force_version=tls12" \
Neil Armstrong36b02232022-06-30 11:16:53 +02002409 1 \
2410 -s "key types: Opaque, none" \
2411 -s "got ciphersuites in common, but none of them usable" \
2412 -s "error" \
2413 -c "error"
2414
Neil Armstrong36b02232022-06-30 11:16:53 +02002415requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2416requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
Neil Armstrongeb4390b2022-05-27 10:26:02 +02002417requires_config_enabled MBEDTLS_RSA_C
Andrzej Kurekd6817462022-09-06 14:32:00 -04002418requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002419requires_hash_alg SHA_256
Andrzej Kurekd6817462022-09-06 14:32:00 -04002420run_test "Opaque key for server authentication: invalid alg: ecdh with RSA key, async" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002421 "$P_SRV key_opaque=1 crt_file=$DATA_FILES_PATH/server2-sha256.crt \
2422 key_file=$DATA_FILES_PATH/server2.key key_opaque_algs=ecdh,none \
Neil Armstrongeb4390b2022-05-27 10:26:02 +02002423 debug_level=1" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002424 "$P_CLI force_version=tls12" \
Neil Armstrongeb4390b2022-05-27 10:26:02 +02002425 1 \
2426 -s "key types: Opaque, none" \
2427 -s "got ciphersuites in common, but none of them usable" \
2428 -s "error" \
2429 -c "error"
2430
Neil Armstrongeb4390b2022-05-27 10:26:02 +02002431requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2432requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002433requires_hash_alg SHA_256
Neil Armstrong1948a202022-06-30 18:05:57 +02002434run_test "Opaque key for server authentication: invalid alg: ECDHE-ECDSA with ecdh" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002435 "$P_SRV key_opaque=1 crt_file=$DATA_FILES_PATH/server5.crt \
2436 key_file=$DATA_FILES_PATH/server5.key key_opaque_algs=ecdh,none \
Neil Armstrong36b02232022-06-30 11:16:53 +02002437 debug_level=1" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002438 "$P_CLI force_version=tls12 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-256-CCM" \
Neil Armstrong36b02232022-06-30 11:16:53 +02002439 1 \
2440 -s "key types: Opaque, none" \
2441 -s "got ciphersuites in common, but none of them usable" \
2442 -s "error" \
2443 -c "error"
2444
Neil Armstrong167d82c2022-06-30 11:32:00 +02002445requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2446requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
Valerio Settid1f991c2023-02-22 12:54:13 +01002447requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002448requires_hash_alg SHA_256
Neil Armstrongc67e6e92022-07-01 15:48:10 +02002449requires_config_disabled MBEDTLS_X509_REMOVE_INFO
Neil Armstrong4b102092022-07-01 09:42:29 +02002450run_test "Opaque keys for server authentication: EC keys with different algs, force ECDHE-ECDSA" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002451 "$P_SRV force_version=tls12 key_opaque=1 crt_file=$DATA_FILES_PATH/server7.crt \
2452 key_file=$DATA_FILES_PATH/server7.key key_opaque_algs=ecdh,none \
2453 crt_file2=$DATA_FILES_PATH/server5.crt key_file2=$DATA_FILES_PATH/server5.key \
Neil Armstrong167d82c2022-06-30 11:32:00 +02002454 key_opaque_algs2=ecdsa-sign,none" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002455 "$P_CLI force_version=tls12" \
Neil Armstrong167d82c2022-06-30 11:32:00 +02002456 0 \
2457 -c "Verifying peer X.509 certificate... ok" \
2458 -c "Ciphersuite is TLS-ECDHE-ECDSA" \
Neil Armstrong4b102092022-07-01 09:42:29 +02002459 -c "CN=Polarssl Test EC CA" \
Neil Armstrong167d82c2022-06-30 11:32:00 +02002460 -s "key types: Opaque, Opaque" \
2461 -s "Ciphersuite is TLS-ECDHE-ECDSA" \
2462 -S "error" \
2463 -C "error"
2464
Neil Armstrong167d82c2022-06-30 11:32:00 +02002465requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2466requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002467requires_hash_alg SHA_384
Neil Armstrongc67e6e92022-07-01 15:48:10 +02002468requires_config_disabled MBEDTLS_X509_REMOVE_INFO
Neil Armstrong4b102092022-07-01 09:42:29 +02002469run_test "Opaque keys for server authentication: EC keys with different algs, force ECDH-ECDSA" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002470 "$P_SRV key_opaque=1 crt_file=$DATA_FILES_PATH/server7.crt \
2471 key_file=$DATA_FILES_PATH/server7.key key_opaque_algs=ecdsa-sign,none \
2472 crt_file2=$DATA_FILES_PATH/server5.crt key_file2=$DATA_FILES_PATH/server5.key \
Neil Armstrong4b102092022-07-01 09:42:29 +02002473 key_opaque_algs2=ecdh,none debug_level=3" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002474 "$P_CLI force_version=tls12 force_ciphersuite=TLS-ECDH-ECDSA-WITH-CAMELLIA-256-CBC-SHA384" \
Neil Armstrong4b102092022-07-01 09:42:29 +02002475 0 \
2476 -c "Verifying peer X.509 certificate... ok" \
2477 -c "Ciphersuite is TLS-ECDH-ECDSA" \
2478 -c "CN=Polarssl Test EC CA" \
2479 -s "key types: Opaque, Opaque" \
2480 -s "Ciphersuite is TLS-ECDH-ECDSA" \
2481 -S "error" \
2482 -C "error"
2483
Neil Armstrong4b102092022-07-01 09:42:29 +02002484requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2485requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002486requires_hash_alg SHA_384
Neil Armstrongc67e6e92022-07-01 15:48:10 +02002487requires_config_disabled MBEDTLS_X509_REMOVE_INFO
Neil Armstrong1948a202022-06-30 18:05:57 +02002488run_test "Opaque keys for server authentication: EC + RSA, force ECDHE-ECDSA" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002489 "$P_SRV key_opaque=1 crt_file=$DATA_FILES_PATH/server5.crt \
2490 key_file=$DATA_FILES_PATH/server5.key key_opaque_algs=ecdsa-sign,none \
2491 crt_file2=$DATA_FILES_PATH/server2-sha256.crt \
2492 key_file2=$DATA_FILES_PATH/server2.key key_opaque_algs2=rsa-sign-pkcs1,none" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002493 "$P_CLI force_version=tls12 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-256-CCM" \
Neil Armstrong167d82c2022-06-30 11:32:00 +02002494 0 \
2495 -c "Verifying peer X.509 certificate... ok" \
2496 -c "Ciphersuite is TLS-ECDHE-ECDSA" \
Neil Armstrong4b102092022-07-01 09:42:29 +02002497 -c "CN=Polarssl Test EC CA" \
Neil Armstrong167d82c2022-06-30 11:32:00 +02002498 -s "key types: Opaque, Opaque" \
2499 -s "Ciphersuite is TLS-ECDHE-ECDSA" \
2500 -S "error" \
2501 -C "error"
2502
Przemek Stekielc454aba2022-07-07 09:56:13 +02002503requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
2504requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2505requires_config_enabled MBEDTLS_RSA_C
Jerry Yuddda0502022-12-01 19:43:12 +08002506requires_config_enabled MBEDTLS_SSL_SRV_C
2507requires_config_enabled MBEDTLS_SSL_CLI_C
Ronald Cron6ec21232022-09-16 16:41:53 +02002508run_test "TLS 1.3 opaque key: no suitable algorithm found" \
Ronald Cron50ae84e2023-03-14 08:59:56 +01002509 "$P_SRV debug_level=4 auth_mode=required key_opaque=1 key_opaque_algs=rsa-decrypt,none" \
Ronald Crone3196d22022-09-16 16:43:35 +02002510 "$P_CLI debug_level=4 key_opaque=1 key_opaque_algs=rsa-decrypt,rsa-sign-pss" \
Przemek Stekielc454aba2022-07-07 09:56:13 +02002511 1 \
Przemek Stekielc454aba2022-07-07 09:56:13 +02002512 -c "key type: Opaque" \
2513 -s "key types: Opaque, Opaque" \
2514 -c "error" \
Ronald Cron067a1e72022-09-16 13:44:49 +02002515 -s "no suitable signature algorithm"
Przemek Stekielc454aba2022-07-07 09:56:13 +02002516
2517requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
2518requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2519requires_config_enabled MBEDTLS_RSA_C
Jerry Yuddda0502022-12-01 19:43:12 +08002520requires_config_enabled MBEDTLS_SSL_SRV_C
2521requires_config_enabled MBEDTLS_SSL_CLI_C
Ronald Cron6ec21232022-09-16 16:41:53 +02002522run_test "TLS 1.3 opaque key: suitable algorithm found" \
Ronald Cron50ae84e2023-03-14 08:59:56 +01002523 "$P_SRV debug_level=4 auth_mode=required key_opaque=1 key_opaque_algs=rsa-decrypt,rsa-sign-pss" \
Ronald Crone3196d22022-09-16 16:43:35 +02002524 "$P_CLI debug_level=4 key_opaque=1 key_opaque_algs=rsa-decrypt,rsa-sign-pss" \
Przemek Stekielc454aba2022-07-07 09:56:13 +02002525 0 \
Przemek Stekielc454aba2022-07-07 09:56:13 +02002526 -c "key type: Opaque" \
2527 -s "key types: Opaque, Opaque" \
2528 -C "error" \
Jerry Yuddda0502022-12-01 19:43:12 +08002529 -S "error"
Przemek Stekielc454aba2022-07-07 09:56:13 +02002530
2531requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
2532requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2533requires_config_enabled MBEDTLS_RSA_C
Jerry Yuddda0502022-12-01 19:43:12 +08002534requires_config_enabled MBEDTLS_SSL_SRV_C
2535requires_config_enabled MBEDTLS_SSL_CLI_C
Ronald Cron50969e32022-09-16 15:54:33 +02002536run_test "TLS 1.3 opaque key: first client sig alg not suitable" \
Ronald Cron50ae84e2023-03-14 08:59:56 +01002537 "$P_SRV debug_level=4 auth_mode=required key_opaque=1 key_opaque_algs=rsa-sign-pss-sha512,none" \
Ronald Cron50969e32022-09-16 15:54:33 +02002538 "$P_CLI debug_level=4 sig_algs=rsa_pss_rsae_sha256,rsa_pss_rsae_sha512" \
2539 0 \
Ronald Cron50969e32022-09-16 15:54:33 +02002540 -s "key types: Opaque, Opaque" \
2541 -s "CertificateVerify signature failed with rsa_pss_rsae_sha256" \
2542 -s "CertificateVerify signature with rsa_pss_rsae_sha512" \
2543 -C "error" \
2544 -S "error" \
2545
2546requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
2547requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2548requires_config_enabled MBEDTLS_RSA_C
Jerry Yuddda0502022-12-01 19:43:12 +08002549requires_config_enabled MBEDTLS_SSL_SRV_C
2550requires_config_enabled MBEDTLS_SSL_CLI_C
Ronald Cron6ec21232022-09-16 16:41:53 +02002551run_test "TLS 1.3 opaque key: 2 keys on server, suitable algorithm found" \
Ronald Cron50ae84e2023-03-14 08:59:56 +01002552 "$P_SRV debug_level=4 auth_mode=required key_opaque=1 key_opaque_algs2=ecdsa-sign,none key_opaque_algs=rsa-decrypt,rsa-sign-pss" \
Ronald Crone3196d22022-09-16 16:43:35 +02002553 "$P_CLI debug_level=4 key_opaque=1 key_opaque_algs=rsa-decrypt,rsa-sign-pss" \
Przemek Stekielc454aba2022-07-07 09:56:13 +02002554 0 \
Przemek Stekielc454aba2022-07-07 09:56:13 +02002555 -c "key type: Opaque" \
2556 -s "key types: Opaque, Opaque" \
2557 -C "error" \
2558 -S "error" \
2559
Neil Armstrong3e9a1422022-03-21 10:03:46 +01002560# Test using a RSA opaque private key for server authentication
Neil Armstrong3e9a1422022-03-21 10:03:46 +01002561requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2562requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
Neil Armstrong3e9a1422022-03-21 10:03:46 +01002563requires_config_enabled MBEDTLS_RSA_C
valeriof27472b2023-03-09 16:19:35 +01002564requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002565requires_hash_alg SHA_256
Neil Armstrong1948a202022-06-30 18:05:57 +02002566run_test "Opaque key for server authentication: ECDHE-RSA" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002567 "$P_SRV key_opaque=1 crt_file=$DATA_FILES_PATH/server2-sha256.crt \
2568 key_file=$DATA_FILES_PATH/server2.key key_opaque_algs=rsa-sign-pkcs1,none" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002569 "$P_CLI force_version=tls12" \
Neil Armstrong3e9a1422022-03-21 10:03:46 +01002570 0 \
2571 -c "Verifying peer X.509 certificate... ok" \
2572 -c "Ciphersuite is TLS-ECDHE-RSA" \
2573 -s "key types: Opaque, none" \
2574 -s "Ciphersuite is TLS-ECDHE-RSA" \
2575 -S "error" \
2576 -C "error"
2577
Neil Armstronga4dbfdd2022-03-21 10:11:07 +01002578requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2579requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
Neil Armstronga4dbfdd2022-03-21 10:11:07 +01002580requires_config_enabled MBEDTLS_RSA_C
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002581requires_hash_alg SHA_256
Neil Armstrong1948a202022-06-30 18:05:57 +02002582run_test "Opaque key for server authentication: DHE-RSA" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002583 "$P_SRV key_opaque=1 crt_file=$DATA_FILES_PATH/server2-sha256.crt \
2584 key_file=$DATA_FILES_PATH/server2.key key_opaque_algs=rsa-sign-pkcs1,none" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002585 "$P_CLI force_version=tls12 force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
Neil Armstronga4dbfdd2022-03-21 10:11:07 +01002586 0 \
2587 -c "Verifying peer X.509 certificate... ok" \
2588 -c "Ciphersuite is TLS-DHE-RSA" \
2589 -s "key types: Opaque, none" \
2590 -s "Ciphersuite is TLS-DHE-RSA" \
2591 -S "error" \
2592 -C "error"
2593
Neil Armstrong36b02232022-06-30 11:16:53 +02002594requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2595requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
Neil Armstrong1948a202022-06-30 18:05:57 +02002596requires_config_enabled MBEDTLS_RSA_C
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002597requires_hash_alg SHA_256
Neil Armstrong1948a202022-06-30 18:05:57 +02002598run_test "Opaque key for server authentication: RSA-PSK" \
2599 "$P_SRV debug_level=1 key_opaque=1 key_opaque_algs=rsa-decrypt,none \
Gilles Peskine02cd7162024-04-29 16:09:52 +02002600 psk=73776f726466697368 psk_identity=foo" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002601 "$P_CLI force_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA256 \
Gilles Peskine02cd7162024-04-29 16:09:52 +02002602 psk=73776f726466697368 psk_identity=foo" \
Neil Armstrong1948a202022-06-30 18:05:57 +02002603 0 \
2604 -c "Verifying peer X.509 certificate... ok" \
2605 -c "Ciphersuite is TLS-RSA-PSK-" \
2606 -s "key types: Opaque, Opaque" \
2607 -s "Ciphersuite is TLS-RSA-PSK-" \
2608 -S "error" \
2609 -C "error"
2610
Neil Armstrong1948a202022-06-30 18:05:57 +02002611requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2612requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2613requires_config_enabled MBEDTLS_RSA_C
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002614requires_hash_alg SHA_256
Neil Armstrong1948a202022-06-30 18:05:57 +02002615run_test "Opaque key for server authentication: RSA-" \
2616 "$P_SRV debug_level=3 key_opaque=1 key_opaque_algs=rsa-decrypt,none " \
Ronald Cronf95d1692023-03-14 17:19:42 +01002617 "$P_CLI force_version=tls12 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA256" \
Neil Armstrong1948a202022-06-30 18:05:57 +02002618 0 \
2619 -c "Verifying peer X.509 certificate... ok" \
2620 -c "Ciphersuite is TLS-RSA-" \
2621 -s "key types: Opaque, Opaque" \
2622 -s "Ciphersuite is TLS-RSA-" \
2623 -S "error" \
2624 -C "error"
2625
Neil Armstrong1948a202022-06-30 18:05:57 +02002626requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2627requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
Neil Armstrong36b02232022-06-30 11:16:53 +02002628requires_config_enabled MBEDTLS_RSA_C
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002629requires_hash_alg SHA_256
Neil Armstrong1948a202022-06-30 18:05:57 +02002630run_test "Opaque key for server authentication: DHE-RSA, PSS instead of PKCS1" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002631 "$P_SRV auth_mode=required key_opaque=1 crt_file=$DATA_FILES_PATH/server2-sha256.crt \
2632 key_file=$DATA_FILES_PATH/server2.key key_opaque_algs=rsa-sign-pss,none debug_level=1" \
2633 "$P_CLI crt_file=$DATA_FILES_PATH/server2-sha256.crt \
2634 key_file=$DATA_FILES_PATH/server2.key force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
Neil Armstrong36b02232022-06-30 11:16:53 +02002635 1 \
2636 -s "key types: Opaque, none" \
2637 -s "got ciphersuites in common, but none of them usable" \
2638 -s "error" \
2639 -c "error"
2640
Neil Armstrong167d82c2022-06-30 11:32:00 +02002641requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2642requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
Neil Armstrong167d82c2022-06-30 11:32:00 +02002643requires_config_enabled MBEDTLS_RSA_C
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002644requires_hash_alg SHA_256
Neil Armstrongc67e6e92022-07-01 15:48:10 +02002645requires_config_disabled MBEDTLS_X509_REMOVE_INFO
valeriof27472b2023-03-09 16:19:35 +01002646requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
Neil Armstrong1948a202022-06-30 18:05:57 +02002647run_test "Opaque keys for server authentication: RSA keys with different algs" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002648 "$P_SRV force_version=tls12 auth_mode=required key_opaque=1 crt_file=$DATA_FILES_PATH/server2-sha256.crt \
2649 key_file=$DATA_FILES_PATH/server2.key key_opaque_algs=rsa-sign-pss,none \
2650 crt_file2=$DATA_FILES_PATH/server4.crt \
2651 key_file2=$DATA_FILES_PATH/server4.key key_opaque_algs2=rsa-sign-pkcs1,none" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002652 "$P_CLI force_version=tls12" \
Neil Armstrong167d82c2022-06-30 11:32:00 +02002653 0 \
2654 -c "Verifying peer X.509 certificate... ok" \
2655 -c "Ciphersuite is TLS-ECDHE-RSA" \
Neil Armstrong4b102092022-07-01 09:42:29 +02002656 -c "CN=Polarssl Test EC CA" \
Neil Armstrong167d82c2022-06-30 11:32:00 +02002657 -s "key types: Opaque, Opaque" \
2658 -s "Ciphersuite is TLS-ECDHE-RSA" \
2659 -S "error" \
2660 -C "error"
2661
Neil Armstrong167d82c2022-06-30 11:32:00 +02002662requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2663requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
Neil Armstrong167d82c2022-06-30 11:32:00 +02002664requires_config_enabled MBEDTLS_RSA_C
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002665requires_hash_alg SHA_384
Neil Armstrongc67e6e92022-07-01 15:48:10 +02002666requires_config_disabled MBEDTLS_X509_REMOVE_INFO
Neil Armstrong1948a202022-06-30 18:05:57 +02002667run_test "Opaque keys for server authentication: EC + RSA, force DHE-RSA" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002668 "$P_SRV auth_mode=required key_opaque=1 crt_file=$DATA_FILES_PATH/server5.crt \
2669 key_file=$DATA_FILES_PATH/server5.key key_opaque_algs=ecdsa-sign,none \
2670 crt_file2=$DATA_FILES_PATH/server4.crt \
2671 key_file2=$DATA_FILES_PATH/server4.key key_opaque_algs2=rsa-sign-pkcs1,none" \
Neil Armstrong4b102092022-07-01 09:42:29 +02002672 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
Neil Armstrong167d82c2022-06-30 11:32:00 +02002673 0 \
2674 -c "Verifying peer X.509 certificate... ok" \
2675 -c "Ciphersuite is TLS-DHE-RSA" \
Neil Armstrong4b102092022-07-01 09:42:29 +02002676 -c "CN=Polarssl Test EC CA" \
Neil Armstrong167d82c2022-06-30 11:32:00 +02002677 -s "key types: Opaque, Opaque" \
2678 -s "Ciphersuite is TLS-DHE-RSA" \
2679 -S "error" \
2680 -C "error"
2681
Neil Armstrong3e9a1422022-03-21 10:03:46 +01002682# Test using an EC opaque private key for client/server authentication
Przemyslaw Stekiel575f23c2021-10-06 11:31:49 +02002683requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2684requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
Valerio Settid1f991c2023-02-22 12:54:13 +01002685requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002686requires_hash_alg SHA_256
Neil Armstrong1948a202022-06-30 18:05:57 +02002687run_test "Opaque key for client/server authentication: ECDHE-ECDSA" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002688 "$P_SRV force_version=tls12 auth_mode=required key_opaque=1 crt_file=$DATA_FILES_PATH/server5.crt \
2689 key_file=$DATA_FILES_PATH/server5.key key_opaque_algs=ecdsa-sign,none" \
2690 "$P_CLI key_opaque=1 crt_file=$DATA_FILES_PATH/server5.crt \
2691 key_file=$DATA_FILES_PATH/server5.key key_opaque_algs=ecdsa-sign,none" \
Przemyslaw Stekiel575f23c2021-10-06 11:31:49 +02002692 0 \
2693 -c "key type: Opaque" \
2694 -c "Verifying peer X.509 certificate... ok" \
Przemyslaw Stekielbb5d4832021-10-26 12:25:27 +02002695 -c "Ciphersuite is TLS-ECDHE-ECDSA" \
Gilles Peskine05bf89d2022-01-25 17:50:25 +01002696 -s "key types: Opaque, none" \
Przemyslaw Stekiel575f23c2021-10-06 11:31:49 +02002697 -s "Verifying peer X.509 certificate... ok" \
Przemyslaw Stekielbb5d4832021-10-26 12:25:27 +02002698 -s "Ciphersuite is TLS-ECDHE-ECDSA" \
Simon Butcher8e004102016-10-14 00:48:33 +01002699 -S "error" \
2700 -C "error"
2701
Neil Armstrong3e9a1422022-03-21 10:03:46 +01002702# Test using a RSA opaque private key for client/server authentication
Neil Armstrong3e9a1422022-03-21 10:03:46 +01002703requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2704requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
Neil Armstrong3e9a1422022-03-21 10:03:46 +01002705requires_config_enabled MBEDTLS_RSA_C
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002706requires_hash_alg SHA_256
valeriof27472b2023-03-09 16:19:35 +01002707requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
Neil Armstrong1948a202022-06-30 18:05:57 +02002708run_test "Opaque key for client/server authentication: ECDHE-RSA" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002709 "$P_SRV auth_mode=required key_opaque=1 crt_file=$DATA_FILES_PATH/server2-sha256.crt \
2710 key_file=$DATA_FILES_PATH/server2.key key_opaque_algs=rsa-sign-pkcs1,none" \
2711 "$P_CLI force_version=tls12 key_opaque=1 crt_file=$DATA_FILES_PATH/server2-sha256.crt \
2712 key_file=$DATA_FILES_PATH/server2.key key_opaque_algs=rsa-sign-pkcs1,none" \
Neil Armstrong3e9a1422022-03-21 10:03:46 +01002713 0 \
2714 -c "key type: Opaque" \
2715 -c "Verifying peer X.509 certificate... ok" \
2716 -c "Ciphersuite is TLS-ECDHE-RSA" \
2717 -s "key types: Opaque, none" \
2718 -s "Verifying peer X.509 certificate... ok" \
2719 -s "Ciphersuite is TLS-ECDHE-RSA" \
2720 -S "error" \
2721 -C "error"
2722
Neil Armstronga4dbfdd2022-03-21 10:11:07 +01002723requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2724requires_config_enabled MBEDTLS_X509_CRT_PARSE_C
Neil Armstronga4dbfdd2022-03-21 10:11:07 +01002725requires_config_enabled MBEDTLS_RSA_C
Andrzej Kurek934e9cd2022-09-05 14:44:46 -04002726requires_hash_alg SHA_256
Neil Armstrong1948a202022-06-30 18:05:57 +02002727run_test "Opaque key for client/server authentication: DHE-RSA" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002728 "$P_SRV auth_mode=required key_opaque=1 crt_file=$DATA_FILES_PATH/server2-sha256.crt \
2729 key_file=$DATA_FILES_PATH/server2.key key_opaque_algs=rsa-sign-pkcs1,none" \
2730 "$P_CLI key_opaque=1 crt_file=$DATA_FILES_PATH/server2-sha256.crt \
2731 key_file=$DATA_FILES_PATH/server2.key key_opaque_algs=rsa-sign-pkcs1,none \
Neil Armstrong36b02232022-06-30 11:16:53 +02002732 force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
Neil Armstronga4dbfdd2022-03-21 10:11:07 +01002733 0 \
2734 -c "key type: Opaque" \
2735 -c "Verifying peer X.509 certificate... ok" \
2736 -c "Ciphersuite is TLS-DHE-RSA" \
2737 -s "key types: Opaque, none" \
2738 -s "Verifying peer X.509 certificate... ok" \
2739 -s "Ciphersuite is TLS-DHE-RSA" \
2740 -S "error" \
2741 -C "error"
2742
Neil Armstrong36b02232022-06-30 11:16:53 +02002743
Hanno Becker9b5853c2018-11-16 17:28:40 +00002744# Test ciphersuites which we expect to be fully supported by PSA Crypto
2745# and check that we don't fall back to Mbed TLS' internal crypto primitives.
2746run_test_psa TLS-ECDHE-ECDSA-WITH-AES-128-CCM
2747run_test_psa TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8
2748run_test_psa TLS-ECDHE-ECDSA-WITH-AES-256-CCM
2749run_test_psa TLS-ECDHE-ECDSA-WITH-AES-256-CCM-8
2750run_test_psa TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
2751run_test_psa TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384
2752run_test_psa TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA
2753run_test_psa TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256
2754run_test_psa TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384
2755
Manuel Pégourié-Gonnard22334a22023-10-19 11:27:33 +02002756requires_config_enabled PSA_WANT_ECC_SECP_R1_521
Hanno Becker354e2482019-01-08 11:40:25 +00002757run_test_psa_force_curve "secp521r1"
Manuel Pégourié-Gonnard22334a22023-10-19 11:27:33 +02002758requires_config_enabled PSA_WANT_ECC_BRAINPOOL_P_R1_512
Hanno Becker354e2482019-01-08 11:40:25 +00002759run_test_psa_force_curve "brainpoolP512r1"
Manuel Pégourié-Gonnard22334a22023-10-19 11:27:33 +02002760requires_config_enabled PSA_WANT_ECC_SECP_R1_384
Hanno Becker354e2482019-01-08 11:40:25 +00002761run_test_psa_force_curve "secp384r1"
Manuel Pégourié-Gonnard22334a22023-10-19 11:27:33 +02002762requires_config_enabled PSA_WANT_ECC_BRAINPOOL_P_R1_384
Hanno Becker354e2482019-01-08 11:40:25 +00002763run_test_psa_force_curve "brainpoolP384r1"
Manuel Pégourié-Gonnard22334a22023-10-19 11:27:33 +02002764requires_config_enabled PSA_WANT_ECC_SECP_R1_256
Hanno Becker354e2482019-01-08 11:40:25 +00002765run_test_psa_force_curve "secp256r1"
Manuel Pégourié-Gonnard22334a22023-10-19 11:27:33 +02002766requires_config_enabled PSA_WANT_ECC_SECP_K1_256
Hanno Becker354e2482019-01-08 11:40:25 +00002767run_test_psa_force_curve "secp256k1"
Manuel Pégourié-Gonnard22334a22023-10-19 11:27:33 +02002768requires_config_enabled PSA_WANT_ECC_BRAINPOOL_P_R1_256
Hanno Becker354e2482019-01-08 11:40:25 +00002769run_test_psa_force_curve "brainpoolP256r1"
Manuel Pégourié-Gonnard22334a22023-10-19 11:27:33 +02002770requires_config_enabled PSA_WANT_ECC_SECP_R1_224
Hanno Becker354e2482019-01-08 11:40:25 +00002771run_test_psa_force_curve "secp224r1"
Gilles Peskinedefdc3b2021-03-23 13:59:58 +01002772## SECP224K1 is buggy via the PSA API
Dave Rodgman017a1992022-03-31 14:07:01 +01002773## (https://github.com/Mbed-TLS/mbedtls/issues/3541),
Gilles Peskinedefdc3b2021-03-23 13:59:58 +01002774## so it is disabled in PSA even when it's enabled in Mbed TLS.
2775## The proper dependency would be on PSA_WANT_ECC_SECP_K1_224 but
2776## dependencies on PSA symbols in ssl-opt.sh are not implemented yet.
Manuel Pégourié-Gonnard22334a22023-10-19 11:27:33 +02002777#requires_config_enabled PSA_WANT_ECC_SECP_K1_224
Gilles Peskinedefdc3b2021-03-23 13:59:58 +01002778#run_test_psa_force_curve "secp224k1"
Manuel Pégourié-Gonnard22334a22023-10-19 11:27:33 +02002779requires_config_enabled PSA_WANT_ECC_SECP_R1_192
Hanno Becker354e2482019-01-08 11:40:25 +00002780run_test_psa_force_curve "secp192r1"
Manuel Pégourié-Gonnard22334a22023-10-19 11:27:33 +02002781requires_config_enabled PSA_WANT_ECC_SECP_K1_192
Hanno Becker354e2482019-01-08 11:40:25 +00002782run_test_psa_force_curve "secp192k1"
2783
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +01002784# Test current time in ServerHello
2785requires_config_enabled MBEDTLS_HAVE_TIME
2786run_test "ServerHello contains gmt_unix_time" \
2787 "$P_SRV debug_level=3" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002788 "$P_CLI force_version=tls12 debug_level=3" \
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +01002789 0 \
2790 -f "check_server_hello_time" \
Manuel Pégourié-Gonnard51d81662015-01-14 17:20:46 +01002791 -F "check_server_hello_time"
Manuel Pégourié-Gonnardbd47a582015-01-12 13:43:29 +01002792
2793# Test for uniqueness of IVs in AEAD ciphersuites
Gilles Peskinebc70a182017-05-09 15:59:24 +02002794run_test "Unique IV in GCM" \
2795 "$P_SRV exchanges=20 debug_level=4" \
Manuel Pégourié-Gonnardaf63c212017-06-08 17:51:08 +02002796 "$P_CLI exchanges=20 debug_level=4 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384" \
Gilles Peskinebc70a182017-05-09 15:59:24 +02002797 0 \
2798 -u "IV used" \
2799 -U "IV used"
2800
Andrzej Kurekec71b092022-11-15 10:21:50 -05002801# Test for correctness of sent single supported algorithm
Gilles Peskine07e24e92024-09-07 19:50:17 +02002802requires_any_configs_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED \
2803 PSA_WANT_ECC_SECP_R1_256
Andrzej Kurekec71b092022-11-15 10:21:50 -05002804requires_config_enabled MBEDTLS_DEBUG_C
2805requires_config_enabled MBEDTLS_SSL_CLI_C
Paul Elliott3b4ceda2022-11-17 12:47:10 +00002806requires_config_enabled MBEDTLS_SSL_SRV_C
Valerio Settid1f991c2023-02-22 12:54:13 +01002807requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
2808requires_pk_alg "ECDSA"
Andrzej Kurekec71b092022-11-15 10:21:50 -05002809requires_hash_alg SHA_256
Paul Elliottf6e342c2022-11-17 12:50:29 +00002810run_test "Single supported algorithm sending: mbedtls client" \
Andrzej Kurekec71b092022-11-15 10:21:50 -05002811 "$P_SRV sig_algs=ecdsa_secp256r1_sha256 auth_mode=required" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002812 "$P_CLI force_version=tls12 sig_algs=ecdsa_secp256r1_sha256 debug_level=3" \
Andrzej Kurekec71b092022-11-15 10:21:50 -05002813 0 \
2814 -c "Supported Signature Algorithm found: 04 03"
2815
Paul Elliottf6e342c2022-11-17 12:50:29 +00002816requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
2817requires_config_enabled MBEDTLS_SSL_SRV_C
Gilles Peskine07e24e92024-09-07 19:50:17 +02002818requires_any_configs_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED \
2819 PSA_WANT_ECC_SECP_R1_256
Paul Elliottf6e342c2022-11-17 12:50:29 +00002820requires_hash_alg SHA_256
2821run_test "Single supported algorithm sending: openssl client" \
2822 "$P_SRV sig_algs=ecdsa_secp256r1_sha256 auth_mode=required" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002823 "$O_CLI -cert $DATA_FILES_PATH/server6.crt \
2824 -key $DATA_FILES_PATH/server6.key" \
Paul Elliottf6e342c2022-11-17 12:50:29 +00002825 0
2826
Janos Follathee11be62019-04-04 12:03:30 +01002827# Tests for certificate verification callback
2828run_test "Configuration-specific CRT verification callback" \
2829 "$P_SRV debug_level=3" \
Manuel Pégourié-Gonnarddee6ffa2024-08-16 09:53:41 +02002830 "$P_CLI context_crt_cb=0 debug_level=3" \
Janos Follathee11be62019-04-04 12:03:30 +01002831 0 \
Janos Follathee11be62019-04-04 12:03:30 +01002832 -S "error" \
2833 -c "Verify requested for " \
2834 -c "Use configuration-specific verification callback" \
2835 -C "Use context-specific verification callback" \
2836 -C "error"
2837
Hanno Beckerefb440a2019-04-03 13:04:33 +01002838run_test "Context-specific CRT verification callback" \
2839 "$P_SRV debug_level=3" \
Manuel Pégourié-Gonnarddee6ffa2024-08-16 09:53:41 +02002840 "$P_CLI context_crt_cb=1 debug_level=3" \
Hanno Beckerefb440a2019-04-03 13:04:33 +01002841 0 \
Hanno Beckerefb440a2019-04-03 13:04:33 +01002842 -S "error" \
Janos Follathee11be62019-04-04 12:03:30 +01002843 -c "Verify requested for " \
2844 -c "Use context-specific verification callback" \
2845 -C "Use configuration-specific verification callback" \
Hanno Beckerefb440a2019-04-03 13:04:33 +01002846 -C "error"
2847
Manuel Pégourié-Gonnardc1da6642014-02-25 14:18:30 +01002848# Tests for SHA-1 support
Gilles Peskine80e54a22024-04-29 17:42:52 +02002849requires_hash_alg SHA_1
Gilles Peskinebc70a182017-05-09 15:59:24 +02002850run_test "SHA-1 forbidden by default in server certificate" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002851 "$P_SRV key_file=$DATA_FILES_PATH/server2.key crt_file=$DATA_FILES_PATH/server2.crt" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002852 "$P_CLI debug_level=2 force_version=tls12 allow_sha1=0" \
Gilles Peskinebc70a182017-05-09 15:59:24 +02002853 1 \
2854 -c "The certificate is signed with an unacceptable hash"
2855
Gilles Peskine80e54a22024-04-29 17:42:52 +02002856requires_hash_alg SHA_1
Gilles Peskinebc70a182017-05-09 15:59:24 +02002857run_test "SHA-1 explicitly allowed in server certificate" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002858 "$P_SRV key_file=$DATA_FILES_PATH/server2.key crt_file=$DATA_FILES_PATH/server2.crt" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002859 "$P_CLI force_version=tls12 allow_sha1=1" \
Gilles Peskinebc70a182017-05-09 15:59:24 +02002860 0
2861
2862run_test "SHA-256 allowed by default in server certificate" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002863 "$P_SRV key_file=$DATA_FILES_PATH/server2.key crt_file=$DATA_FILES_PATH/server2-sha256.crt" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002864 "$P_CLI force_version=tls12 allow_sha1=0" \
Gilles Peskinebc70a182017-05-09 15:59:24 +02002865 0
2866
Gilles Peskine80e54a22024-04-29 17:42:52 +02002867requires_hash_alg SHA_1
2868requires_config_enabled MBEDTLS_RSA_C
Gilles Peskinebc70a182017-05-09 15:59:24 +02002869run_test "SHA-1 forbidden by default in client certificate" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002870 "$P_SRV force_version=tls12 auth_mode=required allow_sha1=0" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002871 "$P_CLI key_file=$DATA_FILES_PATH/cli-rsa.key crt_file=$DATA_FILES_PATH/cli-rsa-sha1.crt" \
Gilles Peskinebc70a182017-05-09 15:59:24 +02002872 1 \
2873 -s "The certificate is signed with an unacceptable hash"
2874
Gilles Peskine80e54a22024-04-29 17:42:52 +02002875requires_hash_alg SHA_1
2876requires_config_enabled MBEDTLS_RSA_C
Gilles Peskinebc70a182017-05-09 15:59:24 +02002877run_test "SHA-1 explicitly allowed in client certificate" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002878 "$P_SRV force_version=tls12 auth_mode=required allow_sha1=1" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002879 "$P_CLI key_file=$DATA_FILES_PATH/cli-rsa.key crt_file=$DATA_FILES_PATH/cli-rsa-sha1.crt" \
Gilles Peskinebc70a182017-05-09 15:59:24 +02002880 0
2881
Gilles Peskine80e54a22024-04-29 17:42:52 +02002882requires_config_enabled MBEDTLS_RSA_C
2883requires_hash_alg SHA_256
Gilles Peskinebc70a182017-05-09 15:59:24 +02002884run_test "SHA-256 allowed by default in client certificate" \
Ronald Cronf95d1692023-03-14 17:19:42 +01002885 "$P_SRV force_version=tls12 auth_mode=required allow_sha1=0" \
David Horstmann5ab92be2024-07-01 17:01:28 +01002886 "$P_CLI key_file=$DATA_FILES_PATH/cli-rsa.key crt_file=$DATA_FILES_PATH/cli-rsa-sha256.crt" \
Gilles Peskinebc70a182017-05-09 15:59:24 +02002887 0
2888
Hanno Becker7ae8a762018-08-14 15:43:35 +01002889# Tests for datagram packing
Jerry Yuab082902021-12-23 18:02:22 +08002890requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker7ae8a762018-08-14 15:43:35 +01002891run_test "DTLS: multiple records in same datagram, client and server" \
2892 "$P_SRV dtls=1 dgram_packing=1 debug_level=2" \
2893 "$P_CLI dtls=1 dgram_packing=1 debug_level=2" \
2894 0 \
2895 -c "next record in same datagram" \
2896 -s "next record in same datagram"
2897
Jerry Yuab082902021-12-23 18:02:22 +08002898requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker7ae8a762018-08-14 15:43:35 +01002899run_test "DTLS: multiple records in same datagram, client only" \
2900 "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \
2901 "$P_CLI dtls=1 dgram_packing=1 debug_level=2" \
2902 0 \
2903 -s "next record in same datagram" \
2904 -C "next record in same datagram"
2905
Jerry Yuab082902021-12-23 18:02:22 +08002906requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker7ae8a762018-08-14 15:43:35 +01002907run_test "DTLS: multiple records in same datagram, server only" \
2908 "$P_SRV dtls=1 dgram_packing=1 debug_level=2" \
2909 "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \
2910 0 \
2911 -S "next record in same datagram" \
2912 -c "next record in same datagram"
2913
Jerry Yuab082902021-12-23 18:02:22 +08002914requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker7ae8a762018-08-14 15:43:35 +01002915run_test "DTLS: multiple records in same datagram, neither client nor server" \
2916 "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \
2917 "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \
2918 0 \
2919 -S "next record in same datagram" \
2920 -C "next record in same datagram"
2921
Jarno Lamsa2937d812019-06-04 11:33:23 +03002922# Tests for Context serialization
2923
2924requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002925run_test "Context serialization, client serializes, CCM" \
Manuel Pégourié-Gonnard862b3192019-07-23 14:13:43 +02002926 "$P_SRV dtls=1 serialize=0 exchanges=2" \
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002927 "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2928 0 \
2929 -c "Deserializing connection..." \
2930 -S "Deserializing connection..."
2931
2932requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2933run_test "Context serialization, client serializes, ChaChaPoly" \
2934 "$P_SRV dtls=1 serialize=0 exchanges=2" \
2935 "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2936 0 \
2937 -c "Deserializing connection..." \
2938 -S "Deserializing connection..."
2939
2940requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2941run_test "Context serialization, client serializes, GCM" \
2942 "$P_SRV dtls=1 serialize=0 exchanges=2" \
2943 "$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 +03002944 0 \
Jarno Lamsacbee1b32019-06-04 15:18:19 +03002945 -c "Deserializing connection..." \
Jarno Lamsa2937d812019-06-04 11:33:23 +03002946 -S "Deserializing connection..."
2947
Jerry Yuab082902021-12-23 18:02:22 +08002948requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Jarno Lamsa2937d812019-06-04 11:33:23 +03002949requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Becker1b18fd32019-08-30 11:18:59 +01002950requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2951run_test "Context serialization, client serializes, with CID" \
2952 "$P_SRV dtls=1 serialize=0 exchanges=2 cid=1 cid_val=dead" \
2953 "$P_CLI dtls=1 serialize=1 exchanges=2 cid=1 cid_val=beef" \
2954 0 \
2955 -c "Deserializing connection..." \
2956 -S "Deserializing connection..."
2957
2958requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002959run_test "Context serialization, server serializes, CCM" \
Manuel Pégourié-Gonnard862b3192019-07-23 14:13:43 +02002960 "$P_SRV dtls=1 serialize=1 exchanges=2" \
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002961 "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2962 0 \
2963 -C "Deserializing connection..." \
2964 -s "Deserializing connection..."
2965
2966requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2967run_test "Context serialization, server serializes, ChaChaPoly" \
2968 "$P_SRV dtls=1 serialize=1 exchanges=2" \
2969 "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2970 0 \
2971 -C "Deserializing connection..." \
2972 -s "Deserializing connection..."
2973
2974requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2975run_test "Context serialization, server serializes, GCM" \
2976 "$P_SRV dtls=1 serialize=1 exchanges=2" \
2977 "$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 +03002978 0 \
Jarno Lamsacbee1b32019-06-04 15:18:19 +03002979 -C "Deserializing connection..." \
Jarno Lamsa2937d812019-06-04 11:33:23 +03002980 -s "Deserializing connection..."
2981
Jerry Yuab082902021-12-23 18:02:22 +08002982requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Jarno Lamsa2937d812019-06-04 11:33:23 +03002983requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Becker1b18fd32019-08-30 11:18:59 +01002984requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2985run_test "Context serialization, server serializes, with CID" \
2986 "$P_SRV dtls=1 serialize=1 exchanges=2 cid=1 cid_val=dead" \
2987 "$P_CLI dtls=1 serialize=0 exchanges=2 cid=1 cid_val=beef" \
2988 0 \
2989 -C "Deserializing connection..." \
2990 -s "Deserializing connection..."
2991
2992requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002993run_test "Context serialization, both serialize, CCM" \
Manuel Pégourié-Gonnard862b3192019-07-23 14:13:43 +02002994 "$P_SRV dtls=1 serialize=1 exchanges=2" \
Hanno Beckere0b90ec2019-08-30 11:32:12 +01002995 "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2996 0 \
2997 -c "Deserializing connection..." \
2998 -s "Deserializing connection..."
2999
3000requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
3001run_test "Context serialization, both serialize, ChaChaPoly" \
3002 "$P_SRV dtls=1 serialize=1 exchanges=2" \
3003 "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
3004 0 \
3005 -c "Deserializing connection..." \
3006 -s "Deserializing connection..."
3007
3008requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
3009run_test "Context serialization, both serialize, GCM" \
3010 "$P_SRV dtls=1 serialize=1 exchanges=2" \
3011 "$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 +03003012 0 \
Jarno Lamsacbee1b32019-06-04 15:18:19 +03003013 -c "Deserializing connection..." \
Jarno Lamsa2937d812019-06-04 11:33:23 +03003014 -s "Deserializing connection..."
3015
Jerry Yuab082902021-12-23 18:02:22 +08003016requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Jarno Lamsac2376f02019-06-06 10:44:14 +03003017requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Becker1b18fd32019-08-30 11:18:59 +01003018requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3019run_test "Context serialization, both serialize, with CID" \
3020 "$P_SRV dtls=1 serialize=1 exchanges=2 cid=1 cid_val=dead" \
3021 "$P_CLI dtls=1 serialize=1 exchanges=2 cid=1 cid_val=beef" \
3022 0 \
3023 -c "Deserializing connection..." \
3024 -s "Deserializing connection..."
3025
3026requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Beckere0b90ec2019-08-30 11:32:12 +01003027run_test "Context serialization, re-init, client serializes, CCM" \
Manuel Pégourié-Gonnard862b3192019-07-23 14:13:43 +02003028 "$P_SRV dtls=1 serialize=0 exchanges=2" \
Hanno Beckere0b90ec2019-08-30 11:32:12 +01003029 "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
3030 0 \
3031 -c "Deserializing connection..." \
3032 -S "Deserializing connection..."
3033
Jerry Yuab082902021-12-23 18:02:22 +08003034requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckere0b90ec2019-08-30 11:32:12 +01003035requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
3036run_test "Context serialization, re-init, client serializes, ChaChaPoly" \
3037 "$P_SRV dtls=1 serialize=0 exchanges=2" \
3038 "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
3039 0 \
3040 -c "Deserializing connection..." \
3041 -S "Deserializing connection..."
3042
3043requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
3044run_test "Context serialization, re-init, client serializes, GCM" \
3045 "$P_SRV dtls=1 serialize=0 exchanges=2" \
3046 "$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 +03003047 0 \
3048 -c "Deserializing connection..." \
3049 -S "Deserializing connection..."
3050
Jerry Yuab082902021-12-23 18:02:22 +08003051requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Jarno Lamsac2376f02019-06-06 10:44:14 +03003052requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Becker1b18fd32019-08-30 11:18:59 +01003053requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3054run_test "Context serialization, re-init, client serializes, with CID" \
3055 "$P_SRV dtls=1 serialize=0 exchanges=2 cid=1 cid_val=dead" \
3056 "$P_CLI dtls=1 serialize=2 exchanges=2 cid=1 cid_val=beef" \
3057 0 \
3058 -c "Deserializing connection..." \
3059 -S "Deserializing connection..."
3060
3061requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Beckere0b90ec2019-08-30 11:32:12 +01003062run_test "Context serialization, re-init, server serializes, CCM" \
Manuel Pégourié-Gonnard862b3192019-07-23 14:13:43 +02003063 "$P_SRV dtls=1 serialize=2 exchanges=2" \
Hanno Beckere0b90ec2019-08-30 11:32:12 +01003064 "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
3065 0 \
3066 -C "Deserializing connection..." \
3067 -s "Deserializing connection..."
3068
3069requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
3070run_test "Context serialization, re-init, server serializes, ChaChaPoly" \
3071 "$P_SRV dtls=1 serialize=2 exchanges=2" \
3072 "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
3073 0 \
3074 -C "Deserializing connection..." \
3075 -s "Deserializing connection..."
3076
3077requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
3078run_test "Context serialization, re-init, server serializes, GCM" \
3079 "$P_SRV dtls=1 serialize=2 exchanges=2" \
3080 "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
Jarno Lamsac2376f02019-06-06 10:44:14 +03003081 0 \
3082 -C "Deserializing connection..." \
3083 -s "Deserializing connection..."
3084
Jerry Yuab082902021-12-23 18:02:22 +08003085requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Jarno Lamsac2376f02019-06-06 10:44:14 +03003086requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Becker1b18fd32019-08-30 11:18:59 +01003087requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3088run_test "Context serialization, re-init, server serializes, with CID" \
3089 "$P_SRV dtls=1 serialize=2 exchanges=2 cid=1 cid_val=dead" \
3090 "$P_CLI dtls=1 serialize=0 exchanges=2 cid=1 cid_val=beef" \
3091 0 \
3092 -C "Deserializing connection..." \
3093 -s "Deserializing connection..."
3094
3095requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
Hanno Beckere0b90ec2019-08-30 11:32:12 +01003096run_test "Context serialization, re-init, both serialize, CCM" \
Manuel Pégourié-Gonnard862b3192019-07-23 14:13:43 +02003097 "$P_SRV dtls=1 serialize=2 exchanges=2" \
Hanno Beckere0b90ec2019-08-30 11:32:12 +01003098 "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
3099 0 \
3100 -c "Deserializing connection..." \
3101 -s "Deserializing connection..."
3102
3103requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
3104run_test "Context serialization, re-init, both serialize, ChaChaPoly" \
3105 "$P_SRV dtls=1 serialize=2 exchanges=2" \
3106 "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
3107 0 \
3108 -c "Deserializing connection..." \
3109 -s "Deserializing connection..."
3110
3111requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
3112run_test "Context serialization, re-init, both serialize, GCM" \
3113 "$P_SRV dtls=1 serialize=2 exchanges=2" \
3114 "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
Jarno Lamsac2376f02019-06-06 10:44:14 +03003115 0 \
3116 -c "Deserializing connection..." \
3117 -s "Deserializing connection..."
3118
Jerry Yuab082902021-12-23 18:02:22 +08003119requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker1b18fd32019-08-30 11:18:59 +01003120requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
3121requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3122run_test "Context serialization, re-init, both serialize, with CID" \
3123 "$P_SRV dtls=1 serialize=2 exchanges=2 cid=1 cid_val=dead" \
3124 "$P_CLI dtls=1 serialize=2 exchanges=2 cid=1 cid_val=beef" \
3125 0 \
3126 -c "Deserializing connection..." \
3127 -s "Deserializing connection..."
3128
Jerry Yuab082902021-12-23 18:02:22 +08003129requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Piotr Nowicki3de298f2020-04-16 14:35:19 +02003130requires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
3131run_test "Saving the serialized context to a file" \
3132 "$P_SRV dtls=1 serialize=1 context_file=context_srv.txt" \
3133 "$P_CLI dtls=1 serialize=1 context_file=context_cli.txt" \
3134 0 \
3135 -s "Save serialized context to a file... ok" \
3136 -c "Save serialized context to a file... ok"
3137rm -f context_srv.txt
3138rm -f context_cli.txt
3139
Hanno Becker7cf463e2019-04-09 18:08:47 +01003140# Tests for DTLS Connection ID extension
3141
Hanno Becker7cf463e2019-04-09 18:08:47 +01003142# So far, the CID API isn't implemented, so we can't
3143# grep for output witnessing its use. This needs to be
3144# changed once the CID extension is implemented.
3145
Jerry Yuab082902021-12-23 18:02:22 +08003146requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01003147requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01003148run_test "Connection ID: Cli enabled, Srv disabled" \
Hanno Beckerf157a972019-04-25 16:05:45 +01003149 "$P_SRV debug_level=3 dtls=1 cid=0" \
3150 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
3151 0 \
3152 -s "Disable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01003153 -s "found CID extension" \
3154 -s "Client sent CID extension, but CID disabled" \
Hanno Becker6b78c832019-04-25 17:01:43 +01003155 -c "Enable use of CID extension." \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01003156 -c "client hello, adding CID extension" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01003157 -S "server hello, adding CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01003158 -C "found CID extension" \
3159 -S "Copy CIDs into SSL transform" \
Hanno Beckerfcffdcc2019-04-26 17:19:46 +01003160 -C "Copy CIDs into SSL transform" \
3161 -c "Use of Connection ID was rejected by the server"
Hanno Becker7cf463e2019-04-09 18:08:47 +01003162
Jerry Yuab082902021-12-23 18:02:22 +08003163requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01003164requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01003165run_test "Connection ID: Cli disabled, Srv enabled" \
Hanno Beckerf157a972019-04-25 16:05:45 +01003166 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
3167 "$P_CLI debug_level=3 dtls=1 cid=0" \
3168 0 \
3169 -c "Disable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01003170 -C "client hello, adding CID extension" \
Hanno Becker7dee2c62019-04-26 14:17:56 +01003171 -S "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01003172 -s "Enable use of CID extension." \
Hanno Beckera6a4c762019-04-26 16:13:31 +01003173 -S "server hello, adding CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01003174 -C "found CID extension" \
3175 -S "Copy CIDs into SSL transform" \
Hanno Beckerfcffdcc2019-04-26 17:19:46 +01003176 -C "Copy CIDs into SSL transform" \
Hanno Beckerb3e9dd52019-05-08 13:19:53 +01003177 -s "Use of Connection ID was not offered by client"
Hanno Becker7cf463e2019-04-09 18:08:47 +01003178
Jerry Yuab082902021-12-23 18:02:22 +08003179requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01003180requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01003181run_test "Connection ID: Cli+Srv enabled, Cli+Srv CID nonempty" \
Hanno Beckerf157a972019-04-25 16:05:45 +01003182 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead" \
3183 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef" \
3184 0 \
3185 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01003186 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01003187 -c "client hello, adding CID extension" \
3188 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01003189 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01003190 -s "server hello, adding CID extension" \
3191 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01003192 -c "Use of CID extension negotiated" \
3193 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01003194 -c "Copy CIDs into SSL transform" \
3195 -c "Peer CID (length 2 Bytes): de ad" \
3196 -s "Peer CID (length 2 Bytes): be ef" \
3197 -s "Use of Connection ID has been negotiated" \
3198 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01003199
Jerry Yuab082902021-12-23 18:02:22 +08003200requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01003201requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01003202run_test "Connection ID, 3D: Cli+Srv enabled, Cli+Srv CID nonempty" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01003203 -p "$P_PXY drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Becker78c91372019-05-08 13:31:15 +01003204 "$P_SRV debug_level=3 dtls=1 cid=1 dgram_packing=0 cid_val=dead" \
3205 "$P_CLI debug_level=3 dtls=1 cid=1 dgram_packing=0 cid_val=beef" \
3206 0 \
3207 -c "Enable use of CID extension." \
3208 -s "Enable use of CID extension." \
3209 -c "client hello, adding CID extension" \
3210 -s "found CID extension" \
3211 -s "Use of CID extension negotiated" \
3212 -s "server hello, adding CID extension" \
3213 -c "found CID extension" \
3214 -c "Use of CID extension negotiated" \
3215 -s "Copy CIDs into SSL transform" \
3216 -c "Copy CIDs into SSL transform" \
3217 -c "Peer CID (length 2 Bytes): de ad" \
3218 -s "Peer CID (length 2 Bytes): be ef" \
3219 -s "Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01003220 -c "Use of Connection ID has been negotiated" \
3221 -c "ignoring unexpected CID" \
3222 -s "ignoring unexpected CID"
Hanno Becker78c91372019-05-08 13:31:15 +01003223
Jerry Yuab082902021-12-23 18:02:22 +08003224requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01003225requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01003226run_test "Connection ID, MTU: Cli+Srv enabled, Cli+Srv CID nonempty" \
3227 -p "$P_PXY mtu=800" \
3228 "$P_SRV debug_level=3 mtu=800 dtls=1 cid=1 cid_val=dead" \
3229 "$P_CLI debug_level=3 mtu=800 dtls=1 cid=1 cid_val=beef" \
3230 0 \
3231 -c "Enable use of CID extension." \
3232 -s "Enable use of CID extension." \
3233 -c "client hello, adding CID extension" \
3234 -s "found CID extension" \
3235 -s "Use of CID extension negotiated" \
3236 -s "server hello, adding CID extension" \
3237 -c "found CID extension" \
3238 -c "Use of CID extension negotiated" \
3239 -s "Copy CIDs into SSL transform" \
3240 -c "Copy CIDs into SSL transform" \
3241 -c "Peer CID (length 2 Bytes): de ad" \
3242 -s "Peer CID (length 2 Bytes): be ef" \
3243 -s "Use of Connection ID has been negotiated" \
3244 -c "Use of Connection ID has been negotiated"
3245
Jerry Yuab082902021-12-23 18:02:22 +08003246requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01003247requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01003248run_test "Connection ID, 3D+MTU: Cli+Srv enabled, Cli+Srv CID nonempty" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01003249 -p "$P_PXY mtu=800 drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Becker78c91372019-05-08 13:31:15 +01003250 "$P_SRV debug_level=3 mtu=800 dtls=1 cid=1 cid_val=dead" \
3251 "$P_CLI debug_level=3 mtu=800 dtls=1 cid=1 cid_val=beef" \
3252 0 \
3253 -c "Enable use of CID extension." \
3254 -s "Enable use of CID extension." \
3255 -c "client hello, adding CID extension" \
3256 -s "found CID extension" \
3257 -s "Use of CID extension negotiated" \
3258 -s "server hello, adding CID extension" \
3259 -c "found CID extension" \
3260 -c "Use of CID extension negotiated" \
3261 -s "Copy CIDs into SSL transform" \
3262 -c "Copy CIDs into SSL transform" \
3263 -c "Peer CID (length 2 Bytes): de ad" \
3264 -s "Peer CID (length 2 Bytes): be ef" \
3265 -s "Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01003266 -c "Use of Connection ID has been negotiated" \
3267 -c "ignoring unexpected CID" \
3268 -s "ignoring unexpected CID"
Hanno Becker78c91372019-05-08 13:31:15 +01003269
Jerry Yuab082902021-12-23 18:02:22 +08003270requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01003271requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01003272run_test "Connection ID: Cli+Srv enabled, Cli CID empty" \
Hanno Beckerf157a972019-04-25 16:05:45 +01003273 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
3274 "$P_CLI debug_level=3 dtls=1 cid=1" \
3275 0 \
3276 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01003277 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01003278 -c "client hello, adding CID extension" \
3279 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01003280 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01003281 -s "server hello, adding CID extension" \
3282 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01003283 -c "Use of CID extension negotiated" \
3284 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01003285 -c "Copy CIDs into SSL transform" \
3286 -c "Peer CID (length 4 Bytes): de ad be ef" \
3287 -s "Peer CID (length 0 Bytes):" \
3288 -s "Use of Connection ID has been negotiated" \
3289 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01003290
Jerry Yuab082902021-12-23 18:02:22 +08003291requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01003292requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01003293run_test "Connection ID: Cli+Srv enabled, Srv CID empty" \
Hanno Beckerf157a972019-04-25 16:05:45 +01003294 "$P_SRV debug_level=3 dtls=1 cid=1" \
3295 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
3296 0 \
3297 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01003298 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01003299 -c "client hello, adding CID extension" \
3300 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01003301 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01003302 -s "server hello, adding CID extension" \
3303 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01003304 -c "Use of CID extension negotiated" \
3305 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01003306 -c "Copy CIDs into SSL transform" \
3307 -s "Peer CID (length 4 Bytes): de ad be ef" \
3308 -c "Peer CID (length 0 Bytes):" \
3309 -s "Use of Connection ID has been negotiated" \
3310 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01003311
Jerry Yuab082902021-12-23 18:02:22 +08003312requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01003313requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01003314run_test "Connection ID: Cli+Srv enabled, Cli+Srv CID empty" \
Hanno Beckerf157a972019-04-25 16:05:45 +01003315 "$P_SRV debug_level=3 dtls=1 cid=1" \
3316 "$P_CLI debug_level=3 dtls=1 cid=1" \
3317 0 \
3318 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01003319 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01003320 -c "client hello, adding CID extension" \
3321 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01003322 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01003323 -s "server hello, adding CID extension" \
3324 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01003325 -c "Use of CID extension negotiated" \
3326 -s "Copy CIDs into SSL transform" \
Hanno Beckerfcffdcc2019-04-26 17:19:46 +01003327 -c "Copy CIDs into SSL transform" \
3328 -S "Use of Connection ID has been negotiated" \
3329 -C "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01003330
Hanno Beckera0e20d02019-05-15 14:03:01 +01003331requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01003332run_test "Connection ID: Cli+Srv enabled, Cli+Srv CID nonempty, AES-128-CCM-8" \
Hanno Beckerf157a972019-04-25 16:05:45 +01003333 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead" \
3334 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
3335 0 \
3336 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01003337 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01003338 -c "client hello, adding CID extension" \
3339 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01003340 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01003341 -s "server hello, adding CID extension" \
3342 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01003343 -c "Use of CID extension negotiated" \
3344 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01003345 -c "Copy CIDs into SSL transform" \
3346 -c "Peer CID (length 2 Bytes): de ad" \
3347 -s "Peer CID (length 2 Bytes): be ef" \
3348 -s "Use of Connection ID has been negotiated" \
3349 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01003350
Hanno Beckera0e20d02019-05-15 14:03:01 +01003351requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01003352run_test "Connection ID: Cli+Srv enabled, Cli CID empty, AES-128-CCM-8" \
Hanno Beckerf157a972019-04-25 16:05:45 +01003353 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
3354 "$P_CLI debug_level=3 dtls=1 cid=1 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
3355 0 \
3356 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01003357 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01003358 -c "client hello, adding CID extension" \
3359 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01003360 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01003361 -s "server hello, adding CID extension" \
3362 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01003363 -c "Use of CID extension negotiated" \
3364 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01003365 -c "Copy CIDs into SSL transform" \
3366 -c "Peer CID (length 4 Bytes): de ad be ef" \
3367 -s "Peer CID (length 0 Bytes):" \
3368 -s "Use of Connection ID has been negotiated" \
3369 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01003370
Hanno Beckera0e20d02019-05-15 14:03:01 +01003371requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01003372run_test "Connection ID: Cli+Srv enabled, Srv CID empty, AES-128-CCM-8" \
Hanno Beckerf157a972019-04-25 16:05:45 +01003373 "$P_SRV debug_level=3 dtls=1 cid=1" \
3374 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=deadbeef force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
3375 0 \
3376 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01003377 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01003378 -c "client hello, adding CID extension" \
3379 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01003380 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01003381 -s "server hello, adding CID extension" \
3382 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01003383 -c "Use of CID extension negotiated" \
3384 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01003385 -c "Copy CIDs into SSL transform" \
3386 -s "Peer CID (length 4 Bytes): de ad be ef" \
3387 -c "Peer CID (length 0 Bytes):" \
3388 -s "Use of Connection ID has been negotiated" \
3389 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01003390
Hanno Beckera0e20d02019-05-15 14:03:01 +01003391requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01003392run_test "Connection ID: Cli+Srv enabled, Cli+Srv CID empty, AES-128-CCM-8" \
Hanno Beckerf157a972019-04-25 16:05:45 +01003393 "$P_SRV debug_level=3 dtls=1 cid=1" \
3394 "$P_CLI debug_level=3 dtls=1 cid=1 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
3395 0 \
3396 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01003397 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01003398 -c "client hello, adding CID extension" \
3399 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01003400 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01003401 -s "server hello, adding CID extension" \
3402 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01003403 -c "Use of CID extension negotiated" \
3404 -s "Copy CIDs into SSL transform" \
Hanno Beckerfcffdcc2019-04-26 17:19:46 +01003405 -c "Copy CIDs into SSL transform" \
3406 -S "Use of Connection ID has been negotiated" \
3407 -C "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01003408
Hanno Beckera0e20d02019-05-15 14:03:01 +01003409requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01003410run_test "Connection ID: Cli+Srv enabled, Cli+Srv CID nonempty, AES-128-CBC" \
Hanno Beckerf157a972019-04-25 16:05:45 +01003411 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead" \
3412 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
3413 0 \
3414 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01003415 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01003416 -c "client hello, adding CID extension" \
3417 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01003418 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01003419 -s "server hello, adding CID extension" \
3420 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01003421 -c "Use of CID extension negotiated" \
3422 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01003423 -c "Copy CIDs into SSL transform" \
3424 -c "Peer CID (length 2 Bytes): de ad" \
3425 -s "Peer CID (length 2 Bytes): be ef" \
3426 -s "Use of Connection ID has been negotiated" \
3427 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01003428
Hanno Beckera0e20d02019-05-15 14:03:01 +01003429requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01003430run_test "Connection ID: Cli+Srv enabled, Cli CID empty, AES-128-CBC" \
Hanno Beckerf157a972019-04-25 16:05:45 +01003431 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
3432 "$P_CLI debug_level=3 dtls=1 cid=1 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
3433 0 \
3434 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01003435 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01003436 -c "client hello, adding CID extension" \
3437 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01003438 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01003439 -s "server hello, adding CID extension" \
3440 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01003441 -c "Use of CID extension negotiated" \
3442 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01003443 -c "Copy CIDs into SSL transform" \
3444 -c "Peer CID (length 4 Bytes): de ad be ef" \
3445 -s "Peer CID (length 0 Bytes):" \
3446 -s "Use of Connection ID has been negotiated" \
3447 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01003448
Hanno Beckera0e20d02019-05-15 14:03:01 +01003449requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01003450run_test "Connection ID: Cli+Srv enabled, Srv CID empty, AES-128-CBC" \
Hanno Beckerf157a972019-04-25 16:05:45 +01003451 "$P_SRV debug_level=3 dtls=1 cid=1" \
3452 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=deadbeef force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
3453 0 \
3454 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01003455 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01003456 -c "client hello, adding CID extension" \
3457 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01003458 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01003459 -s "server hello, adding CID extension" \
3460 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01003461 -c "Use of CID extension negotiated" \
3462 -s "Copy CIDs into SSL transform" \
Hanno Becker2749a672019-05-03 17:04:23 +01003463 -c "Copy CIDs into SSL transform" \
3464 -s "Peer CID (length 4 Bytes): de ad be ef" \
3465 -c "Peer CID (length 0 Bytes):" \
3466 -s "Use of Connection ID has been negotiated" \
3467 -c "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01003468
Hanno Beckera0e20d02019-05-15 14:03:01 +01003469requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01003470run_test "Connection ID: Cli+Srv enabled, Cli+Srv CID empty, AES-128-CBC" \
Hanno Beckerf157a972019-04-25 16:05:45 +01003471 "$P_SRV debug_level=3 dtls=1 cid=1" \
3472 "$P_CLI debug_level=3 dtls=1 cid=1 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
3473 0 \
3474 -c "Enable use of CID extension." \
Hanno Becker6b78c832019-04-25 17:01:43 +01003475 -s "Enable use of CID extension." \
Hanno Becker7dee2c62019-04-26 14:17:56 +01003476 -c "client hello, adding CID extension" \
3477 -s "found CID extension" \
Hanno Becker4bc9e9d2019-04-26 16:00:29 +01003478 -s "Use of CID extension negotiated" \
Hanno Beckera6a4c762019-04-26 16:13:31 +01003479 -s "server hello, adding CID extension" \
3480 -c "found CID extension" \
Hanno Becker9ecb6c62019-04-26 16:23:52 +01003481 -c "Use of CID extension negotiated" \
3482 -s "Copy CIDs into SSL transform" \
Hanno Beckerfcffdcc2019-04-26 17:19:46 +01003483 -c "Copy CIDs into SSL transform" \
3484 -S "Use of Connection ID has been negotiated" \
3485 -C "Use of Connection ID has been negotiated"
Hanno Becker7cf463e2019-04-09 18:08:47 +01003486
Jerry Yuab082902021-12-23 18:02:22 +08003487requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01003488requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker9bae30d2019-04-23 11:52:44 +01003489requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Becker78c91372019-05-08 13:31:15 +01003490run_test "Connection ID: Cli+Srv enabled, renegotiate without change of CID" \
Hanno Beckerf157a972019-04-25 16:05:45 +01003491 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead renegotiation=1" \
3492 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef renegotiation=1 renegotiate=1" \
3493 0 \
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01003494 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3495 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3496 -s "(initial handshake) Use of Connection ID has been negotiated" \
3497 -c "(initial handshake) Use of Connection ID has been negotiated" \
3498 -c "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3499 -s "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3500 -s "(after renegotiation) Use of Connection ID has been negotiated" \
3501 -c "(after renegotiation) Use of Connection ID has been negotiated"
3502
Jerry Yuab082902021-12-23 18:02:22 +08003503requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01003504requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01003505requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Becker78c91372019-05-08 13:31:15 +01003506run_test "Connection ID: Cli+Srv enabled, renegotiate with different CID" \
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01003507 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead cid_val_renego=beef renegotiation=1" \
3508 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef cid_val_renego=dead renegotiation=1 renegotiate=1" \
3509 0 \
3510 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3511 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3512 -s "(initial handshake) Use of Connection ID has been negotiated" \
3513 -c "(initial handshake) Use of Connection ID has been negotiated" \
3514 -c "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3515 -s "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3516 -s "(after renegotiation) Use of Connection ID has been negotiated" \
3517 -c "(after renegotiation) Use of Connection ID has been negotiated"
3518
Jerry Yuab082902021-12-23 18:02:22 +08003519requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01003520requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01003521requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Beckerc2045b02019-05-08 16:20:46 +01003522run_test "Connection ID, no packing: Cli+Srv enabled, renegotiate with different CID" \
3523 "$P_SRV debug_level=3 dtls=1 cid=1 dgram_packing=0 cid_val=dead cid_val_renego=beef renegotiation=1" \
3524 "$P_CLI debug_level=3 dtls=1 cid=1 dgram_packing=0 cid_val=beef cid_val_renego=dead renegotiation=1 renegotiate=1" \
3525 0 \
3526 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3527 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3528 -s "(initial handshake) Use of Connection ID has been negotiated" \
3529 -c "(initial handshake) Use of Connection ID has been negotiated" \
3530 -c "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3531 -s "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3532 -s "(after renegotiation) Use of Connection ID has been negotiated" \
3533 -c "(after renegotiation) Use of Connection ID has been negotiated"
3534
Jerry Yuab082902021-12-23 18:02:22 +08003535requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01003536requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerc2045b02019-05-08 16:20:46 +01003537requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Becker78c91372019-05-08 13:31:15 +01003538run_test "Connection ID, 3D+MTU: Cli+Srv enabled, renegotiate with different CID" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01003539 -p "$P_PXY mtu=800 drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Becker78c91372019-05-08 13:31:15 +01003540 "$P_SRV debug_level=3 mtu=800 dtls=1 cid=1 cid_val=dead cid_val_renego=beef renegotiation=1" \
3541 "$P_CLI debug_level=3 mtu=800 dtls=1 cid=1 cid_val=beef cid_val_renego=dead renegotiation=1 renegotiate=1" \
3542 0 \
3543 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3544 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3545 -s "(initial handshake) Use of Connection ID has been negotiated" \
3546 -c "(initial handshake) Use of Connection ID has been negotiated" \
3547 -c "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3548 -s "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3549 -s "(after renegotiation) Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01003550 -c "(after renegotiation) Use of Connection ID has been negotiated" \
3551 -c "ignoring unexpected CID" \
3552 -s "ignoring unexpected CID"
Hanno Becker78c91372019-05-08 13:31:15 +01003553
Jerry Yuab082902021-12-23 18:02:22 +08003554requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01003555requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01003556requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
3557run_test "Connection ID: Cli+Srv enabled, renegotiate without CID" \
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01003558 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead cid_renego=0 renegotiation=1" \
3559 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef cid_renego=0 renegotiation=1 renegotiate=1" \
3560 0 \
3561 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3562 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3563 -s "(initial handshake) Use of Connection ID has been negotiated" \
3564 -c "(initial handshake) Use of Connection ID has been negotiated" \
3565 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3566 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3567 -C "(after renegotiation) Use of Connection ID has been negotiated" \
3568 -S "(after renegotiation) Use of Connection ID has been negotiated"
3569
Jerry Yuab082902021-12-23 18:02:22 +08003570requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01003571requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01003572requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Beckerc2045b02019-05-08 16:20:46 +01003573run_test "Connection ID, no packing: Cli+Srv enabled, renegotiate without CID" \
3574 "$P_SRV debug_level=3 dtls=1 dgram_packing=0 cid=1 cid_val=dead cid_renego=0 renegotiation=1" \
3575 "$P_CLI debug_level=3 dtls=1 dgram_packing=0 cid=1 cid_val=beef cid_renego=0 renegotiation=1 renegotiate=1" \
3576 0 \
3577 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3578 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3579 -s "(initial handshake) Use of Connection ID has been negotiated" \
3580 -c "(initial handshake) Use of Connection ID has been negotiated" \
3581 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3582 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3583 -C "(after renegotiation) Use of Connection ID has been negotiated" \
3584 -S "(after renegotiation) Use of Connection ID has been negotiated"
3585
Jerry Yuab082902021-12-23 18:02:22 +08003586requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01003587requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerc2045b02019-05-08 16:20:46 +01003588requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Becker78c91372019-05-08 13:31:15 +01003589run_test "Connection ID, 3D+MTU: Cli+Srv enabled, renegotiate without CID" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01003590 -p "$P_PXY drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Becker78c91372019-05-08 13:31:15 +01003591 "$P_SRV debug_level=3 mtu=800 dtls=1 cid=1 cid_val=dead cid_renego=0 renegotiation=1" \
3592 "$P_CLI debug_level=3 mtu=800 dtls=1 cid=1 cid_val=beef cid_renego=0 renegotiation=1 renegotiate=1" \
3593 0 \
3594 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3595 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3596 -s "(initial handshake) Use of Connection ID has been negotiated" \
3597 -c "(initial handshake) Use of Connection ID has been negotiated" \
3598 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3599 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3600 -C "(after renegotiation) Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01003601 -S "(after renegotiation) Use of Connection ID has been negotiated" \
3602 -c "ignoring unexpected CID" \
3603 -s "ignoring unexpected CID"
Hanno Becker78c91372019-05-08 13:31:15 +01003604
Jerry Yuab082902021-12-23 18:02:22 +08003605requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01003606requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01003607requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
3608run_test "Connection ID: Cli+Srv enabled, CID on renegotiation" \
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01003609 "$P_SRV debug_level=3 dtls=1 cid=0 cid_renego=1 cid_val_renego=dead renegotiation=1" \
3610 "$P_CLI debug_level=3 dtls=1 cid=0 cid_renego=1 cid_val_renego=beef renegotiation=1 renegotiate=1" \
3611 0 \
3612 -S "(initial handshake) Use of Connection ID has been negotiated" \
3613 -C "(initial handshake) Use of Connection ID has been negotiated" \
3614 -c "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3615 -s "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3616 -c "(after renegotiation) Use of Connection ID has been negotiated" \
3617 -s "(after renegotiation) Use of Connection ID has been negotiated"
3618
Jerry Yuab082902021-12-23 18:02:22 +08003619requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01003620requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01003621requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Beckerc2045b02019-05-08 16:20:46 +01003622run_test "Connection ID, no packing: Cli+Srv enabled, CID on renegotiation" \
3623 "$P_SRV debug_level=3 dtls=1 dgram_packing=0 cid=0 cid_renego=1 cid_val_renego=dead renegotiation=1" \
3624 "$P_CLI debug_level=3 dtls=1 dgram_packing=0 cid=0 cid_renego=1 cid_val_renego=beef renegotiation=1 renegotiate=1" \
3625 0 \
3626 -S "(initial handshake) Use of Connection ID has been negotiated" \
3627 -C "(initial handshake) Use of Connection ID has been negotiated" \
3628 -c "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3629 -s "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3630 -c "(after renegotiation) Use of Connection ID has been negotiated" \
3631 -s "(after renegotiation) Use of Connection ID has been negotiated"
3632
Jerry Yuab082902021-12-23 18:02:22 +08003633requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01003634requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerc2045b02019-05-08 16:20:46 +01003635requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Becker78c91372019-05-08 13:31:15 +01003636run_test "Connection ID, 3D+MTU: Cli+Srv enabled, CID on renegotiation" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01003637 -p "$P_PXY mtu=800 drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Becker78c91372019-05-08 13:31:15 +01003638 "$P_SRV debug_level=3 mtu=800 dtls=1 dgram_packing=1 cid=0 cid_renego=1 cid_val_renego=dead renegotiation=1" \
3639 "$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" \
3640 0 \
3641 -S "(initial handshake) Use of Connection ID has been negotiated" \
3642 -C "(initial handshake) Use of Connection ID has been negotiated" \
3643 -c "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3644 -s "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3645 -c "(after renegotiation) Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01003646 -s "(after renegotiation) Use of Connection ID has been negotiated" \
3647 -c "ignoring unexpected CID" \
3648 -s "ignoring unexpected CID"
Hanno Becker78c91372019-05-08 13:31:15 +01003649
Jerry Yuab082902021-12-23 18:02:22 +08003650requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01003651requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01003652requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
3653run_test "Connection ID: Cli+Srv enabled, Cli disables on renegotiation" \
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01003654 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead renegotiation=1" \
3655 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef cid_renego=0 renegotiation=1 renegotiate=1" \
3656 0 \
3657 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3658 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3659 -s "(initial handshake) Use of Connection ID has been negotiated" \
3660 -c "(initial handshake) Use of Connection ID has been negotiated" \
3661 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3662 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3663 -C "(after renegotiation) Use of Connection ID has been negotiated" \
3664 -S "(after renegotiation) Use of Connection ID has been negotiated" \
3665 -s "(after renegotiation) Use of Connection ID was not offered by client"
3666
Jerry Yuab082902021-12-23 18:02:22 +08003667requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01003668requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01003669requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Hanno Becker78c91372019-05-08 13:31:15 +01003670run_test "Connection ID, 3D: Cli+Srv enabled, Cli disables on renegotiation" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01003671 -p "$P_PXY drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Becker78c91372019-05-08 13:31:15 +01003672 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead renegotiation=1" \
3673 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef cid_renego=0 renegotiation=1 renegotiate=1" \
3674 0 \
3675 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3676 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3677 -s "(initial handshake) Use of Connection ID has been negotiated" \
3678 -c "(initial handshake) Use of Connection ID has been negotiated" \
3679 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3680 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3681 -C "(after renegotiation) Use of Connection ID has been negotiated" \
3682 -S "(after renegotiation) Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01003683 -s "(after renegotiation) Use of Connection ID was not offered by client" \
3684 -c "ignoring unexpected CID" \
3685 -s "ignoring unexpected CID"
Hanno Becker78c91372019-05-08 13:31:15 +01003686
Jerry Yuab082902021-12-23 18:02:22 +08003687requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01003688requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01003689requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
3690run_test "Connection ID: Cli+Srv enabled, Srv disables on renegotiation" \
3691 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead cid_renego=0 renegotiation=1" \
3692 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef renegotiation=1 renegotiate=1" \
3693 0 \
3694 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3695 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3696 -s "(initial handshake) Use of Connection ID has been negotiated" \
3697 -c "(initial handshake) Use of Connection ID has been negotiated" \
3698 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3699 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3700 -C "(after renegotiation) Use of Connection ID has been negotiated" \
3701 -S "(after renegotiation) Use of Connection ID has been negotiated" \
3702 -c "(after renegotiation) Use of Connection ID was rejected by the server"
3703
Jerry Yuab082902021-12-23 18:02:22 +08003704requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera0e20d02019-05-15 14:03:01 +01003705requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
Hanno Becker78c91372019-05-08 13:31:15 +01003706requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
3707run_test "Connection ID, 3D: Cli+Srv enabled, Srv disables on renegotiation" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01003708 -p "$P_PXY drop=5 delay=5 duplicate=5 bad_cid=1" \
Hanno Beckerb42ec0d2019-05-03 17:30:59 +01003709 "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead cid_renego=0 renegotiation=1" \
3710 "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef renegotiation=1 renegotiate=1" \
3711 0 \
3712 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3713 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3714 -s "(initial handshake) Use of Connection ID has been negotiated" \
3715 -c "(initial handshake) Use of Connection ID has been negotiated" \
3716 -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3717 -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3718 -C "(after renegotiation) Use of Connection ID has been negotiated" \
3719 -S "(after renegotiation) Use of Connection ID has been negotiated" \
Hanno Beckerd0ac5fa2019-05-24 10:11:23 +01003720 -c "(after renegotiation) Use of Connection ID was rejected by the server" \
3721 -c "ignoring unexpected CID" \
3722 -s "ignoring unexpected CID"
Hanno Becker7cf463e2019-04-09 18:08:47 +01003723
Yuto Takano3fa16732021-07-09 11:21:43 +01003724# This and the test below it require MAX_CONTENT_LEN to be at least MFL+1, because the
Yuto Takano9c09d552021-07-08 16:03:44 +01003725# tests check that the buffer contents are reallocated when the message is
3726# larger than the buffer.
Andrzej Kurekb6577832020-06-08 07:08:03 -04003727requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3728requires_config_enabled MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
Yuto Takano9c09d552021-07-08 16:03:44 +01003729requires_max_content_len 513
Andrzej Kurekb6577832020-06-08 07:08:03 -04003730run_test "Connection ID: Cli+Srv enabled, variable buffer lengths, MFL=512" \
3731 "$P_SRV dtls=1 cid=1 cid_val=dead debug_level=2" \
3732 "$P_CLI force_ciphersuite="TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" max_frag_len=512 dtls=1 cid=1 cid_val=beef" \
3733 0 \
3734 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3735 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3736 -s "(initial handshake) Use of Connection ID has been negotiated" \
3737 -c "(initial handshake) Use of Connection ID has been negotiated" \
3738 -s "Reallocating in_buf" \
3739 -s "Reallocating out_buf"
3740
3741requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3742requires_config_enabled MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
Yuto Takano9c09d552021-07-08 16:03:44 +01003743requires_max_content_len 1025
Andrzej Kurekb6577832020-06-08 07:08:03 -04003744run_test "Connection ID: Cli+Srv enabled, variable buffer lengths, MFL=1024" \
3745 "$P_SRV dtls=1 cid=1 cid_val=dead debug_level=2" \
3746 "$P_CLI force_ciphersuite="TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" max_frag_len=1024 dtls=1 cid=1 cid_val=beef" \
3747 0 \
3748 -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3749 -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3750 -s "(initial handshake) Use of Connection ID has been negotiated" \
3751 -c "(initial handshake) Use of Connection ID has been negotiated" \
3752 -s "Reallocating in_buf" \
3753 -s "Reallocating out_buf"
3754
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01003755# Tests for Encrypt-then-MAC extension
3756
3757run_test "Encrypt then MAC: default" \
Manuel Pégourié-Gonnard0098e7d2014-10-28 13:08:59 +01003758 "$P_SRV debug_level=3 \
3759 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01003760 "$P_CLI debug_level=3" \
3761 0 \
3762 -c "client hello, adding encrypt_then_mac extension" \
3763 -s "found encrypt then mac extension" \
3764 -s "server hello, adding encrypt then mac extension" \
3765 -c "found encrypt_then_mac extension" \
3766 -c "using encrypt then mac" \
3767 -s "using encrypt then mac"
3768
3769run_test "Encrypt then MAC: client enabled, server disabled" \
Manuel Pégourié-Gonnard0098e7d2014-10-28 13:08:59 +01003770 "$P_SRV debug_level=3 etm=0 \
3771 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01003772 "$P_CLI debug_level=3 etm=1" \
3773 0 \
3774 -c "client hello, adding encrypt_then_mac extension" \
3775 -s "found encrypt then mac extension" \
3776 -S "server hello, adding encrypt then mac extension" \
3777 -C "found encrypt_then_mac extension" \
3778 -C "using encrypt then mac" \
3779 -S "using encrypt then mac"
3780
Manuel Pégourié-Gonnard78e745f2014-11-04 15:44:06 +01003781run_test "Encrypt then MAC: client enabled, aead cipher" \
3782 "$P_SRV debug_level=3 etm=1 \
3783 force_ciphersuite=TLS-RSA-WITH-AES-128-GCM-SHA256" \
3784 "$P_CLI debug_level=3 etm=1" \
3785 0 \
3786 -c "client hello, adding encrypt_then_mac extension" \
3787 -s "found encrypt then mac extension" \
3788 -S "server hello, adding encrypt then mac extension" \
3789 -C "found encrypt_then_mac extension" \
3790 -C "using encrypt then mac" \
3791 -S "using encrypt then mac"
3792
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01003793run_test "Encrypt then MAC: client disabled, server enabled" \
Manuel Pégourié-Gonnard0098e7d2014-10-28 13:08:59 +01003794 "$P_SRV debug_level=3 etm=1 \
3795 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
Manuel Pégourié-Gonnard699cafa2014-10-27 13:57:03 +01003796 "$P_CLI debug_level=3 etm=0" \
3797 0 \
3798 -C "client hello, adding encrypt_then_mac extension" \
3799 -S "found encrypt then mac extension" \
3800 -S "server hello, adding encrypt then mac extension" \
3801 -C "found encrypt_then_mac extension" \
3802 -C "using encrypt then mac" \
3803 -S "using encrypt then mac"
3804
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02003805# Tests for Extended Master Secret extension
3806
Gilles Peskine2fe796f2022-02-25 19:51:52 +01003807requires_config_enabled MBEDTLS_SSL_EXTENDED_MASTER_SECRET
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02003808run_test "Extended Master Secret: default" \
3809 "$P_SRV debug_level=3" \
Ronald Cronf95d1692023-03-14 17:19:42 +01003810 "$P_CLI force_version=tls12 debug_level=3" \
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02003811 0 \
3812 -c "client hello, adding extended_master_secret extension" \
3813 -s "found extended master secret extension" \
3814 -s "server hello, adding extended master secret extension" \
3815 -c "found extended_master_secret extension" \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02003816 -c "session hash for extended master secret" \
3817 -s "session hash for extended master secret"
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02003818
Gilles Peskine2fe796f2022-02-25 19:51:52 +01003819requires_config_enabled MBEDTLS_SSL_EXTENDED_MASTER_SECRET
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02003820run_test "Extended Master Secret: client enabled, server disabled" \
3821 "$P_SRV debug_level=3 extended_ms=0" \
Ronald Cronf95d1692023-03-14 17:19:42 +01003822 "$P_CLI force_version=tls12 debug_level=3 extended_ms=1" \
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02003823 0 \
3824 -c "client hello, adding extended_master_secret extension" \
3825 -s "found extended master secret extension" \
3826 -S "server hello, adding extended master secret extension" \
3827 -C "found extended_master_secret extension" \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02003828 -C "session hash for extended master secret" \
3829 -S "session hash for extended master secret"
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02003830
Gilles Peskine2fe796f2022-02-25 19:51:52 +01003831requires_config_enabled MBEDTLS_SSL_EXTENDED_MASTER_SECRET
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02003832run_test "Extended Master Secret: client disabled, server enabled" \
Ronald Cronf95d1692023-03-14 17:19:42 +01003833 "$P_SRV force_version=tls12 debug_level=3 extended_ms=1" \
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02003834 "$P_CLI debug_level=3 extended_ms=0" \
3835 0 \
3836 -C "client hello, adding extended_master_secret extension" \
3837 -S "found extended master secret extension" \
3838 -S "server hello, adding extended master secret extension" \
3839 -C "found extended_master_secret extension" \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02003840 -C "session hash for extended master secret" \
3841 -S "session hash for extended master secret"
Manuel Pégourié-Gonnard367381f2014-10-20 18:40:56 +02003842
Andres Amaya Garcia4c761fa2018-07-10 20:08:04 +01003843# Test sending and receiving empty application data records
3844
3845run_test "Encrypt then MAC: empty application data record" \
3846 "$P_SRV auth_mode=none debug_level=4 etm=1" \
3847 "$P_CLI auth_mode=none etm=1 request_size=0 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA" \
3848 0 \
3849 -S "0000: 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f" \
3850 -s "dumping 'input payload after decrypt' (0 bytes)" \
3851 -c "0 bytes written in 1 fragments"
3852
Jerry Yuab082902021-12-23 18:02:22 +08003853requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard9e2c80f2020-03-24 10:53:39 +01003854run_test "Encrypt then MAC: disabled, empty application data record" \
Andres Amaya Garcia4c761fa2018-07-10 20:08:04 +01003855 "$P_SRV auth_mode=none debug_level=4 etm=0" \
3856 "$P_CLI auth_mode=none etm=0 request_size=0" \
3857 0 \
3858 -s "dumping 'input payload after decrypt' (0 bytes)" \
3859 -c "0 bytes written in 1 fragments"
3860
3861run_test "Encrypt then MAC, DTLS: empty application data record" \
3862 "$P_SRV auth_mode=none debug_level=4 etm=1 dtls=1" \
3863 "$P_CLI auth_mode=none etm=1 request_size=0 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA dtls=1" \
3864 0 \
3865 -S "0000: 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f" \
3866 -s "dumping 'input payload after decrypt' (0 bytes)" \
3867 -c "0 bytes written in 1 fragments"
3868
Jerry Yuab082902021-12-23 18:02:22 +08003869requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard9e2c80f2020-03-24 10:53:39 +01003870run_test "Encrypt then MAC, DTLS: disabled, empty application data record" \
Andres Amaya Garcia4c761fa2018-07-10 20:08:04 +01003871 "$P_SRV auth_mode=none debug_level=4 etm=0 dtls=1" \
3872 "$P_CLI auth_mode=none etm=0 request_size=0 dtls=1" \
3873 0 \
3874 -s "dumping 'input payload after decrypt' (0 bytes)" \
3875 -c "0 bytes written in 1 fragments"
3876
Manuel Pégourié-Gonnard3ff78232015-01-08 11:15:09 +01003877# Tests for CBC 1/n-1 record splitting
3878
3879run_test "CBC Record splitting: TLS 1.2, no splitting" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01003880 "$P_SRV force_version=tls12" \
Manuel Pégourié-Gonnard3ff78232015-01-08 11:15:09 +01003881 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA \
Ronald Cronf3b425b2022-03-17 16:45:09 +01003882 request_size=123" \
Manuel Pégourié-Gonnard3ff78232015-01-08 11:15:09 +01003883 0 \
3884 -s "Read from client: 123 bytes read" \
3885 -S "Read from client: 1 bytes read" \
3886 -S "122 bytes read"
3887
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01003888# Tests for Session Tickets
3889
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02003890requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003891run_test "Session resume using tickets: basic" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003892 "$P_SRV debug_level=3 tickets=1" \
Ronald Cronf95d1692023-03-14 17:19:42 +01003893 "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01003894 0 \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01003895 -c "client hello, adding session ticket extension" \
3896 -s "found session ticket extension" \
3897 -s "server hello, adding session ticket extension" \
3898 -c "found session_ticket extension" \
3899 -c "parse new session ticket" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01003900 -S "session successfully restored from cache" \
3901 -s "session successfully restored from ticket" \
3902 -s "a session has been resumed" \
3903 -c "a session has been resumed"
3904
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02003905requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Glenn Strausse3282452022-02-03 17:23:24 -05003906run_test "Session resume using tickets: manual rotation" \
3907 "$P_SRV debug_level=3 tickets=1 ticket_rotate=1" \
Ronald Cronf95d1692023-03-14 17:19:42 +01003908 "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
Glenn Strausse3282452022-02-03 17:23:24 -05003909 0 \
3910 -c "client hello, adding session ticket extension" \
3911 -s "found session ticket extension" \
3912 -s "server hello, adding session ticket extension" \
3913 -c "found session_ticket extension" \
3914 -c "parse new session ticket" \
3915 -S "session successfully restored from cache" \
3916 -s "session successfully restored from ticket" \
3917 -s "a session has been resumed" \
3918 -c "a session has been resumed"
3919
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02003920requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003921run_test "Session resume using tickets: cache disabled" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003922 "$P_SRV debug_level=3 tickets=1 cache_max=0" \
Ronald Cronf95d1692023-03-14 17:19:42 +01003923 "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
Manuel Pégourié-Gonnarddbe1ee12014-02-21 09:18:13 +01003924 0 \
3925 -c "client hello, adding session ticket extension" \
3926 -s "found session ticket extension" \
3927 -s "server hello, adding session ticket extension" \
3928 -c "found session_ticket extension" \
3929 -c "parse new session ticket" \
3930 -S "session successfully restored from cache" \
3931 -s "session successfully restored from ticket" \
3932 -s "a session has been resumed" \
3933 -c "a session has been resumed"
3934
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02003935requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003936run_test "Session resume using tickets: timeout" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02003937 "$P_SRV debug_level=3 tickets=1 cache_max=0 ticket_timeout=1" \
Ronald Cronf95d1692023-03-14 17:19:42 +01003938 "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1 reco_delay=2000" \
Manuel Pégourié-Gonnarddbe1ee12014-02-21 09:18:13 +01003939 0 \
3940 -c "client hello, adding session ticket extension" \
3941 -s "found session ticket extension" \
3942 -s "server hello, adding session ticket extension" \
3943 -c "found session_ticket extension" \
3944 -c "parse new session ticket" \
3945 -S "session successfully restored from cache" \
3946 -S "session successfully restored from ticket" \
3947 -S "a session has been resumed" \
3948 -C "a session has been resumed"
3949
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02003950requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Manuel Pégourié-Gonnarda7c37652019-05-20 12:46:26 +02003951run_test "Session resume using tickets: session copy" \
3952 "$P_SRV debug_level=3 tickets=1 cache_max=0" \
Ronald Cronf95d1692023-03-14 17:19:42 +01003953 "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1 reco_mode=0" \
Manuel Pégourié-Gonnarda7c37652019-05-20 12:46:26 +02003954 0 \
3955 -c "client hello, adding session ticket extension" \
3956 -s "found session ticket extension" \
3957 -s "server hello, adding session ticket extension" \
3958 -c "found session_ticket extension" \
3959 -c "parse new session ticket" \
3960 -S "session successfully restored from cache" \
3961 -s "session successfully restored from ticket" \
3962 -s "a session has been resumed" \
3963 -c "a session has been resumed"
3964
Jerry Yuab082902021-12-23 18:02:22 +08003965requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02003966requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003967run_test "Session resume using tickets: openssl server" \
Ronald Croncbd7bfd2022-03-31 18:19:56 +02003968 "$O_SRV -tls1_2" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +02003969 "$P_CLI debug_level=3 tickets=1 new_session_tickets=1 reconnect=1" \
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +01003970 0 \
3971 -c "client hello, adding session ticket extension" \
3972 -c "found session_ticket extension" \
3973 -c "parse new session ticket" \
3974 -c "a session has been resumed"
3975
Jerry Yuab082902021-12-23 18:02:22 +08003976requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02003977requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02003978run_test "Session resume using tickets: openssl client" \
Gilles Peskinee373c942024-04-29 17:44:19 +02003979 "$P_SRV force_version=tls12 debug_level=3 tickets=1" \
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02003980 "( $O_CLI -sess_out $SESSION; \
3981 $O_CLI -sess_in $SESSION; \
3982 rm -f $SESSION )" \
Manuel Pégourié-Gonnardfccd3252014-02-25 17:14:15 +01003983 0 \
3984 -s "found session ticket extension" \
3985 -s "server hello, adding session ticket extension" \
3986 -S "session successfully restored from cache" \
3987 -s "session successfully restored from ticket" \
3988 -s "a session has been resumed"
3989
Valerio Setti73d05312023-11-09 16:53:59 +01003990requires_cipher_enabled "AES" "GCM"
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02003991requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Gabor Mezei6e5aae62022-01-12 16:29:58 +01003992run_test "Session resume using tickets: AES-128-GCM" \
3993 "$P_SRV debug_level=3 tickets=1 ticket_aead=AES-128-GCM" \
Ronald Cronf95d1692023-03-14 17:19:42 +01003994 "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
Gabor Mezei6e5aae62022-01-12 16:29:58 +01003995 0 \
3996 -c "client hello, adding session ticket extension" \
3997 -s "found session ticket extension" \
3998 -s "server hello, adding session ticket extension" \
3999 -c "found session_ticket extension" \
4000 -c "parse new session ticket" \
4001 -S "session successfully restored from cache" \
4002 -s "session successfully restored from ticket" \
4003 -s "a session has been resumed" \
4004 -c "a session has been resumed"
4005
Valerio Setti73d05312023-11-09 16:53:59 +01004006requires_cipher_enabled "AES" "GCM"
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004007requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004008run_test "Session resume using tickets: AES-192-GCM" \
4009 "$P_SRV debug_level=3 tickets=1 ticket_aead=AES-192-GCM" \
Ronald Cronf95d1692023-03-14 17:19:42 +01004010 "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004011 0 \
4012 -c "client hello, adding session ticket extension" \
4013 -s "found session ticket extension" \
4014 -s "server hello, adding session ticket extension" \
4015 -c "found session_ticket extension" \
4016 -c "parse new session ticket" \
4017 -S "session successfully restored from cache" \
4018 -s "session successfully restored from ticket" \
4019 -s "a session has been resumed" \
4020 -c "a session has been resumed"
4021
Valerio Setti73d05312023-11-09 16:53:59 +01004022requires_cipher_enabled "AES" "CCM"
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004023requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004024run_test "Session resume using tickets: AES-128-CCM" \
4025 "$P_SRV debug_level=3 tickets=1 ticket_aead=AES-128-CCM" \
Ronald Cronf95d1692023-03-14 17:19:42 +01004026 "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004027 0 \
4028 -c "client hello, adding session ticket extension" \
4029 -s "found session ticket extension" \
4030 -s "server hello, adding session ticket extension" \
4031 -c "found session_ticket extension" \
4032 -c "parse new session ticket" \
4033 -S "session successfully restored from cache" \
4034 -s "session successfully restored from ticket" \
4035 -s "a session has been resumed" \
4036 -c "a session has been resumed"
4037
Valerio Setti73d05312023-11-09 16:53:59 +01004038requires_cipher_enabled "AES" "CCM"
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004039requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004040run_test "Session resume using tickets: AES-192-CCM" \
4041 "$P_SRV debug_level=3 tickets=1 ticket_aead=AES-192-CCM" \
Ronald Cronf95d1692023-03-14 17:19:42 +01004042 "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004043 0 \
4044 -c "client hello, adding session ticket extension" \
4045 -s "found session ticket extension" \
4046 -s "server hello, adding session ticket extension" \
4047 -c "found session_ticket extension" \
4048 -c "parse new session ticket" \
4049 -S "session successfully restored from cache" \
4050 -s "session successfully restored from ticket" \
4051 -s "a session has been resumed" \
4052 -c "a session has been resumed"
4053
Valerio Setti73d05312023-11-09 16:53:59 +01004054requires_cipher_enabled "AES" "CCM"
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004055requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004056run_test "Session resume using tickets: AES-256-CCM" \
4057 "$P_SRV debug_level=3 tickets=1 ticket_aead=AES-256-CCM" \
Ronald Cronf95d1692023-03-14 17:19:42 +01004058 "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004059 0 \
4060 -c "client hello, adding session ticket extension" \
4061 -s "found session ticket extension" \
4062 -s "server hello, adding session ticket extension" \
4063 -c "found session_ticket extension" \
4064 -c "parse new session ticket" \
4065 -S "session successfully restored from cache" \
4066 -s "session successfully restored from ticket" \
4067 -s "a session has been resumed" \
4068 -c "a session has been resumed"
4069
Valerio Setti73d05312023-11-09 16:53:59 +01004070requires_cipher_enabled "CAMELLIA" "CCM"
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004071requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004072run_test "Session resume using tickets: CAMELLIA-128-CCM" \
4073 "$P_SRV debug_level=3 tickets=1 ticket_aead=CAMELLIA-128-CCM" \
Ronald Cronf95d1692023-03-14 17:19:42 +01004074 "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004075 0 \
4076 -c "client hello, adding session ticket extension" \
4077 -s "found session ticket extension" \
4078 -s "server hello, adding session ticket extension" \
4079 -c "found session_ticket extension" \
4080 -c "parse new session ticket" \
4081 -S "session successfully restored from cache" \
4082 -s "session successfully restored from ticket" \
4083 -s "a session has been resumed" \
4084 -c "a session has been resumed"
4085
Valerio Setti73d05312023-11-09 16:53:59 +01004086requires_cipher_enabled "CAMELLIA" "CCM"
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004087requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004088run_test "Session resume using tickets: CAMELLIA-192-CCM" \
4089 "$P_SRV debug_level=3 tickets=1 ticket_aead=CAMELLIA-192-CCM" \
Ronald Cronf95d1692023-03-14 17:19:42 +01004090 "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004091 0 \
4092 -c "client hello, adding session ticket extension" \
4093 -s "found session ticket extension" \
4094 -s "server hello, adding session ticket extension" \
4095 -c "found session_ticket extension" \
4096 -c "parse new session ticket" \
4097 -S "session successfully restored from cache" \
4098 -s "session successfully restored from ticket" \
4099 -s "a session has been resumed" \
4100 -c "a session has been resumed"
4101
Valerio Setti73d05312023-11-09 16:53:59 +01004102requires_cipher_enabled "CAMELLIA" "CCM"
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004103requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004104run_test "Session resume using tickets: CAMELLIA-256-CCM" \
4105 "$P_SRV debug_level=3 tickets=1 ticket_aead=CAMELLIA-256-CCM" \
Ronald Cronf95d1692023-03-14 17:19:42 +01004106 "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004107 0 \
4108 -c "client hello, adding session ticket extension" \
4109 -s "found session ticket extension" \
4110 -s "server hello, adding session ticket extension" \
4111 -c "found session_ticket extension" \
4112 -c "parse new session ticket" \
4113 -S "session successfully restored from cache" \
4114 -s "session successfully restored from ticket" \
4115 -s "a session has been resumed" \
4116 -c "a session has been resumed"
4117
Valerio Setti04c85e12023-11-13 10:54:05 +01004118requires_cipher_enabled "ARIA" "GCM"
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004119requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004120run_test "Session resume using tickets: ARIA-128-GCM" \
4121 "$P_SRV debug_level=3 tickets=1 ticket_aead=ARIA-128-GCM" \
Ronald Cronf95d1692023-03-14 17:19:42 +01004122 "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004123 0 \
4124 -c "client hello, adding session ticket extension" \
4125 -s "found session ticket extension" \
4126 -s "server hello, adding session ticket extension" \
4127 -c "found session_ticket extension" \
4128 -c "parse new session ticket" \
4129 -S "session successfully restored from cache" \
4130 -s "session successfully restored from ticket" \
4131 -s "a session has been resumed" \
4132 -c "a session has been resumed"
4133
Valerio Setti04c85e12023-11-13 10:54:05 +01004134requires_cipher_enabled "ARIA" "GCM"
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004135requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004136run_test "Session resume using tickets: ARIA-192-GCM" \
4137 "$P_SRV debug_level=3 tickets=1 ticket_aead=ARIA-192-GCM" \
Ronald Cronf95d1692023-03-14 17:19:42 +01004138 "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004139 0 \
4140 -c "client hello, adding session ticket extension" \
4141 -s "found session ticket extension" \
4142 -s "server hello, adding session ticket extension" \
4143 -c "found session_ticket extension" \
4144 -c "parse new session ticket" \
4145 -S "session successfully restored from cache" \
4146 -s "session successfully restored from ticket" \
4147 -s "a session has been resumed" \
4148 -c "a session has been resumed"
4149
Valerio Setti04c85e12023-11-13 10:54:05 +01004150requires_cipher_enabled "ARIA" "GCM"
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004151requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004152run_test "Session resume using tickets: ARIA-256-GCM" \
4153 "$P_SRV debug_level=3 tickets=1 ticket_aead=ARIA-256-GCM" \
Ronald Cronf95d1692023-03-14 17:19:42 +01004154 "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004155 0 \
4156 -c "client hello, adding session ticket extension" \
4157 -s "found session ticket extension" \
4158 -s "server hello, adding session ticket extension" \
4159 -c "found session_ticket extension" \
4160 -c "parse new session ticket" \
4161 -S "session successfully restored from cache" \
4162 -s "session successfully restored from ticket" \
4163 -s "a session has been resumed" \
4164 -c "a session has been resumed"
4165
Valerio Setti73d05312023-11-09 16:53:59 +01004166requires_cipher_enabled "ARIA" "CCM"
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004167requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004168run_test "Session resume using tickets: ARIA-128-CCM" \
4169 "$P_SRV debug_level=3 tickets=1 ticket_aead=ARIA-128-CCM" \
Ronald Cronf95d1692023-03-14 17:19:42 +01004170 "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004171 0 \
4172 -c "client hello, adding session ticket extension" \
4173 -s "found session ticket extension" \
4174 -s "server hello, adding session ticket extension" \
4175 -c "found session_ticket extension" \
4176 -c "parse new session ticket" \
4177 -S "session successfully restored from cache" \
4178 -s "session successfully restored from ticket" \
4179 -s "a session has been resumed" \
4180 -c "a session has been resumed"
4181
Valerio Setti73d05312023-11-09 16:53:59 +01004182requires_cipher_enabled "ARIA" "CCM"
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004183requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004184run_test "Session resume using tickets: ARIA-192-CCM" \
4185 "$P_SRV debug_level=3 tickets=1 ticket_aead=ARIA-192-CCM" \
Ronald Cronf95d1692023-03-14 17:19:42 +01004186 "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004187 0 \
4188 -c "client hello, adding session ticket extension" \
4189 -s "found session ticket extension" \
4190 -s "server hello, adding session ticket extension" \
4191 -c "found session_ticket extension" \
4192 -c "parse new session ticket" \
4193 -S "session successfully restored from cache" \
4194 -s "session successfully restored from ticket" \
4195 -s "a session has been resumed" \
4196 -c "a session has been resumed"
4197
Valerio Setti73d05312023-11-09 16:53:59 +01004198requires_cipher_enabled "ARIA" "CCM"
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004199requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004200run_test "Session resume using tickets: ARIA-256-CCM" \
4201 "$P_SRV debug_level=3 tickets=1 ticket_aead=ARIA-256-CCM" \
Ronald Cronf95d1692023-03-14 17:19:42 +01004202 "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
Gabor Mezei6e5aae62022-01-12 16:29:58 +01004203 0 \
4204 -c "client hello, adding session ticket extension" \
4205 -s "found session ticket extension" \
4206 -s "server hello, adding session ticket extension" \
4207 -c "found session_ticket extension" \
4208 -c "parse new session ticket" \
4209 -S "session successfully restored from cache" \
4210 -s "session successfully restored from ticket" \
4211 -s "a session has been resumed" \
4212 -c "a session has been resumed"
4213
Valerio Setti73d05312023-11-09 16:53:59 +01004214requires_cipher_enabled "CHACHA20"
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004215requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Gabor Mezei49c8eb32022-03-10 16:13:17 +01004216run_test "Session resume using tickets: CHACHA20-POLY1305" \
4217 "$P_SRV debug_level=3 tickets=1 ticket_aead=CHACHA20-POLY1305" \
Ronald Cronf95d1692023-03-14 17:19:42 +01004218 "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
Gabor Mezei49c8eb32022-03-10 16:13:17 +01004219 0 \
4220 -c "client hello, adding session ticket extension" \
4221 -s "found session ticket extension" \
4222 -s "server hello, adding session ticket extension" \
4223 -c "found session_ticket extension" \
4224 -c "parse new session ticket" \
4225 -S "session successfully restored from cache" \
4226 -s "session successfully restored from ticket" \
4227 -s "a session has been resumed" \
4228 -c "a session has been resumed"
4229
Hanno Becker1d739932018-08-21 13:55:22 +01004230# Tests for Session Tickets with DTLS
4231
Jerry Yuab082902021-12-23 18:02:22 +08004232requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004233requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Hanno Becker1d739932018-08-21 13:55:22 +01004234run_test "Session resume using tickets, DTLS: basic" \
4235 "$P_SRV debug_level=3 dtls=1 tickets=1" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01004236 "$P_CLI debug_level=3 dtls=1 tickets=1 reconnect=1 skip_close_notify=1" \
Hanno Becker1d739932018-08-21 13:55:22 +01004237 0 \
4238 -c "client hello, adding session ticket extension" \
4239 -s "found session ticket extension" \
4240 -s "server hello, adding session ticket extension" \
4241 -c "found session_ticket extension" \
4242 -c "parse new session ticket" \
4243 -S "session successfully restored from cache" \
4244 -s "session successfully restored from ticket" \
4245 -s "a session has been resumed" \
4246 -c "a session has been resumed"
4247
Jerry Yuab082902021-12-23 18:02:22 +08004248requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004249requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Hanno Becker1d739932018-08-21 13:55:22 +01004250run_test "Session resume using tickets, DTLS: cache disabled" \
4251 "$P_SRV debug_level=3 dtls=1 tickets=1 cache_max=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01004252 "$P_CLI debug_level=3 dtls=1 tickets=1 reconnect=1 skip_close_notify=1" \
Hanno Becker1d739932018-08-21 13:55:22 +01004253 0 \
4254 -c "client hello, adding session ticket extension" \
4255 -s "found session ticket extension" \
4256 -s "server hello, adding session ticket extension" \
4257 -c "found session_ticket extension" \
4258 -c "parse new session ticket" \
4259 -S "session successfully restored from cache" \
4260 -s "session successfully restored from ticket" \
4261 -s "a session has been resumed" \
4262 -c "a session has been resumed"
4263
Jerry Yuab082902021-12-23 18:02:22 +08004264requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004265requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Hanno Becker1d739932018-08-21 13:55:22 +01004266run_test "Session resume using tickets, DTLS: timeout" \
4267 "$P_SRV debug_level=3 dtls=1 tickets=1 cache_max=0 ticket_timeout=1" \
Jerry Yua15af372022-12-05 15:55:24 +08004268 "$P_CLI debug_level=3 dtls=1 tickets=1 reconnect=1 skip_close_notify=1 reco_delay=2000" \
Hanno Becker1d739932018-08-21 13:55:22 +01004269 0 \
4270 -c "client hello, adding session ticket extension" \
4271 -s "found session ticket extension" \
4272 -s "server hello, adding session ticket extension" \
4273 -c "found session_ticket extension" \
4274 -c "parse new session ticket" \
4275 -S "session successfully restored from cache" \
4276 -S "session successfully restored from ticket" \
4277 -S "a session has been resumed" \
4278 -C "a session has been resumed"
4279
Jerry Yuab082902021-12-23 18:02:22 +08004280requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004281requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Manuel Pégourié-Gonnarda7c37652019-05-20 12:46:26 +02004282run_test "Session resume using tickets, DTLS: session copy" \
4283 "$P_SRV debug_level=3 dtls=1 tickets=1 cache_max=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01004284 "$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 +02004285 0 \
4286 -c "client hello, adding session ticket extension" \
4287 -s "found session ticket extension" \
4288 -s "server hello, adding session ticket extension" \
4289 -c "found session_ticket extension" \
4290 -c "parse new session ticket" \
4291 -S "session successfully restored from cache" \
4292 -s "session successfully restored from ticket" \
4293 -s "a session has been resumed" \
4294 -c "a session has been resumed"
4295
Jerry Yuab082902021-12-23 18:02:22 +08004296requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004297requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
TRodziewicz4ca18aa2021-05-20 14:46:20 +02004298run_test "Session resume using tickets, DTLS: openssl server" \
4299 "$O_SRV -dtls" \
4300 "$P_CLI dtls=1 debug_level=3 tickets=1 reconnect=1" \
4301 0 \
4302 -c "client hello, adding session ticket extension" \
4303 -c "found session_ticket extension" \
4304 -c "parse new session ticket" \
4305 -c "a session has been resumed"
4306
Manuel Pégourié-Gonnardd60950c2021-10-13 13:12:47 +02004307# For reasons that aren't fully understood, this test randomly fails with high
Paul Elliott09cfa182021-10-13 16:13:44 +01004308# probability with OpenSSL 1.0.2g on the CI, see #5012.
Manuel Pégourié-Gonnardd60950c2021-10-13 13:12:47 +02004309requires_openssl_next
Jerry Yuab082902021-12-23 18:02:22 +08004310requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004311requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
TRodziewicz4ca18aa2021-05-20 14:46:20 +02004312run_test "Session resume using tickets, DTLS: openssl client" \
4313 "$P_SRV dtls=1 debug_level=3 tickets=1" \
Manuel Pégourié-Gonnardd60950c2021-10-13 13:12:47 +02004314 "( $O_NEXT_CLI -dtls -sess_out $SESSION; \
4315 $O_NEXT_CLI -dtls -sess_in $SESSION; \
TRodziewicz4ca18aa2021-05-20 14:46:20 +02004316 rm -f $SESSION )" \
4317 0 \
4318 -s "found session ticket extension" \
4319 -s "server hello, adding session ticket extension" \
4320 -S "session successfully restored from cache" \
4321 -s "session successfully restored from ticket" \
4322 -s "a session has been resumed"
4323
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01004324# Tests for Session Resume based on session-ID and cache
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01004325
Gilles Peskine2fe796f2022-02-25 19:51:52 +01004326requires_config_enabled MBEDTLS_SSL_CACHE_C
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004327requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004328run_test "Session resume using cache: tickets enabled on client" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004329 "$P_SRV debug_level=3 tickets=0" \
Ronald Cronf95d1692023-03-14 17:19:42 +01004330 "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01004331 0 \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01004332 -c "client hello, adding session ticket extension" \
4333 -s "found session ticket extension" \
4334 -S "server hello, adding session ticket extension" \
4335 -C "found session_ticket extension" \
4336 -C "parse new session ticket" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01004337 -s "session successfully restored from cache" \
4338 -S "session successfully restored from ticket" \
4339 -s "a session has been resumed" \
4340 -c "a session has been resumed"
4341
Gilles Peskine2fe796f2022-02-25 19:51:52 +01004342requires_config_enabled MBEDTLS_SSL_CACHE_C
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004343requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004344run_test "Session resume using cache: tickets enabled on server" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004345 "$P_SRV debug_level=3 tickets=1" \
Ronald Cronf95d1692023-03-14 17:19:42 +01004346 "$P_CLI force_version=tls12 debug_level=3 tickets=0 reconnect=1" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01004347 0 \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01004348 -C "client hello, adding session ticket extension" \
4349 -S "found session ticket extension" \
4350 -S "server hello, adding session ticket extension" \
4351 -C "found session_ticket extension" \
4352 -C "parse new session ticket" \
Manuel Pégourié-Gonnardf7c52012014-02-20 11:43:46 +01004353 -s "session successfully restored from cache" \
4354 -S "session successfully restored from ticket" \
4355 -s "a session has been resumed" \
4356 -c "a session has been resumed"
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01004357
Gilles Peskine2fe796f2022-02-25 19:51:52 +01004358requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004359run_test "Session resume using cache: cache_max=0" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004360 "$P_SRV debug_level=3 tickets=0 cache_max=0" \
Ronald Cronf95d1692023-03-14 17:19:42 +01004361 "$P_CLI force_version=tls12 debug_level=3 tickets=0 reconnect=1" \
Manuel Pégourié-Gonnard4c883452014-02-20 21:32:41 +01004362 0 \
4363 -S "session successfully restored from cache" \
4364 -S "session successfully restored from ticket" \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01004365 -S "a session has been resumed" \
4366 -C "a session has been resumed"
Manuel Pégourié-Gonnard4c883452014-02-20 21:32:41 +01004367
Gilles Peskine2fe796f2022-02-25 19:51:52 +01004368requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004369run_test "Session resume using cache: cache_max=1" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004370 "$P_SRV debug_level=3 tickets=0 cache_max=1" \
Ronald Cronf95d1692023-03-14 17:19:42 +01004371 "$P_CLI force_version=tls12 debug_level=3 tickets=0 reconnect=1" \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01004372 0 \
4373 -s "session successfully restored from cache" \
4374 -S "session successfully restored from ticket" \
4375 -s "a session has been resumed" \
4376 -c "a session has been resumed"
4377
Gilles Peskine2fe796f2022-02-25 19:51:52 +01004378requires_config_enabled MBEDTLS_SSL_CACHE_C
Pengyu Lv62ed1aa2023-03-07 14:52:47 +08004379run_test "Session resume using cache: cache removed" \
4380 "$P_SRV debug_level=3 tickets=0 cache_remove=1" \
Ronald Cronf95d1692023-03-14 17:19:42 +01004381 "$P_CLI force_version=tls12 debug_level=3 tickets=0 reconnect=1" \
Pengyu Lv62ed1aa2023-03-07 14:52:47 +08004382 0 \
4383 -C "client hello, adding session ticket extension" \
4384 -S "found session ticket extension" \
4385 -S "server hello, adding session ticket extension" \
4386 -C "found session_ticket extension" \
4387 -C "parse new session ticket" \
4388 -S "session successfully restored from cache" \
4389 -S "session successfully restored from ticket" \
4390 -S "a session has been resumed" \
4391 -C "a session has been resumed"
4392
4393requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4394requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard6df31962015-05-04 10:55:47 +02004395run_test "Session resume using cache: timeout > delay" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004396 "$P_SRV debug_level=3 tickets=0" \
Ronald Cronf95d1692023-03-14 17:19:42 +01004397 "$P_CLI force_version=tls12 debug_level=3 tickets=0 reconnect=1 reco_delay=0" \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01004398 0 \
4399 -s "session successfully restored from cache" \
4400 -S "session successfully restored from ticket" \
4401 -s "a session has been resumed" \
4402 -c "a session has been resumed"
4403
Gilles Peskine2fe796f2022-02-25 19:51:52 +01004404requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004405run_test "Session resume using cache: timeout < delay" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004406 "$P_SRV debug_level=3 tickets=0 cache_timeout=1" \
Ronald Cronf95d1692023-03-14 17:19:42 +01004407 "$P_CLI force_version=tls12 debug_level=3 tickets=0 reconnect=1 reco_delay=2000" \
Manuel Pégourié-Gonnardc55a5b72014-02-20 22:50:56 +01004408 0 \
4409 -S "session successfully restored from cache" \
4410 -S "session successfully restored from ticket" \
4411 -S "a session has been resumed" \
4412 -C "a session has been resumed"
4413
Gilles Peskine2fe796f2022-02-25 19:51:52 +01004414requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004415run_test "Session resume using cache: no timeout" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004416 "$P_SRV debug_level=3 tickets=0 cache_timeout=0" \
Ronald Cronf95d1692023-03-14 17:19:42 +01004417 "$P_CLI force_version=tls12 debug_level=3 tickets=0 reconnect=1 reco_delay=2000" \
Manuel Pégourié-Gonnard4c883452014-02-20 21:32:41 +01004418 0 \
4419 -s "session successfully restored from cache" \
4420 -S "session successfully restored from ticket" \
4421 -s "a session has been resumed" \
4422 -c "a session has been resumed"
4423
Gilles Peskine2fe796f2022-02-25 19:51:52 +01004424requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnarda7c37652019-05-20 12:46:26 +02004425run_test "Session resume using cache: session copy" \
4426 "$P_SRV debug_level=3 tickets=0" \
Ronald Cronf95d1692023-03-14 17:19:42 +01004427 "$P_CLI force_version=tls12 debug_level=3 tickets=0 reconnect=1 reco_mode=0" \
Manuel Pégourié-Gonnarda7c37652019-05-20 12:46:26 +02004428 0 \
4429 -s "session successfully restored from cache" \
4430 -S "session successfully restored from ticket" \
4431 -s "a session has been resumed" \
4432 -c "a session has been resumed"
4433
Gilles Peskine2fe796f2022-02-25 19:51:52 +01004434requires_config_enabled MBEDTLS_SSL_CACHE_C
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004435requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004436run_test "Session resume using cache: openssl client" \
Ronald Cronf95d1692023-03-14 17:19:42 +01004437 "$P_SRV force_version=tls12 debug_level=3 tickets=0" \
Manuel Pégourié-Gonnardbc3b16c2014-05-28 23:06:50 +02004438 "( $O_CLI -sess_out $SESSION; \
4439 $O_CLI -sess_in $SESSION; \
4440 rm -f $SESSION )" \
Manuel Pégourié-Gonnarddb735f62014-02-25 17:57:59 +01004441 0 \
4442 -s "found session ticket extension" \
4443 -S "server hello, adding session ticket extension" \
4444 -s "session successfully restored from cache" \
4445 -S "session successfully restored from ticket" \
4446 -s "a session has been resumed"
4447
Jerry Yuab082902021-12-23 18:02:22 +08004448requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01004449requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004450run_test "Session resume using cache: openssl server" \
Ronald Croncbd7bfd2022-03-31 18:19:56 +02004451 "$O_SRV -tls1_2" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004452 "$P_CLI debug_level=3 tickets=0 reconnect=1" \
Manuel Pégourié-Gonnarddb735f62014-02-25 17:57:59 +01004453 0 \
4454 -C "found session_ticket extension" \
4455 -C "parse new session ticket" \
4456 -c "a session has been resumed"
4457
Andrzej Kurek7cf87252022-06-14 07:12:33 -04004458# Tests for Session resume and extensions
4459
4460requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4461requires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
4462run_test "Session resume and connection ID" \
4463 "$P_SRV debug_level=3 cid=1 cid_val=dead dtls=1 tickets=0" \
4464 "$P_CLI debug_level=3 cid=1 cid_val=beef dtls=1 tickets=0 reconnect=1" \
4465 0 \
4466 -c "Enable use of CID extension." \
4467 -s "Enable use of CID extension." \
4468 -c "client hello, adding CID extension" \
4469 -s "found CID extension" \
4470 -s "Use of CID extension negotiated" \
4471 -s "server hello, adding CID extension" \
4472 -c "found CID extension" \
4473 -c "Use of CID extension negotiated" \
4474 -s "Copy CIDs into SSL transform" \
4475 -c "Copy CIDs into SSL transform" \
4476 -c "Peer CID (length 2 Bytes): de ad" \
4477 -s "Peer CID (length 2 Bytes): be ef" \
4478 -s "Use of Connection ID has been negotiated" \
4479 -c "Use of Connection ID has been negotiated"
4480
Hanno Becker1d739932018-08-21 13:55:22 +01004481# Tests for Session Resume based on session-ID and cache, DTLS
4482
Jerry Yuab082902021-12-23 18:02:22 +08004483requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01004484requires_config_enabled MBEDTLS_SSL_CACHE_C
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004485requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Hanno Becker1d739932018-08-21 13:55:22 +01004486run_test "Session resume using cache, DTLS: tickets enabled on client" \
4487 "$P_SRV dtls=1 debug_level=3 tickets=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01004488 "$P_CLI dtls=1 debug_level=3 tickets=1 reconnect=1 skip_close_notify=1" \
Hanno Becker1d739932018-08-21 13:55:22 +01004489 0 \
4490 -c "client hello, adding session ticket extension" \
4491 -s "found session ticket extension" \
4492 -S "server hello, adding session ticket extension" \
4493 -C "found session_ticket extension" \
4494 -C "parse new session ticket" \
4495 -s "session successfully restored from cache" \
4496 -S "session successfully restored from ticket" \
4497 -s "a session has been resumed" \
4498 -c "a session has been resumed"
4499
Jerry Yuab082902021-12-23 18:02:22 +08004500requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01004501requires_config_enabled MBEDTLS_SSL_CACHE_C
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004502requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Hanno Becker1d739932018-08-21 13:55:22 +01004503run_test "Session resume using cache, DTLS: tickets enabled on server" \
4504 "$P_SRV dtls=1 debug_level=3 tickets=1" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01004505 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1" \
Hanno Becker1d739932018-08-21 13:55:22 +01004506 0 \
4507 -C "client hello, adding session ticket extension" \
4508 -S "found session ticket extension" \
4509 -S "server hello, adding session ticket extension" \
4510 -C "found session_ticket extension" \
4511 -C "parse new session ticket" \
4512 -s "session successfully restored from cache" \
4513 -S "session successfully restored from ticket" \
4514 -s "a session has been resumed" \
4515 -c "a session has been resumed"
4516
Jerry Yuab082902021-12-23 18:02:22 +08004517requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01004518requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01004519run_test "Session resume using cache, DTLS: cache_max=0" \
4520 "$P_SRV dtls=1 debug_level=3 tickets=0 cache_max=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01004521 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1" \
Hanno Becker1d739932018-08-21 13:55:22 +01004522 0 \
4523 -S "session successfully restored from cache" \
4524 -S "session successfully restored from ticket" \
4525 -S "a session has been resumed" \
4526 -C "a session has been resumed"
4527
Jerry Yuab082902021-12-23 18:02:22 +08004528requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01004529requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01004530run_test "Session resume using cache, DTLS: cache_max=1" \
4531 "$P_SRV dtls=1 debug_level=3 tickets=0 cache_max=1" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01004532 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1" \
Hanno Becker1d739932018-08-21 13:55:22 +01004533 0 \
4534 -s "session successfully restored from cache" \
4535 -S "session successfully restored from ticket" \
4536 -s "a session has been resumed" \
4537 -c "a session has been resumed"
4538
Jerry Yuab082902021-12-23 18:02:22 +08004539requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01004540requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01004541run_test "Session resume using cache, DTLS: timeout > delay" \
4542 "$P_SRV dtls=1 debug_level=3 tickets=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01004543 "$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 +01004544 0 \
4545 -s "session successfully restored from cache" \
4546 -S "session successfully restored from ticket" \
4547 -s "a session has been resumed" \
4548 -c "a session has been resumed"
4549
Jerry Yuab082902021-12-23 18:02:22 +08004550requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01004551requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01004552run_test "Session resume using cache, DTLS: timeout < delay" \
4553 "$P_SRV dtls=1 debug_level=3 tickets=0 cache_timeout=1" \
Jerry Yua15af372022-12-05 15:55:24 +08004554 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1 reco_delay=2000" \
Hanno Becker1d739932018-08-21 13:55:22 +01004555 0 \
4556 -S "session successfully restored from cache" \
4557 -S "session successfully restored from ticket" \
4558 -S "a session has been resumed" \
4559 -C "a session has been resumed"
4560
Jerry Yuab082902021-12-23 18:02:22 +08004561requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01004562requires_config_enabled MBEDTLS_SSL_CACHE_C
Hanno Becker1d739932018-08-21 13:55:22 +01004563run_test "Session resume using cache, DTLS: no timeout" \
4564 "$P_SRV dtls=1 debug_level=3 tickets=0 cache_timeout=0" \
Jerry Yua15af372022-12-05 15:55:24 +08004565 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1 reco_delay=2000" \
Hanno Becker1d739932018-08-21 13:55:22 +01004566 0 \
4567 -s "session successfully restored from cache" \
4568 -S "session successfully restored from ticket" \
4569 -s "a session has been resumed" \
4570 -c "a session has been resumed"
4571
Jerry Yuab082902021-12-23 18:02:22 +08004572requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01004573requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnarda7c37652019-05-20 12:46:26 +02004574run_test "Session resume using cache, DTLS: session copy" \
4575 "$P_SRV dtls=1 debug_level=3 tickets=0" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01004576 "$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 +02004577 0 \
4578 -s "session successfully restored from cache" \
4579 -S "session successfully restored from ticket" \
4580 -s "a session has been resumed" \
4581 -c "a session has been resumed"
4582
Manuel Pégourié-Gonnardd60950c2021-10-13 13:12:47 +02004583# For reasons that aren't fully understood, this test randomly fails with high
Paul Elliott09cfa182021-10-13 16:13:44 +01004584# probability with OpenSSL 1.0.2g on the CI, see #5012.
Manuel Pégourié-Gonnardd60950c2021-10-13 13:12:47 +02004585requires_openssl_next
Jerry Yuab082902021-12-23 18:02:22 +08004586requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01004587requires_config_enabled MBEDTLS_SSL_CACHE_C
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02004588requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
TRodziewicz4ca18aa2021-05-20 14:46:20 +02004589run_test "Session resume using cache, DTLS: openssl client" \
4590 "$P_SRV dtls=1 debug_level=3 tickets=0" \
Manuel Pégourié-Gonnardd60950c2021-10-13 13:12:47 +02004591 "( $O_NEXT_CLI -dtls -sess_out $SESSION; \
4592 $O_NEXT_CLI -dtls -sess_in $SESSION; \
TRodziewicz4ca18aa2021-05-20 14:46:20 +02004593 rm -f $SESSION )" \
4594 0 \
4595 -s "found session ticket extension" \
4596 -S "server hello, adding session ticket extension" \
4597 -s "session successfully restored from cache" \
4598 -S "session successfully restored from ticket" \
4599 -s "a session has been resumed"
4600
Jerry Yuab082902021-12-23 18:02:22 +08004601requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskine2fe796f2022-02-25 19:51:52 +01004602requires_config_enabled MBEDTLS_SSL_CACHE_C
TRodziewicz4ca18aa2021-05-20 14:46:20 +02004603run_test "Session resume using cache, DTLS: openssl server" \
4604 "$O_SRV -dtls" \
4605 "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1" \
4606 0 \
4607 -C "found session_ticket extension" \
4608 -C "parse new session ticket" \
4609 -c "a session has been resumed"
4610
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01004611# Tests for Max Fragment Length extension
4612
Hanno Becker4aed27e2017-09-18 15:00:34 +01004613requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08004614requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckerc5266962017-09-18 15:01:50 +01004615run_test "Max fragment length: enabled, default" \
Waleed Elmelegy3d46b7f2024-01-01 20:50:53 +00004616 "$P_SRV debug_level=3 force_version=tls12" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004617 "$P_CLI debug_level=3" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01004618 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01004619 -c "Maximum incoming record payload length is $MAX_CONTENT_LEN" \
4620 -c "Maximum outgoing record payload length is $MAX_CONTENT_LEN" \
4621 -s "Maximum incoming record payload length is $MAX_CONTENT_LEN" \
4622 -s "Maximum outgoing record payload length is $MAX_CONTENT_LEN" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01004623 -C "client hello, adding max_fragment_length extension" \
4624 -S "found max fragment length extension" \
4625 -S "server hello, max_fragment_length extension" \
4626 -C "found max_fragment_length extension"
4627
Hanno Becker4aed27e2017-09-18 15:00:34 +01004628requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08004629requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckerc5266962017-09-18 15:01:50 +01004630run_test "Max fragment length: enabled, default, larger message" \
Waleed Elmelegy3d46b7f2024-01-01 20:50:53 +00004631 "$P_SRV debug_level=3 force_version=tls12" \
Angus Grattonc4dd0732018-04-11 16:28:39 +10004632 "$P_CLI debug_level=3 request_size=$(( $MAX_CONTENT_LEN + 1))" \
Hanno Beckerc5266962017-09-18 15:01:50 +01004633 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01004634 -c "Maximum incoming record payload length is $MAX_CONTENT_LEN" \
4635 -c "Maximum outgoing record payload length is $MAX_CONTENT_LEN" \
4636 -s "Maximum incoming record payload length is $MAX_CONTENT_LEN" \
4637 -s "Maximum outgoing record payload length is $MAX_CONTENT_LEN" \
Hanno Beckerc5266962017-09-18 15:01:50 +01004638 -C "client hello, adding max_fragment_length extension" \
4639 -S "found max fragment length extension" \
4640 -S "server hello, max_fragment_length extension" \
4641 -C "found max_fragment_length extension" \
Angus Grattonc4dd0732018-04-11 16:28:39 +10004642 -c "$(( $MAX_CONTENT_LEN + 1)) bytes written in 2 fragments" \
4643 -s "$MAX_CONTENT_LEN bytes read" \
Hanno Becker9cfabe32017-10-18 14:42:01 +01004644 -s "1 bytes read"
Hanno Beckerc5266962017-09-18 15:01:50 +01004645
4646requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08004647requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckerc5266962017-09-18 15:01:50 +01004648run_test "Max fragment length, DTLS: enabled, default, larger message" \
4649 "$P_SRV debug_level=3 dtls=1" \
Angus Grattonc4dd0732018-04-11 16:28:39 +10004650 "$P_CLI debug_level=3 dtls=1 request_size=$(( $MAX_CONTENT_LEN + 1))" \
Hanno Beckerc5266962017-09-18 15:01:50 +01004651 1 \
Hanno Becker59d36702021-06-08 05:35:29 +01004652 -c "Maximum incoming record payload length is $MAX_CONTENT_LEN" \
4653 -c "Maximum outgoing record payload length is $MAX_CONTENT_LEN" \
4654 -s "Maximum incoming record payload length is $MAX_CONTENT_LEN" \
4655 -s "Maximum outgoing record payload length is $MAX_CONTENT_LEN" \
Hanno Beckerc5266962017-09-18 15:01:50 +01004656 -C "client hello, adding max_fragment_length extension" \
4657 -S "found max fragment length extension" \
4658 -S "server hello, max_fragment_length extension" \
4659 -C "found max_fragment_length extension" \
4660 -c "fragment larger than.*maximum "
4661
Angus Grattonc4dd0732018-04-11 16:28:39 +10004662# Run some tests with MBEDTLS_SSL_MAX_FRAGMENT_LENGTH disabled
4663# (session fragment length will be 16384 regardless of mbedtls
4664# content length configuration.)
4665
Hanno Beckerc5266962017-09-18 15:01:50 +01004666requires_config_disabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08004667requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckerc5266962017-09-18 15:01:50 +01004668run_test "Max fragment length: disabled, larger message" \
Waleed Elmelegy3d46b7f2024-01-01 20:50:53 +00004669 "$P_SRV debug_level=3 force_version=tls12" \
Angus Grattonc4dd0732018-04-11 16:28:39 +10004670 "$P_CLI debug_level=3 request_size=$(( $MAX_CONTENT_LEN + 1))" \
Hanno Beckerc5266962017-09-18 15:01:50 +01004671 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01004672 -C "Maximum incoming record payload length is 16384" \
4673 -C "Maximum outgoing record payload length is 16384" \
4674 -S "Maximum incoming record payload length is 16384" \
4675 -S "Maximum outgoing record payload length is 16384" \
Angus Grattonc4dd0732018-04-11 16:28:39 +10004676 -c "$(( $MAX_CONTENT_LEN + 1)) bytes written in 2 fragments" \
4677 -s "$MAX_CONTENT_LEN bytes read" \
Hanno Becker9cfabe32017-10-18 14:42:01 +01004678 -s "1 bytes read"
Hanno Beckerc5266962017-09-18 15:01:50 +01004679
4680requires_config_disabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08004681requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Yuto Takano0509fea2021-06-21 19:43:33 +01004682run_test "Max fragment length, DTLS: disabled, larger message" \
Waleed Elmelegy3d46b7f2024-01-01 20:50:53 +00004683 "$P_SRV debug_level=3 dtls=1 force_version=tls12" \
Angus Grattonc4dd0732018-04-11 16:28:39 +10004684 "$P_CLI debug_level=3 dtls=1 request_size=$(( $MAX_CONTENT_LEN + 1))" \
Hanno Beckerc5266962017-09-18 15:01:50 +01004685 1 \
Hanno Becker59d36702021-06-08 05:35:29 +01004686 -C "Maximum incoming record payload length is 16384" \
4687 -C "Maximum outgoing record payload length is 16384" \
4688 -S "Maximum incoming record payload length is 16384" \
4689 -S "Maximum outgoing record payload length is 16384" \
Hanno Beckerc5266962017-09-18 15:01:50 +01004690 -c "fragment larger than.*maximum "
4691
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01004692requires_max_content_len 4096
Hanno Beckerc5266962017-09-18 15:01:50 +01004693requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004694run_test "Max fragment length: used by client" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004695 "$P_SRV debug_level=3" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +01004696 "$P_CLI force_version=tls12 debug_level=3 max_frag_len=4096" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01004697 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01004698 -c "Maximum incoming record payload length is 4096" \
4699 -c "Maximum outgoing record payload length is 4096" \
4700 -s "Maximum incoming record payload length is 4096" \
4701 -s "Maximum outgoing record payload length is 4096" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004702 -c "client hello, adding max_fragment_length extension" \
4703 -s "found max fragment length extension" \
4704 -s "server hello, max_fragment_length extension" \
4705 -c "found max_fragment_length extension"
4706
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01004707requires_max_content_len 1024
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004708requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4709run_test "Max fragment length: client 512, server 1024" \
4710 "$P_SRV debug_level=3 max_frag_len=1024" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +01004711 "$P_CLI force_version=tls12 debug_level=3 max_frag_len=512" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004712 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01004713 -c "Maximum incoming record payload length is 512" \
4714 -c "Maximum outgoing record payload length is 512" \
4715 -s "Maximum incoming record payload length is 512" \
4716 -s "Maximum outgoing record payload length is 512" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004717 -c "client hello, adding max_fragment_length extension" \
4718 -s "found max fragment length extension" \
4719 -s "server hello, max_fragment_length extension" \
4720 -c "found max_fragment_length extension"
4721
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01004722requires_max_content_len 2048
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004723requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4724run_test "Max fragment length: client 512, server 2048" \
4725 "$P_SRV debug_level=3 max_frag_len=2048" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +01004726 "$P_CLI force_version=tls12 debug_level=3 max_frag_len=512" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004727 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01004728 -c "Maximum incoming record payload length is 512" \
4729 -c "Maximum outgoing record payload length is 512" \
4730 -s "Maximum incoming record payload length is 512" \
4731 -s "Maximum outgoing record payload length is 512" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004732 -c "client hello, adding max_fragment_length extension" \
4733 -s "found max fragment length extension" \
4734 -s "server hello, max_fragment_length extension" \
4735 -c "found max_fragment_length extension"
4736
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01004737requires_max_content_len 4096
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004738requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4739run_test "Max fragment length: client 512, server 4096" \
4740 "$P_SRV debug_level=3 max_frag_len=4096" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +01004741 "$P_CLI force_version=tls12 debug_level=3 max_frag_len=512" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004742 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01004743 -c "Maximum incoming record payload length is 512" \
4744 -c "Maximum outgoing record payload length is 512" \
4745 -s "Maximum incoming record payload length is 512" \
4746 -s "Maximum outgoing record payload length is 512" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004747 -c "client hello, adding max_fragment_length extension" \
4748 -s "found max fragment length extension" \
4749 -s "server hello, max_fragment_length extension" \
4750 -c "found max_fragment_length extension"
4751
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01004752requires_max_content_len 1024
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004753requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4754run_test "Max fragment length: client 1024, server 512" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +01004755 "$P_SRV force_version=tls12 debug_level=3 max_frag_len=512" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004756 "$P_CLI debug_level=3 max_frag_len=1024" \
4757 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01004758 -c "Maximum incoming record payload length is 1024" \
4759 -c "Maximum outgoing record payload length is 1024" \
4760 -s "Maximum incoming record payload length is 1024" \
4761 -s "Maximum outgoing record payload length is 512" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004762 -c "client hello, adding max_fragment_length extension" \
4763 -s "found max fragment length extension" \
4764 -s "server hello, max_fragment_length extension" \
4765 -c "found max_fragment_length extension"
4766
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01004767requires_max_content_len 2048
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004768requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4769run_test "Max fragment length: client 1024, server 2048" \
4770 "$P_SRV debug_level=3 max_frag_len=2048" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +01004771 "$P_CLI force_version=tls12 debug_level=3 max_frag_len=1024" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004772 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01004773 -c "Maximum incoming record payload length is 1024" \
4774 -c "Maximum outgoing record payload length is 1024" \
4775 -s "Maximum incoming record payload length is 1024" \
4776 -s "Maximum outgoing record payload length is 1024" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004777 -c "client hello, adding max_fragment_length extension" \
4778 -s "found max fragment length extension" \
4779 -s "server hello, max_fragment_length extension" \
4780 -c "found max_fragment_length extension"
4781
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01004782requires_max_content_len 4096
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004783requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4784run_test "Max fragment length: client 1024, server 4096" \
4785 "$P_SRV debug_level=3 max_frag_len=4096" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +01004786 "$P_CLI force_version=tls12 debug_level=3 max_frag_len=1024" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004787 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01004788 -c "Maximum incoming record payload length is 1024" \
4789 -c "Maximum outgoing record payload length is 1024" \
4790 -s "Maximum incoming record payload length is 1024" \
4791 -s "Maximum outgoing record payload length is 1024" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004792 -c "client hello, adding max_fragment_length extension" \
4793 -s "found max fragment length extension" \
4794 -s "server hello, max_fragment_length extension" \
4795 -c "found max_fragment_length extension"
4796
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01004797requires_max_content_len 2048
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004798requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4799run_test "Max fragment length: client 2048, server 512" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +01004800 "$P_SRV force_version=tls12 debug_level=3 max_frag_len=512" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004801 "$P_CLI debug_level=3 max_frag_len=2048" \
4802 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01004803 -c "Maximum incoming record payload length is 2048" \
4804 -c "Maximum outgoing record payload length is 2048" \
4805 -s "Maximum incoming record payload length is 2048" \
4806 -s "Maximum outgoing record payload length is 512" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004807 -c "client hello, adding max_fragment_length extension" \
4808 -s "found max fragment length extension" \
4809 -s "server hello, max_fragment_length extension" \
4810 -c "found max_fragment_length extension"
4811
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01004812requires_max_content_len 2048
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004813requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4814run_test "Max fragment length: client 2048, server 1024" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +01004815 "$P_SRV force_version=tls12 debug_level=3 max_frag_len=1024" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004816 "$P_CLI debug_level=3 max_frag_len=2048" \
4817 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01004818 -c "Maximum incoming record payload length is 2048" \
4819 -c "Maximum outgoing record payload length is 2048" \
4820 -s "Maximum incoming record payload length is 2048" \
4821 -s "Maximum outgoing record payload length is 1024" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004822 -c "client hello, adding max_fragment_length extension" \
4823 -s "found max fragment length extension" \
4824 -s "server hello, max_fragment_length extension" \
4825 -c "found max_fragment_length extension"
4826
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01004827requires_max_content_len 4096
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004828requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4829run_test "Max fragment length: client 2048, server 4096" \
4830 "$P_SRV debug_level=3 max_frag_len=4096" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +01004831 "$P_CLI force_version=tls12 debug_level=3 max_frag_len=2048" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004832 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01004833 -c "Maximum incoming record payload length is 2048" \
4834 -c "Maximum outgoing record payload length is 2048" \
4835 -s "Maximum incoming record payload length is 2048" \
4836 -s "Maximum outgoing record payload length is 2048" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004837 -c "client hello, adding max_fragment_length extension" \
4838 -s "found max fragment length extension" \
4839 -s "server hello, max_fragment_length extension" \
4840 -c "found max_fragment_length extension"
4841
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01004842requires_max_content_len 4096
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004843requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4844run_test "Max fragment length: client 4096, server 512" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +01004845 "$P_SRV force_version=tls12 debug_level=3 max_frag_len=512" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004846 "$P_CLI debug_level=3 max_frag_len=4096" \
4847 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01004848 -c "Maximum incoming record payload length is 4096" \
4849 -c "Maximum outgoing record payload length is 4096" \
4850 -s "Maximum incoming record payload length is 4096" \
4851 -s "Maximum outgoing record payload length is 512" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004852 -c "client hello, adding max_fragment_length extension" \
4853 -s "found max fragment length extension" \
4854 -s "server hello, max_fragment_length extension" \
4855 -c "found max_fragment_length extension"
4856
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01004857requires_max_content_len 4096
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004858requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4859run_test "Max fragment length: client 4096, server 1024" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +01004860 "$P_SRV force_version=tls12 debug_level=3 max_frag_len=1024" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004861 "$P_CLI debug_level=3 max_frag_len=4096" \
4862 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01004863 -c "Maximum incoming record payload length is 4096" \
4864 -c "Maximum outgoing record payload length is 4096" \
4865 -s "Maximum incoming record payload length is 4096" \
4866 -s "Maximum outgoing record payload length is 1024" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004867 -c "client hello, adding max_fragment_length extension" \
4868 -s "found max fragment length extension" \
4869 -s "server hello, max_fragment_length extension" \
4870 -c "found max_fragment_length extension"
4871
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01004872requires_max_content_len 4096
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004873requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4874run_test "Max fragment length: client 4096, server 2048" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +01004875 "$P_SRV force_version=tls12 debug_level=3 max_frag_len=2048" \
Andrzej Kurek90c6e842020-04-03 05:25:29 -04004876 "$P_CLI debug_level=3 max_frag_len=4096" \
4877 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01004878 -c "Maximum incoming record payload length is 4096" \
4879 -c "Maximum outgoing record payload length is 4096" \
4880 -s "Maximum incoming record payload length is 4096" \
4881 -s "Maximum outgoing record payload length is 2048" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01004882 -c "client hello, adding max_fragment_length extension" \
4883 -s "found max fragment length extension" \
4884 -s "server hello, max_fragment_length extension" \
4885 -c "found max_fragment_length extension"
4886
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01004887requires_max_content_len 4096
Hanno Becker4aed27e2017-09-18 15:00:34 +01004888requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004889run_test "Max fragment length: used by server" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +01004890 "$P_SRV force_version=tls12 debug_level=3 max_frag_len=4096" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004891 "$P_CLI debug_level=3" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01004892 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01004893 -c "Maximum incoming record payload length is $MAX_CONTENT_LEN" \
4894 -c "Maximum outgoing record payload length is $MAX_CONTENT_LEN" \
4895 -s "Maximum incoming record payload length is $MAX_CONTENT_LEN" \
4896 -s "Maximum outgoing record payload length is 4096" \
Manuel Pégourié-Gonnardde143782014-02-20 14:50:42 +01004897 -C "client hello, adding max_fragment_length extension" \
4898 -S "found max fragment length extension" \
4899 -S "server hello, max_fragment_length extension" \
4900 -C "found max_fragment_length extension"
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01004901
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01004902requires_max_content_len 4096
Hanno Becker4aed27e2017-09-18 15:00:34 +01004903requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004904requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08004905requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02004906run_test "Max fragment length: gnutls server" \
Ronald Croncbd7bfd2022-03-31 18:19:56 +02004907 "$G_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02004908 "$P_CLI debug_level=3 max_frag_len=4096" \
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +02004909 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01004910 -c "Maximum incoming record payload length is 4096" \
4911 -c "Maximum outgoing record payload length is 4096" \
Manuel Pégourié-Gonnardbaa7f072014-08-20 20:15:53 +02004912 -c "client hello, adding max_fragment_length extension" \
4913 -c "found max_fragment_length extension"
4914
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01004915requires_max_content_len 2048
Hanno Becker4aed27e2017-09-18 15:00:34 +01004916requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02004917run_test "Max fragment length: client, message just fits" \
4918 "$P_SRV debug_level=3" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +01004919 "$P_CLI force_version=tls12 debug_level=3 max_frag_len=2048 request_size=2048" \
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02004920 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01004921 -c "Maximum incoming record payload length is 2048" \
4922 -c "Maximum outgoing record payload length is 2048" \
4923 -s "Maximum incoming record payload length is 2048" \
4924 -s "Maximum outgoing record payload length is 2048" \
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02004925 -c "client hello, adding max_fragment_length extension" \
4926 -s "found max fragment length extension" \
4927 -s "server hello, max_fragment_length extension" \
4928 -c "found max_fragment_length extension" \
4929 -c "2048 bytes written in 1 fragments" \
4930 -s "2048 bytes read"
4931
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01004932requires_max_content_len 2048
Hanno Becker4aed27e2017-09-18 15:00:34 +01004933requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02004934run_test "Max fragment length: client, larger message" \
4935 "$P_SRV debug_level=3" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +01004936 "$P_CLI force_version=tls12 debug_level=3 max_frag_len=2048 request_size=2345" \
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02004937 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01004938 -c "Maximum incoming record payload length is 2048" \
4939 -c "Maximum outgoing record payload length is 2048" \
4940 -s "Maximum incoming record payload length is 2048" \
4941 -s "Maximum outgoing record payload length is 2048" \
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02004942 -c "client hello, adding max_fragment_length extension" \
4943 -s "found max fragment length extension" \
4944 -s "server hello, max_fragment_length extension" \
4945 -c "found max_fragment_length extension" \
4946 -c "2345 bytes written in 2 fragments" \
4947 -s "2048 bytes read" \
4948 -s "297 bytes read"
4949
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01004950requires_max_content_len 2048
Hanno Becker4aed27e2017-09-18 15:00:34 +01004951requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Jerry Yuab082902021-12-23 18:02:22 +08004952requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard23eb74d2015-01-21 14:37:13 +00004953run_test "Max fragment length: DTLS client, larger message" \
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02004954 "$P_SRV debug_level=3 dtls=1" \
4955 "$P_CLI debug_level=3 dtls=1 max_frag_len=2048 request_size=2345" \
4956 1 \
Hanno Becker59d36702021-06-08 05:35:29 +01004957 -c "Maximum incoming record payload length is 2048" \
4958 -c "Maximum outgoing record payload length is 2048" \
4959 -s "Maximum incoming record payload length is 2048" \
4960 -s "Maximum outgoing record payload length is 2048" \
Manuel Pégourié-Gonnard37e08e12014-10-13 17:55:52 +02004961 -c "client hello, adding max_fragment_length extension" \
4962 -s "found max fragment length extension" \
4963 -s "server hello, max_fragment_length extension" \
4964 -c "found max_fragment_length extension" \
4965 -c "fragment larger than.*maximum"
4966
Jan Bruckneraa31b192023-02-06 12:54:29 +01004967# Tests for Record Size Limit extension
4968
Jan Bruckneraa31b192023-02-06 12:54:29 +01004969requires_gnutls_tls1_3
4970requires_gnutls_record_size_limit
Gilles Peskine365296a2024-09-13 14:15:46 +02004971requires_config_enabled MBEDTLS_SSL_SRV_C
4972requires_config_enabled MBEDTLS_DEBUG_C
Jan Bruckner151f6422023-02-10 12:45:19 +01004973requires_config_enabled MBEDTLS_SSL_RECORD_SIZE_LIMIT
Waleed Elmelegy9457e672024-01-08 15:40:12 +00004974requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jan Brucknerf482dcc2023-03-15 09:09:06 +01004975run_test "Record Size Limit: TLS 1.3: Server-side parsing and debug output" \
Jan Bruckner151f6422023-02-10 12:45:19 +01004976 "$P_SRV debug_level=3 force_version=tls13" \
Jan Bruckneraa31b192023-02-06 12:54:29 +01004977 "$G_NEXT_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 -V -d 4" \
Jan Brucknerf482dcc2023-03-15 09:09:06 +01004978 0 \
Jan Bruckner151f6422023-02-10 12:45:19 +01004979 -s "RecordSizeLimit: 16385 Bytes" \
Jan Brucknerf482dcc2023-03-15 09:09:06 +01004980 -s "ClientHello: record_size_limit(28) extension exists." \
Waleed Elmelegy87a373e2023-12-28 17:49:36 +00004981 -s "Maximum outgoing record payload length is 16383" \
Jan Brucknerf482dcc2023-03-15 09:09:06 +01004982 -s "bytes written in 1 fragments"
Jan Bruckner151f6422023-02-10 12:45:19 +01004983
4984requires_gnutls_tls1_3
4985requires_gnutls_record_size_limit
Gilles Peskine365296a2024-09-13 14:15:46 +02004986requires_config_enabled MBEDTLS_SSL_CLI_C
4987requires_config_enabled MBEDTLS_DEBUG_C
Jan Bruckner151f6422023-02-10 12:45:19 +01004988requires_config_enabled MBEDTLS_SSL_RECORD_SIZE_LIMIT
Waleed Elmelegy9457e672024-01-08 15:40:12 +00004989requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jan Brucknerf482dcc2023-03-15 09:09:06 +01004990run_test "Record Size Limit: TLS 1.3: Client-side parsing and debug output" \
Waleed Elmelegy9457e672024-01-08 15:40:12 +00004991 "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL --disable-client-cert -d 4" \
Jan Bruckner151f6422023-02-10 12:45:19 +01004992 "$P_CLI debug_level=4 force_version=tls13" \
Jan Bruckneraa31b192023-02-06 12:54:29 +01004993 0 \
Yanray Wang42017cd2023-11-08 11:15:23 +08004994 -c "Sent RecordSizeLimit: 16384 Bytes" \
Waleed Elmelegy3a377562024-01-05 18:13:42 +00004995 -c "ClientHello: record_size_limit(28) extension exists." \
Waleed Elmelegy3a377562024-01-05 18:13:42 +00004996 -c "EncryptedExtensions: record_size_limit(28) extension received." \
Yanray Wang42017cd2023-11-08 11:15:23 +08004997 -c "RecordSizeLimit: 16385 Bytes" \
Jan Brucknerf482dcc2023-03-15 09:09:06 +01004998
Waleed Elmelegyf5017902024-01-09 14:18:34 +00004999# In the following tests, --recordsize is the value used by the G_NEXT_CLI (3.7.2) to configure the
5000# maximum record size using gnutls_record_set_max_size()
5001# (https://gnutls.org/reference/gnutls-gnutls.html#gnutls-record-set-max-size).
5002# There is currently a lower limit of 512, caused by gnutls_record_set_max_size()
5003# not respecting the "%ALLOW_SMALL_RECORDS" priority string and not using the
5004# more recent function gnutls_record_set_max_recv_size()
5005# (https://gnutls.org/reference/gnutls-gnutls.html#gnutls-record-set-max-recv-size).
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005006# There is currently an upper limit of 4096, caused by the cli arg parser:
5007# https://gitlab.com/gnutls/gnutls/-/blob/3.7.2/src/cli-args.def#L395.
Waleed Elmelegyf5017902024-01-09 14:18:34 +00005008# Thus, these tests are currently limited to the value range 512-4096.
5009# Also, the value sent in the extension will be one larger than the value
5010# set at the command line:
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005011# https://gitlab.com/gnutls/gnutls/-/blob/3.7.2/lib/ext/record_size_limit.c#L142
Waleed Elmelegy9aec1c72023-12-05 20:08:51 +00005012
5013# Currently test certificates being used do not fit in 513 record size limit
Waleed Elmelegy87a373e2023-12-28 17:49:36 +00005014# so for 513 record size limit tests we use preshared key to avoid sending
5015# the certificate.
Waleed Elmelegy9aec1c72023-12-05 20:08:51 +00005016
Waleed Elmelegy87a373e2023-12-28 17:49:36 +00005017requires_gnutls_tls1_3
5018requires_gnutls_record_size_limit
Gilles Peskine365296a2024-09-13 14:15:46 +02005019requires_config_enabled MBEDTLS_SSL_SRV_C
5020requires_config_enabled MBEDTLS_DEBUG_C
Waleed Elmelegy87a373e2023-12-28 17:49:36 +00005021requires_config_enabled MBEDTLS_SSL_RECORD_SIZE_LIMIT
5022requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
5023run_test "Record Size Limit: TLS 1.3: Server complies with record size limit (513), 1 fragment" \
5024 "$P_SRV debug_level=3 force_version=tls13 tls13_kex_modes=psk \
5025 psk_list=Client_identity,6162636465666768696a6b6c6d6e6f70 \
5026 response_size=256" \
Waleed Elmelegy9457e672024-01-08 15:40:12 +00005027 "$G_NEXT_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+PSK --recordsize 512 \
5028 --pskusername Client_identity --pskkey=6162636465666768696a6b6c6d6e6f70" \
Waleed Elmelegy87a373e2023-12-28 17:49:36 +00005029 0 \
5030 -s "RecordSizeLimit: 513 Bytes" \
Waleed Elmelegy9457e672024-01-08 15:40:12 +00005031 -s "ClientHello: record_size_limit(28) extension exists." \
5032 -s "Sent RecordSizeLimit: 16384 Bytes" \
5033 -s "EncryptedExtensions: record_size_limit(28) extension exists." \
Waleed Elmelegy87a373e2023-12-28 17:49:36 +00005034 -s "Maximum outgoing record payload length is 511" \
5035 -s "256 bytes written in 1 fragments"
Waleed Elmelegy9aec1c72023-12-05 20:08:51 +00005036
Waleed Elmelegy87a373e2023-12-28 17:49:36 +00005037requires_gnutls_tls1_3
5038requires_gnutls_record_size_limit
Gilles Peskine365296a2024-09-13 14:15:46 +02005039requires_config_enabled MBEDTLS_SSL_SRV_C
5040requires_config_enabled MBEDTLS_DEBUG_C
Waleed Elmelegy87a373e2023-12-28 17:49:36 +00005041requires_config_enabled MBEDTLS_SSL_RECORD_SIZE_LIMIT
5042requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
5043run_test "Record Size Limit: TLS 1.3: Server complies with record size limit (513), 2 fragments" \
5044 "$P_SRV debug_level=3 force_version=tls13 tls13_kex_modes=psk \
5045 psk_list=Client_identity,6162636465666768696a6b6c6d6e6f70 \
5046 response_size=768" \
5047 "$G_NEXT_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+PSK --recordsize 512 \
5048 --pskusername Client_identity --pskkey=6162636465666768696a6b6c6d6e6f70" \
5049 0 \
5050 -s "RecordSizeLimit: 513 Bytes" \
Waleed Elmelegy9457e672024-01-08 15:40:12 +00005051 -s "ClientHello: record_size_limit(28) extension exists." \
5052 -s "Sent RecordSizeLimit: 16384 Bytes" \
5053 -s "EncryptedExtensions: record_size_limit(28) extension exists." \
Waleed Elmelegy87a373e2023-12-28 17:49:36 +00005054 -s "Maximum outgoing record payload length is 511" \
5055 -s "768 bytes written in 2 fragments"
Waleed Elmelegy9aec1c72023-12-05 20:08:51 +00005056
Waleed Elmelegy87a373e2023-12-28 17:49:36 +00005057requires_gnutls_tls1_3
5058requires_gnutls_record_size_limit
Gilles Peskine365296a2024-09-13 14:15:46 +02005059requires_config_enabled MBEDTLS_SSL_SRV_C
5060requires_config_enabled MBEDTLS_DEBUG_C
Waleed Elmelegy87a373e2023-12-28 17:49:36 +00005061requires_config_enabled MBEDTLS_SSL_RECORD_SIZE_LIMIT
5062requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
5063run_test "Record Size Limit: TLS 1.3: Server complies with record size limit (513), 3 fragments" \
5064 "$P_SRV debug_level=3 force_version=tls13 tls13_kex_modes=psk \
5065 psk_list=Client_identity,6162636465666768696a6b6c6d6e6f70 \
5066 response_size=1280" \
5067 "$G_NEXT_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+PSK --recordsize 512 \
5068 --pskusername Client_identity --pskkey=6162636465666768696a6b6c6d6e6f70" \
5069 0 \
5070 -s "RecordSizeLimit: 513 Bytes" \
Waleed Elmelegy9457e672024-01-08 15:40:12 +00005071 -s "ClientHello: record_size_limit(28) extension exists." \
5072 -s "Sent RecordSizeLimit: 16384 Bytes" \
5073 -s "EncryptedExtensions: record_size_limit(28) extension exists." \
Waleed Elmelegy87a373e2023-12-28 17:49:36 +00005074 -s "Maximum outgoing record payload length is 511" \
5075 -s "1280 bytes written in 3 fragments"
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005076
5077requires_gnutls_tls1_3
5078requires_gnutls_record_size_limit
Gilles Peskine365296a2024-09-13 14:15:46 +02005079requires_config_enabled MBEDTLS_SSL_SRV_C
5080requires_config_enabled MBEDTLS_DEBUG_C
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005081requires_config_enabled MBEDTLS_SSL_RECORD_SIZE_LIMIT
Waleed Elmelegy60f0f722024-01-04 14:57:31 +00005082requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005083run_test "Record Size Limit: TLS 1.3: Server complies with record size limit (1024), 1 fragment" \
5084 "$P_SRV debug_level=3 force_version=tls13 response_size=512" \
5085 "$G_NEXT_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 -V -d 4 --recordsize 1023" \
5086 0 \
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005087 -s "RecordSizeLimit: 1024 Bytes" \
5088 -s "ClientHello: record_size_limit(28) extension exists." \
Waleed Elmelegy47d29462024-01-03 17:31:52 +00005089 -s "Sent RecordSizeLimit: 16384 Bytes" \
5090 -s "EncryptedExtensions: record_size_limit(28) extension exists." \
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005091 -s "Maximum outgoing record payload length is 1023" \
5092 -s "512 bytes written in 1 fragments"
5093
5094requires_gnutls_tls1_3
5095requires_gnutls_record_size_limit
Gilles Peskine365296a2024-09-13 14:15:46 +02005096requires_config_enabled MBEDTLS_SSL_SRV_C
5097requires_config_enabled MBEDTLS_DEBUG_C
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005098requires_config_enabled MBEDTLS_SSL_RECORD_SIZE_LIMIT
Waleed Elmelegy60f0f722024-01-04 14:57:31 +00005099requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005100run_test "Record Size Limit: TLS 1.3: Server complies with record size limit (1024), 2 fragments" \
5101 "$P_SRV debug_level=3 force_version=tls13 response_size=1536" \
5102 "$G_NEXT_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 -V -d 4 --recordsize 1023" \
5103 0 \
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005104 -s "RecordSizeLimit: 1024 Bytes" \
5105 -s "ClientHello: record_size_limit(28) extension exists." \
Waleed Elmelegy47d29462024-01-03 17:31:52 +00005106 -s "Sent RecordSizeLimit: 16384 Bytes" \
5107 -s "EncryptedExtensions: record_size_limit(28) extension exists." \
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005108 -s "Maximum outgoing record payload length is 1023" \
5109 -s "1536 bytes written in 2 fragments"
5110
5111requires_gnutls_tls1_3
5112requires_gnutls_record_size_limit
Gilles Peskine365296a2024-09-13 14:15:46 +02005113requires_config_enabled MBEDTLS_SSL_SRV_C
5114requires_config_enabled MBEDTLS_DEBUG_C
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005115requires_config_enabled MBEDTLS_SSL_RECORD_SIZE_LIMIT
Waleed Elmelegy60f0f722024-01-04 14:57:31 +00005116requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005117run_test "Record Size Limit: TLS 1.3: Server complies with record size limit (1024), 3 fragments" \
5118 "$P_SRV debug_level=3 force_version=tls13 response_size=2560" \
5119 "$G_NEXT_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 -V -d 4 --recordsize 1023" \
5120 0 \
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005121 -s "RecordSizeLimit: 1024 Bytes" \
5122 -s "ClientHello: record_size_limit(28) extension exists." \
Waleed Elmelegy47d29462024-01-03 17:31:52 +00005123 -s "Sent RecordSizeLimit: 16384 Bytes" \
5124 -s "EncryptedExtensions: record_size_limit(28) extension exists." \
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005125 -s "Maximum outgoing record payload length is 1023" \
5126 -s "2560 bytes written in 3 fragments"
5127
5128requires_gnutls_tls1_3
5129requires_gnutls_record_size_limit
Gilles Peskine365296a2024-09-13 14:15:46 +02005130requires_config_enabled MBEDTLS_SSL_SRV_C
5131requires_config_enabled MBEDTLS_DEBUG_C
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005132requires_config_enabled MBEDTLS_SSL_RECORD_SIZE_LIMIT
Waleed Elmelegy60f0f722024-01-04 14:57:31 +00005133requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005134run_test "Record Size Limit: TLS 1.3: Server complies with record size limit (4096), 1 fragment" \
5135 "$P_SRV debug_level=3 force_version=tls13 response_size=2048" \
5136 "$G_NEXT_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 -V -d 4 --recordsize 4095" \
5137 0 \
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005138 -s "RecordSizeLimit: 4096 Bytes" \
5139 -s "ClientHello: record_size_limit(28) extension exists." \
Waleed Elmelegy47d29462024-01-03 17:31:52 +00005140 -s "Sent RecordSizeLimit: 16384 Bytes" \
5141 -s "EncryptedExtensions: record_size_limit(28) extension exists." \
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005142 -s "Maximum outgoing record payload length is 4095" \
5143 -s "2048 bytes written in 1 fragments"
5144
5145requires_gnutls_tls1_3
5146requires_gnutls_record_size_limit
Gilles Peskine365296a2024-09-13 14:15:46 +02005147requires_config_enabled MBEDTLS_SSL_SRV_C
5148requires_config_enabled MBEDTLS_DEBUG_C
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005149requires_config_enabled MBEDTLS_SSL_RECORD_SIZE_LIMIT
Waleed Elmelegy60f0f722024-01-04 14:57:31 +00005150requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005151run_test "Record Size Limit: TLS 1.3: Server complies with record size limit (4096), 2 fragments" \
5152 "$P_SRV debug_level=3 force_version=tls13 response_size=6144" \
5153 "$G_NEXT_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 -V -d 4 --recordsize 4095" \
5154 0 \
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005155 -s "RecordSizeLimit: 4096 Bytes" \
5156 -s "ClientHello: record_size_limit(28) extension exists." \
Waleed Elmelegy47d29462024-01-03 17:31:52 +00005157 -s "Sent RecordSizeLimit: 16384 Bytes" \
5158 -s "EncryptedExtensions: record_size_limit(28) extension exists." \
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005159 -s "Maximum outgoing record payload length is 4095" \
5160 -s "6144 bytes written in 2 fragments"
5161
5162requires_gnutls_tls1_3
5163requires_gnutls_record_size_limit
Gilles Peskine365296a2024-09-13 14:15:46 +02005164requires_config_enabled MBEDTLS_SSL_SRV_C
5165requires_config_enabled MBEDTLS_DEBUG_C
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005166requires_config_enabled MBEDTLS_SSL_RECORD_SIZE_LIMIT
Waleed Elmelegy60f0f722024-01-04 14:57:31 +00005167requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005168run_test "Record Size Limit: TLS 1.3: Server complies with record size limit (4096), 3 fragments" \
5169 "$P_SRV debug_level=3 force_version=tls13 response_size=10240" \
5170 "$G_NEXT_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 -V -d 4 --recordsize 4095" \
5171 0 \
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005172 -s "RecordSizeLimit: 4096 Bytes" \
5173 -s "ClientHello: record_size_limit(28) extension exists." \
Waleed Elmelegy598ea092024-01-03 17:34:03 +00005174 -s "Sent RecordSizeLimit: 16384 Bytes" \
5175 -s "EncryptedExtensions: record_size_limit(28) extension exists." \
Jan Brucknerf482dcc2023-03-15 09:09:06 +01005176 -s "Maximum outgoing record payload length is 4095" \
5177 -s "10240 bytes written in 3 fragments"
Jan Bruckneraa31b192023-02-06 12:54:29 +01005178
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005179requires_gnutls_tls1_3
5180requires_gnutls_record_size_limit
Gilles Peskine365296a2024-09-13 14:15:46 +02005181requires_config_enabled MBEDTLS_SSL_CLI_C
5182requires_config_enabled MBEDTLS_DEBUG_C
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005183requires_config_enabled MBEDTLS_SSL_RECORD_SIZE_LIMIT
5184requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
5185run_test "Record Size Limit: TLS 1.3: Client complies with record size limit (513), 1 fragment" \
5186 "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL -d 4 --disable-client-cert --recordsize 512" \
5187 "$P_CLI debug_level=4 force_version=tls13 request_size=256" \
5188 0 \
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005189 -c "Sent RecordSizeLimit: 16384 Bytes" \
Waleed Elmelegy14877602024-01-10 16:15:08 +00005190 -c "ClientHello: record_size_limit(28) extension exists." \
5191 -c "RecordSizeLimit: 513 Bytes" \
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005192 -c "EncryptedExtensions: record_size_limit(28) extension exists." \
5193 -c "Maximum outgoing record payload length is 511" \
5194 -c "256 bytes written in 1 fragments"
5195
5196requires_gnutls_tls1_3
5197requires_gnutls_record_size_limit
Gilles Peskine365296a2024-09-13 14:15:46 +02005198requires_config_enabled MBEDTLS_SSL_CLI_C
5199requires_config_enabled MBEDTLS_DEBUG_C
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005200requires_config_enabled MBEDTLS_SSL_RECORD_SIZE_LIMIT
5201requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
5202run_test "Record Size Limit: TLS 1.3: Client complies with record size limit (513), 2 fragments" \
5203 "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL -d 4 --disable-client-cert --recordsize 512" \
5204 "$P_CLI debug_level=4 force_version=tls13 request_size=768" \
5205 0 \
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005206 -c "Sent RecordSizeLimit: 16384 Bytes" \
Waleed Elmelegy14877602024-01-10 16:15:08 +00005207 -c "ClientHello: record_size_limit(28) extension exists." \
5208 -c "RecordSizeLimit: 513 Bytes" \
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005209 -c "EncryptedExtensions: record_size_limit(28) extension exists." \
5210 -c "Maximum outgoing record payload length is 511" \
5211 -c "768 bytes written in 2 fragments"
5212
5213requires_gnutls_tls1_3
5214requires_gnutls_record_size_limit
Gilles Peskine365296a2024-09-13 14:15:46 +02005215requires_config_enabled MBEDTLS_SSL_CLI_C
5216requires_config_enabled MBEDTLS_DEBUG_C
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005217requires_config_enabled MBEDTLS_SSL_RECORD_SIZE_LIMIT
5218requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
5219run_test "Record Size Limit: TLS 1.3: Client complies with record size limit (513), 3 fragments" \
5220 "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL -d 4 --disable-client-cert --recordsize 512" \
5221 "$P_CLI debug_level=4 force_version=tls13 request_size=1280" \
5222 0 \
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005223 -c "Sent RecordSizeLimit: 16384 Bytes" \
Waleed Elmelegy14877602024-01-10 16:15:08 +00005224 -c "ClientHello: record_size_limit(28) extension exists." \
5225 -c "RecordSizeLimit: 513 Bytes" \
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005226 -c "EncryptedExtensions: record_size_limit(28) extension exists." \
5227 -c "Maximum outgoing record payload length is 511" \
5228 -c "1280 bytes written in 3 fragments"
5229
5230requires_gnutls_tls1_3
5231requires_gnutls_record_size_limit
Gilles Peskine365296a2024-09-13 14:15:46 +02005232requires_config_enabled MBEDTLS_SSL_CLI_C
5233requires_config_enabled MBEDTLS_DEBUG_C
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005234requires_config_enabled MBEDTLS_SSL_RECORD_SIZE_LIMIT
5235requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
5236run_test "Record Size Limit: TLS 1.3: Client complies with record size limit (1024), 1 fragment" \
5237 "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL -d 4 --recordsize 1023" \
5238 "$P_CLI debug_level=4 force_version=tls13 request_size=512" \
5239 0 \
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005240 -c "Sent RecordSizeLimit: 16384 Bytes" \
Waleed Elmelegy14877602024-01-10 16:15:08 +00005241 -c "ClientHello: record_size_limit(28) extension exists." \
5242 -c "RecordSizeLimit: 1024 Bytes" \
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005243 -c "EncryptedExtensions: record_size_limit(28) extension exists." \
5244 -c "Maximum outgoing record payload length is 1023" \
5245 -c "512 bytes written in 1 fragments"
5246
5247requires_gnutls_tls1_3
5248requires_gnutls_record_size_limit
Gilles Peskine365296a2024-09-13 14:15:46 +02005249requires_config_enabled MBEDTLS_SSL_CLI_C
5250requires_config_enabled MBEDTLS_DEBUG_C
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005251requires_config_enabled MBEDTLS_SSL_RECORD_SIZE_LIMIT
5252requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
5253run_test "Record Size Limit: TLS 1.3: Client complies with record size limit (1024), 2 fragments" \
5254 "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL -d 4 --recordsize 1023" \
5255 "$P_CLI debug_level=4 force_version=tls13 request_size=1536" \
5256 0 \
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005257 -c "Sent RecordSizeLimit: 16384 Bytes" \
Waleed Elmelegy14877602024-01-10 16:15:08 +00005258 -c "ClientHello: record_size_limit(28) extension exists." \
5259 -c "RecordSizeLimit: 1024 Bytes" \
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005260 -c "EncryptedExtensions: record_size_limit(28) extension exists." \
5261 -c "Maximum outgoing record payload length is 1023" \
5262 -c "1536 bytes written in 2 fragments"
5263
5264requires_gnutls_tls1_3
5265requires_gnutls_record_size_limit
Gilles Peskine365296a2024-09-13 14:15:46 +02005266requires_config_enabled MBEDTLS_SSL_CLI_C
5267requires_config_enabled MBEDTLS_DEBUG_C
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005268requires_config_enabled MBEDTLS_SSL_RECORD_SIZE_LIMIT
5269requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
5270run_test "Record Size Limit: TLS 1.3: Client complies with record size limit (1024), 3 fragments" \
5271 "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL -d 4 --recordsize 1023" \
5272 "$P_CLI debug_level=4 force_version=tls13 request_size=2560" \
5273 0 \
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005274 -c "Sent RecordSizeLimit: 16384 Bytes" \
Waleed Elmelegy14877602024-01-10 16:15:08 +00005275 -c "ClientHello: record_size_limit(28) extension exists." \
5276 -c "RecordSizeLimit: 1024 Bytes" \
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005277 -c "EncryptedExtensions: record_size_limit(28) extension exists." \
5278 -c "Maximum outgoing record payload length is 1023" \
5279 -c "2560 bytes written in 3 fragments"
5280
5281requires_gnutls_tls1_3
5282requires_gnutls_record_size_limit
Gilles Peskine365296a2024-09-13 14:15:46 +02005283requires_config_enabled MBEDTLS_SSL_CLI_C
5284requires_config_enabled MBEDTLS_DEBUG_C
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005285requires_config_enabled MBEDTLS_SSL_RECORD_SIZE_LIMIT
5286requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
5287run_test "Record Size Limit: TLS 1.3: Client complies with record size limit (4096), 1 fragment" \
5288 "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL -d 4 --recordsize 4095" \
5289 "$P_CLI debug_level=4 force_version=tls13 request_size=2048" \
5290 0 \
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005291 -c "Sent RecordSizeLimit: 16384 Bytes" \
Waleed Elmelegy14877602024-01-10 16:15:08 +00005292 -c "ClientHello: record_size_limit(28) extension exists." \
5293 -c "RecordSizeLimit: 4096 Bytes" \
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005294 -c "EncryptedExtensions: record_size_limit(28) extension exists." \
5295 -c "Maximum outgoing record payload length is 4095" \
5296 -c "2048 bytes written in 1 fragments"
5297
5298requires_gnutls_tls1_3
5299requires_gnutls_record_size_limit
Gilles Peskine365296a2024-09-13 14:15:46 +02005300requires_config_enabled MBEDTLS_SSL_CLI_C
5301requires_config_enabled MBEDTLS_DEBUG_C
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005302requires_config_enabled MBEDTLS_SSL_RECORD_SIZE_LIMIT
5303requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
5304run_test "Record Size Limit: TLS 1.3: Client complies with record size limit (4096), 2 fragments" \
5305 "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL -d 4 --recordsize 4095" \
5306 "$P_CLI debug_level=4 force_version=tls13 request_size=6144" \
5307 0 \
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005308 -c "Sent RecordSizeLimit: 16384 Bytes" \
Waleed Elmelegy14877602024-01-10 16:15:08 +00005309 -c "ClientHello: record_size_limit(28) extension exists." \
5310 -c "RecordSizeLimit: 4096 Bytes" \
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005311 -c "EncryptedExtensions: record_size_limit(28) extension exists." \
5312 -c "Maximum outgoing record payload length is 4095" \
5313 -c "6144 bytes written in 2 fragments"
5314
5315requires_gnutls_tls1_3
5316requires_gnutls_record_size_limit
Gilles Peskine365296a2024-09-13 14:15:46 +02005317requires_config_enabled MBEDTLS_SSL_CLI_C
5318requires_config_enabled MBEDTLS_DEBUG_C
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005319requires_config_enabled MBEDTLS_SSL_RECORD_SIZE_LIMIT
5320requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
5321run_test "Record Size Limit: TLS 1.3: Client complies with record size limit (4096), 3 fragments" \
5322 "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL -d 4 --recordsize 4095" \
5323 "$P_CLI debug_level=4 force_version=tls13 request_size=10240" \
5324 0 \
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005325 -c "Sent RecordSizeLimit: 16384 Bytes" \
Waleed Elmelegy14877602024-01-10 16:15:08 +00005326 -c "ClientHello: record_size_limit(28) extension exists." \
5327 -c "RecordSizeLimit: 4096 Bytes" \
Waleed Elmelegy2fa99b22024-01-09 17:15:03 +00005328 -c "EncryptedExtensions: record_size_limit(28) extension exists." \
5329 -c "Maximum outgoing record payload length is 4095" \
5330 -c "10240 bytes written in 3 fragments"
5331
Waleed Elmelegy598ea092024-01-03 17:34:03 +00005332# TODO: For time being, we send fixed value of RecordSizeLimit defined by
5333# MBEDTLS_SSL_IN_CONTENT_LEN. Once we support variable buffer length of
5334# RecordSizeLimit, we need to modify value of RecordSizeLimit in below test.
Waleed Elmelegy3a377562024-01-05 18:13:42 +00005335requires_config_value_equals "MBEDTLS_SSL_IN_CONTENT_LEN" 16384
Gilles Peskine365296a2024-09-13 14:15:46 +02005336requires_config_enabled MBEDTLS_SSL_CLI_C
5337requires_config_enabled MBEDTLS_SSL_SRV_C
5338requires_config_enabled MBEDTLS_DEBUG_C
Waleed Elmelegy598ea092024-01-03 17:34:03 +00005339requires_config_enabled MBEDTLS_SSL_RECORD_SIZE_LIMIT
Waleed Elmelegy3a377562024-01-05 18:13:42 +00005340requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
5341run_test "Record Size Limit: TLS 1.3 m->m: both peer comply with record size limit (default)" \
Waleed Elmelegy598ea092024-01-03 17:34:03 +00005342 "$P_SRV debug_level=4 force_version=tls13" \
Waleed Elmelegy3a377562024-01-05 18:13:42 +00005343 "$P_CLI debug_level=4" \
Waleed Elmelegy598ea092024-01-03 17:34:03 +00005344 0 \
Waleed Elmelegy3a377562024-01-05 18:13:42 +00005345 -c "Sent RecordSizeLimit: $MAX_IN_LEN Bytes" \
5346 -c "RecordSizeLimit: $MAX_IN_LEN Bytes" \
Waleed Elmelegy3a377562024-01-05 18:13:42 +00005347 -s "RecordSizeLimit: $MAX_IN_LEN Bytes" \
5348 -s "Sent RecordSizeLimit: $MAX_IN_LEN Bytes" \
5349 -s "Maximum outgoing record payload length is 16383" \
Waleed Elmelegy598ea092024-01-03 17:34:03 +00005350 -s "Maximum incoming record payload length is 16384"
5351
Waleed Elmelegyf5017902024-01-09 14:18:34 +00005352# End of Record size limit tests
5353
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01005354# Tests for renegotiation
5355
Waleed Elmelegy4b09dcd2024-01-12 10:50:25 +00005356# G_NEXT_SRV is used in renegotiation tests becuase of the increased
5357# extensions limit since we exceed the limit in G_SRV when we send
5358# TLS 1.3 extensions in the initial handshake.
5359
Hanno Becker6a243642017-10-12 15:18:45 +01005360# Renegotiation SCSV always added, regardless of SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005361run_test "Renegotiation: none, for reference" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01005362 "$P_SRV debug_level=3 exchanges=2 auth_mode=optional" \
Ronald Cronf95d1692023-03-14 17:19:42 +01005363 "$P_CLI force_version=tls12 debug_level=3 exchanges=2" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01005364 0 \
5365 -C "client hello, adding renegotiation extension" \
5366 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5367 -S "found renegotiation extension" \
5368 -s "server hello, secure renegotiation extension" \
5369 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01005370 -C "=> renegotiate" \
5371 -S "=> renegotiate" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01005372 -S "write hello request"
5373
Hanno Becker6a243642017-10-12 15:18:45 +01005374requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005375run_test "Renegotiation: client-initiated" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01005376 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional" \
Ronald Cronf95d1692023-03-14 17:19:42 +01005377 "$P_CLI force_version=tls12 debug_level=3 exchanges=2 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01005378 0 \
5379 -c "client hello, adding renegotiation extension" \
5380 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5381 -s "found renegotiation extension" \
5382 -s "server hello, secure renegotiation extension" \
5383 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01005384 -c "=> renegotiate" \
5385 -s "=> renegotiate" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01005386 -S "write hello request"
5387
Hanno Becker6a243642017-10-12 15:18:45 +01005388requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005389run_test "Renegotiation: server-initiated" \
Ronald Cronf95d1692023-03-14 17:19:42 +01005390 "$P_SRV force_version=tls12 debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional renegotiate=1" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005391 "$P_CLI debug_level=3 exchanges=2 renegotiation=1" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01005392 0 \
5393 -c "client hello, adding renegotiation extension" \
5394 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5395 -s "found renegotiation extension" \
5396 -s "server hello, secure renegotiation extension" \
5397 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01005398 -c "=> renegotiate" \
5399 -s "=> renegotiate" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01005400 -s "write hello request"
5401
Janos Follathb0f148c2017-10-05 12:29:42 +01005402# Checks that no Signature Algorithm with SHA-1 gets negotiated. Negotiating SHA-1 would mean that
5403# the server did not parse the Signature Algorithm extension. This test is valid only if an MD
Bence Szépkútibb0cfeb2021-05-28 09:42:25 +02005404# algorithm stronger than SHA-1 is enabled in mbedtls_config.h
Hanno Becker6a243642017-10-12 15:18:45 +01005405requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Janos Follathb0f148c2017-10-05 12:29:42 +01005406run_test "Renegotiation: Signature Algorithms parsing, client-initiated" \
5407 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional" \
Ronald Cronf95d1692023-03-14 17:19:42 +01005408 "$P_CLI force_version=tls12 debug_level=3 exchanges=2 renegotiation=1 renegotiate=1" \
Janos Follathb0f148c2017-10-05 12:29:42 +01005409 0 \
5410 -c "client hello, adding renegotiation extension" \
5411 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5412 -s "found renegotiation extension" \
5413 -s "server hello, secure renegotiation extension" \
5414 -c "found renegotiation extension" \
5415 -c "=> renegotiate" \
5416 -s "=> renegotiate" \
5417 -S "write hello request" \
5418 -S "client hello v3, signature_algorithm ext: 2" # Is SHA-1 negotiated?
5419
5420# Checks that no Signature Algorithm with SHA-1 gets negotiated. Negotiating SHA-1 would mean that
5421# the server did not parse the Signature Algorithm extension. This test is valid only if an MD
Bence Szépkútibb0cfeb2021-05-28 09:42:25 +02005422# algorithm stronger than SHA-1 is enabled in mbedtls_config.h
Hanno Becker6a243642017-10-12 15:18:45 +01005423requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Janos Follathb0f148c2017-10-05 12:29:42 +01005424run_test "Renegotiation: Signature Algorithms parsing, server-initiated" \
Ronald Cronf95d1692023-03-14 17:19:42 +01005425 "$P_SRV force_version=tls12 debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional renegotiate=1" \
Janos Follathb0f148c2017-10-05 12:29:42 +01005426 "$P_CLI debug_level=3 exchanges=2 renegotiation=1" \
5427 0 \
5428 -c "client hello, adding renegotiation extension" \
5429 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5430 -s "found renegotiation extension" \
5431 -s "server hello, secure renegotiation extension" \
5432 -c "found renegotiation extension" \
5433 -c "=> renegotiate" \
5434 -s "=> renegotiate" \
5435 -s "write hello request" \
5436 -S "client hello v3, signature_algorithm ext: 2" # Is SHA-1 negotiated?
5437
Hanno Becker6a243642017-10-12 15:18:45 +01005438requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005439run_test "Renegotiation: double" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01005440 "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional renegotiate=1" \
Ronald Cronf95d1692023-03-14 17:19:42 +01005441 "$P_CLI force_version=tls12 debug_level=3 exchanges=2 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01005442 0 \
5443 -c "client hello, adding renegotiation extension" \
5444 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5445 -s "found renegotiation extension" \
5446 -s "server hello, secure renegotiation extension" \
5447 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01005448 -c "=> renegotiate" \
5449 -s "=> renegotiate" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01005450 -s "write hello request"
5451
Hanno Becker6a243642017-10-12 15:18:45 +01005452requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Andrzej Kurek8ea68722020-04-03 06:40:47 -04005453requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanob0a1c5b2021-07-02 10:10:49 +01005454requires_max_content_len 2048
Andrzej Kurek8ea68722020-04-03 06:40:47 -04005455run_test "Renegotiation with max fragment length: client 2048, server 512" \
Ronald Cronf95d1692023-03-14 17:19:42 +01005456 "$P_SRV force_version=tls12 debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional renegotiate=1 max_frag_len=512" \
Andrzej Kurek8ea68722020-04-03 06:40:47 -04005457 "$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" \
5458 0 \
Hanno Becker59d36702021-06-08 05:35:29 +01005459 -c "Maximum incoming record payload length is 2048" \
5460 -c "Maximum outgoing record payload length is 2048" \
5461 -s "Maximum incoming record payload length is 2048" \
5462 -s "Maximum outgoing record payload length is 512" \
Andrzej Kurek8ea68722020-04-03 06:40:47 -04005463 -c "client hello, adding max_fragment_length extension" \
5464 -s "found max fragment length extension" \
5465 -s "server hello, max_fragment_length extension" \
5466 -c "found max_fragment_length extension" \
5467 -c "client hello, adding renegotiation extension" \
5468 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5469 -s "found renegotiation extension" \
5470 -s "server hello, secure renegotiation extension" \
5471 -c "found renegotiation extension" \
5472 -c "=> renegotiate" \
5473 -s "=> renegotiate" \
5474 -s "write hello request"
5475
5476requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005477run_test "Renegotiation: client-initiated, server-rejected" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01005478 "$P_SRV debug_level=3 exchanges=2 renegotiation=0 auth_mode=optional" \
Ronald Cronf95d1692023-03-14 17:19:42 +01005479 "$P_CLI force_version=tls12 debug_level=3 exchanges=2 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01005480 1 \
5481 -c "client hello, adding renegotiation extension" \
5482 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5483 -S "found renegotiation extension" \
5484 -s "server hello, secure renegotiation extension" \
5485 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01005486 -c "=> renegotiate" \
5487 -S "=> renegotiate" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02005488 -S "write hello request" \
Manuel Pégourié-Gonnard65919622014-08-19 12:50:30 +02005489 -c "SSL - Unexpected message at ServerHello in renegotiation" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02005490 -c "failed"
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01005491
Hanno Becker6a243642017-10-12 15:18:45 +01005492requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005493run_test "Renegotiation: server-initiated, client-rejected, default" \
Ronald Cronf95d1692023-03-14 17:19:42 +01005494 "$P_SRV force_version=tls12 debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005495 "$P_CLI debug_level=3 exchanges=2 renegotiation=0" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01005496 0 \
5497 -C "client hello, adding renegotiation extension" \
5498 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5499 -S "found renegotiation extension" \
5500 -s "server hello, secure renegotiation extension" \
5501 -c "found renegotiation extension" \
Manuel Pégourié-Gonnardc73339f2014-02-26 16:35:27 +01005502 -C "=> renegotiate" \
5503 -S "=> renegotiate" \
Manuel Pégourié-Gonnard780d6712014-02-20 17:19:59 +01005504 -s "write hello request" \
Manuel Pégourié-Gonnarda9964db2014-07-03 19:29:16 +02005505 -S "SSL - An unexpected message was received from our peer" \
5506 -S "failed"
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +01005507
Hanno Becker6a243642017-10-12 15:18:45 +01005508requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005509run_test "Renegotiation: server-initiated, client-rejected, not enforced" \
Ronald Cronf95d1692023-03-14 17:19:42 +01005510 "$P_SRV force_version=tls12 debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01005511 renego_delay=-1 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005512 "$P_CLI debug_level=3 exchanges=2 renegotiation=0" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02005513 0 \
5514 -C "client hello, adding renegotiation extension" \
5515 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5516 -S "found renegotiation extension" \
5517 -s "server hello, secure renegotiation extension" \
5518 -c "found renegotiation extension" \
5519 -C "=> renegotiate" \
5520 -S "=> renegotiate" \
5521 -s "write hello request" \
5522 -S "SSL - An unexpected message was received from our peer" \
5523 -S "failed"
5524
Manuel Pégourié-Gonnarda8c0a0d2014-08-15 12:07:38 +02005525# delay 2 for 1 alert record + 1 application data record
Hanno Becker6a243642017-10-12 15:18:45 +01005526requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005527run_test "Renegotiation: server-initiated, client-rejected, delay 2" \
Ronald Cronf95d1692023-03-14 17:19:42 +01005528 "$P_SRV force_version=tls12 debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01005529 renego_delay=2 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005530 "$P_CLI debug_level=3 exchanges=2 renegotiation=0" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02005531 0 \
5532 -C "client hello, adding renegotiation extension" \
5533 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5534 -S "found renegotiation extension" \
5535 -s "server hello, secure renegotiation extension" \
5536 -c "found renegotiation extension" \
5537 -C "=> renegotiate" \
5538 -S "=> renegotiate" \
5539 -s "write hello request" \
5540 -S "SSL - An unexpected message was received from our peer" \
5541 -S "failed"
5542
Hanno Becker6a243642017-10-12 15:18:45 +01005543requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005544run_test "Renegotiation: server-initiated, client-rejected, delay 0" \
Ronald Cronf95d1692023-03-14 17:19:42 +01005545 "$P_SRV force_version=tls12 debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01005546 renego_delay=0 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005547 "$P_CLI debug_level=3 exchanges=2 renegotiation=0" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02005548 0 \
5549 -C "client hello, adding renegotiation extension" \
5550 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5551 -S "found renegotiation extension" \
5552 -s "server hello, secure renegotiation extension" \
5553 -c "found renegotiation extension" \
5554 -C "=> renegotiate" \
5555 -S "=> renegotiate" \
5556 -s "write hello request" \
Manuel Pégourié-Gonnarda8c0a0d2014-08-15 12:07:38 +02005557 -s "SSL - An unexpected message was received from our peer"
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02005558
Hanno Becker6a243642017-10-12 15:18:45 +01005559requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005560run_test "Renegotiation: server-initiated, client-accepted, delay 0" \
Ronald Cronf95d1692023-03-14 17:19:42 +01005561 "$P_SRV force_version=tls12 debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01005562 renego_delay=0 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005563 "$P_CLI debug_level=3 exchanges=2 renegotiation=1" \
Manuel Pégourié-Gonnardfae355e2014-07-04 14:32:27 +02005564 0 \
5565 -c "client hello, adding renegotiation extension" \
5566 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5567 -s "found renegotiation extension" \
5568 -s "server hello, secure renegotiation extension" \
5569 -c "found renegotiation extension" \
5570 -c "=> renegotiate" \
5571 -s "=> renegotiate" \
5572 -s "write hello request" \
5573 -S "SSL - An unexpected message was received from our peer" \
5574 -S "failed"
5575
Hanno Becker6a243642017-10-12 15:18:45 +01005576requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01005577run_test "Renegotiation: periodic, just below period" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01005578 "$P_SRV debug_level=3 exchanges=9 renegotiation=1 renego_period=3 auth_mode=optional" \
Ronald Cronf95d1692023-03-14 17:19:42 +01005579 "$P_CLI force_version=tls12 debug_level=3 exchanges=2 renegotiation=1" \
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01005580 0 \
5581 -C "client hello, adding renegotiation extension" \
5582 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5583 -S "found renegotiation extension" \
5584 -s "server hello, secure renegotiation extension" \
5585 -c "found renegotiation extension" \
5586 -S "record counter limit reached: renegotiate" \
5587 -C "=> renegotiate" \
5588 -S "=> renegotiate" \
5589 -S "write hello request" \
5590 -S "SSL - An unexpected message was received from our peer" \
5591 -S "failed"
5592
Manuel Pégourié-Gonnard9835bc02015-01-14 14:41:58 +01005593# one extra exchange to be able to complete renego
Hanno Becker6a243642017-10-12 15:18:45 +01005594requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01005595run_test "Renegotiation: periodic, just above period" \
Ronald Cronf95d1692023-03-14 17:19:42 +01005596 "$P_SRV force_version=tls12 debug_level=3 exchanges=9 renegotiation=1 renego_period=3 auth_mode=optional" \
Manuel Pégourié-Gonnard9835bc02015-01-14 14:41:58 +01005597 "$P_CLI debug_level=3 exchanges=4 renegotiation=1" \
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01005598 0 \
5599 -c "client hello, adding renegotiation extension" \
5600 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5601 -s "found renegotiation extension" \
5602 -s "server hello, secure renegotiation extension" \
5603 -c "found renegotiation extension" \
5604 -s "record counter limit reached: renegotiate" \
5605 -c "=> renegotiate" \
5606 -s "=> renegotiate" \
5607 -s "write hello request" \
5608 -S "SSL - An unexpected message was received from our peer" \
5609 -S "failed"
5610
Hanno Becker6a243642017-10-12 15:18:45 +01005611requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01005612run_test "Renegotiation: periodic, two times period" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01005613 "$P_SRV debug_level=3 exchanges=9 renegotiation=1 renego_period=3 auth_mode=optional" \
Ronald Cronf95d1692023-03-14 17:19:42 +01005614 "$P_CLI force_version=tls12 debug_level=3 exchanges=7 renegotiation=1" \
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01005615 0 \
5616 -c "client hello, adding renegotiation extension" \
5617 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5618 -s "found renegotiation extension" \
5619 -s "server hello, secure renegotiation extension" \
5620 -c "found renegotiation extension" \
5621 -s "record counter limit reached: renegotiate" \
5622 -c "=> renegotiate" \
5623 -s "=> renegotiate" \
5624 -s "write hello request" \
5625 -S "SSL - An unexpected message was received from our peer" \
5626 -S "failed"
5627
Hanno Becker6a243642017-10-12 15:18:45 +01005628requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01005629run_test "Renegotiation: periodic, above period, disabled" \
Ronald Cronf95d1692023-03-14 17:19:42 +01005630 "$P_SRV force_version=tls12 debug_level=3 exchanges=9 renegotiation=0 renego_period=3 auth_mode=optional" \
Manuel Pégourié-Gonnard590f4162014-11-05 14:23:03 +01005631 "$P_CLI debug_level=3 exchanges=4 renegotiation=1" \
5632 0 \
5633 -C "client hello, adding renegotiation extension" \
5634 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5635 -S "found renegotiation extension" \
5636 -s "server hello, secure renegotiation extension" \
5637 -c "found renegotiation extension" \
5638 -S "record counter limit reached: renegotiate" \
5639 -C "=> renegotiate" \
5640 -S "=> renegotiate" \
5641 -S "write hello request" \
5642 -S "SSL - An unexpected message was received from our peer" \
5643 -S "failed"
5644
Hanno Becker6a243642017-10-12 15:18:45 +01005645requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005646run_test "Renegotiation: nbio, client-initiated" \
Manuel Pégourié-Gonnardfa44f202015-03-27 17:52:25 +01005647 "$P_SRV debug_level=3 nbio=2 exchanges=2 renegotiation=1 auth_mode=optional" \
Ronald Cronf95d1692023-03-14 17:19:42 +01005648 "$P_CLI force_version=tls12 debug_level=3 nbio=2 exchanges=2 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnardf07f4212014-08-15 19:04:47 +02005649 0 \
5650 -c "client hello, adding renegotiation extension" \
5651 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5652 -s "found renegotiation extension" \
5653 -s "server hello, secure renegotiation extension" \
5654 -c "found renegotiation extension" \
5655 -c "=> renegotiate" \
5656 -s "=> renegotiate" \
5657 -S "write hello request"
5658
Hanno Becker6a243642017-10-12 15:18:45 +01005659requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005660run_test "Renegotiation: nbio, server-initiated" \
Ronald Cronf95d1692023-03-14 17:19:42 +01005661 "$P_SRV force_version=tls12 debug_level=3 nbio=2 exchanges=2 renegotiation=1 renegotiate=1 auth_mode=optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005662 "$P_CLI debug_level=3 nbio=2 exchanges=2 renegotiation=1" \
Manuel Pégourié-Gonnardf07f4212014-08-15 19:04:47 +02005663 0 \
5664 -c "client hello, adding renegotiation extension" \
5665 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5666 -s "found renegotiation extension" \
5667 -s "server hello, secure renegotiation extension" \
5668 -c "found renegotiation extension" \
5669 -c "=> renegotiate" \
5670 -s "=> renegotiate" \
5671 -s "write hello request"
5672
Hanno Becker6a243642017-10-12 15:18:45 +01005673requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08005674requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005675run_test "Renegotiation: openssl server, client-initiated" \
Gilles Peskineed8cc462024-09-06 13:52:14 +02005676 "$O_SRV -www $OPENSSL_S_SERVER_CLIENT_RENEGOTIATION -tls1_2" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005677 "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnard51362962014-08-30 21:22:47 +02005678 0 \
5679 -c "client hello, adding renegotiation extension" \
5680 -c "found renegotiation extension" \
5681 -c "=> renegotiate" \
Wenxing Hou848bccf2024-06-19 11:04:13 +08005682 -C "ssl_handshake() returned" \
Manuel Pégourié-Gonnard51362962014-08-30 21:22:47 +02005683 -C "error" \
5684 -c "HTTP/1.0 200 [Oo][Kk]"
5685
Paul Bakker539d9722015-02-08 16:18:35 +01005686requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01005687requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08005688requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01005689run_test "Renegotiation: gnutls server strict, client-initiated" \
Waleed Elmelegy4b09dcd2024-01-12 10:50:25 +00005690 "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2:%SAFE_RENEGOTIATION" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02005691 "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnard51362962014-08-30 21:22:47 +02005692 0 \
5693 -c "client hello, adding renegotiation extension" \
5694 -c "found renegotiation extension" \
5695 -c "=> renegotiate" \
Wenxing Hou848bccf2024-06-19 11:04:13 +08005696 -C "ssl_handshake() returned" \
Manuel Pégourié-Gonnard51362962014-08-30 21:22:47 +02005697 -C "error" \
5698 -c "HTTP/1.0 200 [Oo][Kk]"
5699
Paul Bakker539d9722015-02-08 16:18:35 +01005700requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01005701requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08005702requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01005703run_test "Renegotiation: gnutls server unsafe, client-initiated default" \
Waleed Elmelegy4b09dcd2024-01-12 10:50:25 +00005704 "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2:%DISABLE_SAFE_RENEGOTIATION" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01005705 "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1" \
5706 1 \
5707 -c "client hello, adding renegotiation extension" \
5708 -C "found renegotiation extension" \
5709 -c "=> renegotiate" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005710 -c "mbedtls_ssl_handshake() returned" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01005711 -c "error" \
5712 -C "HTTP/1.0 200 [Oo][Kk]"
5713
Paul Bakker539d9722015-02-08 16:18:35 +01005714requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01005715requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08005716requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01005717run_test "Renegotiation: gnutls server unsafe, client-inititated no legacy" \
Waleed Elmelegy4b09dcd2024-01-12 10:50:25 +00005718 "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2:%DISABLE_SAFE_RENEGOTIATION" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01005719 "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1 \
5720 allow_legacy=0" \
5721 1 \
5722 -c "client hello, adding renegotiation extension" \
5723 -C "found renegotiation extension" \
5724 -c "=> renegotiate" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005725 -c "mbedtls_ssl_handshake() returned" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01005726 -c "error" \
5727 -C "HTTP/1.0 200 [Oo][Kk]"
5728
Paul Bakker539d9722015-02-08 16:18:35 +01005729requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01005730requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08005731requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01005732run_test "Renegotiation: gnutls server unsafe, client-inititated legacy" \
Waleed Elmelegy4b09dcd2024-01-12 10:50:25 +00005733 "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2:%DISABLE_SAFE_RENEGOTIATION" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01005734 "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1 \
5735 allow_legacy=1" \
5736 0 \
5737 -c "client hello, adding renegotiation extension" \
5738 -C "found renegotiation extension" \
5739 -c "=> renegotiate" \
Wenxing Hou848bccf2024-06-19 11:04:13 +08005740 -C "ssl_handshake() returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01005741 -C "error" \
5742 -c "HTTP/1.0 200 [Oo][Kk]"
5743
Hanno Becker6a243642017-10-12 15:18:45 +01005744requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08005745requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard30d16eb2014-08-19 17:43:50 +02005746run_test "Renegotiation: DTLS, client-initiated" \
5747 "$P_SRV debug_level=3 dtls=1 exchanges=2 renegotiation=1" \
5748 "$P_CLI debug_level=3 dtls=1 exchanges=2 renegotiation=1 renegotiate=1" \
5749 0 \
5750 -c "client hello, adding renegotiation extension" \
5751 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5752 -s "found renegotiation extension" \
5753 -s "server hello, secure renegotiation extension" \
5754 -c "found renegotiation extension" \
5755 -c "=> renegotiate" \
5756 -s "=> renegotiate" \
5757 -S "write hello request"
5758
Hanno Becker6a243642017-10-12 15:18:45 +01005759requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08005760requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardc392b242014-08-19 17:53:11 +02005761run_test "Renegotiation: DTLS, server-initiated" \
5762 "$P_SRV debug_level=3 dtls=1 exchanges=2 renegotiation=1 renegotiate=1" \
Manuel Pégourié-Gonnarddf9a0a82014-10-02 14:17:18 +02005763 "$P_CLI debug_level=3 dtls=1 exchanges=2 renegotiation=1 \
5764 read_timeout=1000 max_resend=2" \
Manuel Pégourié-Gonnardc392b242014-08-19 17:53:11 +02005765 0 \
5766 -c "client hello, adding renegotiation extension" \
5767 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5768 -s "found renegotiation extension" \
5769 -s "server hello, secure renegotiation extension" \
5770 -c "found renegotiation extension" \
5771 -c "=> renegotiate" \
5772 -s "=> renegotiate" \
5773 -s "write hello request"
5774
Hanno Becker6a243642017-10-12 15:18:45 +01005775requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08005776requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andres AG692ad842017-01-19 16:30:57 +00005777run_test "Renegotiation: DTLS, renego_period overflow" \
5778 "$P_SRV debug_level=3 dtls=1 exchanges=4 renegotiation=1 renego_period=18446462598732840962 auth_mode=optional" \
5779 "$P_CLI debug_level=3 dtls=1 exchanges=4 renegotiation=1" \
5780 0 \
5781 -c "client hello, adding renegotiation extension" \
5782 -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5783 -s "found renegotiation extension" \
5784 -s "server hello, secure renegotiation extension" \
5785 -s "record counter limit reached: renegotiate" \
5786 -c "=> renegotiate" \
5787 -s "=> renegotiate" \
Hanno Becker6a243642017-10-12 15:18:45 +01005788 -s "write hello request"
Andres AG692ad842017-01-19 16:30:57 +00005789
Manuel Pégourié-Gonnard96999962015-02-17 16:02:37 +00005790requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +01005791requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08005792requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardf1499f62014-08-31 17:13:13 +02005793run_test "Renegotiation: DTLS, gnutls server, client-initiated" \
Waleed Elmelegy4b09dcd2024-01-12 10:50:25 +00005794 "$G_NEXT_SRV -u --mtu 4096" \
Manuel Pégourié-Gonnardf1499f62014-08-31 17:13:13 +02005795 "$P_CLI debug_level=3 dtls=1 exchanges=1 renegotiation=1 renegotiate=1" \
5796 0 \
5797 -c "client hello, adding renegotiation extension" \
5798 -c "found renegotiation extension" \
5799 -c "=> renegotiate" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005800 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnardf1499f62014-08-31 17:13:13 +02005801 -C "error" \
5802 -s "Extra-header:"
5803
Shaun Case8b0ecbc2021-12-20 21:14:10 -08005804# Test for the "secure renegotiation" extension only (no actual renegotiation)
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01005805
Paul Bakker539d9722015-02-08 16:18:35 +01005806requires_gnutls
Gilles Peskine21ad5762024-04-29 17:47:35 +02005807requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08005808requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01005809run_test "Renego ext: gnutls server strict, client default" \
Waleed Elmelegy4b09dcd2024-01-12 10:50:25 +00005810 "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2:%SAFE_RENEGOTIATION" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01005811 "$P_CLI debug_level=3" \
5812 0 \
5813 -c "found renegotiation extension" \
5814 -C "error" \
5815 -c "HTTP/1.0 200 [Oo][Kk]"
5816
Paul Bakker539d9722015-02-08 16:18:35 +01005817requires_gnutls
Gilles Peskine21ad5762024-04-29 17:47:35 +02005818requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08005819requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01005820run_test "Renego ext: gnutls server unsafe, client default" \
Waleed Elmelegy4b09dcd2024-01-12 10:50:25 +00005821 "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2:%DISABLE_SAFE_RENEGOTIATION" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01005822 "$P_CLI debug_level=3" \
5823 0 \
5824 -C "found renegotiation extension" \
5825 -C "error" \
5826 -c "HTTP/1.0 200 [Oo][Kk]"
5827
Paul Bakker539d9722015-02-08 16:18:35 +01005828requires_gnutls
Gilles Peskine21ad5762024-04-29 17:47:35 +02005829requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08005830requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01005831run_test "Renego ext: gnutls server unsafe, client break legacy" \
Waleed Elmelegy4b09dcd2024-01-12 10:50:25 +00005832 "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2:%DISABLE_SAFE_RENEGOTIATION" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01005833 "$P_CLI debug_level=3 allow_legacy=-1" \
5834 1 \
5835 -C "found renegotiation extension" \
5836 -c "error" \
5837 -C "HTTP/1.0 200 [Oo][Kk]"
5838
Paul Bakker539d9722015-02-08 16:18:35 +01005839requires_gnutls
Gilles Peskine21ad5762024-04-29 17:47:35 +02005840requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08005841requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01005842run_test "Renego ext: gnutls client strict, server default" \
5843 "$P_SRV debug_level=3" \
Gilles Peskinee373c942024-04-29 17:44:19 +02005844 "$G_CLI --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2:%SAFE_RENEGOTIATION localhost" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01005845 0 \
5846 -s "received TLS_EMPTY_RENEGOTIATION_INFO\|found renegotiation extension" \
5847 -s "server hello, secure renegotiation extension"
5848
Paul Bakker539d9722015-02-08 16:18:35 +01005849requires_gnutls
Gilles Peskine21ad5762024-04-29 17:47:35 +02005850requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08005851requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01005852run_test "Renego ext: gnutls client unsafe, server default" \
5853 "$P_SRV debug_level=3" \
Gilles Peskinee373c942024-04-29 17:44:19 +02005854 "$G_CLI --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2:%DISABLE_SAFE_RENEGOTIATION localhost" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01005855 0 \
5856 -S "received TLS_EMPTY_RENEGOTIATION_INFO\|found renegotiation extension" \
5857 -S "server hello, secure renegotiation extension"
5858
Paul Bakker539d9722015-02-08 16:18:35 +01005859requires_gnutls
Gilles Peskine21ad5762024-04-29 17:47:35 +02005860requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +08005861requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01005862run_test "Renego ext: gnutls client unsafe, server break legacy" \
5863 "$P_SRV debug_level=3 allow_legacy=-1" \
Gilles Peskinee373c942024-04-29 17:44:19 +02005864 "$G_CLI --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2:%DISABLE_SAFE_RENEGOTIATION localhost" \
Manuel Pégourié-Gonnard85d915b2014-11-03 20:10:36 +01005865 1 \
5866 -S "received TLS_EMPTY_RENEGOTIATION_INFO\|found renegotiation extension" \
5867 -S "server hello, secure renegotiation extension"
5868
Janos Follath0b242342016-02-17 10:11:21 +00005869# Tests for silently dropping trailing extra bytes in .der certificates
5870
5871requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08005872requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Janos Follath0b242342016-02-17 10:11:21 +00005873run_test "DER format: no trailing bytes" \
David Horstmann5ab92be2024-07-01 17:01:28 +01005874 "$P_SRV crt_file=$DATA_FILES_PATH/server5-der0.crt \
5875 key_file=$DATA_FILES_PATH/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02005876 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00005877 0 \
5878 -c "Handshake was completed" \
5879
5880requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08005881requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Janos Follath0b242342016-02-17 10:11:21 +00005882run_test "DER format: with a trailing zero byte" \
David Horstmann5ab92be2024-07-01 17:01:28 +01005883 "$P_SRV crt_file=$DATA_FILES_PATH/server5-der1a.crt \
5884 key_file=$DATA_FILES_PATH/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02005885 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00005886 0 \
5887 -c "Handshake was completed" \
5888
5889requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08005890requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Janos Follath0b242342016-02-17 10:11:21 +00005891run_test "DER format: with a trailing random byte" \
David Horstmann5ab92be2024-07-01 17:01:28 +01005892 "$P_SRV crt_file=$DATA_FILES_PATH/server5-der1b.crt \
5893 key_file=$DATA_FILES_PATH/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02005894 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00005895 0 \
5896 -c "Handshake was completed" \
5897
5898requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08005899requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Janos Follath0b242342016-02-17 10:11:21 +00005900run_test "DER format: with 2 trailing random bytes" \
David Horstmann5ab92be2024-07-01 17:01:28 +01005901 "$P_SRV crt_file=$DATA_FILES_PATH/server5-der2.crt \
5902 key_file=$DATA_FILES_PATH/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02005903 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00005904 0 \
5905 -c "Handshake was completed" \
5906
5907requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08005908requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Janos Follath0b242342016-02-17 10:11:21 +00005909run_test "DER format: with 4 trailing random bytes" \
David Horstmann5ab92be2024-07-01 17:01:28 +01005910 "$P_SRV crt_file=$DATA_FILES_PATH/server5-der4.crt \
5911 key_file=$DATA_FILES_PATH/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02005912 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00005913 0 \
5914 -c "Handshake was completed" \
5915
5916requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08005917requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Janos Follath0b242342016-02-17 10:11:21 +00005918run_test "DER format: with 8 trailing random bytes" \
David Horstmann5ab92be2024-07-01 17:01:28 +01005919 "$P_SRV crt_file=$DATA_FILES_PATH/server5-der8.crt \
5920 key_file=$DATA_FILES_PATH/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02005921 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00005922 0 \
5923 -c "Handshake was completed" \
5924
5925requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +08005926requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Janos Follath0b242342016-02-17 10:11:21 +00005927run_test "DER format: with 9 trailing random bytes" \
David Horstmann5ab92be2024-07-01 17:01:28 +01005928 "$P_SRV crt_file=$DATA_FILES_PATH/server5-der9.crt \
5929 key_file=$DATA_FILES_PATH/server5.key" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02005930 "$G_CLI localhost" \
Janos Follath0b242342016-02-17 10:11:21 +00005931 0 \
5932 -c "Handshake was completed" \
5933
Jarno Lamsaf7a7f9e2019-04-01 15:11:54 +03005934# Tests for auth_mode, there are duplicated tests using ca callback for authentication
5935# When updating these tests, modify the matching authentication tests accordingly
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01005936
Manuel Pégourié-Gonnardd6e20692024-08-05 12:41:59 +02005937# The next 4 cases test the 3 auth modes with a badly signed server cert.
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005938run_test "Authentication: server badcert, client required" \
David Horstmann5ab92be2024-07-01 17:01:28 +01005939 "$P_SRV crt_file=$DATA_FILES_PATH/server5-badsign.crt \
5940 key_file=$DATA_FILES_PATH/server5.key" \
Manuel Pégourié-Gonnardd6e20692024-08-05 12:41:59 +02005941 "$P_CLI debug_level=3 auth_mode=required" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01005942 1 \
5943 -c "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01005944 -c "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005945 -c "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnardd6e20692024-08-05 12:41:59 +02005946 -c "send alert level=2 message=48" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01005947 -c "X509 - Certificate verification failed"
Manuel Pégourié-Gonnardd6e20692024-08-05 12:41:59 +02005948 # MBEDTLS_X509_BADCERT_NOT_TRUSTED -> MBEDTLS_SSL_ALERT_MSG_UNKNOWN_CA
5949# We don't check that the server receives the alert because it might
5950# detect that its write end of the connection is closed and abort
5951# before reading the alert message.
5952
5953run_test "Authentication: server badcert, client required (1.2)" \
5954 "$P_SRV crt_file=$DATA_FILES_PATH/server5-badsign.crt \
5955 key_file=$DATA_FILES_PATH/server5.key" \
5956 "$P_CLI force_version=tls12 debug_level=3 auth_mode=required" \
5957 1 \
5958 -c "x509_verify_cert() returned" \
5959 -c "! The certificate is not correctly signed by the trusted CA" \
5960 -c "! mbedtls_ssl_handshake returned" \
5961 -c "send alert level=2 message=48" \
5962 -c "X509 - Certificate verification failed"
5963 # MBEDTLS_X509_BADCERT_NOT_TRUSTED -> MBEDTLS_SSL_ALERT_MSG_UNKNOWN_CA
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01005964
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02005965run_test "Authentication: server badcert, client optional" \
David Horstmann5ab92be2024-07-01 17:01:28 +01005966 "$P_SRV crt_file=$DATA_FILES_PATH/server5-badsign.crt \
5967 key_file=$DATA_FILES_PATH/server5.key" \
Manuel Pégourié-Gonnarde1cc9262024-08-14 09:47:38 +02005968 "$P_CLI force_version=tls13 debug_level=3 auth_mode=optional" \
5969 0 \
5970 -c "x509_verify_cert() returned" \
5971 -c "! The certificate is not correctly signed by the trusted CA" \
5972 -C "! mbedtls_ssl_handshake returned" \
5973 -C "send alert level=2 message=48" \
5974 -C "X509 - Certificate verification failed"
5975
5976run_test "Authentication: server badcert, client optional (1.2)" \
5977 "$P_SRV crt_file=$DATA_FILES_PATH/server5-badsign.crt \
5978 key_file=$DATA_FILES_PATH/server5.key" \
Manuel Pégourié-Gonnardd6e20692024-08-05 12:41:59 +02005979 "$P_CLI force_version=tls12 debug_level=3 auth_mode=optional" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01005980 0 \
5981 -c "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01005982 -c "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02005983 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnardd6e20692024-08-05 12:41:59 +02005984 -C "send alert level=2 message=48" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01005985 -C "X509 - Certificate verification failed"
5986
Manuel Pégourié-Gonnarda3cf1a52024-08-05 11:21:01 +02005987run_test "Authentication: server badcert, client none" \
5988 "$P_SRV crt_file=$DATA_FILES_PATH/server5-badsign.crt \
5989 key_file=$DATA_FILES_PATH/server5.key" \
Manuel Pégourié-Gonnard2b98a4e2024-08-14 10:44:02 +02005990 "$P_CLI debug_level=3 auth_mode=none" \
5991 0 \
5992 -C "x509_verify_cert() returned" \
5993 -C "! The certificate is not correctly signed by the trusted CA" \
5994 -C "! mbedtls_ssl_handshake returned" \
5995 -C "send alert level=2 message=48" \
5996 -C "X509 - Certificate verification failed"
5997
5998run_test "Authentication: server badcert, client none (1.2)" \
5999 "$P_SRV crt_file=$DATA_FILES_PATH/server5-badsign.crt \
6000 key_file=$DATA_FILES_PATH/server5.key" \
Manuel Pégourié-Gonnardd6e20692024-08-05 12:41:59 +02006001 "$P_CLI force_version=tls12 debug_level=3 auth_mode=none" \
Manuel Pégourié-Gonnarda3cf1a52024-08-05 11:21:01 +02006002 0 \
6003 -C "x509_verify_cert() returned" \
6004 -C "! The certificate is not correctly signed by the trusted CA" \
6005 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnardd6e20692024-08-05 12:41:59 +02006006 -C "send alert level=2 message=48" \
Manuel Pégourié-Gonnarda3cf1a52024-08-05 11:21:01 +02006007 -C "X509 - Certificate verification failed"
6008
Manuel Pégourié-Gonnarda0a781e2024-08-14 10:34:53 +02006009run_test "Authentication: server goodcert, client required, no trusted CA" \
6010 "$P_SRV" \
6011 "$P_CLI debug_level=3 auth_mode=required ca_file=none ca_path=none" \
6012 1 \
6013 -c "x509_verify_cert() returned" \
6014 -c "! The certificate is not correctly signed by the trusted CA" \
6015 -c "! Certificate verification flags"\
6016 -c "! mbedtls_ssl_handshake returned" \
6017 -c "SSL - No CA Chain is set, but required to operate"
6018
6019requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
6020run_test "Authentication: server goodcert, client required, no trusted CA (1.2)" \
6021 "$P_SRV force_version=tls12" \
6022 "$P_CLI debug_level=3 auth_mode=required ca_file=none ca_path=none" \
6023 1 \
6024 -c "x509_verify_cert() returned" \
6025 -c "! The certificate is not correctly signed by the trusted CA" \
6026 -c "! Certificate verification flags"\
6027 -c "! mbedtls_ssl_handshake returned" \
6028 -c "SSL - No CA Chain is set, but required to operate"
Manuel Pégourié-Gonnarde1cc9262024-08-14 09:47:38 +02006029
Hanno Beckere6706e62017-05-15 16:05:15 +01006030run_test "Authentication: server goodcert, client optional, no trusted CA" \
6031 "$P_SRV" \
Manuel Pégourié-Gonnarde1cc9262024-08-14 09:47:38 +02006032 "$P_CLI debug_level=3 auth_mode=optional ca_file=none ca_path=none" \
6033 0 \
6034 -c "x509_verify_cert() returned" \
6035 -c "! The certificate is not correctly signed by the trusted CA" \
6036 -c "! Certificate verification flags"\
6037 -C "! mbedtls_ssl_handshake returned" \
6038 -C "X509 - Certificate verification failed" \
6039 -C "SSL - No CA Chain is set, but required to operate"
6040
6041requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
6042run_test "Authentication: server goodcert, client optional, no trusted CA (1.2)" \
6043 "$P_SRV" \
Ronald Cronf95d1692023-03-14 17:19:42 +01006044 "$P_CLI force_version=tls12 debug_level=3 auth_mode=optional ca_file=none ca_path=none" \
Hanno Beckere6706e62017-05-15 16:05:15 +01006045 0 \
6046 -c "x509_verify_cert() returned" \
6047 -c "! The certificate is not correctly signed by the trusted CA" \
6048 -c "! Certificate verification flags"\
6049 -C "! mbedtls_ssl_handshake returned" \
6050 -C "X509 - Certificate verification failed" \
6051 -C "SSL - No CA Chain is set, but required to operate"
6052
Manuel Pégourié-Gonnard2b98a4e2024-08-14 10:44:02 +02006053run_test "Authentication: server goodcert, client none, no trusted CA" \
6054 "$P_SRV" \
6055 "$P_CLI debug_level=3 auth_mode=none ca_file=none ca_path=none" \
6056 0 \
6057 -C "x509_verify_cert() returned" \
6058 -C "! The certificate is not correctly signed by the trusted CA" \
6059 -C "! Certificate verification flags"\
6060 -C "! mbedtls_ssl_handshake returned" \
6061 -C "X509 - Certificate verification failed" \
6062 -C "SSL - No CA Chain is set, but required to operate"
6063
6064requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
6065run_test "Authentication: server goodcert, client none, no trusted CA (1.2)" \
6066 "$P_SRV" \
6067 "$P_CLI force_version=tls12 debug_level=3 auth_mode=none ca_file=none ca_path=none" \
6068 0 \
6069 -C "x509_verify_cert() returned" \
6070 -C "! The certificate is not correctly signed by the trusted CA" \
6071 -C "! Certificate verification flags"\
6072 -C "! mbedtls_ssl_handshake returned" \
6073 -C "X509 - Certificate verification failed" \
6074 -C "SSL - No CA Chain is set, but required to operate"
Manuel Pégourié-Gonnard060e2842024-08-05 11:10:47 +02006075
Hanno Beckere6706e62017-05-15 16:05:15 +01006076# The purpose of the next two tests is to test the client's behaviour when receiving a server
6077# certificate with an unsupported elliptic curve. This should usually not happen because
6078# the client informs the server about the supported curves - it does, though, in the
6079# corner case of a static ECDH suite, because the server doesn't check the curve on that
6080# occasion (to be fixed). If that bug's fixed, the test needs to be altered to use a
6081# different means to have the server ignoring the client's supported curve list.
6082
Hanno Beckere6706e62017-05-15 16:05:15 +01006083run_test "Authentication: server ECDH p256v1, client required, p256v1 unsupported" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006084 "$P_SRV debug_level=1 key_file=$DATA_FILES_PATH/server5.key \
6085 crt_file=$DATA_FILES_PATH/server5.ku-ka.crt" \
Przemek Stekiel45255e42023-06-29 13:56:36 +02006086 "$P_CLI force_version=tls12 debug_level=3 auth_mode=required groups=secp521r1" \
Hanno Beckere6706e62017-05-15 16:05:15 +01006087 1 \
6088 -c "bad certificate (EC key curve)"\
6089 -c "! Certificate verification flags"\
6090 -C "bad server certificate (ECDH curve)" # Expect failure at earlier verification stage
6091
Hanno Beckere6706e62017-05-15 16:05:15 +01006092run_test "Authentication: server ECDH p256v1, client optional, p256v1 unsupported" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006093 "$P_SRV debug_level=1 key_file=$DATA_FILES_PATH/server5.key \
6094 crt_file=$DATA_FILES_PATH/server5.ku-ka.crt" \
Przemek Stekiel45255e42023-06-29 13:56:36 +02006095 "$P_CLI force_version=tls12 debug_level=3 auth_mode=optional groups=secp521r1" \
Hanno Beckere6706e62017-05-15 16:05:15 +01006096 1 \
6097 -c "bad certificate (EC key curve)"\
6098 -c "! Certificate verification flags"\
6099 -c "bad server certificate (ECDH curve)" # Expect failure only at ECDH params check
6100
Ronald Cron5de538c2022-10-20 14:47:56 +02006101requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Simon Butcher99000142016-10-13 17:21:01 +01006102run_test "Authentication: client SHA256, server required" \
6103 "$P_SRV auth_mode=required" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006104 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/server6.crt \
6105 key_file=$DATA_FILES_PATH/server6.key \
Simon Butcher99000142016-10-13 17:21:01 +01006106 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384" \
6107 0 \
Andrzej Kurekec71b092022-11-15 10:21:50 -05006108 -c "Supported Signature Algorithm found: 04 " \
6109 -c "Supported Signature Algorithm found: 05 "
Simon Butcher99000142016-10-13 17:21:01 +01006110
Ronald Cron5de538c2022-10-20 14:47:56 +02006111requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Simon Butcher99000142016-10-13 17:21:01 +01006112run_test "Authentication: client SHA384, server required" \
6113 "$P_SRV auth_mode=required" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006114 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/server6.crt \
6115 key_file=$DATA_FILES_PATH/server6.key \
Simon Butcher99000142016-10-13 17:21:01 +01006116 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256" \
6117 0 \
Andrzej Kurekec71b092022-11-15 10:21:50 -05006118 -c "Supported Signature Algorithm found: 04 " \
6119 -c "Supported Signature Algorithm found: 05 "
Simon Butcher99000142016-10-13 17:21:01 +01006120
Gilles Peskinefd8332e2017-05-03 16:25:07 +02006121run_test "Authentication: client has no cert, server required (TLS)" \
6122 "$P_SRV debug_level=3 auth_mode=required" \
6123 "$P_CLI debug_level=3 crt_file=none \
David Horstmann5ab92be2024-07-01 17:01:28 +01006124 key_file=$DATA_FILES_PATH/server5.key" \
Gilles Peskinefd8332e2017-05-03 16:25:07 +02006125 1 \
6126 -S "skip write certificate request" \
6127 -C "skip parse certificate request" \
6128 -c "got a certificate request" \
6129 -c "= write certificate$" \
6130 -C "skip write certificate$" \
6131 -S "x509_verify_cert() returned" \
Ronald Cron19385882022-06-15 16:26:13 +02006132 -s "peer has no certificate" \
Gilles Peskinefd8332e2017-05-03 16:25:07 +02006133 -s "! mbedtls_ssl_handshake returned" \
Gilles Peskinefd8332e2017-05-03 16:25:07 +02006134 -s "No client certification received from the client, but required by the authentication mode"
6135
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006136run_test "Authentication: client badcert, server required" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006137 "$P_SRV debug_level=3 auth_mode=required" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006138 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/server5-badsign.crt \
6139 key_file=$DATA_FILES_PATH/server5.key" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01006140 1 \
6141 -S "skip write certificate request" \
6142 -C "skip parse certificate request" \
6143 -c "got a certificate request" \
6144 -C "skip write certificate" \
6145 -C "skip write certificate verify" \
6146 -S "skip parse certificate verify" \
6147 -s "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02006148 -s "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02006149 -s "! mbedtls_ssl_handshake returned" \
Gilles Peskine1cc8e342017-05-03 16:28:34 +02006150 -s "send alert level=2 message=48" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01006151 -s "X509 - Certificate verification failed"
Gilles Peskine1cc8e342017-05-03 16:28:34 +02006152# We don't check that the client receives the alert because it might
6153# detect that its write end of the connection is closed and abort
6154# before reading the alert message.
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01006155
Gilles Peskinee1cc60e2022-01-07 23:10:56 +01006156run_test "Authentication: client cert self-signed and trusted, server required" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006157 "$P_SRV debug_level=3 auth_mode=required ca_file=$DATA_FILES_PATH/server5-selfsigned.crt" \
6158 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/server5-selfsigned.crt \
6159 key_file=$DATA_FILES_PATH/server5.key" \
Gilles Peskinee1cc60e2022-01-07 23:10:56 +01006160 0 \
6161 -S "skip write certificate request" \
6162 -C "skip parse certificate request" \
6163 -c "got a certificate request" \
6164 -C "skip write certificate" \
6165 -C "skip write certificate verify" \
6166 -S "skip parse certificate verify" \
6167 -S "x509_verify_cert() returned" \
6168 -S "! The certificate is not correctly signed" \
6169 -S "X509 - Certificate verification failed"
6170
Janos Follath89baba22017-04-10 14:34:35 +01006171run_test "Authentication: client cert not trusted, server required" \
6172 "$P_SRV debug_level=3 auth_mode=required" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006173 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/server5-selfsigned.crt \
6174 key_file=$DATA_FILES_PATH/server5.key" \
Janos Follath89baba22017-04-10 14:34:35 +01006175 1 \
6176 -S "skip write certificate request" \
6177 -C "skip parse certificate request" \
6178 -c "got a certificate request" \
6179 -C "skip write certificate" \
6180 -C "skip write certificate verify" \
6181 -S "skip parse certificate verify" \
6182 -s "x509_verify_cert() returned" \
6183 -s "! The certificate is not correctly signed by the trusted CA" \
6184 -s "! mbedtls_ssl_handshake returned" \
Janos Follath89baba22017-04-10 14:34:35 +01006185 -s "X509 - Certificate verification failed"
6186
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006187run_test "Authentication: client badcert, server optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006188 "$P_SRV debug_level=3 auth_mode=optional" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006189 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/server5-badsign.crt \
6190 key_file=$DATA_FILES_PATH/server5.key" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01006191 0 \
6192 -S "skip write certificate request" \
6193 -C "skip parse certificate request" \
6194 -c "got a certificate request" \
6195 -C "skip write certificate" \
6196 -C "skip write certificate verify" \
6197 -S "skip parse certificate verify" \
6198 -s "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01006199 -s "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02006200 -S "! mbedtls_ssl_handshake returned" \
6201 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01006202 -S "X509 - Certificate verification failed"
6203
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006204run_test "Authentication: client badcert, server none" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006205 "$P_SRV debug_level=3 auth_mode=none" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006206 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/server5-badsign.crt \
6207 key_file=$DATA_FILES_PATH/server5.key" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01006208 0 \
6209 -s "skip write certificate request" \
6210 -C "skip parse certificate request" \
6211 -c "got no certificate request" \
6212 -c "skip write certificate" \
6213 -c "skip write certificate verify" \
6214 -s "skip parse certificate verify" \
6215 -S "x509_verify_cert() returned" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01006216 -S "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02006217 -S "! mbedtls_ssl_handshake returned" \
6218 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +01006219 -S "X509 - Certificate verification failed"
6220
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006221run_test "Authentication: client no cert, server optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006222 "$P_SRV debug_level=3 auth_mode=optional" \
6223 "$P_CLI debug_level=3 crt_file=none key_file=none" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01006224 0 \
6225 -S "skip write certificate request" \
6226 -C "skip parse certificate request" \
6227 -c "got a certificate request" \
6228 -C "skip write certificate$" \
6229 -C "got no certificate to send" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01006230 -c "skip write certificate verify" \
6231 -s "skip parse certificate verify" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01006232 -s "! Certificate was missing" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02006233 -S "! mbedtls_ssl_handshake returned" \
6234 -C "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01006235 -S "X509 - Certificate verification failed"
6236
Przemek Stekielc31a7982023-06-27 10:53:33 +02006237requires_openssl_tls1_3_with_compatible_ephemeral
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006238run_test "Authentication: openssl client no cert, server optional" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006239 "$P_SRV debug_level=3 auth_mode=optional" \
Ronald Cron92dca392023-03-10 16:11:15 +01006240 "$O_NEXT_CLI_NO_CERT -no_middlebox" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01006241 0 \
6242 -S "skip write certificate request" \
6243 -s "skip parse certificate verify" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +01006244 -s "! Certificate was missing" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02006245 -S "! mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01006246 -S "X509 - Certificate verification failed"
6247
Jerry Yuab082902021-12-23 18:02:22 +08006248requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006249run_test "Authentication: client no cert, openssl server optional" \
Ronald Croncbd7bfd2022-03-31 18:19:56 +02006250 "$O_SRV -verify 10 -tls1_2" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02006251 "$P_CLI debug_level=3 crt_file=none key_file=none" \
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01006252 0 \
6253 -C "skip parse certificate request" \
6254 -c "got a certificate request" \
6255 -C "skip write certificate$" \
6256 -c "skip write certificate verify" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02006257 -C "! mbedtls_ssl_handshake returned"
Manuel Pégourié-Gonnardde515cc2014-02-27 14:58:26 +01006258
Jerry Yuab082902021-12-23 18:02:22 +08006259requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskinefd8332e2017-05-03 16:25:07 +02006260run_test "Authentication: client no cert, openssl server required" \
Ronald Croncbd7bfd2022-03-31 18:19:56 +02006261 "$O_SRV -Verify 10 -tls1_2" \
Gilles Peskinefd8332e2017-05-03 16:25:07 +02006262 "$P_CLI debug_level=3 crt_file=none key_file=none" \
6263 1 \
6264 -C "skip parse certificate request" \
6265 -c "got a certificate request" \
6266 -C "skip write certificate$" \
6267 -c "skip write certificate verify" \
6268 -c "! mbedtls_ssl_handshake returned"
6269
Yuto Takano02485822021-07-02 13:05:15 +01006270# This script assumes that MBEDTLS_X509_MAX_INTERMEDIATE_CA has its default
6271# value, defined here as MAX_IM_CA. Some test cases will be skipped if the
6272# library is configured with a different value.
Hanno Beckera6bca9f2017-07-26 13:35:11 +01006273
Simon Butcherbcfa6f42017-07-28 15:59:35 +01006274MAX_IM_CA='8'
Hanno Beckera6bca9f2017-07-26 13:35:11 +01006275
Yuto Takano02485822021-07-02 13:05:15 +01006276# The tests for the max_int tests can pass with any number higher than MAX_IM_CA
6277# because only a chain of MAX_IM_CA length is tested. Equally, the max_int+1
6278# tests can pass with any number less than MAX_IM_CA. However, stricter preconditions
6279# are in place so that the semantics are consistent with the test description.
Yuto Takano6f657432021-07-02 13:10:41 +01006280requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10006281requires_full_size_output_buffer
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02006282run_test "Authentication: server max_int chain, client default" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006283 "$P_SRV crt_file=$DATA_FILES_PATH/dir-maxpath/c09.pem \
6284 key_file=$DATA_FILES_PATH/dir-maxpath/09.key" \
6285 "$P_CLI server_name=CA09 ca_file=$DATA_FILES_PATH/dir-maxpath/00.crt" \
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02006286 0 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01006287 -C "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02006288
Yuto Takano6f657432021-07-02 13:10:41 +01006289requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10006290requires_full_size_output_buffer
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02006291run_test "Authentication: server max_int+1 chain, client default" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006292 "$P_SRV crt_file=$DATA_FILES_PATH/dir-maxpath/c10.pem \
6293 key_file=$DATA_FILES_PATH/dir-maxpath/10.key" \
6294 "$P_CLI server_name=CA10 ca_file=$DATA_FILES_PATH/dir-maxpath/00.crt" \
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02006295 1 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01006296 -c "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02006297
Yuto Takano6f657432021-07-02 13:10:41 +01006298requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10006299requires_full_size_output_buffer
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02006300run_test "Authentication: server max_int+1 chain, client optional" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006301 "$P_SRV crt_file=$DATA_FILES_PATH/dir-maxpath/c10.pem \
6302 key_file=$DATA_FILES_PATH/dir-maxpath/10.key" \
Manuel Pégourié-Gonnarde1cc9262024-08-14 09:47:38 +02006303 "$P_CLI server_name=CA10 ca_file=$DATA_FILES_PATH/dir-maxpath/00.crt \
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02006304 auth_mode=optional" \
6305 1 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01006306 -c "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02006307
Yuto Takano6f657432021-07-02 13:10:41 +01006308requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10006309requires_full_size_output_buffer
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02006310run_test "Authentication: server max_int+1 chain, client none" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006311 "$P_SRV crt_file=$DATA_FILES_PATH/dir-maxpath/c10.pem \
6312 key_file=$DATA_FILES_PATH/dir-maxpath/10.key" \
6313 "$P_CLI force_version=tls12 server_name=CA10 ca_file=$DATA_FILES_PATH/dir-maxpath/00.crt \
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02006314 auth_mode=none" \
6315 0 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01006316 -C "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02006317
Yuto Takano6f657432021-07-02 13:10:41 +01006318requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10006319requires_full_size_output_buffer
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02006320run_test "Authentication: client max_int+1 chain, server default" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006321 "$P_SRV ca_file=$DATA_FILES_PATH/dir-maxpath/00.crt" \
6322 "$P_CLI crt_file=$DATA_FILES_PATH/dir-maxpath/c10.pem \
6323 key_file=$DATA_FILES_PATH/dir-maxpath/10.key" \
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02006324 0 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01006325 -S "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02006326
Yuto Takano6f657432021-07-02 13:10:41 +01006327requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10006328requires_full_size_output_buffer
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02006329run_test "Authentication: client max_int+1 chain, server optional" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006330 "$P_SRV ca_file=$DATA_FILES_PATH/dir-maxpath/00.crt auth_mode=optional" \
6331 "$P_CLI crt_file=$DATA_FILES_PATH/dir-maxpath/c10.pem \
6332 key_file=$DATA_FILES_PATH/dir-maxpath/10.key" \
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02006333 1 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01006334 -s "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02006335
Yuto Takano6f657432021-07-02 13:10:41 +01006336requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10006337requires_full_size_output_buffer
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02006338run_test "Authentication: client max_int+1 chain, server required" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006339 "$P_SRV ca_file=$DATA_FILES_PATH/dir-maxpath/00.crt auth_mode=required" \
6340 "$P_CLI crt_file=$DATA_FILES_PATH/dir-maxpath/c10.pem \
6341 key_file=$DATA_FILES_PATH/dir-maxpath/10.key" \
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02006342 1 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01006343 -s "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02006344
Yuto Takano6f657432021-07-02 13:10:41 +01006345requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Angus Grattonc4dd0732018-04-11 16:28:39 +10006346requires_full_size_output_buffer
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02006347run_test "Authentication: client max_int chain, server required" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006348 "$P_SRV ca_file=$DATA_FILES_PATH/dir-maxpath/00.crt auth_mode=required" \
6349 "$P_CLI crt_file=$DATA_FILES_PATH/dir-maxpath/c09.pem \
6350 key_file=$DATA_FILES_PATH/dir-maxpath/09.key" \
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02006351 0 \
Antonin Décimo36e89b52019-01-23 15:24:37 +01006352 -S "X509 - A fatal error occurred"
Manuel Pégourié-Gonnard81bb6b62017-06-26 10:45:33 +02006353
Janos Follath89baba22017-04-10 14:34:35 +01006354# Tests for CA list in CertificateRequest messages
6355
Ronald Cron5de538c2022-10-20 14:47:56 +02006356requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Janos Follath89baba22017-04-10 14:34:35 +01006357run_test "Authentication: send CA list in CertificateRequest (default)" \
6358 "$P_SRV debug_level=3 auth_mode=required" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006359 "$P_CLI force_version=tls12 crt_file=$DATA_FILES_PATH/server6.crt \
6360 key_file=$DATA_FILES_PATH/server6.key" \
Janos Follath89baba22017-04-10 14:34:35 +01006361 0 \
6362 -s "requested DN"
6363
Ronald Cron5de538c2022-10-20 14:47:56 +02006364requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Janos Follath89baba22017-04-10 14:34:35 +01006365run_test "Authentication: do not send CA list in CertificateRequest" \
6366 "$P_SRV debug_level=3 auth_mode=required cert_req_ca_list=0" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006367 "$P_CLI force_version=tls12 crt_file=$DATA_FILES_PATH/server6.crt \
6368 key_file=$DATA_FILES_PATH/server6.key" \
Janos Follath89baba22017-04-10 14:34:35 +01006369 0 \
6370 -S "requested DN"
6371
6372run_test "Authentication: send CA list in CertificateRequest, client self signed" \
Ronald Cronf95d1692023-03-14 17:19:42 +01006373 "$P_SRV force_version=tls12 debug_level=3 auth_mode=required cert_req_ca_list=0" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006374 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/server5-selfsigned.crt \
6375 key_file=$DATA_FILES_PATH/server5.key" \
Janos Follath89baba22017-04-10 14:34:35 +01006376 1 \
6377 -S "requested DN" \
6378 -s "x509_verify_cert() returned" \
6379 -s "! The certificate is not correctly signed by the trusted CA" \
6380 -s "! mbedtls_ssl_handshake returned" \
6381 -c "! mbedtls_ssl_handshake returned" \
6382 -s "X509 - Certificate verification failed"
6383
Ronald Cron5de538c2022-10-20 14:47:56 +02006384requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Glenn Straussbd10c4e2022-06-25 03:15:48 -04006385run_test "Authentication: send alt conf DN hints in CertificateRequest" \
6386 "$P_SRV debug_level=3 auth_mode=optional cert_req_ca_list=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +01006387 crt_file2=$DATA_FILES_PATH/server1.crt \
6388 key_file2=$DATA_FILES_PATH/server1.key" \
Ronald Cronf95d1692023-03-14 17:19:42 +01006389 "$P_CLI force_version=tls12 debug_level=3 auth_mode=optional \
David Horstmann5ab92be2024-07-01 17:01:28 +01006390 crt_file=$DATA_FILES_PATH/server6.crt \
6391 key_file=$DATA_FILES_PATH/server6.key" \
Glenn Straussbd10c4e2022-06-25 03:15:48 -04006392 0 \
6393 -c "DN hint: C=NL, O=PolarSSL, CN=PolarSSL Server 1"
6394
Ronald Cron5de538c2022-10-20 14:47:56 +02006395requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Glenn Straussbd10c4e2022-06-25 03:15:48 -04006396run_test "Authentication: send alt conf DN hints in CertificateRequest (2)" \
6397 "$P_SRV debug_level=3 auth_mode=optional cert_req_ca_list=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +01006398 crt_file2=$DATA_FILES_PATH/server2.crt \
6399 key_file2=$DATA_FILES_PATH/server2.key" \
Ronald Cronf95d1692023-03-14 17:19:42 +01006400 "$P_CLI force_version=tls12 debug_level=3 auth_mode=optional \
David Horstmann5ab92be2024-07-01 17:01:28 +01006401 crt_file=$DATA_FILES_PATH/server6.crt \
6402 key_file=$DATA_FILES_PATH/server6.key" \
Glenn Straussbd10c4e2022-06-25 03:15:48 -04006403 0 \
6404 -c "DN hint: C=NL, O=PolarSSL, CN=localhost"
6405
Ronald Cron5de538c2022-10-20 14:47:56 +02006406requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Glenn Straussbd10c4e2022-06-25 03:15:48 -04006407run_test "Authentication: send alt hs DN hints in CertificateRequest" \
6408 "$P_SRV debug_level=3 auth_mode=optional cert_req_ca_list=3 \
David Horstmann5ab92be2024-07-01 17:01:28 +01006409 crt_file2=$DATA_FILES_PATH/server1.crt \
6410 key_file2=$DATA_FILES_PATH/server1.key" \
Ronald Cronf95d1692023-03-14 17:19:42 +01006411 "$P_CLI force_version=tls12 debug_level=3 auth_mode=optional \
David Horstmann5ab92be2024-07-01 17:01:28 +01006412 crt_file=$DATA_FILES_PATH/server6.crt \
6413 key_file=$DATA_FILES_PATH/server6.key" \
Glenn Straussbd10c4e2022-06-25 03:15:48 -04006414 0 \
6415 -c "DN hint: C=NL, O=PolarSSL, CN=PolarSSL Server 1"
6416
Jarno Lamsaf7a7f9e2019-04-01 15:11:54 +03006417# Tests for auth_mode, using CA callback, these are duplicated from the authentication tests
6418# When updating these tests, modify the matching authentication tests accordingly
Hanno Becker746aaf32019-03-28 15:25:23 +00006419
6420requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
6421run_test "Authentication, CA callback: server badcert, client required" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006422 "$P_SRV crt_file=$DATA_FILES_PATH/server5-badsign.crt \
6423 key_file=$DATA_FILES_PATH/server5.key" \
Ronald Cron8d5da8f2024-04-03 09:10:02 +02006424 "$P_CLI ca_callback=1 debug_level=3 auth_mode=required" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006425 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01006426 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006427 -c "x509_verify_cert() returned" \
6428 -c "! The certificate is not correctly signed by the trusted CA" \
6429 -c "! mbedtls_ssl_handshake returned" \
6430 -c "X509 - Certificate verification failed"
6431
6432requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
6433run_test "Authentication, CA callback: server badcert, client optional" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006434 "$P_SRV crt_file=$DATA_FILES_PATH/server5-badsign.crt \
6435 key_file=$DATA_FILES_PATH/server5.key" \
Ronald Cron8d5da8f2024-04-03 09:10:02 +02006436 "$P_CLI ca_callback=1 debug_level=3 auth_mode=optional" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006437 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01006438 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006439 -c "x509_verify_cert() returned" \
6440 -c "! The certificate is not correctly signed by the trusted CA" \
6441 -C "! mbedtls_ssl_handshake returned" \
6442 -C "X509 - Certificate verification failed"
6443
Ronald Cron8d5da8f2024-04-03 09:10:02 +02006444requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
6445run_test "Authentication, CA callback: server badcert, client none" \
6446 "$P_SRV crt_file=$DATA_FILES_PATH/server5-badsign.crt \
6447 key_file=$DATA_FILES_PATH/server5.key" \
6448 "$P_CLI ca_callback=1 debug_level=3 auth_mode=none" \
6449 0 \
6450 -C "use CA callback for X.509 CRT verification" \
6451 -C "x509_verify_cert() returned" \
6452 -C "! The certificate is not correctly signed by the trusted CA" \
6453 -C "! mbedtls_ssl_handshake returned" \
6454 -C "X509 - Certificate verification failed"
6455
Hanno Becker746aaf32019-03-28 15:25:23 +00006456# The purpose of the next two tests is to test the client's behaviour when receiving a server
6457# certificate with an unsupported elliptic curve. This should usually not happen because
6458# the client informs the server about the supported curves - it does, though, in the
6459# corner case of a static ECDH suite, because the server doesn't check the curve on that
6460# occasion (to be fixed). If that bug's fixed, the test needs to be altered to use a
6461# different means to have the server ignoring the client's supported curve list.
6462
Hanno Becker746aaf32019-03-28 15:25:23 +00006463requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
6464run_test "Authentication, CA callback: server ECDH p256v1, client required, p256v1 unsupported" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006465 "$P_SRV debug_level=1 key_file=$DATA_FILES_PATH/server5.key \
6466 crt_file=$DATA_FILES_PATH/server5.ku-ka.crt" \
Przemek Stekiel45255e42023-06-29 13:56:36 +02006467 "$P_CLI force_version=tls12 ca_callback=1 debug_level=3 auth_mode=required groups=secp521r1" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006468 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01006469 -c "use CA callback for X.509 CRT verification" \
6470 -c "bad certificate (EC key curve)" \
6471 -c "! Certificate verification flags" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006472 -C "bad server certificate (ECDH curve)" # Expect failure at earlier verification stage
6473
Hanno Becker746aaf32019-03-28 15:25:23 +00006474requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
6475run_test "Authentication, CA callback: server ECDH p256v1, client optional, p256v1 unsupported" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006476 "$P_SRV debug_level=1 key_file=$DATA_FILES_PATH/server5.key \
6477 crt_file=$DATA_FILES_PATH/server5.ku-ka.crt" \
Przemek Stekiel45255e42023-06-29 13:56:36 +02006478 "$P_CLI force_version=tls12 ca_callback=1 debug_level=3 auth_mode=optional groups=secp521r1" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006479 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01006480 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006481 -c "bad certificate (EC key curve)"\
6482 -c "! Certificate verification flags"\
6483 -c "bad server certificate (ECDH curve)" # Expect failure only at ECDH params check
6484
6485requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
Ronald Cron5de538c2022-10-20 14:47:56 +02006486requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Ronald Cron84442a32024-04-03 08:57:09 +02006487run_test "Authentication, CA callback: client SHA384, server required" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006488 "$P_SRV ca_callback=1 debug_level=3 auth_mode=required" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006489 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/server6.crt \
6490 key_file=$DATA_FILES_PATH/server6.key \
Hanno Becker746aaf32019-03-28 15:25:23 +00006491 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384" \
6492 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01006493 -s "use CA callback for X.509 CRT verification" \
Andrzej Kurekec71b092022-11-15 10:21:50 -05006494 -c "Supported Signature Algorithm found: 04 " \
6495 -c "Supported Signature Algorithm found: 05 "
Hanno Becker746aaf32019-03-28 15:25:23 +00006496
6497requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
Ronald Cron5de538c2022-10-20 14:47:56 +02006498requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Ronald Cron84442a32024-04-03 08:57:09 +02006499run_test "Authentication, CA callback: client SHA256, server required" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006500 "$P_SRV ca_callback=1 debug_level=3 auth_mode=required" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006501 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/server6.crt \
6502 key_file=$DATA_FILES_PATH/server6.key \
Hanno Becker746aaf32019-03-28 15:25:23 +00006503 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256" \
6504 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01006505 -s "use CA callback for X.509 CRT verification" \
Andrzej Kurekec71b092022-11-15 10:21:50 -05006506 -c "Supported Signature Algorithm found: 04 " \
6507 -c "Supported Signature Algorithm found: 05 "
Hanno Becker746aaf32019-03-28 15:25:23 +00006508
6509requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
6510run_test "Authentication, CA callback: client badcert, server required" \
Ronald Cron8d5da8f2024-04-03 09:10:02 +02006511 "$P_SRV ca_callback=1 debug_level=3 auth_mode=required" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006512 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/server5-badsign.crt \
6513 key_file=$DATA_FILES_PATH/server5.key" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006514 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01006515 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006516 -S "skip write certificate request" \
6517 -C "skip parse certificate request" \
6518 -c "got a certificate request" \
6519 -C "skip write certificate" \
6520 -C "skip write certificate verify" \
6521 -S "skip parse certificate verify" \
6522 -s "x509_verify_cert() returned" \
6523 -s "! The certificate is not correctly signed by the trusted CA" \
6524 -s "! mbedtls_ssl_handshake returned" \
6525 -s "send alert level=2 message=48" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006526 -s "X509 - Certificate verification failed"
6527# We don't check that the client receives the alert because it might
6528# detect that its write end of the connection is closed and abort
6529# before reading the alert message.
6530
6531requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
6532run_test "Authentication, CA callback: client cert not trusted, server required" \
Ronald Cron8d5da8f2024-04-03 09:10:02 +02006533 "$P_SRV ca_callback=1 debug_level=3 auth_mode=required" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006534 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/server5-selfsigned.crt \
6535 key_file=$DATA_FILES_PATH/server5.key" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006536 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01006537 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006538 -S "skip write certificate request" \
6539 -C "skip parse certificate request" \
6540 -c "got a certificate request" \
6541 -C "skip write certificate" \
6542 -C "skip write certificate verify" \
6543 -S "skip parse certificate verify" \
6544 -s "x509_verify_cert() returned" \
6545 -s "! The certificate is not correctly signed by the trusted CA" \
6546 -s "! mbedtls_ssl_handshake returned" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006547 -s "X509 - Certificate verification failed"
6548
6549requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
6550run_test "Authentication, CA callback: client badcert, server optional" \
Ronald Cron8d5da8f2024-04-03 09:10:02 +02006551 "$P_SRV ca_callback=1 debug_level=3 auth_mode=optional" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006552 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/server5-badsign.crt \
6553 key_file=$DATA_FILES_PATH/server5.key" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006554 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01006555 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006556 -S "skip write certificate request" \
6557 -C "skip parse certificate request" \
6558 -c "got a certificate request" \
6559 -C "skip write certificate" \
6560 -C "skip write certificate verify" \
6561 -S "skip parse certificate verify" \
6562 -s "x509_verify_cert() returned" \
6563 -s "! The certificate is not correctly signed by the trusted CA" \
6564 -S "! mbedtls_ssl_handshake returned" \
6565 -C "! mbedtls_ssl_handshake returned" \
6566 -S "X509 - Certificate verification failed"
6567
Yuto Takano6f657432021-07-02 13:10:41 +01006568requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Hanno Becker746aaf32019-03-28 15:25:23 +00006569requires_full_size_output_buffer
6570requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
6571run_test "Authentication, CA callback: server max_int chain, client default" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006572 "$P_SRV crt_file=$DATA_FILES_PATH/dir-maxpath/c09.pem \
6573 key_file=$DATA_FILES_PATH/dir-maxpath/09.key" \
Ronald Cron8d5da8f2024-04-03 09:10:02 +02006574 "$P_CLI ca_callback=1 debug_level=3 server_name=CA09 ca_file=$DATA_FILES_PATH/dir-maxpath/00.crt" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006575 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01006576 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006577 -C "X509 - A fatal error occurred"
6578
Yuto Takano6f657432021-07-02 13:10:41 +01006579requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Hanno Becker746aaf32019-03-28 15:25:23 +00006580requires_full_size_output_buffer
6581requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
6582run_test "Authentication, CA callback: server max_int+1 chain, client default" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006583 "$P_SRV crt_file=$DATA_FILES_PATH/dir-maxpath/c10.pem \
6584 key_file=$DATA_FILES_PATH/dir-maxpath/10.key" \
Ronald Cron8d5da8f2024-04-03 09:10:02 +02006585 "$P_CLI debug_level=3 ca_callback=1 server_name=CA10 ca_file=$DATA_FILES_PATH/dir-maxpath/00.crt" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006586 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01006587 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006588 -c "X509 - A fatal error occurred"
6589
Yuto Takano6f657432021-07-02 13:10:41 +01006590requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Hanno Becker746aaf32019-03-28 15:25:23 +00006591requires_full_size_output_buffer
6592requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
6593run_test "Authentication, CA callback: server max_int+1 chain, client optional" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006594 "$P_SRV crt_file=$DATA_FILES_PATH/dir-maxpath/c10.pem \
6595 key_file=$DATA_FILES_PATH/dir-maxpath/10.key" \
Ronald Cron8d5da8f2024-04-03 09:10:02 +02006596 "$P_CLI ca_callback=1 server_name=CA10 ca_file=$DATA_FILES_PATH/dir-maxpath/00.crt \
Hanno Becker746aaf32019-03-28 15:25:23 +00006597 debug_level=3 auth_mode=optional" \
6598 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01006599 -c "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006600 -c "X509 - A fatal error occurred"
6601
Yuto Takano6f657432021-07-02 13:10:41 +01006602requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Hanno Becker746aaf32019-03-28 15:25:23 +00006603requires_full_size_output_buffer
6604requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
6605run_test "Authentication, CA callback: client max_int+1 chain, server optional" \
Ronald Cron8d5da8f2024-04-03 09:10:02 +02006606 "$P_SRV ca_callback=1 debug_level=3 ca_file=$DATA_FILES_PATH/dir-maxpath/00.crt auth_mode=optional" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006607 "$P_CLI crt_file=$DATA_FILES_PATH/dir-maxpath/c10.pem \
6608 key_file=$DATA_FILES_PATH/dir-maxpath/10.key" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006609 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01006610 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006611 -s "X509 - A fatal error occurred"
6612
Yuto Takano6f657432021-07-02 13:10:41 +01006613requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Hanno Becker746aaf32019-03-28 15:25:23 +00006614requires_full_size_output_buffer
6615requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
6616run_test "Authentication, CA callback: client max_int+1 chain, server required" \
Ronald Cron8d5da8f2024-04-03 09:10:02 +02006617 "$P_SRV ca_callback=1 debug_level=3 ca_file=$DATA_FILES_PATH/dir-maxpath/00.crt auth_mode=required" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006618 "$P_CLI crt_file=$DATA_FILES_PATH/dir-maxpath/c10.pem \
6619 key_file=$DATA_FILES_PATH/dir-maxpath/10.key" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006620 1 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01006621 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006622 -s "X509 - A fatal error occurred"
6623
Yuto Takano6f657432021-07-02 13:10:41 +01006624requires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
Hanno Becker746aaf32019-03-28 15:25:23 +00006625requires_full_size_output_buffer
6626requires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
6627run_test "Authentication, CA callback: client max_int chain, server required" \
Ronald Cron8d5da8f2024-04-03 09:10:02 +02006628 "$P_SRV ca_callback=1 debug_level=3 ca_file=$DATA_FILES_PATH/dir-maxpath/00.crt auth_mode=required" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006629 "$P_CLI crt_file=$DATA_FILES_PATH/dir-maxpath/c09.pem \
6630 key_file=$DATA_FILES_PATH/dir-maxpath/09.key" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006631 0 \
Janos Follathd7ecbd62019-04-05 14:52:17 +01006632 -s "use CA callback for X.509 CRT verification" \
Hanno Becker746aaf32019-03-28 15:25:23 +00006633 -S "X509 - A fatal error occurred"
6634
Shaun Case8b0ecbc2021-12-20 21:14:10 -08006635# Tests for certificate selection based on SHA version
Manuel Pégourié-Gonnarddf331a52015-01-08 16:43:07 +01006636
Hanno Beckerc5722d12020-10-09 11:10:42 +01006637requires_config_disabled MBEDTLS_X509_REMOVE_INFO
Manuel Pégourié-Gonnarddf331a52015-01-08 16:43:07 +01006638run_test "Certificate hash: client TLS 1.2 -> SHA-2" \
David Horstmann5ab92be2024-07-01 17:01:28 +01006639 "$P_SRV force_version=tls12 crt_file=$DATA_FILES_PATH/server5.crt \
6640 key_file=$DATA_FILES_PATH/server5.key \
6641 crt_file2=$DATA_FILES_PATH/server5-sha1.crt \
6642 key_file2=$DATA_FILES_PATH/server5.key" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01006643 "$P_CLI" \
Manuel Pégourié-Gonnarddf331a52015-01-08 16:43:07 +01006644 0 \
6645 -c "signed using.*ECDSA with SHA256" \
6646 -C "signed using.*ECDSA with SHA1"
6647
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01006648# tests for SNI
6649
Hanno Beckerc5722d12020-10-09 11:10:42 +01006650requires_config_disabled MBEDTLS_X509_REMOVE_INFO
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006651run_test "SNI: no SNI callback" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02006652 "$P_SRV debug_level=3 \
David Horstmann5ab92be2024-07-01 17:01:28 +01006653 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02006654 "$P_CLI server_name=localhost" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02006655 0 \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02006656 -c "issuer name *: C=NL, O=PolarSSL, CN=Polarssl Test EC CA" \
6657 -c "subject name *: C=NL, O=PolarSSL, CN=localhost"
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01006658
Hanno Beckerc5722d12020-10-09 11:10:42 +01006659requires_config_disabled MBEDTLS_X509_REMOVE_INFO
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006660run_test "SNI: matching cert 1" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02006661 "$P_SRV debug_level=3 \
David Horstmann5ab92be2024-07-01 17:01:28 +01006662 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key \
6663 sni=localhost,$DATA_FILES_PATH/server2.crt,$DATA_FILES_PATH/server2.key,-,-,-,polarssl.example,$DATA_FILES_PATH/server1-nospace.crt,$DATA_FILES_PATH/server1.key,-,-,-" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02006664 "$P_CLI server_name=localhost" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02006665 0 \
6666 -s "parse ServerName extension" \
6667 -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
6668 -c "subject name *: C=NL, O=PolarSSL, CN=localhost"
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01006669
Hanno Beckerc5722d12020-10-09 11:10:42 +01006670requires_config_disabled MBEDTLS_X509_REMOVE_INFO
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006671run_test "SNI: matching cert 2" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02006672 "$P_SRV debug_level=3 \
David Horstmann5ab92be2024-07-01 17:01:28 +01006673 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key \
6674 sni=localhost,$DATA_FILES_PATH/server2.crt,$DATA_FILES_PATH/server2.key,-,-,-,polarssl.example,$DATA_FILES_PATH/server1-nospace.crt,$DATA_FILES_PATH/server1.key,-,-,-" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02006675 "$P_CLI server_name=polarssl.example" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02006676 0 \
6677 -s "parse ServerName extension" \
6678 -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
6679 -c "subject name *: C=NL, O=PolarSSL, CN=polarssl.example"
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01006680
Hanno Beckerc5722d12020-10-09 11:10:42 +01006681requires_config_disabled MBEDTLS_X509_REMOVE_INFO
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006682run_test "SNI: no matching cert" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02006683 "$P_SRV debug_level=3 \
David Horstmann5ab92be2024-07-01 17:01:28 +01006684 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key \
6685 sni=localhost,$DATA_FILES_PATH/server2.crt,$DATA_FILES_PATH/server2.key,-,-,-,polarssl.example,$DATA_FILES_PATH/server1-nospace.crt,$DATA_FILES_PATH/server1.key,-,-,-" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +02006686 "$P_CLI server_name=nonesuch.example" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02006687 1 \
6688 -s "parse ServerName extension" \
6689 -s "ssl_sni_wrapper() returned" \
6690 -s "mbedtls_ssl_handshake returned" \
6691 -c "mbedtls_ssl_handshake returned" \
6692 -c "SSL - A fatal alert message was received from our peer"
Manuel Pégourié-Gonnard96ea2f22014-02-25 12:26:29 +01006693
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02006694run_test "SNI: client auth no override: optional" \
6695 "$P_SRV debug_level=3 auth_mode=optional \
David Horstmann5ab92be2024-07-01 17:01:28 +01006696 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key \
6697 sni=localhost,$DATA_FILES_PATH/server2.crt,$DATA_FILES_PATH/server2.key,-,-,-" \
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02006698 "$P_CLI debug_level=3 server_name=localhost" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02006699 0 \
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02006700 -S "skip write certificate request" \
6701 -C "skip parse certificate request" \
6702 -c "got a certificate request" \
6703 -C "skip write certificate" \
6704 -C "skip write certificate verify" \
6705 -S "skip parse certificate verify"
6706
6707run_test "SNI: client auth override: none -> optional" \
6708 "$P_SRV debug_level=3 auth_mode=none \
David Horstmann5ab92be2024-07-01 17:01:28 +01006709 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key \
6710 sni=localhost,$DATA_FILES_PATH/server2.crt,$DATA_FILES_PATH/server2.key,-,-,optional" \
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02006711 "$P_CLI debug_level=3 server_name=localhost" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02006712 0 \
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02006713 -S "skip write certificate request" \
6714 -C "skip parse certificate request" \
6715 -c "got a certificate request" \
6716 -C "skip write certificate" \
6717 -C "skip write certificate verify" \
6718 -S "skip parse certificate verify"
6719
6720run_test "SNI: client auth override: optional -> none" \
6721 "$P_SRV debug_level=3 auth_mode=optional \
David Horstmann5ab92be2024-07-01 17:01:28 +01006722 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key \
6723 sni=localhost,$DATA_FILES_PATH/server2.crt,$DATA_FILES_PATH/server2.key,-,-,none" \
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02006724 "$P_CLI debug_level=3 server_name=localhost" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02006725 0 \
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02006726 -s "skip write certificate request" \
6727 -C "skip parse certificate request" \
6728 -c "got no certificate request" \
XiaokangQian23c5be62022-06-07 02:04:34 +00006729 -c "skip write certificate"
Manuel Pégourié-Gonnardc948a792015-06-22 16:04:20 +02006730
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02006731run_test "SNI: CA no override" \
6732 "$P_SRV debug_level=3 auth_mode=optional \
David Horstmann5ab92be2024-07-01 17:01:28 +01006733 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key \
6734 ca_file=$DATA_FILES_PATH/test-ca.crt \
6735 sni=localhost,$DATA_FILES_PATH/server2.crt,$DATA_FILES_PATH/server2.key,-,-,required" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02006736 "$P_CLI debug_level=3 server_name=localhost \
David Horstmann5ab92be2024-07-01 17:01:28 +01006737 crt_file=$DATA_FILES_PATH/server6.crt key_file=$DATA_FILES_PATH/server6.key" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02006738 1 \
6739 -S "skip write certificate request" \
6740 -C "skip parse certificate request" \
6741 -c "got a certificate request" \
6742 -C "skip write certificate" \
6743 -C "skip write certificate verify" \
6744 -S "skip parse certificate verify" \
6745 -s "x509_verify_cert() returned" \
6746 -s "! The certificate is not correctly signed by the trusted CA" \
6747 -S "The certificate has been revoked (is on a CRL)"
6748
6749run_test "SNI: CA override" \
6750 "$P_SRV debug_level=3 auth_mode=optional \
David Horstmann5ab92be2024-07-01 17:01:28 +01006751 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key \
6752 ca_file=$DATA_FILES_PATH/test-ca.crt \
6753 sni=localhost,$DATA_FILES_PATH/server2.crt,$DATA_FILES_PATH/server2.key,$DATA_FILES_PATH/test-ca2.crt,-,required" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02006754 "$P_CLI debug_level=3 server_name=localhost \
David Horstmann5ab92be2024-07-01 17:01:28 +01006755 crt_file=$DATA_FILES_PATH/server6.crt key_file=$DATA_FILES_PATH/server6.key" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02006756 0 \
6757 -S "skip write certificate request" \
6758 -C "skip parse certificate request" \
6759 -c "got a certificate request" \
6760 -C "skip write certificate" \
6761 -C "skip write certificate verify" \
6762 -S "skip parse certificate verify" \
6763 -S "x509_verify_cert() returned" \
6764 -S "! The certificate is not correctly signed by the trusted CA" \
6765 -S "The certificate has been revoked (is on a CRL)"
6766
6767run_test "SNI: CA override with CRL" \
6768 "$P_SRV debug_level=3 auth_mode=optional \
David Horstmann5ab92be2024-07-01 17:01:28 +01006769 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key \
6770 ca_file=$DATA_FILES_PATH/test-ca.crt \
6771 sni=localhost,$DATA_FILES_PATH/server2.crt,$DATA_FILES_PATH/server2.key,$DATA_FILES_PATH/test-ca2.crt,$DATA_FILES_PATH/crl-ec-sha256.pem,required" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02006772 "$P_CLI debug_level=3 server_name=localhost \
David Horstmann5ab92be2024-07-01 17:01:28 +01006773 crt_file=$DATA_FILES_PATH/server6.crt key_file=$DATA_FILES_PATH/server6.key" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02006774 1 \
6775 -S "skip write certificate request" \
6776 -C "skip parse certificate request" \
6777 -c "got a certificate request" \
6778 -C "skip write certificate" \
6779 -C "skip write certificate verify" \
6780 -S "skip parse certificate verify" \
6781 -s "x509_verify_cert() returned" \
6782 -S "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard4192bba2024-08-05 12:44:57 +02006783 -s "send alert level=2 message=44" \
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02006784 -s "The certificate has been revoked (is on a CRL)"
Manuel Pégourié-Gonnard4192bba2024-08-05 12:44:57 +02006785 # MBEDTLS_X509_BADCERT_REVOKED -> MBEDTLS_SSL_ALERT_MSG_CERT_REVOKED
Manuel Pégourié-Gonnard6ea831d2015-06-22 16:50:52 +02006786
Andres AG1a834452016-12-07 10:01:30 +00006787# Tests for SNI and DTLS
6788
Hanno Beckerc5722d12020-10-09 11:10:42 +01006789requires_config_disabled MBEDTLS_X509_REMOVE_INFO
Jerry Yuab082902021-12-23 18:02:22 +08006790requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01006791run_test "SNI: DTLS, no SNI callback" \
6792 "$P_SRV debug_level=3 dtls=1 \
David Horstmann5ab92be2024-07-01 17:01:28 +01006793 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key" \
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01006794 "$P_CLI server_name=localhost dtls=1" \
6795 0 \
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01006796 -c "issuer name *: C=NL, O=PolarSSL, CN=Polarssl Test EC CA" \
6797 -c "subject name *: C=NL, O=PolarSSL, CN=localhost"
6798
Hanno Beckerc5722d12020-10-09 11:10:42 +01006799requires_config_disabled MBEDTLS_X509_REMOVE_INFO
Jerry Yuab082902021-12-23 18:02:22 +08006800requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andres Amaya Garciaf77d3d32018-05-01 20:26:47 +01006801run_test "SNI: DTLS, matching cert 1" \
Andres AG1a834452016-12-07 10:01:30 +00006802 "$P_SRV debug_level=3 dtls=1 \
David Horstmann5ab92be2024-07-01 17:01:28 +01006803 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key \
6804 sni=localhost,$DATA_FILES_PATH/server2.crt,$DATA_FILES_PATH/server2.key,-,-,-,polarssl.example,$DATA_FILES_PATH/server1-nospace.crt,$DATA_FILES_PATH/server1.key,-,-,-" \
Andres AG1a834452016-12-07 10:01:30 +00006805 "$P_CLI server_name=localhost dtls=1" \
6806 0 \
6807 -s "parse ServerName extension" \
6808 -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
6809 -c "subject name *: C=NL, O=PolarSSL, CN=localhost"
6810
Hanno Beckerc5722d12020-10-09 11:10:42 +01006811requires_config_disabled MBEDTLS_X509_REMOVE_INFO
Jerry Yuab082902021-12-23 18:02:22 +08006812requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01006813run_test "SNI: DTLS, matching cert 2" \
6814 "$P_SRV debug_level=3 dtls=1 \
David Horstmann5ab92be2024-07-01 17:01:28 +01006815 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key \
6816 sni=localhost,$DATA_FILES_PATH/server2.crt,$DATA_FILES_PATH/server2.key,-,-,-,polarssl.example,$DATA_FILES_PATH/server1-nospace.crt,$DATA_FILES_PATH/server1.key,-,-,-" \
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01006817 "$P_CLI server_name=polarssl.example dtls=1" \
6818 0 \
6819 -s "parse ServerName extension" \
6820 -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
6821 -c "subject name *: C=NL, O=PolarSSL, CN=polarssl.example"
6822
Jerry Yuab082902021-12-23 18:02:22 +08006823requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01006824run_test "SNI: DTLS, no matching cert" \
6825 "$P_SRV debug_level=3 dtls=1 \
David Horstmann5ab92be2024-07-01 17:01:28 +01006826 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key \
6827 sni=localhost,$DATA_FILES_PATH/server2.crt,$DATA_FILES_PATH/server2.key,-,-,-,polarssl.example,$DATA_FILES_PATH/server1-nospace.crt,$DATA_FILES_PATH/server1.key,-,-,-" \
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01006828 "$P_CLI server_name=nonesuch.example dtls=1" \
6829 1 \
6830 -s "parse ServerName extension" \
6831 -s "ssl_sni_wrapper() returned" \
6832 -s "mbedtls_ssl_handshake returned" \
6833 -c "mbedtls_ssl_handshake returned" \
6834 -c "SSL - A fatal alert message was received from our peer"
6835
Jerry Yuab082902021-12-23 18:02:22 +08006836requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01006837run_test "SNI: DTLS, client auth no override: optional" \
6838 "$P_SRV debug_level=3 auth_mode=optional dtls=1 \
David Horstmann5ab92be2024-07-01 17:01:28 +01006839 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key \
6840 sni=localhost,$DATA_FILES_PATH/server2.crt,$DATA_FILES_PATH/server2.key,-,-,-" \
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01006841 "$P_CLI debug_level=3 server_name=localhost dtls=1" \
6842 0 \
6843 -S "skip write certificate request" \
6844 -C "skip parse certificate request" \
6845 -c "got a certificate request" \
6846 -C "skip write certificate" \
6847 -C "skip write certificate verify" \
6848 -S "skip parse certificate verify"
6849
Jerry Yuab082902021-12-23 18:02:22 +08006850requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01006851run_test "SNI: DTLS, client auth override: none -> optional" \
6852 "$P_SRV debug_level=3 auth_mode=none dtls=1 \
David Horstmann5ab92be2024-07-01 17:01:28 +01006853 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key \
6854 sni=localhost,$DATA_FILES_PATH/server2.crt,$DATA_FILES_PATH/server2.key,-,-,optional" \
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01006855 "$P_CLI debug_level=3 server_name=localhost dtls=1" \
6856 0 \
6857 -S "skip write certificate request" \
6858 -C "skip parse certificate request" \
6859 -c "got a certificate request" \
6860 -C "skip write certificate" \
6861 -C "skip write certificate verify" \
6862 -S "skip parse certificate verify"
6863
Jerry Yuab082902021-12-23 18:02:22 +08006864requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01006865run_test "SNI: DTLS, client auth override: optional -> none" \
6866 "$P_SRV debug_level=3 auth_mode=optional dtls=1 \
David Horstmann5ab92be2024-07-01 17:01:28 +01006867 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key \
6868 sni=localhost,$DATA_FILES_PATH/server2.crt,$DATA_FILES_PATH/server2.key,-,-,none" \
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01006869 "$P_CLI debug_level=3 server_name=localhost dtls=1" \
6870 0 \
6871 -s "skip write certificate request" \
6872 -C "skip parse certificate request" \
6873 -c "got no certificate request" \
6874 -c "skip write certificate" \
6875 -c "skip write certificate verify" \
6876 -s "skip parse certificate verify"
6877
Jerry Yuab082902021-12-23 18:02:22 +08006878requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01006879run_test "SNI: DTLS, CA no override" \
6880 "$P_SRV debug_level=3 auth_mode=optional dtls=1 \
David Horstmann5ab92be2024-07-01 17:01:28 +01006881 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key \
6882 ca_file=$DATA_FILES_PATH/test-ca.crt \
6883 sni=localhost,$DATA_FILES_PATH/server2.crt,$DATA_FILES_PATH/server2.key,-,-,required" \
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01006884 "$P_CLI debug_level=3 server_name=localhost dtls=1 \
David Horstmann5ab92be2024-07-01 17:01:28 +01006885 crt_file=$DATA_FILES_PATH/server6.crt key_file=$DATA_FILES_PATH/server6.key" \
Andres Amaya Garcia54306c12018-05-01 20:27:37 +01006886 1 \
6887 -S "skip write certificate request" \
6888 -C "skip parse certificate request" \
6889 -c "got a certificate request" \
6890 -C "skip write certificate" \
6891 -C "skip write certificate verify" \
6892 -S "skip parse certificate verify" \
6893 -s "x509_verify_cert() returned" \
6894 -s "! The certificate is not correctly signed by the trusted CA" \
6895 -S "The certificate has been revoked (is on a CRL)"
6896
Jerry Yuab082902021-12-23 18:02:22 +08006897requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andres Amaya Garciaf77d3d32018-05-01 20:26:47 +01006898run_test "SNI: DTLS, CA override" \
Andres AG1a834452016-12-07 10:01:30 +00006899 "$P_SRV debug_level=3 auth_mode=optional dtls=1 \
David Horstmann5ab92be2024-07-01 17:01:28 +01006900 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key \
6901 ca_file=$DATA_FILES_PATH/test-ca.crt \
6902 sni=localhost,$DATA_FILES_PATH/server2.crt,$DATA_FILES_PATH/server2.key,$DATA_FILES_PATH/test-ca2.crt,-,required" \
Andres AG1a834452016-12-07 10:01:30 +00006903 "$P_CLI debug_level=3 server_name=localhost dtls=1 \
David Horstmann5ab92be2024-07-01 17:01:28 +01006904 crt_file=$DATA_FILES_PATH/server6.crt key_file=$DATA_FILES_PATH/server6.key" \
Andres AG1a834452016-12-07 10:01:30 +00006905 0 \
6906 -S "skip write certificate request" \
6907 -C "skip parse certificate request" \
6908 -c "got a certificate request" \
6909 -C "skip write certificate" \
6910 -C "skip write certificate verify" \
6911 -S "skip parse certificate verify" \
6912 -S "x509_verify_cert() returned" \
6913 -S "! The certificate is not correctly signed by the trusted CA" \
6914 -S "The certificate has been revoked (is on a CRL)"
6915
Jerry Yuab082902021-12-23 18:02:22 +08006916requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andres Amaya Garciaf77d3d32018-05-01 20:26:47 +01006917run_test "SNI: DTLS, CA override with CRL" \
Andres AG1a834452016-12-07 10:01:30 +00006918 "$P_SRV debug_level=3 auth_mode=optional \
David Horstmann5ab92be2024-07-01 17:01:28 +01006919 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key dtls=1 \
6920 ca_file=$DATA_FILES_PATH/test-ca.crt \
6921 sni=localhost,$DATA_FILES_PATH/server2.crt,$DATA_FILES_PATH/server2.key,$DATA_FILES_PATH/test-ca2.crt,$DATA_FILES_PATH/crl-ec-sha256.pem,required" \
Andres AG1a834452016-12-07 10:01:30 +00006922 "$P_CLI debug_level=3 server_name=localhost dtls=1 \
David Horstmann5ab92be2024-07-01 17:01:28 +01006923 crt_file=$DATA_FILES_PATH/server6.crt key_file=$DATA_FILES_PATH/server6.key" \
Andres AG1a834452016-12-07 10:01:30 +00006924 1 \
6925 -S "skip write certificate request" \
6926 -C "skip parse certificate request" \
6927 -c "got a certificate request" \
6928 -C "skip write certificate" \
6929 -C "skip write certificate verify" \
6930 -S "skip parse certificate verify" \
6931 -s "x509_verify_cert() returned" \
6932 -S "! The certificate is not correctly signed by the trusted CA" \
Manuel Pégourié-Gonnard4192bba2024-08-05 12:44:57 +02006933 -s "send alert level=2 message=44" \
Andres AG1a834452016-12-07 10:01:30 +00006934 -s "The certificate has been revoked (is on a CRL)"
Manuel Pégourié-Gonnard4192bba2024-08-05 12:44:57 +02006935 # MBEDTLS_X509_BADCERT_REVOKED -> MBEDTLS_SSL_ALERT_MSG_CERT_REVOKED
Andres AG1a834452016-12-07 10:01:30 +00006936
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01006937# Tests for non-blocking I/O: exercise a variety of handshake flows
6938
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006939run_test "Non-blocking I/O: basic handshake" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01006940 "$P_SRV nbio=2 tickets=0 auth_mode=none" \
6941 "$P_CLI nbio=2 tickets=0" \
6942 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02006943 -S "mbedtls_ssl_handshake returned" \
6944 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01006945 -c "Read from server: .* bytes read"
6946
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006947run_test "Non-blocking I/O: client auth" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01006948 "$P_SRV nbio=2 tickets=0 auth_mode=required" \
6949 "$P_CLI nbio=2 tickets=0" \
6950 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02006951 -S "mbedtls_ssl_handshake returned" \
6952 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01006953 -c "Read from server: .* bytes read"
6954
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02006955requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006956run_test "Non-blocking I/O: ticket" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01006957 "$P_SRV nbio=2 tickets=1 auth_mode=none" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +02006958 "$P_CLI nbio=2 tickets=1 new_session_tickets=1" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01006959 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02006960 -S "mbedtls_ssl_handshake returned" \
6961 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01006962 -c "Read from server: .* bytes read"
6963
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02006964requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02006965run_test "Non-blocking I/O: ticket + client auth" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01006966 "$P_SRV nbio=2 tickets=1 auth_mode=required" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +02006967 "$P_CLI nbio=2 tickets=1 new_session_tickets=1" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01006968 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02006969 -S "mbedtls_ssl_handshake returned" \
6970 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01006971 -c "Read from server: .* bytes read"
6972
Ronald Cron5de538c2022-10-20 14:47:56 +02006973requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02006974requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Ronald Cron92dca392023-03-10 16:11:15 +01006975run_test "Non-blocking I/O: TLS 1.2 + ticket + client auth + resume" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01006976 "$P_SRV nbio=2 tickets=1 auth_mode=required" \
Ronald Cron92dca392023-03-10 16:11:15 +01006977 "$P_CLI force_version=tls12 nbio=2 tickets=1 reconnect=1" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01006978 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02006979 -S "mbedtls_ssl_handshake returned" \
6980 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01006981 -c "Read from server: .* bytes read"
6982
Ronald Cron92dca392023-03-10 16:11:15 +01006983requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
6984requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
6985requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02006986requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Ronald Cron92dca392023-03-10 16:11:15 +01006987run_test "Non-blocking I/O: TLS 1.3 + ticket + client auth + resume" \
6988 "$P_SRV nbio=2 tickets=1 auth_mode=required" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +02006989 "$P_CLI nbio=2 tickets=1 new_session_tickets=1 reconnect=1" \
Ronald Cron92dca392023-03-10 16:11:15 +01006990 0 \
6991 -S "mbedtls_ssl_handshake returned" \
6992 -C "mbedtls_ssl_handshake returned" \
6993 -c "Read from server: .* bytes read"
6994
Ronald Cron5de538c2022-10-20 14:47:56 +02006995requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02006996requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Ronald Cron92dca392023-03-10 16:11:15 +01006997run_test "Non-blocking I/O: TLS 1.2 + ticket + resume" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01006998 "$P_SRV nbio=2 tickets=1 auth_mode=none" \
Ronald Cron92dca392023-03-10 16:11:15 +01006999 "$P_CLI force_version=tls12 nbio=2 tickets=1 reconnect=1" \
7000 0 \
7001 -S "mbedtls_ssl_handshake returned" \
7002 -C "mbedtls_ssl_handshake returned" \
7003 -c "Read from server: .* bytes read"
7004
7005requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
7006requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
7007requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02007008requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Ronald Cron92dca392023-03-10 16:11:15 +01007009run_test "Non-blocking I/O: TLS 1.3 + ticket + resume" \
7010 "$P_SRV nbio=2 tickets=1 auth_mode=none" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +02007011 "$P_CLI nbio=2 tickets=1 new_session_tickets=1 reconnect=1" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01007012 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02007013 -S "mbedtls_ssl_handshake returned" \
7014 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01007015 -c "Read from server: .* bytes read"
7016
Ronald Cron5de538c2022-10-20 14:47:56 +02007017requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02007018run_test "Non-blocking I/O: session-id resume" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01007019 "$P_SRV nbio=2 tickets=0 auth_mode=none" \
Ronald Cronf95d1692023-03-14 17:19:42 +01007020 "$P_CLI force_version=tls12 nbio=2 tickets=0 reconnect=1" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01007021 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02007022 -S "mbedtls_ssl_handshake returned" \
7023 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0b6609b2014-02-26 14:45:12 +01007024 -c "Read from server: .* bytes read"
7025
Hanno Becker00076712017-11-15 16:39:08 +00007026# Tests for event-driven I/O: exercise a variety of handshake flows
7027
7028run_test "Event-driven I/O: basic handshake" \
7029 "$P_SRV event=1 tickets=0 auth_mode=none" \
7030 "$P_CLI event=1 tickets=0" \
7031 0 \
7032 -S "mbedtls_ssl_handshake returned" \
7033 -C "mbedtls_ssl_handshake returned" \
7034 -c "Read from server: .* bytes read"
7035
7036run_test "Event-driven I/O: client auth" \
7037 "$P_SRV event=1 tickets=0 auth_mode=required" \
7038 "$P_CLI event=1 tickets=0" \
7039 0 \
7040 -S "mbedtls_ssl_handshake returned" \
7041 -C "mbedtls_ssl_handshake returned" \
7042 -c "Read from server: .* bytes read"
7043
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02007044requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Hanno Becker00076712017-11-15 16:39:08 +00007045run_test "Event-driven I/O: ticket" \
7046 "$P_SRV event=1 tickets=1 auth_mode=none" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +02007047 "$P_CLI event=1 tickets=1 new_session_tickets=1" \
Hanno Becker00076712017-11-15 16:39:08 +00007048 0 \
7049 -S "mbedtls_ssl_handshake returned" \
7050 -C "mbedtls_ssl_handshake returned" \
7051 -c "Read from server: .* bytes read"
7052
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02007053requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Hanno Becker00076712017-11-15 16:39:08 +00007054run_test "Event-driven I/O: ticket + client auth" \
7055 "$P_SRV event=1 tickets=1 auth_mode=required" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +02007056 "$P_CLI event=1 tickets=1 new_session_tickets=1" \
Hanno Becker00076712017-11-15 16:39:08 +00007057 0 \
7058 -S "mbedtls_ssl_handshake returned" \
7059 -C "mbedtls_ssl_handshake returned" \
7060 -c "Read from server: .* bytes read"
7061
Ronald Cron5de538c2022-10-20 14:47:56 +02007062requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02007063requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Ronald Cron92dca392023-03-10 16:11:15 +01007064run_test "Event-driven I/O: TLS 1.2 + ticket + client auth + resume" \
Hanno Becker00076712017-11-15 16:39:08 +00007065 "$P_SRV event=1 tickets=1 auth_mode=required" \
Ronald Cron92dca392023-03-10 16:11:15 +01007066 "$P_CLI force_version=tls12 event=1 tickets=1 reconnect=1" \
Hanno Becker00076712017-11-15 16:39:08 +00007067 0 \
7068 -S "mbedtls_ssl_handshake returned" \
7069 -C "mbedtls_ssl_handshake returned" \
7070 -c "Read from server: .* bytes read"
7071
Ronald Cron92dca392023-03-10 16:11:15 +01007072requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
7073requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
7074requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02007075requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Ronald Cron92dca392023-03-10 16:11:15 +01007076run_test "Event-driven I/O: TLS 1.3 + ticket + client auth + resume" \
7077 "$P_SRV event=1 tickets=1 auth_mode=required" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +02007078 "$P_CLI event=1 tickets=1 new_session_tickets=1 reconnect=1" \
Ronald Cron92dca392023-03-10 16:11:15 +01007079 0 \
7080 -S "mbedtls_ssl_handshake returned" \
7081 -C "mbedtls_ssl_handshake returned" \
7082 -c "Read from server: .* bytes read"
7083
Ronald Cron5de538c2022-10-20 14:47:56 +02007084requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02007085requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Ronald Cron92dca392023-03-10 16:11:15 +01007086run_test "Event-driven I/O: TLS 1.2 + ticket + resume" \
Hanno Becker00076712017-11-15 16:39:08 +00007087 "$P_SRV event=1 tickets=1 auth_mode=none" \
Ronald Cron92dca392023-03-10 16:11:15 +01007088 "$P_CLI force_version=tls12 event=1 tickets=1 reconnect=1" \
7089 0 \
7090 -S "mbedtls_ssl_handshake returned" \
7091 -C "mbedtls_ssl_handshake returned" \
7092 -c "Read from server: .* bytes read"
7093
7094requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
7095requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
7096requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02007097requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Ronald Cron92dca392023-03-10 16:11:15 +01007098run_test "Event-driven I/O: TLS 1.3 + ticket + resume" \
7099 "$P_SRV event=1 tickets=1 auth_mode=none" \
Manuel Pégourié-Gonnardaa80f532024-09-04 10:51:33 +02007100 "$P_CLI event=1 tickets=1 new_session_tickets=1 reconnect=1" \
Hanno Becker00076712017-11-15 16:39:08 +00007101 0 \
7102 -S "mbedtls_ssl_handshake returned" \
7103 -C "mbedtls_ssl_handshake returned" \
7104 -c "Read from server: .* bytes read"
7105
Ronald Cron5de538c2022-10-20 14:47:56 +02007106requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Hanno Becker00076712017-11-15 16:39:08 +00007107run_test "Event-driven I/O: session-id resume" \
7108 "$P_SRV event=1 tickets=0 auth_mode=none" \
Ronald Cronf95d1692023-03-14 17:19:42 +01007109 "$P_CLI force_version=tls12 event=1 tickets=0 reconnect=1" \
Hanno Becker00076712017-11-15 16:39:08 +00007110 0 \
7111 -S "mbedtls_ssl_handshake returned" \
7112 -C "mbedtls_ssl_handshake returned" \
7113 -c "Read from server: .* bytes read"
7114
Jerry Yuab082902021-12-23 18:02:22 +08007115requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker6a33f592018-03-13 11:38:46 +00007116run_test "Event-driven I/O, DTLS: basic handshake" \
7117 "$P_SRV dtls=1 event=1 tickets=0 auth_mode=none" \
7118 "$P_CLI dtls=1 event=1 tickets=0" \
7119 0 \
7120 -c "Read from server: .* bytes read"
7121
Jerry Yuab082902021-12-23 18:02:22 +08007122requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker6a33f592018-03-13 11:38:46 +00007123run_test "Event-driven I/O, DTLS: client auth" \
7124 "$P_SRV dtls=1 event=1 tickets=0 auth_mode=required" \
7125 "$P_CLI dtls=1 event=1 tickets=0" \
7126 0 \
7127 -c "Read from server: .* bytes read"
7128
Jerry Yuab082902021-12-23 18:02:22 +08007129requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02007130requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Hanno Becker6a33f592018-03-13 11:38:46 +00007131run_test "Event-driven I/O, DTLS: ticket" \
7132 "$P_SRV dtls=1 event=1 tickets=1 auth_mode=none" \
7133 "$P_CLI dtls=1 event=1 tickets=1" \
7134 0 \
7135 -c "Read from server: .* bytes read"
7136
Jerry Yuab082902021-12-23 18:02:22 +08007137requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02007138requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Hanno Becker6a33f592018-03-13 11:38:46 +00007139run_test "Event-driven I/O, DTLS: ticket + client auth" \
7140 "$P_SRV dtls=1 event=1 tickets=1 auth_mode=required" \
7141 "$P_CLI dtls=1 event=1 tickets=1" \
7142 0 \
7143 -c "Read from server: .* bytes read"
7144
Jerry Yuab082902021-12-23 18:02:22 +08007145requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02007146requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Hanno Becker6a33f592018-03-13 11:38:46 +00007147run_test "Event-driven I/O, DTLS: ticket + client auth + resume" \
7148 "$P_SRV dtls=1 event=1 tickets=1 auth_mode=required" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01007149 "$P_CLI dtls=1 event=1 tickets=1 reconnect=1 skip_close_notify=1" \
Hanno Becker6a33f592018-03-13 11:38:46 +00007150 0 \
7151 -c "Read from server: .* bytes read"
7152
Jerry Yuab082902021-12-23 18:02:22 +08007153requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Norbert Fabritiusc93fc862023-04-12 09:50:30 +02007154requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Hanno Becker6a33f592018-03-13 11:38:46 +00007155run_test "Event-driven I/O, DTLS: ticket + resume" \
7156 "$P_SRV dtls=1 event=1 tickets=1 auth_mode=none" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01007157 "$P_CLI dtls=1 event=1 tickets=1 reconnect=1 skip_close_notify=1" \
Hanno Becker6a33f592018-03-13 11:38:46 +00007158 0 \
7159 -c "Read from server: .* bytes read"
7160
Jerry Yuab082902021-12-23 18:02:22 +08007161requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker6a33f592018-03-13 11:38:46 +00007162run_test "Event-driven I/O, DTLS: session-id resume" \
7163 "$P_SRV dtls=1 event=1 tickets=0 auth_mode=none" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01007164 "$P_CLI dtls=1 event=1 tickets=0 reconnect=1 skip_close_notify=1" \
Hanno Becker6a33f592018-03-13 11:38:46 +00007165 0 \
7166 -c "Read from server: .* bytes read"
Hanno Beckerbc6c1102018-03-13 11:39:40 +00007167
7168# This test demonstrates the need for the mbedtls_ssl_check_pending function.
7169# During session resumption, the client will send its ApplicationData record
7170# within the same datagram as the Finished messages. In this situation, the
7171# server MUST NOT idle on the underlying transport after handshake completion,
7172# because the ApplicationData request has already been queued internally.
Jerry Yuab082902021-12-23 18:02:22 +08007173requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckerbc6c1102018-03-13 11:39:40 +00007174run_test "Event-driven I/O, DTLS: session-id resume, UDP packing" \
Hanno Becker8d832182018-03-15 10:14:19 +00007175 -p "$P_PXY pack=50" \
Hanno Beckerbc6c1102018-03-13 11:39:40 +00007176 "$P_SRV dtls=1 event=1 tickets=0 auth_mode=required" \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +01007177 "$P_CLI dtls=1 event=1 tickets=0 reconnect=1 skip_close_notify=1" \
Hanno Beckerbc6c1102018-03-13 11:39:40 +00007178 0 \
7179 -c "Read from server: .* bytes read"
7180
Ronald Cron35884a42024-03-15 15:43:14 +01007181# Tests for version negotiation. Some information to ease the understanding
7182# of the version negotiation test titles below:
7183# . 1.2/1.3 means that only TLS 1.2/TLS 1.3 is enabled.
7184# . 1.2+1.3 means that both TLS 1.2 and TLS 1.3 are enabled.
7185# . 1.2+(1.3)/(1.2)+1.3 means that TLS 1.2/1.3 is enabled and that
7186# TLS 1.3/1.2 may be enabled or not.
7187# . max=1.2 means that both TLS 1.2 and TLS 1.3 are enabled at build time but
7188# TLS 1.3 is disabled at runtime (maximum negotiable version is TLS 1.2).
7189# . min=1.3 means that both TLS 1.2 and TLS 1.3 are enabled at build time but
7190# TLS 1.2 is disabled at runtime (minimum negotiable version is TLS 1.3).
7191
Ronald Cronfe18d8d2024-03-06 15:19:55 +01007192# Tests for version negotiation, MbedTLS client and server
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02007193
Gilles Peskine365296a2024-09-13 14:15:46 +02007194requires_config_enabled MBEDTLS_SSL_CLI_C
7195requires_config_enabled MBEDTLS_SSL_SRV_C
Ronald Cron114c5f02024-03-06 15:24:41 +01007196requires_config_disabled MBEDTLS_SSL_PROTO_TLS1_3
7197requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Ronald Cron35884a42024-03-15 15:43:14 +01007198run_test "Version nego m->m: cli 1.2, srv 1.2 -> 1.2" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01007199 "$P_SRV" \
Ronald Cron114c5f02024-03-06 15:24:41 +01007200 "$P_CLI" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01007201 0 \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02007202 -S "mbedtls_ssl_handshake returned" \
7203 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01007204 -s "Protocol is TLSv1.2" \
7205 -c "Protocol is TLSv1.2"
7206
Gilles Peskine365296a2024-09-13 14:15:46 +02007207requires_config_enabled MBEDTLS_SSL_CLI_C
7208requires_config_enabled MBEDTLS_SSL_SRV_C
7209requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7210requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cron114c5f02024-03-06 15:24:41 +01007211requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Ronald Cron35884a42024-03-15 15:43:14 +01007212run_test "Version nego m->m: cli max=1.2, srv max=1.2 -> 1.2" \
Ronald Cron114c5f02024-03-06 15:24:41 +01007213 "$P_SRV max_version=tls12" \
7214 "$P_CLI max_version=tls12" \
7215 0 \
7216 -S "mbedtls_ssl_handshake returned" \
7217 -C "mbedtls_ssl_handshake returned" \
7218 -s "Protocol is TLSv1.2" \
7219 -c "Protocol is TLSv1.2"
7220
Gilles Peskine365296a2024-09-13 14:15:46 +02007221requires_config_enabled MBEDTLS_SSL_CLI_C
7222requires_config_enabled MBEDTLS_SSL_SRV_C
7223requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron114c5f02024-03-06 15:24:41 +01007224requires_config_disabled MBEDTLS_SSL_PROTO_TLS1_2
Ronald Cron35884a42024-03-15 15:43:14 +01007225run_test "Version nego m->m: cli 1.3, srv 1.3 -> 1.3" \
Ronald Cron114c5f02024-03-06 15:24:41 +01007226 "$P_SRV" \
7227 "$P_CLI" \
7228 0 \
7229 -S "mbedtls_ssl_handshake returned" \
7230 -C "mbedtls_ssl_handshake returned" \
7231 -s "Protocol is TLSv1.3" \
7232 -c "Protocol is TLSv1.3"
7233
Gilles Peskine365296a2024-09-13 14:15:46 +02007234requires_config_enabled MBEDTLS_SSL_CLI_C
7235requires_config_enabled MBEDTLS_SSL_SRV_C
7236requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7237requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
7238requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron35884a42024-03-15 15:43:14 +01007239run_test "Version nego m->m: cli min=1.3, srv min=1.3 -> 1.3" \
Ronald Cron114c5f02024-03-06 15:24:41 +01007240 "$P_SRV min_version=tls13" \
7241 "$P_CLI min_version=tls13" \
7242 0 \
7243 -S "mbedtls_ssl_handshake returned" \
7244 -C "mbedtls_ssl_handshake returned" \
7245 -s "Protocol is TLSv1.3" \
7246 -c "Protocol is TLSv1.3"
7247
Gilles Peskine365296a2024-09-13 14:15:46 +02007248requires_config_enabled MBEDTLS_SSL_CLI_C
7249requires_config_enabled MBEDTLS_SSL_SRV_C
7250requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7251requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
7252requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron35884a42024-03-15 15:43:14 +01007253run_test "Version nego m->m: cli 1.2+1.3, srv 1.2+1.3 -> 1.3" \
Ronald Cron114c5f02024-03-06 15:24:41 +01007254 "$P_SRV" \
7255 "$P_CLI" \
7256 0 \
7257 -S "mbedtls_ssl_handshake returned" \
7258 -C "mbedtls_ssl_handshake returned" \
7259 -s "Protocol is TLSv1.3" \
7260 -c "Protocol is TLSv1.3"
7261
Gilles Peskine365296a2024-09-13 14:15:46 +02007262requires_config_enabled MBEDTLS_SSL_CLI_C
7263requires_config_enabled MBEDTLS_SSL_SRV_C
7264requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7265requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
7266requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron35884a42024-03-15 15:43:14 +01007267run_test "Version nego m->m: cli 1.2+1.3, srv min=1.3 -> 1.3" \
Ronald Cron114c5f02024-03-06 15:24:41 +01007268 "$P_SRV min_version=tls13" \
7269 "$P_CLI" \
7270 0 \
7271 -S "mbedtls_ssl_handshake returned" \
7272 -C "mbedtls_ssl_handshake returned" \
7273 -s "Protocol is TLSv1.3" \
7274 -c "Protocol is TLSv1.3"
7275
Gilles Peskine365296a2024-09-13 14:15:46 +02007276requires_config_enabled MBEDTLS_SSL_CLI_C
7277requires_config_enabled MBEDTLS_SSL_SRV_C
7278requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7279requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cron114c5f02024-03-06 15:24:41 +01007280requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Ronald Cron35884a42024-03-15 15:43:14 +01007281run_test "Version nego m->m: cli 1.2+1.3, srv max=1.2 -> 1.2" \
Ronald Cron114c5f02024-03-06 15:24:41 +01007282 "$P_SRV max_version=tls12" \
7283 "$P_CLI" \
7284 0 \
7285 -S "mbedtls_ssl_handshake returned" \
7286 -C "mbedtls_ssl_handshake returned" \
7287 -s "Protocol is TLSv1.2" \
7288 -c "Protocol is TLSv1.2"
7289
Gilles Peskine365296a2024-09-13 14:15:46 +02007290requires_config_enabled MBEDTLS_SSL_CLI_C
7291requires_config_enabled MBEDTLS_SSL_SRV_C
7292requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7293requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cron114c5f02024-03-06 15:24:41 +01007294requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Ronald Cron35884a42024-03-15 15:43:14 +01007295run_test "Version nego m->m: cli max=1.2, srv 1.2+1.3 -> 1.2" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01007296 "$P_SRV" \
Ronald Crondcfd00c2024-03-06 15:58:50 +01007297 "$P_CLI max_version=tls12" \
Manuel Pégourié-Gonnarda3d808e2014-02-26 16:33:03 +01007298 0 \
7299 -S "mbedtls_ssl_handshake returned" \
7300 -C "mbedtls_ssl_handshake returned" \
7301 -s "Protocol is TLSv1.2" \
7302 -c "Protocol is TLSv1.2"
7303
Gilles Peskine365296a2024-09-13 14:15:46 +02007304requires_config_enabled MBEDTLS_SSL_CLI_C
7305requires_config_enabled MBEDTLS_SSL_SRV_C
7306requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7307requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
7308requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron35884a42024-03-15 15:43:14 +01007309run_test "Version nego m->m: cli min=1.3, srv 1.2+1.3 -> 1.3" \
Ronald Cron114c5f02024-03-06 15:24:41 +01007310 "$P_SRV" \
7311 "$P_CLI min_version=tls13" \
7312 0 \
7313 -S "mbedtls_ssl_handshake returned" \
7314 -C "mbedtls_ssl_handshake returned" \
7315 -s "Protocol is TLSv1.3" \
7316 -c "Protocol is TLSv1.3"
7317
Gilles Peskine365296a2024-09-13 14:15:46 +02007318requires_config_enabled MBEDTLS_SSL_CLI_C
7319requires_config_enabled MBEDTLS_SSL_SRV_C
7320requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7321requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cron35884a42024-03-15 15:43:14 +01007322run_test "Not supported version m->m: cli max=1.2, srv min=1.3" \
Ronald Crondcfd00c2024-03-06 15:58:50 +01007323 "$P_SRV min_version=tls13" \
7324 "$P_CLI max_version=tls12" \
7325 1 \
7326 -s "Handshake protocol not within min/max boundaries" \
7327 -S "Protocol is TLSv1.2" \
7328 -C "Protocol is TLSv1.2" \
7329 -S "Protocol is TLSv1.3" \
7330 -C "Protocol is TLSv1.3"
Ronald Cronfe18d8d2024-03-06 15:19:55 +01007331
Gilles Peskine365296a2024-09-13 14:15:46 +02007332requires_config_enabled MBEDTLS_SSL_CLI_C
7333requires_config_enabled MBEDTLS_SSL_SRV_C
7334requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7335requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cron35884a42024-03-15 15:43:14 +01007336run_test "Not supported version m->m: cli min=1.3, srv max=1.2" \
Ronald Cron114c5f02024-03-06 15:24:41 +01007337 "$P_SRV max_version=tls12" \
7338 "$P_CLI min_version=tls13" \
7339 1 \
7340 -s "The handshake negotiation failed" \
7341 -S "Protocol is TLSv1.2" \
7342 -C "Protocol is TLSv1.2" \
7343 -S "Protocol is TLSv1.3" \
7344 -C "Protocol is TLSv1.3"
7345
Ronald Croncd1370e2024-03-12 16:07:48 +01007346# Tests of version negotiation on server side against GnuTLS client
7347
Gilles Peskine365296a2024-09-13 14:15:46 +02007348requires_config_enabled MBEDTLS_SSL_SRV_C
7349requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ronald Cron98bdcc42024-03-06 15:00:42 +01007350requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Ronald Cron35884a42024-03-15 15:43:14 +01007351run_test "Server version nego G->m: cli 1.2, srv 1.2+(1.3) -> 1.2" \
Ronald Cron98bdcc42024-03-06 15:00:42 +01007352 "$P_SRV" \
Ronald Crondfad4932024-03-06 15:05:14 +01007353 "$G_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2" \
Ronald Croncd1370e2024-03-12 16:07:48 +01007354 0 \
Ronald Cron98bdcc42024-03-06 15:00:42 +01007355 -S "mbedtls_ssl_handshake returned" \
7356 -s "Protocol is TLSv1.2"
Ronald Croncd1370e2024-03-12 16:07:48 +01007357
Gilles Peskine365296a2024-09-13 14:15:46 +02007358requires_config_enabled MBEDTLS_SSL_SRV_C
7359requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7360requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Crondfad4932024-03-06 15:05:14 +01007361requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Ronald Cron35884a42024-03-15 15:43:14 +01007362run_test "Server version nego G->m: cli 1.2, srv max=1.2 -> 1.2" \
Ronald Crondfad4932024-03-06 15:05:14 +01007363 "$P_SRV max_version=tls12" \
7364 "$G_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2" \
7365 0 \
7366 -S "mbedtls_ssl_handshake returned" \
7367 -s "Protocol is TLSv1.2"
7368
Gilles Peskine365296a2024-09-13 14:15:46 +02007369requires_config_enabled MBEDTLS_SSL_SRV_C
7370requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
7371requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron35884a42024-03-15 15:43:14 +01007372run_test "Server version nego G->m: cli 1.3, srv (1.2)+1.3 -> 1.3" \
Ronald Crondfad4932024-03-06 15:05:14 +01007373 "$P_SRV" \
7374 "$G_NEXT_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3" \
7375 0 \
7376 -S "mbedtls_ssl_handshake returned" \
7377 -s "Protocol is TLSv1.3"
7378
Gilles Peskine365296a2024-09-13 14:15:46 +02007379requires_config_enabled MBEDTLS_SSL_SRV_C
7380requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7381requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
7382requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron35884a42024-03-15 15:43:14 +01007383run_test "Server version nego G->m: cli 1.3, srv min=1.3 -> 1.3" \
Ronald Crondfad4932024-03-06 15:05:14 +01007384 "$P_SRV min_version=tls13" \
7385 "$G_NEXT_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3" \
7386 0 \
7387 -S "mbedtls_ssl_handshake returned" \
7388 -s "Protocol is TLSv1.3"
7389
Gilles Peskine365296a2024-09-13 14:15:46 +02007390requires_config_enabled MBEDTLS_SSL_SRV_C
7391requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
7392requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron35884a42024-03-15 15:43:14 +01007393run_test "Server version nego G->m: cli 1.2+1.3, srv (1.2)+1.3 -> 1.3" \
Ronald Cron98bdcc42024-03-06 15:00:42 +01007394 "$P_SRV" \
7395 "$G_NEXT_CLI localhost --priority=NORMAL" \
Ronald Croncd1370e2024-03-12 16:07:48 +01007396 0 \
Ronald Cron98bdcc42024-03-06 15:00:42 +01007397 -S "mbedtls_ssl_handshake returned" \
7398 -s "Protocol is TLSv1.3"
Ronald Croncd1370e2024-03-12 16:07:48 +01007399
Ronald Cron98bdcc42024-03-06 15:00:42 +01007400requires_gnutls_next_disable_tls13_compat
Gilles Peskine365296a2024-09-13 14:15:46 +02007401requires_config_enabled MBEDTLS_SSL_SRV_C
7402requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
7403requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron35884a42024-03-15 15:43:14 +01007404run_test "Server version nego G->m (no compat): cli 1.2+1.3, srv (1.2)+1.3 -> 1.3" \
Ronald Cron98bdcc42024-03-06 15:00:42 +01007405 "$P_SRV" \
7406 "$G_NEXT_CLI localhost --priority=NORMAL:%DISABLE_TLS13_COMPAT_MODE" \
Ronald Croncd1370e2024-03-12 16:07:48 +01007407 0 \
Ronald Cron98bdcc42024-03-06 15:00:42 +01007408 -S "mbedtls_ssl_handshake returned" \
7409 -s "Protocol is TLSv1.3"
Ronald Croncd1370e2024-03-12 16:07:48 +01007410
7411# GnuTLS can be setup to send a ClientHello containing a supported versions
7412# extension proposing TLS 1.2 (preferred) and then TLS 1.3. In that case,
7413# a TLS 1.3 and TLS 1.2 capable server is supposed to negotiate TLS 1.2 and
7414# to indicate in the ServerHello that it downgrades from TLS 1.3. The GnuTLS
7415# client then detects the downgrade indication and aborts the handshake even
7416# if TLS 1.2 was its preferred version. Keeping the test even if the
7417# handshake fails eventually as it exercices parts of the Mbed TLS
7418# implementation that are otherwise not exercised.
Gilles Peskine365296a2024-09-13 14:15:46 +02007419requires_config_enabled MBEDTLS_SSL_SRV_C
7420requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7421requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cron35884a42024-03-15 15:43:14 +01007422run_test "Server version nego G->m: cli 1.2+1.3 (1.2 preferred!), srv 1.2+1.3 -> 1.2" \
Ronald Cron98bdcc42024-03-06 15:00:42 +01007423 "$P_SRV" \
Ronald Croncd1370e2024-03-12 16:07:48 +01007424 "$G_NEXT_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2:+VERS-TLS1.3" \
7425 1 \
7426 -c "Detected downgrade to TLS 1.2 from TLS 1.3"
7427
Gilles Peskine365296a2024-09-13 14:15:46 +02007428requires_config_enabled MBEDTLS_SSL_SRV_C
7429requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7430requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
7431requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron35884a42024-03-15 15:43:14 +01007432run_test "Server version nego G->m: cli 1.2+1.3, srv min=1.3 -> 1.3" \
Ronald Crondfad4932024-03-06 15:05:14 +01007433 "$P_SRV min_version=tls13" \
7434 "$G_NEXT_CLI localhost --priority=NORMAL" \
7435 0 \
7436 -S "mbedtls_ssl_handshake returned" \
7437 -s "Protocol is TLSv1.3"
7438
7439requires_config_enabled MBEDTLS_SSL_SRV_C
7440requires_config_disabled MBEDTLS_SSL_PROTO_TLS1_3
7441requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Ronald Cron35884a42024-03-15 15:43:14 +01007442run_test "Server version nego G->m: cli 1.2+1.3, srv 1.2 -> 1.2" \
Ronald Crondfad4932024-03-06 15:05:14 +01007443 "$P_SRV" \
7444 "$G_NEXT_CLI localhost --priority=NORMAL" \
7445 0 \
7446 -S "mbedtls_ssl_handshake returned" \
7447 -s "Protocol is TLSv1.2"
7448
Gilles Peskine365296a2024-09-13 14:15:46 +02007449requires_config_enabled MBEDTLS_SSL_SRV_C
7450requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7451requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Crondfad4932024-03-06 15:05:14 +01007452requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Ronald Cron35884a42024-03-15 15:43:14 +01007453run_test "Server version nego G->m: cli 1.2+1.3, max=1.2 -> 1.2" \
Ronald Crondfad4932024-03-06 15:05:14 +01007454 "$P_SRV max_version=tls12" \
7455 "$G_NEXT_CLI localhost --priority=NORMAL" \
7456 0 \
7457 -S "mbedtls_ssl_handshake returned" \
7458 -s "Protocol is TLSv1.2"
7459
Ronald Cron98bdcc42024-03-06 15:00:42 +01007460requires_config_enabled MBEDTLS_SSL_SRV_C
Ronald Cron35884a42024-03-15 15:43:14 +01007461run_test "Not supported version G->m: cli 1.0, (1.2)+(1.3)" \
TRodziewicz2abf03c2021-06-25 14:40:09 +02007462 "$P_SRV" \
7463 "$G_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.0" \
7464 1 \
7465 -s "Handshake protocol not within min/max boundaries" \
Ronald Cron98bdcc42024-03-06 15:00:42 +01007466 -S "Protocol is TLSv1.0"
TRodziewicz2abf03c2021-06-25 14:40:09 +02007467
Ronald Cron98bdcc42024-03-06 15:00:42 +01007468requires_config_enabled MBEDTLS_SSL_SRV_C
Ronald Cron35884a42024-03-15 15:43:14 +01007469run_test "Not supported version G->m: cli 1.1, (1.2)+(1.3)" \
TRodziewicz2abf03c2021-06-25 14:40:09 +02007470 "$P_SRV" \
7471 "$G_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.1" \
7472 1 \
7473 -s "Handshake protocol not within min/max boundaries" \
Ronald Cron98bdcc42024-03-06 15:00:42 +01007474 -S "Protocol is TLSv1.1"
TRodziewicz2abf03c2021-06-25 14:40:09 +02007475
Ronald Crondfad4932024-03-06 15:05:14 +01007476requires_config_enabled MBEDTLS_SSL_SRV_C
7477requires_config_disabled MBEDTLS_SSL_PROTO_TLS1_2
Ronald Cron35884a42024-03-15 15:43:14 +01007478run_test "Not supported version G->m: cli 1.2, srv 1.3" \
Ronald Crondfad4932024-03-06 15:05:14 +01007479 "$P_SRV" \
7480 "$G_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2" \
7481 1 \
7482 -s "Handshake protocol not within min/max boundaries" \
7483 -S "Protocol is TLSv1.2"
7484
7485requires_config_enabled MBEDTLS_SSL_SRV_C
7486requires_config_disabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cron35884a42024-03-15 15:43:14 +01007487run_test "Not supported version G->m: cli 1.3, srv 1.2" \
Ronald Crondfad4932024-03-06 15:05:14 +01007488 "$P_SRV" \
7489 "$G_NEXT_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3" \
7490 1 \
7491 -S "Handshake protocol not within min/max boundaries" \
7492 -s "The handshake negotiation failed" \
7493 -S "Protocol is TLSv1.3"
7494
Gilles Peskine365296a2024-09-13 14:15:46 +02007495requires_config_enabled MBEDTLS_SSL_SRV_C
7496requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7497requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cron35884a42024-03-15 15:43:14 +01007498run_test "Not supported version G->m: cli 1.2, srv min=1.3" \
Ronald Crondfad4932024-03-06 15:05:14 +01007499 "$P_SRV min_version=tls13" \
7500 "$G_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2" \
7501 1 \
7502 -s "Handshake protocol not within min/max boundaries" \
7503 -S "Protocol is TLSv1.2"
7504
Gilles Peskine365296a2024-09-13 14:15:46 +02007505requires_config_enabled MBEDTLS_SSL_SRV_C
7506requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7507requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cron35884a42024-03-15 15:43:14 +01007508run_test "Not supported version G->m: cli 1.3, srv max=1.2" \
Ronald Crondfad4932024-03-06 15:05:14 +01007509 "$P_SRV max_version=tls12" \
7510 "$G_NEXT_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3" \
7511 1 \
7512 -S "Handshake protocol not within min/max boundaries" \
7513 -s "The handshake negotiation failed" \
7514 -S "Protocol is TLSv1.3"
7515
Ronald Cron10797e32024-03-07 08:27:24 +01007516# Tests of version negotiation on server side against OpenSSL client
7517
Gilles Peskine365296a2024-09-13 14:15:46 +02007518requires_config_enabled MBEDTLS_SSL_SRV_C
7519requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ronald Cron10797e32024-03-07 08:27:24 +01007520requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Ronald Cron35884a42024-03-15 15:43:14 +01007521run_test "Server version nego O->m: cli 1.2, srv 1.2+(1.3) -> 1.2" \
Ronald Cron10797e32024-03-07 08:27:24 +01007522 "$P_SRV" \
7523 "$O_NEXT_CLI -tls1_2" \
7524 0 \
7525 -S "mbedtls_ssl_handshake returned" \
7526 -s "Protocol is TLSv1.2"
7527
Gilles Peskine365296a2024-09-13 14:15:46 +02007528requires_config_enabled MBEDTLS_SSL_SRV_C
7529requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7530requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cron10797e32024-03-07 08:27:24 +01007531requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Ronald Cron35884a42024-03-15 15:43:14 +01007532run_test "Server version nego O->m: cli 1.2, srv max=1.2 -> 1.2" \
Ronald Cron10797e32024-03-07 08:27:24 +01007533 "$P_SRV max_version=tls12" \
7534 "$O_NEXT_CLI -tls1_2" \
7535 0 \
7536 -S "mbedtls_ssl_handshake returned" \
7537 -s "Protocol is TLSv1.2"
7538
7539requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02007540requires_config_enabled MBEDTLS_SSL_SRV_C
7541requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
7542requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron35884a42024-03-15 15:43:14 +01007543run_test "Server version nego O->m: cli 1.3, srv (1.2)+1.3 -> 1.3" \
Ronald Cron10797e32024-03-07 08:27:24 +01007544 "$P_SRV" \
7545 "$O_NEXT_CLI -tls1_3" \
7546 0 \
7547 -S "mbedtls_ssl_handshake returned" \
7548 -s "Protocol is TLSv1.3"
7549
7550requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02007551requires_config_enabled MBEDTLS_SSL_SRV_C
7552requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7553requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
7554requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron35884a42024-03-15 15:43:14 +01007555run_test "Server version nego O->m: cli 1.3, srv min=1.3 -> 1.3" \
Ronald Cron10797e32024-03-07 08:27:24 +01007556 "$P_SRV min_version=tls13" \
7557 "$O_NEXT_CLI -tls1_3" \
7558 0 \
7559 -S "mbedtls_ssl_handshake returned" \
7560 -s "Protocol is TLSv1.3"
7561
7562requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02007563requires_config_enabled MBEDTLS_SSL_SRV_C
7564requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
7565requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron35884a42024-03-15 15:43:14 +01007566run_test "Server version nego O->m: cli 1.2+1.3, srv (1.2)+1.3 -> 1.3" \
Ronald Cron10797e32024-03-07 08:27:24 +01007567 "$P_SRV" \
7568 "$O_NEXT_CLI" \
7569 0 \
7570 -S "mbedtls_ssl_handshake returned" \
7571 -s "Protocol is TLSv1.3"
7572
7573requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02007574requires_config_enabled MBEDTLS_SSL_SRV_C
7575requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
7576requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron35884a42024-03-15 15:43:14 +01007577run_test "Server version nego O->m (no compat): cli 1.2+1.3, srv (1.2)+1.3 -> 1.3" \
Ronald Cron10797e32024-03-07 08:27:24 +01007578 "$P_SRV" \
7579 "$O_NEXT_CLI -no_middlebox" \
7580 0 \
7581 -S "mbedtls_ssl_handshake returned" \
7582 -s "Protocol is TLSv1.3"
7583
7584requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02007585requires_config_enabled MBEDTLS_SSL_SRV_C
7586requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7587requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
7588requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron35884a42024-03-15 15:43:14 +01007589run_test "Server version nego O->m: cli 1.2+1.3, srv min=1.3 -> 1.3" \
Ronald Cron10797e32024-03-07 08:27:24 +01007590 "$P_SRV min_version=tls13" \
7591 "$O_NEXT_CLI" \
7592 0 \
7593 -S "mbedtls_ssl_handshake returned" \
7594 -s "Protocol is TLSv1.3"
7595
7596requires_config_enabled MBEDTLS_SSL_SRV_C
7597requires_config_disabled MBEDTLS_SSL_PROTO_TLS1_3
7598requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Ronald Cron35884a42024-03-15 15:43:14 +01007599run_test "Server version nego O->m: cli 1.2+1.3, srv 1.2 -> 1.2" \
Ronald Cron10797e32024-03-07 08:27:24 +01007600 "$P_SRV" \
7601 "$O_NEXT_CLI" \
7602 0 \
7603 -S "mbedtls_ssl_handshake returned" \
7604 -s "Protocol is TLSv1.2"
7605
Gilles Peskine365296a2024-09-13 14:15:46 +02007606requires_config_enabled MBEDTLS_SSL_SRV_C
7607requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7608requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cron10797e32024-03-07 08:27:24 +01007609requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
Ronald Cron35884a42024-03-15 15:43:14 +01007610run_test "Server version nego O->m: cli 1.2+1.3, srv max=1.2 -> 1.2" \
Ronald Cron10797e32024-03-07 08:27:24 +01007611 "$P_SRV max_version=tls12" \
7612 "$O_NEXT_CLI" \
7613 0 \
7614 -S "mbedtls_ssl_handshake returned" \
7615 -s "Protocol is TLSv1.2"
7616
7617requires_config_enabled MBEDTLS_SSL_SRV_C
Ronald Cron35884a42024-03-15 15:43:14 +01007618run_test "Not supported version O->m: cli 1.0, srv (1.2)+(1.3)" \
Ronald Cron10797e32024-03-07 08:27:24 +01007619 "$P_SRV" \
7620 "$O_CLI -tls1" \
7621 1 \
7622 -s "Handshake protocol not within min/max boundaries" \
7623 -S "Protocol is TLSv1.0"
7624
7625requires_config_enabled MBEDTLS_SSL_SRV_C
Ronald Cron35884a42024-03-15 15:43:14 +01007626run_test "Not supported version O->m: cli 1.1, srv (1.2)+(1.3)" \
Ronald Cron10797e32024-03-07 08:27:24 +01007627 "$P_SRV" \
7628 "$O_CLI -tls1_1" \
7629 1 \
7630 -s "Handshake protocol not within min/max boundaries" \
7631 -S "Protocol is TLSv1.1"
7632
7633requires_config_enabled MBEDTLS_SSL_SRV_C
7634requires_config_disabled MBEDTLS_SSL_PROTO_TLS1_2
Ronald Cron35884a42024-03-15 15:43:14 +01007635run_test "Not supported version O->m: cli 1.2, srv 1.3" \
Ronald Cron10797e32024-03-07 08:27:24 +01007636 "$P_SRV" \
7637 "$O_NEXT_CLI -tls1_2" \
7638 1 \
7639 -s "Handshake protocol not within min/max boundaries" \
7640 -S "Protocol is TLSv1.2"
7641
7642requires_config_enabled MBEDTLS_SSL_SRV_C
7643requires_config_disabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cron35884a42024-03-15 15:43:14 +01007644run_test "Not supported version O->m: cli 1.3, srv 1.2" \
Ronald Cron10797e32024-03-07 08:27:24 +01007645 "$P_SRV" \
7646 "$O_NEXT_CLI -tls1_3" \
7647 1 \
7648 -S "Handshake protocol not within min/max boundaries" \
7649 -s "The handshake negotiation failed" \
7650 -S "Protocol is TLSv1.3"
7651
Gilles Peskine365296a2024-09-13 14:15:46 +02007652requires_config_enabled MBEDTLS_SSL_SRV_C
7653requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7654requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cron35884a42024-03-15 15:43:14 +01007655run_test "Not supported version O->m: cli 1.2, srv min=1.3" \
Ronald Cron10797e32024-03-07 08:27:24 +01007656 "$P_SRV min_version=tls13" \
7657 "$O_NEXT_CLI -tls1_2" \
7658 1 \
7659 -s "Handshake protocol not within min/max boundaries" \
7660 -S "Protocol is TLSv1.2"
7661
Gilles Peskine365296a2024-09-13 14:15:46 +02007662requires_config_enabled MBEDTLS_SSL_SRV_C
7663requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7664requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
Ronald Cron35884a42024-03-15 15:43:14 +01007665run_test "Not supported version O->m: cli 1.3, srv max=1.2" \
Ronald Cron10797e32024-03-07 08:27:24 +01007666 "$P_SRV max_version=tls12" \
7667 "$O_NEXT_CLI -tls1_3" \
7668 1 \
7669 -S "Handshake protocol not within min/max boundaries" \
7670 -s "The handshake negotiation failed" \
7671 -S "Protocol is TLSv1.3"
7672
Ronald Crona1e7b6a2024-03-06 15:13:49 +01007673# Tests of version negotiation on client side against GnuTLS and OpenSSL server
TRodziewicz2abf03c2021-06-25 14:40:09 +02007674
Jerry Yuab082902021-12-23 18:02:22 +08007675requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ronald Cron35884a42024-03-15 15:43:14 +01007676run_test "Not supported version: srv max TLS 1.0" \
TRodziewicz2abf03c2021-06-25 14:40:09 +02007677 "$G_SRV --priority=NORMAL:-VERS-TLS-ALL:+VERS-TLS1.0" \
7678 "$P_CLI" \
7679 1 \
7680 -s "Error in protocol version" \
7681 -c "Handshake protocol not within min/max boundaries" \
7682 -S "Version: TLS1.0" \
7683 -C "Protocol is TLSv1.0"
7684
Jerry Yuab082902021-12-23 18:02:22 +08007685requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ronald Cron35884a42024-03-15 15:43:14 +01007686run_test "Not supported version: srv max TLS 1.1" \
TRodziewicz2abf03c2021-06-25 14:40:09 +02007687 "$G_SRV --priority=NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1" \
7688 "$P_CLI" \
7689 1 \
7690 -s "Error in protocol version" \
7691 -c "Handshake protocol not within min/max boundaries" \
7692 -S "Version: TLS1.1" \
7693 -C "Protocol is TLSv1.1"
7694
Ronald Crona1e7b6a2024-03-06 15:13:49 +01007695requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
7696requires_config_enabled MBEDTLS_DEBUG_C
7697requires_config_enabled MBEDTLS_SSL_CLI_C
7698skip_handshake_stage_check
7699requires_gnutls_tls1_3
Ronald Cron35884a42024-03-15 15:43:14 +01007700run_test "TLS 1.3: Not supported version:gnutls: srv max TLS 1.0" \
Ronald Crona1e7b6a2024-03-06 15:13:49 +01007701 "$G_NEXT_SRV --priority=NORMAL:-VERS-TLS-ALL:+VERS-TLS1.0 -d 4" \
7702 "$P_CLI debug_level=4" \
7703 1 \
7704 -s "Client's version: 3.3" \
7705 -S "Version: TLS1.0" \
7706 -C "Protocol is TLSv1.0"
7707
7708requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
7709requires_config_enabled MBEDTLS_DEBUG_C
7710requires_config_enabled MBEDTLS_SSL_CLI_C
7711skip_handshake_stage_check
7712requires_gnutls_tls1_3
Ronald Cron35884a42024-03-15 15:43:14 +01007713run_test "TLS 1.3: Not supported version:gnutls: srv max TLS 1.1" \
Ronald Crona1e7b6a2024-03-06 15:13:49 +01007714 "$G_NEXT_SRV --priority=NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1 -d 4" \
7715 "$P_CLI debug_level=4" \
7716 1 \
7717 -s "Client's version: 3.3" \
7718 -S "Version: TLS1.1" \
7719 -C "Protocol is TLSv1.1"
7720
7721requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
7722requires_config_enabled MBEDTLS_DEBUG_C
7723requires_config_enabled MBEDTLS_SSL_CLI_C
7724skip_handshake_stage_check
7725requires_gnutls_tls1_3
Ronald Cron35884a42024-03-15 15:43:14 +01007726run_test "TLS 1.3: Not supported version:gnutls: srv max TLS 1.2" \
Ronald Crona1e7b6a2024-03-06 15:13:49 +01007727 "$G_NEXT_SRV --priority=NORMAL:-VERS-TLS-ALL:+VERS-TLS1.2 -d 4" \
7728 "$P_CLI force_version=tls13 debug_level=4" \
7729 1 \
7730 -s "Client's version: 3.3" \
7731 -c "is a fatal alert message (msg 40)" \
7732 -S "Version: TLS1.2" \
7733 -C "Protocol is TLSv1.2"
7734
7735requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
7736requires_config_enabled MBEDTLS_DEBUG_C
7737requires_config_enabled MBEDTLS_SSL_CLI_C
7738skip_handshake_stage_check
7739requires_openssl_next
Ronald Cron35884a42024-03-15 15:43:14 +01007740run_test "TLS 1.3: Not supported version:openssl: srv max TLS 1.0" \
Ronald Crona1e7b6a2024-03-06 15:13:49 +01007741 "$O_NEXT_SRV -msg -tls1" \
7742 "$P_CLI debug_level=4" \
7743 1 \
7744 -s "fatal protocol_version" \
7745 -c "is a fatal alert message (msg 70)" \
7746 -S "Version: TLS1.0" \
7747 -C "Protocol : TLSv1.0"
7748
7749requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
7750requires_config_enabled MBEDTLS_DEBUG_C
7751requires_config_enabled MBEDTLS_SSL_CLI_C
7752skip_handshake_stage_check
7753requires_openssl_next
Ronald Cron35884a42024-03-15 15:43:14 +01007754run_test "TLS 1.3: Not supported version:openssl: srv max TLS 1.1" \
Ronald Crona1e7b6a2024-03-06 15:13:49 +01007755 "$O_NEXT_SRV -msg -tls1_1" \
7756 "$P_CLI debug_level=4" \
7757 1 \
7758 -s "fatal protocol_version" \
7759 -c "is a fatal alert message (msg 70)" \
7760 -S "Version: TLS1.1" \
7761 -C "Protocol : TLSv1.1"
7762
7763requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
7764requires_config_enabled MBEDTLS_DEBUG_C
7765requires_config_enabled MBEDTLS_SSL_CLI_C
7766skip_handshake_stage_check
7767requires_openssl_next
Ronald Cron35884a42024-03-15 15:43:14 +01007768run_test "TLS 1.3: Not supported version:openssl: srv max TLS 1.2" \
Ronald Crona1e7b6a2024-03-06 15:13:49 +01007769 "$O_NEXT_SRV -msg -tls1_2" \
7770 "$P_CLI force_version=tls13 debug_level=4" \
7771 1 \
7772 -s "fatal protocol_version" \
7773 -c "is a fatal alert message (msg 70)" \
7774 -S "Version: TLS1.2" \
7775 -C "Protocol : TLSv1.2"
7776
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02007777# Tests for ALPN extension
7778
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02007779run_test "ALPN: none" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02007780 "$P_SRV debug_level=3" \
7781 "$P_CLI debug_level=3" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02007782 0 \
7783 -C "client hello, adding alpn extension" \
7784 -S "found alpn extension" \
7785 -C "got an alert message, type: \\[2:120]" \
XiaokangQianacb39922022-06-17 10:18:48 +00007786 -S "server side, adding alpn extension" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02007787 -C "found alpn extension " \
7788 -C "Application Layer Protocol is" \
7789 -S "Application Layer Protocol is"
7790
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02007791run_test "ALPN: client only" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02007792 "$P_SRV debug_level=3" \
7793 "$P_CLI debug_level=3 alpn=abc,1234" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02007794 0 \
7795 -c "client hello, adding alpn extension" \
7796 -s "found alpn extension" \
7797 -C "got an alert message, type: \\[2:120]" \
XiaokangQianacb39922022-06-17 10:18:48 +00007798 -S "server side, adding alpn extension" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02007799 -C "found alpn extension " \
7800 -c "Application Layer Protocol is (none)" \
7801 -S "Application Layer Protocol is"
7802
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02007803run_test "ALPN: server only" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02007804 "$P_SRV debug_level=3 alpn=abc,1234" \
7805 "$P_CLI debug_level=3" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02007806 0 \
7807 -C "client hello, adding alpn extension" \
7808 -S "found alpn extension" \
7809 -C "got an alert message, type: \\[2:120]" \
XiaokangQianacb39922022-06-17 10:18:48 +00007810 -S "server side, adding alpn extension" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02007811 -C "found alpn extension " \
7812 -C "Application Layer Protocol is" \
7813 -s "Application Layer Protocol is (none)"
7814
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02007815run_test "ALPN: both, common cli1-srv1" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02007816 "$P_SRV debug_level=3 alpn=abc,1234" \
7817 "$P_CLI debug_level=3 alpn=abc,1234" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02007818 0 \
7819 -c "client hello, adding alpn extension" \
7820 -s "found alpn extension" \
7821 -C "got an alert message, type: \\[2:120]" \
XiaokangQianacb39922022-06-17 10:18:48 +00007822 -s "server side, adding alpn extension" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02007823 -c "found alpn extension" \
7824 -c "Application Layer Protocol is abc" \
7825 -s "Application Layer Protocol is abc"
7826
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02007827run_test "ALPN: both, common cli2-srv1" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02007828 "$P_SRV debug_level=3 alpn=abc,1234" \
7829 "$P_CLI debug_level=3 alpn=1234,abc" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02007830 0 \
7831 -c "client hello, adding alpn extension" \
7832 -s "found alpn extension" \
7833 -C "got an alert message, type: \\[2:120]" \
XiaokangQianacb39922022-06-17 10:18:48 +00007834 -s "server side, adding alpn extension" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02007835 -c "found alpn extension" \
7836 -c "Application Layer Protocol is abc" \
7837 -s "Application Layer Protocol is abc"
7838
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02007839run_test "ALPN: both, common cli1-srv2" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02007840 "$P_SRV debug_level=3 alpn=abc,1234" \
7841 "$P_CLI debug_level=3 alpn=1234,abcde" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02007842 0 \
7843 -c "client hello, adding alpn extension" \
7844 -s "found alpn extension" \
7845 -C "got an alert message, type: \\[2:120]" \
XiaokangQianacb39922022-06-17 10:18:48 +00007846 -s "server side, adding alpn extension" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02007847 -c "found alpn extension" \
7848 -c "Application Layer Protocol is 1234" \
7849 -s "Application Layer Protocol is 1234"
7850
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02007851run_test "ALPN: both, no common" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02007852 "$P_SRV debug_level=3 alpn=abc,123" \
7853 "$P_CLI debug_level=3 alpn=1234,abcde" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02007854 1 \
7855 -c "client hello, adding alpn extension" \
7856 -s "found alpn extension" \
7857 -c "got an alert message, type: \\[2:120]" \
XiaokangQianacb39922022-06-17 10:18:48 +00007858 -S "server side, adding alpn extension" \
Manuel Pégourié-Gonnardf6521de2014-04-07 12:42:04 +02007859 -C "found alpn extension" \
7860 -C "Application Layer Protocol is 1234" \
7861 -S "Application Layer Protocol is 1234"
7862
Manuel Pégourié-Gonnard83d8c732014-04-07 13:24:21 +02007863
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02007864# Tests for keyUsage in leaf certificates, part 1:
7865# server-side certificate/suite selection
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02007866#
7867# This is only about 1.2 (for 1.3, all key exchanges use signatures).
7868# In 4.0 this will probably go away as all TLS 1.2 key exchanges will use
7869# signatures too, following the removal of RSA #8170 and static ECDH #9201.
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02007870
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02007871run_test "keyUsage srv 1.2: RSA, digitalSignature -> (EC)DHE-RSA" \
David Horstmann5ab92be2024-07-01 17:01:28 +01007872 "$P_SRV force_version=tls12 key_file=$DATA_FILES_PATH/server2.key \
7873 crt_file=$DATA_FILES_PATH/server2.ku-ds.crt" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02007874 "$P_CLI" \
7875 0 \
Manuel Pégourié-Gonnard17cde5f2014-05-22 14:42:39 +02007876 -c "Ciphersuite is TLS-[EC]*DHE-RSA-WITH-"
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02007877
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02007878run_test "keyUsage srv 1.2: RSA, keyEncipherment -> RSA" \
David Horstmann5ab92be2024-07-01 17:01:28 +01007879 "$P_SRV force_version=tls12 key_file=$DATA_FILES_PATH/server2.key \
7880 crt_file=$DATA_FILES_PATH/server2.ku-ke.crt" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02007881 "$P_CLI" \
7882 0 \
7883 -c "Ciphersuite is TLS-RSA-WITH-"
7884
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02007885run_test "keyUsage srv 1.2: RSA, keyAgreement -> fail" \
David Horstmann5ab92be2024-07-01 17:01:28 +01007886 "$P_SRV force_version=tls12 key_file=$DATA_FILES_PATH/server2.key \
7887 crt_file=$DATA_FILES_PATH/server2.ku-ka.crt" \
Manuel Pégourié-Gonnardf2629b92014-08-30 14:20:14 +02007888 "$P_CLI" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02007889 1 \
7890 -C "Ciphersuite is "
7891
Valerio Settid1f991c2023-02-22 12:54:13 +01007892requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02007893run_test "keyUsage srv 1.2: ECC, digitalSignature -> ECDHE-ECDSA" \
David Horstmann5ab92be2024-07-01 17:01:28 +01007894 "$P_SRV force_version=tls12 key_file=$DATA_FILES_PATH/server5.key \
7895 crt_file=$DATA_FILES_PATH/server5.ku-ds.crt" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02007896 "$P_CLI" \
7897 0 \
7898 -c "Ciphersuite is TLS-ECDHE-ECDSA-WITH-"
7899
7900
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02007901run_test "keyUsage srv 1.2: ECC, keyAgreement -> ECDH-" \
David Horstmann5ab92be2024-07-01 17:01:28 +01007902 "$P_SRV force_version=tls12 key_file=$DATA_FILES_PATH/server5.key \
7903 crt_file=$DATA_FILES_PATH/server5.ku-ka.crt" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02007904 "$P_CLI" \
7905 0 \
7906 -c "Ciphersuite is TLS-ECDH-"
7907
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02007908run_test "keyUsage srv 1.2: ECC, keyEncipherment -> fail" \
David Horstmann5ab92be2024-07-01 17:01:28 +01007909 "$P_SRV force_version=tls12 key_file=$DATA_FILES_PATH/server5.key \
7910 crt_file=$DATA_FILES_PATH/server5.ku-ke.crt" \
Manuel Pégourié-Gonnardf2629b92014-08-30 14:20:14 +02007911 "$P_CLI" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02007912 1 \
7913 -C "Ciphersuite is "
7914
7915# Tests for keyUsage in leaf certificates, part 2:
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02007916# client-side checking of server cert
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02007917#
7918# TLS 1.3 uses only signature, but for 1.2 it depends on the key exchange.
7919# In 4.0 this will probably change as all TLS 1.2 key exchanges will use
7920# signatures too, following the removal of RSA #8170 and static ECDH #9201.
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02007921
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02007922run_test "keyUsage cli 1.2: DigitalSignature+KeyEncipherment, RSA: OK" \
David Horstmann5ab92be2024-07-01 17:01:28 +01007923 "$O_SRV -tls1_2 -key $DATA_FILES_PATH/server2.key \
7924 -cert $DATA_FILES_PATH/server2.ku-ds_ke.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02007925 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02007926 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
7927 0 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02007928 -C "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02007929 -C "Processing of the Certificate handshake message failed" \
7930 -c "Ciphersuite is TLS-"
7931
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02007932run_test "keyUsage cli 1.2: DigitalSignature+KeyEncipherment, DHE-RSA: OK" \
David Horstmann5ab92be2024-07-01 17:01:28 +01007933 "$O_SRV -tls1_2 -key $DATA_FILES_PATH/server2.key \
7934 -cert $DATA_FILES_PATH/server2.ku-ds_ke.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02007935 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02007936 force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
7937 0 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02007938 -C "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02007939 -C "Processing of the Certificate handshake message failed" \
7940 -c "Ciphersuite is TLS-"
7941
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02007942run_test "keyUsage cli 1.2: KeyEncipherment, RSA: OK" \
David Horstmann5ab92be2024-07-01 17:01:28 +01007943 "$O_SRV -tls1_2 -key $DATA_FILES_PATH/server2.key \
7944 -cert $DATA_FILES_PATH/server2.ku-ke.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02007945 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02007946 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
7947 0 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02007948 -C "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02007949 -C "Processing of the Certificate handshake message failed" \
7950 -c "Ciphersuite is TLS-"
7951
Manuel Pégourié-Gonnard52c0f5a2024-08-08 12:19:46 +02007952run_test "keyUsage cli 1.2: KeyEncipherment, DHE-RSA: fail (hard)" \
David Horstmann5ab92be2024-07-01 17:01:28 +01007953 "$O_SRV -tls1_2 -key $DATA_FILES_PATH/server2.key \
7954 -cert $DATA_FILES_PATH/server2.ku-ke.crt" \
Manuel Pégourié-Gonnardee1715c2024-08-05 12:49:57 +02007955 "$P_CLI debug_level=3 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02007956 force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
7957 1 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02007958 -c "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02007959 -c "Processing of the Certificate handshake message failed" \
Manuel Pégourié-Gonnardee1715c2024-08-05 12:49:57 +02007960 -C "Ciphersuite is TLS-" \
7961 -c "send alert level=2 message=43" \
Manuel Pégourié-Gonnard013d0792024-08-08 10:56:41 +02007962 -c "! Usage does not match the keyUsage extension"
Manuel Pégourié-Gonnardee1715c2024-08-05 12:49:57 +02007963 # MBEDTLS_X509_BADCERT_KEY_USAGE -> MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02007964
Manuel Pégourié-Gonnard52c0f5a2024-08-08 12:19:46 +02007965run_test "keyUsage cli 1.2: KeyEncipherment, DHE-RSA: fail (soft)" \
David Horstmann5ab92be2024-07-01 17:01:28 +01007966 "$O_SRV -tls1_2 -key $DATA_FILES_PATH/server2.key \
7967 -cert $DATA_FILES_PATH/server2.ku-ke.crt" \
Manuel Pégourié-Gonnardee1715c2024-08-05 12:49:57 +02007968 "$P_CLI debug_level=3 auth_mode=optional \
Manuel Pégourié-Gonnarde6efa6f2015-04-20 11:01:48 +01007969 force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
7970 0 \
7971 -c "bad certificate (usage extensions)" \
7972 -C "Processing of the Certificate handshake message failed" \
7973 -c "Ciphersuite is TLS-" \
Manuel Pégourié-Gonnardee1715c2024-08-05 12:49:57 +02007974 -C "send alert level=2 message=43" \
Manuel Pégourié-Gonnarde6efa6f2015-04-20 11:01:48 +01007975 -c "! Usage does not match the keyUsage extension"
7976
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02007977run_test "keyUsage cli 1.2: DigitalSignature, DHE-RSA: OK" \
David Horstmann5ab92be2024-07-01 17:01:28 +01007978 "$O_SRV -tls1_2 -key $DATA_FILES_PATH/server2.key \
7979 -cert $DATA_FILES_PATH/server2.ku-ds.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02007980 "$P_CLI debug_level=1 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02007981 force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
7982 0 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02007983 -C "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02007984 -C "Processing of the Certificate handshake message failed" \
7985 -c "Ciphersuite is TLS-"
7986
Manuel Pégourié-Gonnard52c0f5a2024-08-08 12:19:46 +02007987run_test "keyUsage cli 1.2: DigitalSignature, RSA: fail (hard)" \
David Horstmann5ab92be2024-07-01 17:01:28 +01007988 "$O_SRV -tls1_2 -key $DATA_FILES_PATH/server2.key \
7989 -cert $DATA_FILES_PATH/server2.ku-ds.crt" \
Manuel Pégourié-Gonnardee1715c2024-08-05 12:49:57 +02007990 "$P_CLI debug_level=3 \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02007991 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
7992 1 \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02007993 -c "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02007994 -c "Processing of the Certificate handshake message failed" \
Manuel Pégourié-Gonnardee1715c2024-08-05 12:49:57 +02007995 -C "Ciphersuite is TLS-" \
7996 -c "send alert level=2 message=43" \
Manuel Pégourié-Gonnard013d0792024-08-08 10:56:41 +02007997 -c "! Usage does not match the keyUsage extension"
Manuel Pégourié-Gonnardee1715c2024-08-05 12:49:57 +02007998 # MBEDTLS_X509_BADCERT_KEY_USAGE -> MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT
Manuel Pégourié-Gonnard7f2a07d2014-04-09 09:50:57 +02007999
Manuel Pégourié-Gonnard52c0f5a2024-08-08 12:19:46 +02008000run_test "keyUsage cli 1.2: DigitalSignature, RSA: fail (soft)" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008001 "$O_SRV -tls1_2 -key $DATA_FILES_PATH/server2.key \
8002 -cert $DATA_FILES_PATH/server2.ku-ds.crt" \
Manuel Pégourié-Gonnardee1715c2024-08-05 12:49:57 +02008003 "$P_CLI debug_level=3 auth_mode=optional \
Manuel Pégourié-Gonnarde6efa6f2015-04-20 11:01:48 +01008004 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
8005 0 \
8006 -c "bad certificate (usage extensions)" \
8007 -C "Processing of the Certificate handshake message failed" \
8008 -c "Ciphersuite is TLS-" \
Manuel Pégourié-Gonnardee1715c2024-08-05 12:49:57 +02008009 -C "send alert level=2 message=43" \
Manuel Pégourié-Gonnarde6efa6f2015-04-20 11:01:48 +01008010 -c "! Usage does not match the keyUsage extension"
8011
Przemek Stekiel8bfe8972023-06-26 12:59:45 +02008012requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02008013requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008014run_test "keyUsage cli 1.3: DigitalSignature, RSA: OK" \
8015 "$O_NEXT_SRV_NO_CERT -tls1_3 -num_tickets=0 -key $DATA_FILES_PATH/server2.key \
8016 -cert $DATA_FILES_PATH/server2-sha256.ku-ds.crt" \
8017 "$P_CLI debug_level=3" \
8018 0 \
8019 -C "bad certificate (usage extensions)" \
8020 -C "Processing of the Certificate handshake message failed" \
8021 -c "Ciphersuite is"
8022
8023requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02008024requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crond28f5a92022-06-16 19:27:25 +02008025run_test "keyUsage cli 1.3: DigitalSignature+KeyEncipherment, RSA: OK" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008026 "$O_NEXT_SRV_NO_CERT -tls1_3 -num_tickets=0 -key $DATA_FILES_PATH/server2.key \
8027 -cert $DATA_FILES_PATH/server2-sha256.ku-ds_ke.crt" \
Ronald Crond28f5a92022-06-16 19:27:25 +02008028 "$P_CLI debug_level=3" \
8029 0 \
8030 -C "bad certificate (usage extensions)" \
8031 -C "Processing of the Certificate handshake message failed" \
8032 -c "Ciphersuite is"
8033
Przemek Stekiel8bfe8972023-06-26 12:59:45 +02008034requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02008035requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Manuel Pégourié-Gonnard52c0f5a2024-08-08 12:19:46 +02008036run_test "keyUsage cli 1.3: KeyEncipherment, RSA: fail (hard)" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008037 "$O_NEXT_SRV_NO_CERT -tls1_3 -num_tickets=0 -key $DATA_FILES_PATH/server2.key \
8038 -cert $DATA_FILES_PATH/server2-sha256.ku-ke.crt" \
Manuel Pégourié-Gonnardef41d8c2024-08-08 10:28:56 +02008039 "$P_CLI debug_level=3" \
Ronald Crond28f5a92022-06-16 19:27:25 +02008040 1 \
8041 -c "bad certificate (usage extensions)" \
8042 -c "Processing of the Certificate handshake message failed" \
Manuel Pégourié-Gonnardef41d8c2024-08-08 10:28:56 +02008043 -C "Ciphersuite is" \
8044 -c "send alert level=2 message=43" \
Manuel Pégourié-Gonnard013d0792024-08-08 10:56:41 +02008045 -c "! Usage does not match the keyUsage extension"
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008046 # MBEDTLS_X509_BADCERT_KEY_USAGE -> MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT
Ronald Crond28f5a92022-06-16 19:27:25 +02008047
Przemek Stekiel8bfe8972023-06-26 12:59:45 +02008048requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02008049requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Manuel Pégourié-Gonnard52c0f5a2024-08-08 12:19:46 +02008050run_test "keyUsage cli 1.3: KeyAgreement, RSA: fail (hard)" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008051 "$O_NEXT_SRV_NO_CERT -tls1_3 -num_tickets=0 -key $DATA_FILES_PATH/server2.key \
8052 -cert $DATA_FILES_PATH/server2-sha256.ku-ka.crt" \
Manuel Pégourié-Gonnardef41d8c2024-08-08 10:28:56 +02008053 "$P_CLI debug_level=3" \
Ronald Crond28f5a92022-06-16 19:27:25 +02008054 1 \
8055 -c "bad certificate (usage extensions)" \
8056 -c "Processing of the Certificate handshake message failed" \
Manuel Pégourié-Gonnardef41d8c2024-08-08 10:28:56 +02008057 -C "Ciphersuite is" \
8058 -c "send alert level=2 message=43" \
Manuel Pégourié-Gonnard013d0792024-08-08 10:56:41 +02008059 -c "! Usage does not match the keyUsage extension"
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008060 # MBEDTLS_X509_BADCERT_KEY_USAGE -> MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT
Ronald Crond28f5a92022-06-16 19:27:25 +02008061
Przemek Stekiel8bfe8972023-06-26 12:59:45 +02008062requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02008063requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crond28f5a92022-06-16 19:27:25 +02008064run_test "keyUsage cli 1.3: DigitalSignature, ECDSA: OK" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008065 "$O_NEXT_SRV_NO_CERT -tls1_3 -num_tickets=0 -key $DATA_FILES_PATH/server5.key \
8066 -cert $DATA_FILES_PATH/server5.ku-ds.crt" \
Ronald Crond28f5a92022-06-16 19:27:25 +02008067 "$P_CLI debug_level=3" \
8068 0 \
8069 -C "bad certificate (usage extensions)" \
8070 -C "Processing of the Certificate handshake message failed" \
8071 -c "Ciphersuite is"
8072
Przemek Stekiel8bfe8972023-06-26 12:59:45 +02008073requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02008074requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Manuel Pégourié-Gonnard52c0f5a2024-08-08 12:19:46 +02008075run_test "keyUsage cli 1.3: KeyEncipherment, ECDSA: fail (hard)" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008076 "$O_NEXT_SRV_NO_CERT -tls1_3 -num_tickets=0 -key $DATA_FILES_PATH/server5.key \
8077 -cert $DATA_FILES_PATH/server5.ku-ke.crt" \
Manuel Pégourié-Gonnardef41d8c2024-08-08 10:28:56 +02008078 "$P_CLI debug_level=3" \
Ronald Crond28f5a92022-06-16 19:27:25 +02008079 1 \
8080 -c "bad certificate (usage extensions)" \
8081 -c "Processing of the Certificate handshake message failed" \
Manuel Pégourié-Gonnardef41d8c2024-08-08 10:28:56 +02008082 -C "Ciphersuite is" \
8083 -c "send alert level=2 message=43" \
Manuel Pégourié-Gonnard013d0792024-08-08 10:56:41 +02008084 -c "! Usage does not match the keyUsage extension"
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008085 # MBEDTLS_X509_BADCERT_KEY_USAGE -> MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT
Ronald Crond28f5a92022-06-16 19:27:25 +02008086
Przemek Stekiel8bfe8972023-06-26 12:59:45 +02008087requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02008088requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Manuel Pégourié-Gonnard52c0f5a2024-08-08 12:19:46 +02008089run_test "keyUsage cli 1.3: KeyAgreement, ECDSA: fail (hard)" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008090 "$O_NEXT_SRV_NO_CERT -tls1_3 -num_tickets=0 -key $DATA_FILES_PATH/server5.key \
8091 -cert $DATA_FILES_PATH/server5.ku-ka.crt" \
Manuel Pégourié-Gonnardef41d8c2024-08-08 10:28:56 +02008092 "$P_CLI debug_level=3" \
Ronald Crond28f5a92022-06-16 19:27:25 +02008093 1 \
8094 -c "bad certificate (usage extensions)" \
8095 -c "Processing of the Certificate handshake message failed" \
Manuel Pégourié-Gonnardef41d8c2024-08-08 10:28:56 +02008096 -C "Ciphersuite is" \
8097 -c "send alert level=2 message=43" \
Manuel Pégourié-Gonnard013d0792024-08-08 10:56:41 +02008098 -c "! Usage does not match the keyUsage extension"
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008099 # MBEDTLS_X509_BADCERT_KEY_USAGE -> MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT
Ronald Crond28f5a92022-06-16 19:27:25 +02008100
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02008101# Tests for keyUsage in leaf certificates, part 3:
8102# server-side checking of client cert
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008103#
8104# Here, both 1.2 and 1.3 only use signatures.
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02008105
Jerry Yuab082902021-12-23 18:02:22 +08008106requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008107run_test "keyUsage cli-auth 1.2: RSA, DigitalSignature: OK" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02008108 "$P_SRV debug_level=1 auth_mode=optional" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008109 "$O_CLI -tls1_2 -key $DATA_FILES_PATH/server2.key \
8110 -cert $DATA_FILES_PATH/server2.ku-ds.crt" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02008111 0 \
Ronald Cronf9c13fe2022-06-22 14:35:17 +02008112 -s "Verifying peer X.509 certificate... ok" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02008113 -S "bad certificate (usage extensions)" \
8114 -S "Processing of the Certificate handshake message failed"
8115
Jerry Yuab082902021-12-23 18:02:22 +08008116requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard52c0f5a2024-08-08 12:19:46 +02008117run_test "keyUsage cli-auth 1.2: RSA, DigitalSignature+KeyEncipherment: OK" \
8118 "$P_SRV debug_level=1 auth_mode=optional" \
8119 "$O_CLI -tls1_2 -key $DATA_FILES_PATH/server2.key \
8120 -cert $DATA_FILES_PATH/server2.ku-ds_ke.crt" \
8121 0 \
8122 -s "Verifying peer X.509 certificate... ok" \
8123 -S "bad certificate (usage extensions)" \
8124 -S "Processing of the Certificate handshake message failed"
8125
8126requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008127run_test "keyUsage cli-auth 1.2: RSA, KeyEncipherment: fail (soft)" \
8128 "$P_SRV debug_level=3 auth_mode=optional" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008129 "$O_CLI -tls1_2 -key $DATA_FILES_PATH/server2.key \
8130 -cert $DATA_FILES_PATH/server2.ku-ke.crt" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02008131 0 \
8132 -s "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008133 -S "send alert level=2 message=43" \
8134 -s "! Usage does not match the keyUsage extension" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02008135 -S "Processing of the Certificate handshake message failed"
8136
Jerry Yuab082902021-12-23 18:02:22 +08008137requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008138run_test "keyUsage cli-auth 1.2: RSA, KeyEncipherment: fail (hard)" \
8139 "$P_SRV debug_level=3 force_version=tls12 auth_mode=required" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008140 "$O_CLI -tls1_2 -key $DATA_FILES_PATH/server2.key \
8141 -cert $DATA_FILES_PATH/server2.ku-ke.crt" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02008142 1 \
8143 -s "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008144 -s "send alert level=2 message=43" \
Manuel Pégourié-Gonnard013d0792024-08-08 10:56:41 +02008145 -s "! Usage does not match the keyUsage extension" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02008146 -s "Processing of the Certificate handshake message failed"
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008147 # MBEDTLS_X509_BADCERT_KEY_USAGE -> MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02008148
Jerry Yuab082902021-12-23 18:02:22 +08008149requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008150run_test "keyUsage cli-auth 1.2: ECDSA, DigitalSignature: OK" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02008151 "$P_SRV debug_level=1 auth_mode=optional" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008152 "$O_CLI -tls1_2 -key $DATA_FILES_PATH/server5.key \
8153 -cert $DATA_FILES_PATH/server5.ku-ds.crt" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02008154 0 \
Ronald Cronf9c13fe2022-06-22 14:35:17 +02008155 -s "Verifying peer X.509 certificate... ok" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02008156 -S "bad certificate (usage extensions)" \
8157 -S "Processing of the Certificate handshake message failed"
8158
Jerry Yuab082902021-12-23 18:02:22 +08008159requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008160run_test "keyUsage cli-auth 1.2: ECDSA, KeyAgreement: fail (soft)" \
8161 "$P_SRV debug_level=3 auth_mode=optional" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008162 "$O_CLI -tls1_2 -key $DATA_FILES_PATH/server5.key \
8163 -cert $DATA_FILES_PATH/server5.ku-ka.crt" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02008164 0 \
8165 -s "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008166 -S "send alert level=2 message=43" \
8167 -s "! Usage does not match the keyUsage extension" \
Manuel Pégourié-Gonnarda9db85d2014-04-09 14:53:05 +02008168 -S "Processing of the Certificate handshake message failed"
8169
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008170requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
8171run_test "keyUsage cli-auth 1.2: ECDSA, KeyAgreement: fail (hard)" \
8172 "$P_SRV debug_level=3 auth_mode=required" \
8173 "$O_CLI -tls1_2 -key $DATA_FILES_PATH/server5.key \
8174 -cert $DATA_FILES_PATH/server5.ku-ka.crt" \
8175 1 \
8176 -s "bad certificate (usage extensions)" \
8177 -s "send alert level=2 message=43" \
Manuel Pégourié-Gonnard013d0792024-08-08 10:56:41 +02008178 -s "! Usage does not match the keyUsage extension" \
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008179 -s "Processing of the Certificate handshake message failed"
8180 # MBEDTLS_X509_BADCERT_KEY_USAGE -> MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT
8181
Przemek Stekiel8bfe8972023-06-26 12:59:45 +02008182requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02008183requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crond28f5a92022-06-16 19:27:25 +02008184run_test "keyUsage cli-auth 1.3: RSA, DigitalSignature: OK" \
Ronald Cron89ca9772022-10-17 14:56:45 +02008185 "$P_SRV debug_level=1 force_version=tls13 auth_mode=optional" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008186 "$O_NEXT_CLI_NO_CERT -key $DATA_FILES_PATH/server2.key \
8187 -cert $DATA_FILES_PATH/server2-sha256.ku-ds.crt" \
Ronald Crond28f5a92022-06-16 19:27:25 +02008188 0 \
Ronald Cronf9c13fe2022-06-22 14:35:17 +02008189 -s "Verifying peer X.509 certificate... ok" \
Ronald Crond28f5a92022-06-16 19:27:25 +02008190 -S "bad certificate (usage extensions)" \
8191 -S "Processing of the Certificate handshake message failed"
8192
Przemek Stekiel8bfe8972023-06-26 12:59:45 +02008193requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02008194requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Manuel Pégourié-Gonnard52c0f5a2024-08-08 12:19:46 +02008195run_test "keyUsage cli-auth 1.3: RSA, DigitalSignature+KeyEncipherment: OK" \
Ronald Cron89ca9772022-10-17 14:56:45 +02008196 "$P_SRV debug_level=1 force_version=tls13 auth_mode=optional" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008197 "$O_NEXT_CLI_NO_CERT -key $DATA_FILES_PATH/server2.key \
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008198 -cert $DATA_FILES_PATH/server2-sha256.ku-ds_ke.crt" \
8199 0 \
8200 -s "Verifying peer X.509 certificate... ok" \
8201 -S "bad certificate (usage extensions)" \
8202 -S "Processing of the Certificate handshake message failed"
8203
8204requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02008205requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008206run_test "keyUsage cli-auth 1.3: RSA, KeyEncipherment: fail (soft)" \
8207 "$P_SRV debug_level=3 force_version=tls13 auth_mode=optional" \
8208 "$O_NEXT_CLI_NO_CERT -key $DATA_FILES_PATH/server2.key \
David Horstmann5ab92be2024-07-01 17:01:28 +01008209 -cert $DATA_FILES_PATH/server2-sha256.ku-ke.crt" \
Ronald Crond28f5a92022-06-16 19:27:25 +02008210 0 \
8211 -s "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008212 -S "send alert level=2 message=43" \
Manuel Pégourié-Gonnardef41d8c2024-08-08 10:28:56 +02008213 -s "! Usage does not match the keyUsage extension" \
Ronald Crond28f5a92022-06-16 19:27:25 +02008214 -S "Processing of the Certificate handshake message failed"
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008215
8216requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02008217requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008218run_test "keyUsage cli-auth 1.3: RSA, KeyEncipherment: fail (hard)" \
8219 "$P_SRV debug_level=3 force_version=tls13 auth_mode=required" \
Manuel Pégourié-Gonnardcdd5b072024-08-12 09:50:18 +02008220 "$P_CLI key_file=$DATA_FILES_PATH/server2.key \
8221 crt_file=$DATA_FILES_PATH/server2-sha256.ku-ke.crt" \
8222 1 \
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008223 -s "bad certificate (usage extensions)" \
8224 -s "Processing of the Certificate handshake message failed" \
Manuel Pégourié-Gonnardef41d8c2024-08-08 10:28:56 +02008225 -s "send alert level=2 message=43" \
Manuel Pégourié-Gonnard013d0792024-08-08 10:56:41 +02008226 -s "! Usage does not match the keyUsage extension" \
Manuel Pégourié-Gonnardef41d8c2024-08-08 10:28:56 +02008227 -s "! mbedtls_ssl_handshake returned"
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008228 # MBEDTLS_X509_BADCERT_KEY_USAGE -> MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT
Ronald Crond28f5a92022-06-16 19:27:25 +02008229
Przemek Stekiel8bfe8972023-06-26 12:59:45 +02008230requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02008231requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crond28f5a92022-06-16 19:27:25 +02008232run_test "keyUsage cli-auth 1.3: ECDSA, DigitalSignature: OK" \
Ronald Cron89ca9772022-10-17 14:56:45 +02008233 "$P_SRV debug_level=1 force_version=tls13 auth_mode=optional" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008234 "$O_NEXT_CLI_NO_CERT -key $DATA_FILES_PATH/server5.key \
8235 -cert $DATA_FILES_PATH/server5.ku-ds.crt" \
Ronald Crond28f5a92022-06-16 19:27:25 +02008236 0 \
Ronald Cronf9c13fe2022-06-22 14:35:17 +02008237 -s "Verifying peer X.509 certificate... ok" \
Ronald Crond28f5a92022-06-16 19:27:25 +02008238 -S "bad certificate (usage extensions)" \
8239 -S "Processing of the Certificate handshake message failed"
8240
Przemek Stekiel8bfe8972023-06-26 12:59:45 +02008241requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02008242requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crond28f5a92022-06-16 19:27:25 +02008243run_test "keyUsage cli-auth 1.3: ECDSA, KeyAgreement: fail (soft)" \
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008244 "$P_SRV debug_level=3 force_version=tls13 auth_mode=optional" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008245 "$O_NEXT_CLI_NO_CERT -key $DATA_FILES_PATH/server5.key \
8246 -cert $DATA_FILES_PATH/server5.ku-ka.crt" \
Ronald Crond28f5a92022-06-16 19:27:25 +02008247 0 \
8248 -s "bad certificate (usage extensions)" \
Manuel Pégourié-Gonnardef41d8c2024-08-08 10:28:56 +02008249 -s "! Usage does not match the keyUsage extension" \
Ronald Crond28f5a92022-06-16 19:27:25 +02008250 -S "Processing of the Certificate handshake message failed"
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008251
8252requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02008253requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008254run_test "keyUsage cli-auth 1.3: ECDSA, KeyAgreement: fail (hard)" \
8255 "$P_SRV debug_level=3 force_version=tls13 auth_mode=required" \
Manuel Pégourié-Gonnardcdd5b072024-08-12 09:50:18 +02008256 "$P_CLI key_file=$DATA_FILES_PATH/server5.key \
8257 crt_file=$DATA_FILES_PATH/server5.ku-ka.crt" \
8258 1 \
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008259 -s "bad certificate (usage extensions)" \
8260 -s "Processing of the Certificate handshake message failed" \
Manuel Pégourié-Gonnardef41d8c2024-08-08 10:28:56 +02008261 -s "send alert level=2 message=43" \
Manuel Pégourié-Gonnard013d0792024-08-08 10:56:41 +02008262 -s "! Usage does not match the keyUsage extension" \
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008263 -s "! mbedtls_ssl_handshake returned"
Manuel Pégourié-Gonnard36d1b4a2024-08-06 12:14:04 +02008264 # MBEDTLS_X509_BADCERT_KEY_USAGE -> MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT
Ronald Crond28f5a92022-06-16 19:27:25 +02008265
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02008266# Tests for extendedKeyUsage, part 1: server-side certificate/suite selection
8267
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02008268run_test "extKeyUsage srv: serverAuth -> OK" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008269 "$P_SRV key_file=$DATA_FILES_PATH/server5.key \
8270 crt_file=$DATA_FILES_PATH/server5.eku-srv.crt" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02008271 "$P_CLI" \
8272 0
8273
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02008274run_test "extKeyUsage srv: serverAuth,clientAuth -> OK" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008275 "$P_SRV key_file=$DATA_FILES_PATH/server5.key \
8276 crt_file=$DATA_FILES_PATH/server5.eku-srv.crt" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02008277 "$P_CLI" \
8278 0
8279
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02008280run_test "extKeyUsage srv: codeSign,anyEKU -> OK" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008281 "$P_SRV key_file=$DATA_FILES_PATH/server5.key \
8282 crt_file=$DATA_FILES_PATH/server5.eku-cs_any.crt" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02008283 "$P_CLI" \
8284 0
8285
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02008286run_test "extKeyUsage srv: codeSign -> fail" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008287 "$P_SRV key_file=$DATA_FILES_PATH/server5.key \
8288 crt_file=$DATA_FILES_PATH/server5.eku-cli.crt" \
Manuel Pégourié-Gonnard7eb58cb2015-07-07 11:54:14 +02008289 "$P_CLI" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02008290 1
8291
8292# Tests for extendedKeyUsage, part 2: client-side checking of server cert
8293
Jerry Yuab082902021-12-23 18:02:22 +08008294requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Elena Uziunaitee74c8402024-08-15 15:24:09 +01008295run_test "extKeyUsage cli 1.2: serverAuth -> OK" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008296 "$O_SRV -tls1_2 -key $DATA_FILES_PATH/server5.key \
8297 -cert $DATA_FILES_PATH/server5.eku-srv.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02008298 "$P_CLI debug_level=1" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02008299 0 \
8300 -C "bad certificate (usage extensions)" \
8301 -C "Processing of the Certificate handshake message failed" \
8302 -c "Ciphersuite is TLS-"
8303
Jerry Yuab082902021-12-23 18:02:22 +08008304requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Elena Uziunaitee74c8402024-08-15 15:24:09 +01008305run_test "extKeyUsage cli 1.2: serverAuth,clientAuth -> OK" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008306 "$O_SRV -tls1_2 -key $DATA_FILES_PATH/server5.key \
8307 -cert $DATA_FILES_PATH/server5.eku-srv_cli.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02008308 "$P_CLI debug_level=1" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02008309 0 \
8310 -C "bad certificate (usage extensions)" \
8311 -C "Processing of the Certificate handshake message failed" \
8312 -c "Ciphersuite is TLS-"
8313
Jerry Yuab082902021-12-23 18:02:22 +08008314requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Elena Uziunaitee74c8402024-08-15 15:24:09 +01008315run_test "extKeyUsage cli 1.2: codeSign,anyEKU -> OK" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008316 "$O_SRV -tls1_2 -key $DATA_FILES_PATH/server5.key \
8317 -cert $DATA_FILES_PATH/server5.eku-cs_any.crt" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02008318 "$P_CLI debug_level=1" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02008319 0 \
8320 -C "bad certificate (usage extensions)" \
8321 -C "Processing of the Certificate handshake message failed" \
8322 -c "Ciphersuite is TLS-"
8323
Jerry Yuab082902021-12-23 18:02:22 +08008324requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Elena Uziunaite04db1fb2024-08-16 17:18:28 +01008325run_test "extKeyUsage cli 1.2: codeSign -> fail (soft)" \
8326 "$O_SRV -tls1_2 -key $DATA_FILES_PATH/server5.key \
8327 -cert $DATA_FILES_PATH/server5.eku-cs.crt" \
8328 "$P_CLI debug_level=3 auth_mode=optional" \
8329 0 \
8330 -c "bad certificate (usage extensions)" \
8331 -C "Processing of the Certificate handshake message failed" \
8332 -c "Ciphersuite is TLS-" \
8333 -C "send alert level=2 message=43" \
8334 -c "! Usage does not match the extendedKeyUsage extension"
8335 # MBEDTLS_X509_BADCERT_EXT_KEY_USAGE -> MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT
8336
8337requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Elena Uziunaitee74c8402024-08-15 15:24:09 +01008338run_test "extKeyUsage cli 1.2: codeSign -> fail (hard)" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008339 "$O_SRV -tls1_2 -key $DATA_FILES_PATH/server5.key \
8340 -cert $DATA_FILES_PATH/server5.eku-cs.crt" \
Elena Uziunaitee74c8402024-08-15 15:24:09 +01008341 "$P_CLI debug_level=3" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02008342 1 \
8343 -c "bad certificate (usage extensions)" \
8344 -c "Processing of the Certificate handshake message failed" \
Elena Uziunaitee74c8402024-08-15 15:24:09 +01008345 -C "Ciphersuite is TLS-" \
8346 -c "send alert level=2 message=43" \
8347 -c "! Usage does not match the extendedKeyUsage extension"
8348 # MBEDTLS_X509_BADCERT_EXT_KEY_USAGE -> MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02008349
Przemek Stekiel8bfe8972023-06-26 12:59:45 +02008350requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02008351requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crond28f5a92022-06-16 19:27:25 +02008352run_test "extKeyUsage cli 1.3: serverAuth -> OK" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008353 "$O_NEXT_SRV_NO_CERT -tls1_3 -num_tickets=0 -key $DATA_FILES_PATH/server5.key \
8354 -cert $DATA_FILES_PATH/server5.eku-srv.crt" \
Ronald Crond28f5a92022-06-16 19:27:25 +02008355 "$P_CLI debug_level=1" \
8356 0 \
8357 -C "bad certificate (usage extensions)" \
8358 -C "Processing of the Certificate handshake message failed" \
8359 -c "Ciphersuite is"
8360
Przemek Stekiel8bfe8972023-06-26 12:59:45 +02008361requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02008362requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crond28f5a92022-06-16 19:27:25 +02008363run_test "extKeyUsage cli 1.3: serverAuth,clientAuth -> OK" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008364 "$O_NEXT_SRV_NO_CERT -tls1_3 -num_tickets=0 -key $DATA_FILES_PATH/server5.key \
8365 -cert $DATA_FILES_PATH/server5.eku-srv_cli.crt" \
Ronald Crond28f5a92022-06-16 19:27:25 +02008366 "$P_CLI debug_level=1" \
8367 0 \
8368 -C "bad certificate (usage extensions)" \
8369 -C "Processing of the Certificate handshake message failed" \
8370 -c "Ciphersuite is"
8371
Przemek Stekiel8bfe8972023-06-26 12:59:45 +02008372requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02008373requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crond28f5a92022-06-16 19:27:25 +02008374run_test "extKeyUsage cli 1.3: codeSign,anyEKU -> OK" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008375 "$O_NEXT_SRV_NO_CERT -tls1_3 -num_tickets=0 -key $DATA_FILES_PATH/server5.key \
8376 -cert $DATA_FILES_PATH/server5.eku-cs_any.crt" \
Ronald Crond28f5a92022-06-16 19:27:25 +02008377 "$P_CLI debug_level=1" \
8378 0 \
8379 -C "bad certificate (usage extensions)" \
8380 -C "Processing of the Certificate handshake message failed" \
8381 -c "Ciphersuite is"
8382
Przemek Stekiel8bfe8972023-06-26 12:59:45 +02008383requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02008384requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Elena Uziunaitee74c8402024-08-15 15:24:09 +01008385run_test "extKeyUsage cli 1.3: codeSign -> fail (hard)" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008386 "$O_NEXT_SRV_NO_CERT -tls1_3 -num_tickets=0 -key $DATA_FILES_PATH/server5.key \
8387 -cert $DATA_FILES_PATH/server5.eku-cs.crt" \
Elena Uziunaitee74c8402024-08-15 15:24:09 +01008388 "$P_CLI debug_level=3" \
Ronald Crond28f5a92022-06-16 19:27:25 +02008389 1 \
8390 -c "bad certificate (usage extensions)" \
8391 -c "Processing of the Certificate handshake message failed" \
Elena Uziunaitee74c8402024-08-15 15:24:09 +01008392 -C "Ciphersuite is" \
8393 -c "send alert level=2 message=43" \
8394 -c "! Usage does not match the extendedKeyUsage extension"
8395 # MBEDTLS_X509_BADCERT_EXT_KEY_USAGE -> MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT
Ronald Crond28f5a92022-06-16 19:27:25 +02008396
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02008397# Tests for extendedKeyUsage, part 3: server-side checking of client cert
8398
Jerry Yuab082902021-12-23 18:02:22 +08008399requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Elena Uziunaitee74c8402024-08-15 15:24:09 +01008400run_test "extKeyUsage cli-auth 1.2: clientAuth -> OK" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02008401 "$P_SRV debug_level=1 auth_mode=optional" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008402 "$O_CLI -tls1_2 -key $DATA_FILES_PATH/server5.key \
8403 -cert $DATA_FILES_PATH/server5.eku-cli.crt" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02008404 0 \
8405 -S "bad certificate (usage extensions)" \
8406 -S "Processing of the Certificate handshake message failed"
8407
Jerry Yuab082902021-12-23 18:02:22 +08008408requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Elena Uziunaitee74c8402024-08-15 15:24:09 +01008409run_test "extKeyUsage cli-auth 1.2: serverAuth,clientAuth -> OK" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02008410 "$P_SRV debug_level=1 auth_mode=optional" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008411 "$O_CLI -tls1_2 -key $DATA_FILES_PATH/server5.key \
8412 -cert $DATA_FILES_PATH/server5.eku-srv_cli.crt" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02008413 0 \
8414 -S "bad certificate (usage extensions)" \
8415 -S "Processing of the Certificate handshake message failed"
8416
Jerry Yuab082902021-12-23 18:02:22 +08008417requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Elena Uziunaitee74c8402024-08-15 15:24:09 +01008418run_test "extKeyUsage cli-auth 1.2: codeSign,anyEKU -> OK" \
Manuel Pégourié-Gonnard644e8f32014-08-30 21:59:31 +02008419 "$P_SRV debug_level=1 auth_mode=optional" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008420 "$O_CLI -tls1_2 -key $DATA_FILES_PATH/server5.key \
8421 -cert $DATA_FILES_PATH/server5.eku-cs_any.crt" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02008422 0 \
8423 -S "bad certificate (usage extensions)" \
8424 -S "Processing of the Certificate handshake message failed"
8425
Jerry Yuab082902021-12-23 18:02:22 +08008426requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Elena Uziunaitee74c8402024-08-15 15:24:09 +01008427run_test "extKeyUsage cli-auth 1.2: codeSign -> fail (soft)" \
8428 "$P_SRV debug_level=3 auth_mode=optional" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008429 "$O_CLI -tls1_2 -key $DATA_FILES_PATH/server5.key \
8430 -cert $DATA_FILES_PATH/server5.eku-cs.crt" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02008431 0 \
8432 -s "bad certificate (usage extensions)" \
Elena Uziunaitee74c8402024-08-15 15:24:09 +01008433 -S "send alert level=2 message=43" \
8434 -s "! Usage does not match the extendedKeyUsage extension" \
8435 -S "Processing of the Certificate handshake message failed" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02008436
Jerry Yuab082902021-12-23 18:02:22 +08008437requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Elena Uziunaitee74c8402024-08-15 15:24:09 +01008438run_test "extKeyUsage cli-auth 1.2: codeSign -> fail (hard)" \
8439 "$P_SRV debug_level=3 auth_mode=required" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008440 "$O_CLI -tls1_2 -key $DATA_FILES_PATH/server5.key \
8441 -cert $DATA_FILES_PATH/server5.eku-cs.crt" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02008442 1 \
8443 -s "bad certificate (usage extensions)" \
Elena Uziunaitee74c8402024-08-15 15:24:09 +01008444 -s "send alert level=2 message=43" \
8445 -s "! Usage does not match the extendedKeyUsage extension" \
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02008446 -s "Processing of the Certificate handshake message failed"
Elena Uziunaitee74c8402024-08-15 15:24:09 +01008447 # MBEDTLS_X509_BADCERT_EXT_KEY_USAGE -> MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT
Manuel Pégourié-Gonnard0408fd12014-04-11 11:06:22 +02008448
Przemek Stekiel8bfe8972023-06-26 12:59:45 +02008449requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02008450requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crond28f5a92022-06-16 19:27:25 +02008451run_test "extKeyUsage cli-auth 1.3: clientAuth -> OK" \
Ronald Cron89ca9772022-10-17 14:56:45 +02008452 "$P_SRV debug_level=1 force_version=tls13 auth_mode=optional" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008453 "$O_NEXT_CLI_NO_CERT -key $DATA_FILES_PATH/server5.key \
8454 -cert $DATA_FILES_PATH/server5.eku-cli.crt" \
Ronald Crond28f5a92022-06-16 19:27:25 +02008455 0 \
8456 -S "bad certificate (usage extensions)" \
8457 -S "Processing of the Certificate handshake message failed"
8458
Przemek Stekiel8bfe8972023-06-26 12:59:45 +02008459requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02008460requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crond28f5a92022-06-16 19:27:25 +02008461run_test "extKeyUsage cli-auth 1.3: serverAuth,clientAuth -> OK" \
Ronald Cron89ca9772022-10-17 14:56:45 +02008462 "$P_SRV debug_level=1 force_version=tls13 auth_mode=optional" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008463 "$O_NEXT_CLI_NO_CERT -key $DATA_FILES_PATH/server5.key \
8464 -cert $DATA_FILES_PATH/server5.eku-srv_cli.crt" \
Ronald Crond28f5a92022-06-16 19:27:25 +02008465 0 \
8466 -S "bad certificate (usage extensions)" \
8467 -S "Processing of the Certificate handshake message failed"
8468
Przemek Stekiel8bfe8972023-06-26 12:59:45 +02008469requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02008470requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crond28f5a92022-06-16 19:27:25 +02008471run_test "extKeyUsage cli-auth 1.3: codeSign,anyEKU -> OK" \
Ronald Cron89ca9772022-10-17 14:56:45 +02008472 "$P_SRV debug_level=1 force_version=tls13 auth_mode=optional" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008473 "$O_NEXT_CLI_NO_CERT -key $DATA_FILES_PATH/server5.key \
8474 -cert $DATA_FILES_PATH/server5.eku-cs_any.crt" \
Ronald Crond28f5a92022-06-16 19:27:25 +02008475 0 \
8476 -S "bad certificate (usage extensions)" \
8477 -S "Processing of the Certificate handshake message failed"
8478
Przemek Stekiel8bfe8972023-06-26 12:59:45 +02008479requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02008480requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crond28f5a92022-06-16 19:27:25 +02008481run_test "extKeyUsage cli-auth 1.3: codeSign -> fail (soft)" \
Elena Uziunaitee74c8402024-08-15 15:24:09 +01008482 "$P_SRV debug_level=3 force_version=tls13 auth_mode=optional" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008483 "$O_NEXT_CLI_NO_CERT -key $DATA_FILES_PATH/server5.key \
8484 -cert $DATA_FILES_PATH/server5.eku-cs.crt" \
Ronald Crond28f5a92022-06-16 19:27:25 +02008485 0 \
8486 -s "bad certificate (usage extensions)" \
Elena Uziunaitee74c8402024-08-15 15:24:09 +01008487 -S "send alert level=2 message=43" \
8488 -s "! Usage does not match the extendedKeyUsage extension" \
Ronald Crond28f5a92022-06-16 19:27:25 +02008489 -S "Processing of the Certificate handshake message failed"
8490
Elena Uziunaite04db1fb2024-08-16 17:18:28 +01008491requires_openssl_tls1_3_with_compatible_ephemeral
Gilles Peskine365296a2024-09-13 14:15:46 +02008492requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Elena Uziunaite04db1fb2024-08-16 17:18:28 +01008493run_test "extKeyUsage cli-auth 1.3: codeSign -> fail (hard)" \
8494 "$P_SRV debug_level=3 force_version=tls13 auth_mode=required" \
8495 "$P_CLI key_file=$DATA_FILES_PATH/server5.key \
8496 crt_file=$DATA_FILES_PATH/server5.eku-cs.crt" \
8497 1 \
8498 -s "bad certificate (usage extensions)" \
8499 -s "send alert level=2 message=43" \
8500 -s "! Usage does not match the extendedKeyUsage extension" \
8501 -s "Processing of the Certificate handshake message failed"
8502 # MBEDTLS_X509_BADCERT_EXT_KEY_USAGE -> MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT
8503
Manuel Pégourié-Gonnard0cc7e312014-06-09 11:36:47 +02008504# Tests for DHM parameters loading
8505
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02008506run_test "DHM parameters: reference" \
Manuel Pégourié-Gonnard0cc7e312014-06-09 11:36:47 +02008507 "$P_SRV" \
8508 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
8509 debug_level=3" \
8510 0 \
8511 -c "value of 'DHM: P ' (2048 bits)" \
Hanno Becker13be9902017-09-27 17:17:30 +01008512 -c "value of 'DHM: G ' (2 bits)"
Manuel Pégourié-Gonnard0cc7e312014-06-09 11:36:47 +02008513
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02008514run_test "DHM parameters: other parameters" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008515 "$P_SRV dhm_file=$DATA_FILES_PATH/dhparams.pem" \
Manuel Pégourié-Gonnard0cc7e312014-06-09 11:36:47 +02008516 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
8517 debug_level=3" \
8518 0 \
8519 -c "value of 'DHM: P ' (1024 bits)" \
8520 -c "value of 'DHM: G ' (2 bits)"
8521
Manuel Pégourié-Gonnard7a010aa2015-06-12 11:19:10 +02008522# Tests for DHM client-side size checking
8523
8524run_test "DHM size: server default, client default, OK" \
8525 "$P_SRV" \
8526 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
8527 debug_level=1" \
8528 0 \
8529 -C "DHM prime too short:"
8530
8531run_test "DHM size: server default, client 2048, OK" \
8532 "$P_SRV" \
8533 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
8534 debug_level=1 dhmlen=2048" \
8535 0 \
8536 -C "DHM prime too short:"
8537
8538run_test "DHM size: server 1024, client default, OK" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008539 "$P_SRV dhm_file=$DATA_FILES_PATH/dhparams.pem" \
Manuel Pégourié-Gonnard7a010aa2015-06-12 11:19:10 +02008540 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
8541 debug_level=1" \
8542 0 \
8543 -C "DHM prime too short:"
8544
Gilles Peskinec6b0d962020-12-08 22:31:52 +01008545run_test "DHM size: server 999, client 999, OK" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008546 "$P_SRV dhm_file=$DATA_FILES_PATH/dh.999.pem" \
Gilles Peskinec6b0d962020-12-08 22:31:52 +01008547 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
8548 debug_level=1 dhmlen=999" \
8549 0 \
8550 -C "DHM prime too short:"
8551
8552run_test "DHM size: server 1000, client 1000, OK" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008553 "$P_SRV dhm_file=$DATA_FILES_PATH/dh.1000.pem" \
Gilles Peskinec6b0d962020-12-08 22:31:52 +01008554 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
8555 debug_level=1 dhmlen=1000" \
8556 0 \
8557 -C "DHM prime too short:"
8558
Manuel Pégourié-Gonnard7a010aa2015-06-12 11:19:10 +02008559run_test "DHM size: server 1000, client default, rejected" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008560 "$P_SRV dhm_file=$DATA_FILES_PATH/dh.1000.pem" \
Manuel Pégourié-Gonnard7a010aa2015-06-12 11:19:10 +02008561 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
8562 debug_level=1" \
8563 1 \
8564 -c "DHM prime too short:"
8565
Gilles Peskinec6b0d962020-12-08 22:31:52 +01008566run_test "DHM size: server 1000, client 1001, rejected" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008567 "$P_SRV dhm_file=$DATA_FILES_PATH/dh.1000.pem" \
Gilles Peskinec6b0d962020-12-08 22:31:52 +01008568 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
8569 debug_level=1 dhmlen=1001" \
8570 1 \
8571 -c "DHM prime too short:"
8572
8573run_test "DHM size: server 999, client 1000, rejected" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008574 "$P_SRV dhm_file=$DATA_FILES_PATH/dh.999.pem" \
Gilles Peskinec6b0d962020-12-08 22:31:52 +01008575 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
8576 debug_level=1 dhmlen=1000" \
8577 1 \
8578 -c "DHM prime too short:"
8579
8580run_test "DHM size: server 998, client 999, rejected" \
David Horstmann5ab92be2024-07-01 17:01:28 +01008581 "$P_SRV dhm_file=$DATA_FILES_PATH/dh.998.pem" \
Gilles Peskinec6b0d962020-12-08 22:31:52 +01008582 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
8583 debug_level=1 dhmlen=999" \
8584 1 \
8585 -c "DHM prime too short:"
8586
Manuel Pégourié-Gonnard7a010aa2015-06-12 11:19:10 +02008587run_test "DHM size: server default, client 2049, rejected" \
8588 "$P_SRV" \
8589 "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
8590 debug_level=1 dhmlen=2049" \
8591 1 \
8592 -c "DHM prime too short:"
8593
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02008594# Tests for PSK callback
8595
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02008596run_test "PSK callback: psk, no callback" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008597 "$P_SRV psk=73776f726466697368 psk_identity=foo" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02008598 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008599 psk_identity=foo psk=73776f726466697368" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02008600 0 \
Dave Rodgmane5b828c2021-06-29 19:05:34 +01008601 -S "SSL - The handshake negotiation failed" \
Manuel Pégourié-Gonnard10c3c9f2014-06-10 15:28:52 +02008602 -S "SSL - Unknown identity received" \
8603 -S "SSL - Verification of the message MAC failed"
8604
Hanno Beckerf7027512018-10-23 15:27:39 +01008605requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
8606run_test "PSK callback: opaque psk on client, no callback" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008607 "$P_SRV extended_ms=0 debug_level=1 psk=73776f726466697368 psk_identity=foo" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00008608 "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008609 psk_identity=foo psk=73776f726466697368 psk_opaque=1" \
Hanno Beckerf7027512018-10-23 15:27:39 +01008610 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02008611 -C "session hash for extended master secret"\
8612 -S "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01008613 -S "SSL - The handshake negotiation failed" \
Hanno Beckerf7027512018-10-23 15:27:39 +01008614 -S "SSL - Unknown identity received" \
8615 -S "SSL - Verification of the message MAC failed"
8616
8617requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
8618run_test "PSK callback: opaque psk on client, no callback, SHA-384" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008619 "$P_SRV extended_ms=0 debug_level=1 psk=73776f726466697368 psk_identity=foo" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00008620 "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008621 psk_identity=foo psk=73776f726466697368 psk_opaque=1" \
Hanno Beckerf7027512018-10-23 15:27:39 +01008622 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02008623 -C "session hash for extended master secret"\
8624 -S "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01008625 -S "SSL - The handshake negotiation failed" \
Hanno Beckerf7027512018-10-23 15:27:39 +01008626 -S "SSL - Unknown identity received" \
8627 -S "SSL - Verification of the message MAC failed"
8628
8629requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
8630run_test "PSK callback: opaque psk on client, no callback, EMS" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008631 "$P_SRV extended_ms=1 debug_level=3 psk=73776f726466697368 psk_identity=foo" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00008632 "$P_CLI extended_ms=1 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008633 psk_identity=foo psk=73776f726466697368 psk_opaque=1" \
Hanno Beckerf7027512018-10-23 15:27:39 +01008634 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02008635 -c "session hash for extended master secret"\
8636 -s "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01008637 -S "SSL - The handshake negotiation failed" \
Hanno Beckerf7027512018-10-23 15:27:39 +01008638 -S "SSL - Unknown identity received" \
8639 -S "SSL - Verification of the message MAC failed"
8640
8641requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
8642run_test "PSK callback: opaque psk on client, no callback, SHA-384, EMS" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008643 "$P_SRV extended_ms=1 debug_level=3 psk=73776f726466697368 psk_identity=foo" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00008644 "$P_CLI extended_ms=1 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008645 psk_identity=foo psk=73776f726466697368 psk_opaque=1" \
Hanno Beckerf7027512018-10-23 15:27:39 +01008646 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02008647 -c "session hash for extended master secret"\
8648 -s "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01008649 -S "SSL - The handshake negotiation failed" \
Hanno Beckerf7027512018-10-23 15:27:39 +01008650 -S "SSL - Unknown identity received" \
8651 -S "SSL - Verification of the message MAC failed"
8652
Hanno Becker28c79dc2018-10-26 13:15:08 +01008653requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekiel8e0495e2022-04-05 23:00:04 +02008654run_test "PSK callback: opaque rsa-psk on client, no callback" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008655 "$P_SRV extended_ms=0 debug_level=1 psk=73776f726466697368 psk_identity=foo" \
Przemek Stekiel8e0495e2022-04-05 23:00:04 +02008656 "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA256 \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008657 psk_identity=foo psk=73776f726466697368 psk_opaque=1" \
Przemek Stekiel8e0495e2022-04-05 23:00:04 +02008658 0 \
Przemek Stekiel8e0495e2022-04-05 23:00:04 +02008659 -C "session hash for extended master secret"\
8660 -S "session hash for extended master secret"\
8661 -S "SSL - The handshake negotiation failed" \
8662 -S "SSL - Unknown identity received" \
8663 -S "SSL - Verification of the message MAC failed"
8664
8665requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekiel8e0495e2022-04-05 23:00:04 +02008666run_test "PSK callback: opaque rsa-psk on client, no callback, SHA-384" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008667 "$P_SRV extended_ms=0 debug_level=1 psk=73776f726466697368 psk_identity=foo" \
Przemek Stekiel8e0495e2022-04-05 23:00:04 +02008668 "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-256-CBC-SHA384 \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008669 psk_identity=foo psk=73776f726466697368 psk_opaque=1" \
Przemek Stekiel8e0495e2022-04-05 23:00:04 +02008670 0 \
Przemek Stekiel8e0495e2022-04-05 23:00:04 +02008671 -C "session hash for extended master secret"\
8672 -S "session hash for extended master secret"\
8673 -S "SSL - The handshake negotiation failed" \
8674 -S "SSL - Unknown identity received" \
8675 -S "SSL - Verification of the message MAC failed"
8676
8677requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekiel8e0495e2022-04-05 23:00:04 +02008678run_test "PSK callback: opaque rsa-psk on client, no callback, EMS" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008679 "$P_SRV extended_ms=1 debug_level=3 psk=73776f726466697368 psk_identity=foo" \
Przemek Stekiel8e0495e2022-04-05 23:00:04 +02008680 "$P_CLI extended_ms=1 debug_level=3 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008681 psk_identity=foo psk=73776f726466697368 psk_opaque=1" \
Przemek Stekiel8e0495e2022-04-05 23:00:04 +02008682 0 \
Przemek Stekiel8e0495e2022-04-05 23:00:04 +02008683 -c "session hash for extended master secret"\
8684 -s "session hash for extended master secret"\
8685 -S "SSL - The handshake negotiation failed" \
8686 -S "SSL - Unknown identity received" \
8687 -S "SSL - Verification of the message MAC failed"
8688
8689requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekiel8e0495e2022-04-05 23:00:04 +02008690run_test "PSK callback: opaque rsa-psk on client, no callback, SHA-384, EMS" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008691 "$P_SRV extended_ms=1 debug_level=3 psk=73776f726466697368 psk_identity=foo" \
Przemek Stekiel8e0495e2022-04-05 23:00:04 +02008692 "$P_CLI extended_ms=1 debug_level=3 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-256-CBC-SHA384 \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008693 psk_identity=foo psk=73776f726466697368 psk_opaque=1" \
Przemek Stekiel8e0495e2022-04-05 23:00:04 +02008694 0 \
Przemek Stekiel8e0495e2022-04-05 23:00:04 +02008695 -c "session hash for extended master secret"\
8696 -s "session hash for extended master secret"\
8697 -S "SSL - The handshake negotiation failed" \
8698 -S "SSL - Unknown identity received" \
8699 -S "SSL - Verification of the message MAC failed"
8700
8701requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekielb6a05032022-04-14 10:22:18 +02008702run_test "PSK callback: opaque ecdhe-psk on client, no callback" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008703 "$P_SRV extended_ms=0 debug_level=1 psk=73776f726466697368 psk_identity=foo" \
Przemek Stekielb6a05032022-04-14 10:22:18 +02008704 "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256 \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008705 psk_identity=foo psk=73776f726466697368 psk_opaque=1" \
Przemek Stekielb6a05032022-04-14 10:22:18 +02008706 0 \
Przemek Stekielb6a05032022-04-14 10:22:18 +02008707 -C "session hash for extended master secret"\
8708 -S "session hash for extended master secret"\
8709 -S "SSL - The handshake negotiation failed" \
8710 -S "SSL - Unknown identity received" \
8711 -S "SSL - Verification of the message MAC failed"
8712
8713requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekielb6a05032022-04-14 10:22:18 +02008714run_test "PSK callback: opaque ecdhe-psk on client, no callback, SHA-384" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008715 "$P_SRV extended_ms=0 debug_level=1 psk=73776f726466697368 psk_identity=foo" \
Przemek Stekielb6a05032022-04-14 10:22:18 +02008716 "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384 \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008717 psk_identity=foo psk=73776f726466697368 psk_opaque=1" \
Przemek Stekielb6a05032022-04-14 10:22:18 +02008718 0 \
Przemek Stekielb6a05032022-04-14 10:22:18 +02008719 -C "session hash for extended master secret"\
8720 -S "session hash for extended master secret"\
8721 -S "SSL - The handshake negotiation failed" \
8722 -S "SSL - Unknown identity received" \
8723 -S "SSL - Verification of the message MAC failed"
8724
8725requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekielb6a05032022-04-14 10:22:18 +02008726run_test "PSK callback: opaque ecdhe-psk on client, no callback, EMS" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008727 "$P_SRV extended_ms=1 debug_level=3 psk=73776f726466697368 psk_identity=foo" \
Przemek Stekielb6a05032022-04-14 10:22:18 +02008728 "$P_CLI extended_ms=1 debug_level=3 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008729 psk_identity=foo psk=73776f726466697368 psk_opaque=1" \
Przemek Stekielb6a05032022-04-14 10:22:18 +02008730 0 \
Przemek Stekielb6a05032022-04-14 10:22:18 +02008731 -c "session hash for extended master secret"\
8732 -s "session hash for extended master secret"\
8733 -S "SSL - The handshake negotiation failed" \
8734 -S "SSL - Unknown identity received" \
8735 -S "SSL - Verification of the message MAC failed"
8736
8737requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekielb6a05032022-04-14 10:22:18 +02008738run_test "PSK callback: opaque ecdhe-psk on client, no callback, SHA-384, EMS" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008739 "$P_SRV extended_ms=1 debug_level=3 psk=73776f726466697368 psk_identity=foo" \
Przemek Stekielb6a05032022-04-14 10:22:18 +02008740 "$P_CLI extended_ms=1 debug_level=3 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384 \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008741 psk_identity=foo psk=73776f726466697368 psk_opaque=1" \
Przemek Stekielb6a05032022-04-14 10:22:18 +02008742 0 \
Przemek Stekielb6a05032022-04-14 10:22:18 +02008743 -c "session hash for extended master secret"\
8744 -s "session hash for extended master secret"\
8745 -S "SSL - The handshake negotiation failed" \
8746 -S "SSL - Unknown identity received" \
8747 -S "SSL - Verification of the message MAC failed"
8748
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008749requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008750run_test "PSK callback: opaque dhe-psk on client, no callback" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008751 "$P_SRV extended_ms=0 debug_level=1 psk=73776f726466697368 psk_identity=foo" \
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008752 "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-128-CBC-SHA256 \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008753 psk_identity=foo psk=73776f726466697368 psk_opaque=1" \
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008754 0 \
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008755 -C "session hash for extended master secret"\
8756 -S "session hash for extended master secret"\
8757 -S "SSL - The handshake negotiation failed" \
8758 -S "SSL - Unknown identity received" \
8759 -S "SSL - Verification of the message MAC failed"
8760
8761requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008762run_test "PSK callback: opaque dhe-psk on client, no callback, SHA-384" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008763 "$P_SRV extended_ms=0 debug_level=1 psk=73776f726466697368 psk_identity=foo" \
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008764 "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-256-CBC-SHA384 \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008765 psk_identity=foo psk=73776f726466697368 psk_opaque=1" \
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008766 0 \
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008767 -C "session hash for extended master secret"\
8768 -S "session hash for extended master secret"\
8769 -S "SSL - The handshake negotiation failed" \
8770 -S "SSL - Unknown identity received" \
8771 -S "SSL - Verification of the message MAC failed"
8772
8773requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008774run_test "PSK callback: opaque dhe-psk on client, no callback, EMS" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008775 "$P_SRV extended_ms=1 debug_level=3 psk=73776f726466697368 psk_identity=foo" \
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008776 "$P_CLI extended_ms=1 debug_level=3 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-128-CBC-SHA \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008777 psk_identity=foo psk=73776f726466697368 psk_opaque=1" \
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008778 0 \
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008779 -c "session hash for extended master secret"\
8780 -s "session hash for extended master secret"\
8781 -S "SSL - The handshake negotiation failed" \
8782 -S "SSL - Unknown identity received" \
8783 -S "SSL - Verification of the message MAC failed"
8784
8785requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008786run_test "PSK callback: opaque dhe-psk on client, no callback, SHA-384, EMS" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008787 "$P_SRV extended_ms=1 debug_level=3 psk=73776f726466697368 psk_identity=foo" \
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008788 "$P_CLI extended_ms=1 debug_level=3 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-256-CBC-SHA384 \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008789 psk_identity=foo psk=73776f726466697368 psk_opaque=1" \
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008790 0 \
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008791 -c "session hash for extended master secret"\
8792 -s "session hash for extended master secret"\
8793 -S "SSL - The handshake negotiation failed" \
8794 -S "SSL - Unknown identity received" \
8795 -S "SSL - Verification of the message MAC failed"
Przemek Stekielb6a05032022-04-14 10:22:18 +02008796
8797requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Hanno Becker28c79dc2018-10-26 13:15:08 +01008798run_test "PSK callback: raw psk on client, static opaque on server, no callback" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008799 "$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 Bai8b5c3822021-12-02 08:43:35 +00008800 "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008801 psk_identity=foo psk=73776f726466697368" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01008802 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02008803 -C "session hash for extended master secret"\
8804 -S "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01008805 -S "SSL - The handshake negotiation failed" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01008806 -S "SSL - Unknown identity received" \
8807 -S "SSL - Verification of the message MAC failed"
8808
8809requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
8810run_test "PSK callback: raw psk on client, static opaque on server, no callback, SHA-384" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008811 "$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 Bai8b5c3822021-12-02 08:43:35 +00008812 "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008813 psk_identity=foo psk=73776f726466697368" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01008814 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02008815 -C "session hash for extended master secret"\
8816 -S "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01008817 -S "SSL - The handshake negotiation failed" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01008818 -S "SSL - Unknown identity received" \
8819 -S "SSL - Verification of the message MAC failed"
8820
8821requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
8822run_test "PSK callback: raw psk on client, static opaque on server, no callback, EMS" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008823 "$P_SRV debug_level=3 psk=73776f726466697368 psk_identity=foo psk_opaque=1 min_version=tls12 \
Hanno Becker28c79dc2018-10-26 13:15:08 +01008824 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA extended_ms=1" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00008825 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008826 psk_identity=foo psk=73776f726466697368 extended_ms=1" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01008827 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02008828 -c "session hash for extended master secret"\
8829 -s "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01008830 -S "SSL - The handshake negotiation failed" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01008831 -S "SSL - Unknown identity received" \
8832 -S "SSL - Verification of the message MAC failed"
8833
8834requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
8835run_test "PSK callback: raw psk on client, static opaque on server, no callback, EMS, SHA384" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008836 "$P_SRV debug_level=3 psk=73776f726466697368 psk_identity=foo psk_opaque=1 min_version=tls12 \
Hanno Becker28c79dc2018-10-26 13:15:08 +01008837 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 extended_ms=1" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00008838 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008839 psk_identity=foo psk=73776f726466697368 extended_ms=1" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01008840 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02008841 -c "session hash for extended master secret"\
8842 -s "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01008843 -S "SSL - The handshake negotiation failed" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01008844 -S "SSL - Unknown identity received" \
8845 -S "SSL - Verification of the message MAC failed"
8846
8847requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekielb270b562022-04-06 13:12:48 +02008848run_test "PSK callback: raw rsa-psk on client, static opaque on server, no callback" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008849 "$P_SRV extended_ms=0 debug_level=5 psk=73776f726466697368 psk_identity=foo psk_opaque=1 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA" \
Przemek Stekielb270b562022-04-06 13:12:48 +02008850 "$P_CLI extended_ms=0 debug_level=5 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008851 psk_identity=foo psk=73776f726466697368" \
Przemek Stekielb270b562022-04-06 13:12:48 +02008852 0 \
Przemek Stekielb270b562022-04-06 13:12:48 +02008853 -C "session hash for extended master secret"\
8854 -S "session hash for extended master secret"\
8855 -S "SSL - The handshake negotiation failed" \
8856 -S "SSL - Unknown identity received" \
8857 -S "SSL - Verification of the message MAC failed"
8858
8859requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekielb270b562022-04-06 13:12:48 +02008860run_test "PSK callback: raw rsa-psk on client, static opaque on server, no callback, SHA-384" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008861 "$P_SRV extended_ms=0 debug_level=1 psk=73776f726466697368 psk_identity=foo psk_opaque=1 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-256-CBC-SHA384" \
Przemek Stekielb270b562022-04-06 13:12:48 +02008862 "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-256-CBC-SHA384 \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008863 psk_identity=foo psk=73776f726466697368" \
Przemek Stekielb270b562022-04-06 13:12:48 +02008864 0 \
Przemek Stekielb270b562022-04-06 13:12:48 +02008865 -C "session hash for extended master secret"\
8866 -S "session hash for extended master secret"\
8867 -S "SSL - The handshake negotiation failed" \
8868 -S "SSL - Unknown identity received" \
8869 -S "SSL - Verification of the message MAC failed"
8870
8871requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekielb270b562022-04-06 13:12:48 +02008872run_test "PSK callback: raw rsa-psk on client, static opaque on server, no callback, EMS" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008873 "$P_SRV debug_level=3 psk=73776f726466697368 psk_identity=foo psk_opaque=1 min_version=tls12 \
Przemek Stekielb270b562022-04-06 13:12:48 +02008874 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA extended_ms=1" \
8875 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008876 psk_identity=foo psk=73776f726466697368 extended_ms=1" \
Przemek Stekielb270b562022-04-06 13:12:48 +02008877 0 \
8878 -c "session hash for extended master secret"\
8879 -s "session hash for extended master secret"\
Przemek Stekielb270b562022-04-06 13:12:48 +02008880 -S "SSL - The handshake negotiation failed" \
8881 -S "SSL - Unknown identity received" \
8882 -S "SSL - Verification of the message MAC failed"
8883
8884requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekielb270b562022-04-06 13:12:48 +02008885run_test "PSK callback: raw rsa-psk on client, static opaque on server, no callback, EMS, SHA384" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008886 "$P_SRV debug_level=3 psk=73776f726466697368 psk_identity=foo psk_opaque=1 min_version=tls12 \
Przemek Stekielb270b562022-04-06 13:12:48 +02008887 force_ciphersuite=TLS-RSA-PSK-WITH-AES-256-CBC-SHA384 extended_ms=1" \
8888 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-256-CBC-SHA384 \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008889 psk_identity=foo psk=73776f726466697368 extended_ms=1" \
Przemek Stekielb270b562022-04-06 13:12:48 +02008890 0 \
8891 -c "session hash for extended master secret"\
8892 -s "session hash for extended master secret"\
Przemek Stekielb270b562022-04-06 13:12:48 +02008893 -S "SSL - The handshake negotiation failed" \
8894 -S "SSL - Unknown identity received" \
8895 -S "SSL - Verification of the message MAC failed"
8896
8897requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekielb6a05032022-04-14 10:22:18 +02008898run_test "PSK callback: raw ecdhe-psk on client, static opaque on server, no callback" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008899 "$P_SRV extended_ms=0 debug_level=5 psk=73776f726466697368 psk_identity=foo psk_opaque=1 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA" \
Przemek Stekielb6a05032022-04-14 10:22:18 +02008900 "$P_CLI extended_ms=0 debug_level=5 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008901 psk_identity=foo psk=73776f726466697368" \
Przemek Stekielb6a05032022-04-14 10:22:18 +02008902 0 \
Przemek Stekielb6a05032022-04-14 10:22:18 +02008903 -C "session hash for extended master secret"\
8904 -S "session hash for extended master secret"\
8905 -S "SSL - The handshake negotiation failed" \
8906 -S "SSL - Unknown identity received" \
8907 -S "SSL - Verification of the message MAC failed"
8908
8909requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekielb6a05032022-04-14 10:22:18 +02008910run_test "PSK callback: raw ecdhe-psk on client, static opaque on server, no callback, SHA-384" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008911 "$P_SRV extended_ms=0 debug_level=1 psk=73776f726466697368 psk_identity=foo psk_opaque=1 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384" \
Przemek Stekielb6a05032022-04-14 10:22:18 +02008912 "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384 \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008913 psk_identity=foo psk=73776f726466697368" \
Przemek Stekielb6a05032022-04-14 10:22:18 +02008914 0 \
Przemek Stekielb6a05032022-04-14 10:22:18 +02008915 -C "session hash for extended master secret"\
8916 -S "session hash for extended master secret"\
8917 -S "SSL - The handshake negotiation failed" \
8918 -S "SSL - Unknown identity received" \
8919 -S "SSL - Verification of the message MAC failed"
8920
8921requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekielb6a05032022-04-14 10:22:18 +02008922run_test "PSK callback: raw ecdhe-psk on client, static opaque on server, no callback, EMS" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008923 "$P_SRV debug_level=3 psk=73776f726466697368 psk_identity=foo psk_opaque=1 min_version=tls12 \
Przemek Stekielb6a05032022-04-14 10:22:18 +02008924 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA extended_ms=1" \
8925 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008926 psk_identity=foo psk=73776f726466697368 extended_ms=1" \
Przemek Stekielb6a05032022-04-14 10:22:18 +02008927 0 \
8928 -c "session hash for extended master secret"\
8929 -s "session hash for extended master secret"\
Przemek Stekielb6a05032022-04-14 10:22:18 +02008930 -S "SSL - The handshake negotiation failed" \
8931 -S "SSL - Unknown identity received" \
8932 -S "SSL - Verification of the message MAC failed"
8933
8934requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekielb6a05032022-04-14 10:22:18 +02008935run_test "PSK callback: raw ecdhe-psk on client, static opaque on server, no callback, EMS, SHA384" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008936 "$P_SRV debug_level=3 psk=73776f726466697368 psk_identity=foo psk_opaque=1 min_version=tls12 \
Przemek Stekielb6a05032022-04-14 10:22:18 +02008937 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384 extended_ms=1" \
8938 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384 \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008939 psk_identity=foo psk=73776f726466697368 extended_ms=1" \
Przemek Stekielb6a05032022-04-14 10:22:18 +02008940 0 \
8941 -c "session hash for extended master secret"\
8942 -s "session hash for extended master secret"\
Przemek Stekielb6a05032022-04-14 10:22:18 +02008943 -S "SSL - The handshake negotiation failed" \
8944 -S "SSL - Unknown identity received" \
8945 -S "SSL - Verification of the message MAC failed"
8946
8947requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008948run_test "PSK callback: raw dhe-psk on client, static opaque on server, no callback" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008949 "$P_SRV extended_ms=0 debug_level=5 psk=73776f726466697368 psk_identity=foo psk_opaque=1 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-128-CBC-SHA" \
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008950 "$P_CLI extended_ms=0 debug_level=5 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-128-CBC-SHA \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008951 psk_identity=foo psk=73776f726466697368" \
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008952 0 \
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008953 -C "session hash for extended master secret"\
8954 -S "session hash for extended master secret"\
8955 -S "SSL - The handshake negotiation failed" \
8956 -S "SSL - Unknown identity received" \
8957 -S "SSL - Verification of the message MAC failed"
8958
8959requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008960run_test "PSK callback: raw dhe-psk on client, static opaque on server, no callback, SHA-384" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008961 "$P_SRV extended_ms=0 debug_level=1 psk=73776f726466697368 psk_identity=foo psk_opaque=1 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-256-CBC-SHA384" \
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008962 "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-256-CBC-SHA384 \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008963 psk_identity=foo psk=73776f726466697368" \
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008964 0 \
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008965 -C "session hash for extended master secret"\
8966 -S "session hash for extended master secret"\
8967 -S "SSL - The handshake negotiation failed" \
8968 -S "SSL - Unknown identity received" \
8969 -S "SSL - Verification of the message MAC failed"
8970
8971requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008972run_test "PSK callback: raw dhe-psk on client, static opaque on server, no callback, EMS" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008973 "$P_SRV debug_level=3 psk=73776f726466697368 psk_identity=foo psk_opaque=1 min_version=tls12 \
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008974 force_ciphersuite=TLS-DHE-PSK-WITH-AES-128-CBC-SHA extended_ms=1" \
8975 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-128-CBC-SHA \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008976 psk_identity=foo psk=73776f726466697368 extended_ms=1" \
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008977 0 \
8978 -c "session hash for extended master secret"\
8979 -s "session hash for extended master secret"\
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008980 -S "SSL - The handshake negotiation failed" \
8981 -S "SSL - Unknown identity received" \
8982 -S "SSL - Verification of the message MAC failed"
8983
8984requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008985run_test "PSK callback: raw dhe-psk on client, static opaque on server, no callback, EMS, SHA384" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008986 "$P_SRV debug_level=3 psk=73776f726466697368 psk_identity=foo psk_opaque=1 min_version=tls12 \
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008987 force_ciphersuite=TLS-DHE-PSK-WITH-AES-256-CBC-SHA384 extended_ms=1" \
8988 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-256-CBC-SHA384 \
Gilles Peskine02cd7162024-04-29 16:09:52 +02008989 psk_identity=foo psk=73776f726466697368 extended_ms=1" \
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008990 0 \
8991 -c "session hash for extended master secret"\
8992 -s "session hash for extended master secret"\
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02008993 -S "SSL - The handshake negotiation failed" \
8994 -S "SSL - Unknown identity received" \
8995 -S "SSL - Verification of the message MAC failed"
8996
8997requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Hanno Becker28c79dc2018-10-26 13:15:08 +01008998run_test "PSK callback: raw psk on client, no static PSK on server, opaque PSK from callback" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00008999 "$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" \
9000 "$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 +01009001 psk_identity=def psk=beef" \
9002 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02009003 -C "session hash for extended master secret"\
9004 -S "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01009005 -S "SSL - The handshake negotiation failed" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01009006 -S "SSL - Unknown identity received" \
9007 -S "SSL - Verification of the message MAC failed"
9008
9009requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
9010run_test "PSK callback: raw psk on client, no static PSK on server, opaque PSK from callback, SHA-384" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00009011 "$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" \
9012 "$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 +01009013 psk_identity=def psk=beef" \
9014 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02009015 -C "session hash for extended master secret"\
9016 -S "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01009017 -S "SSL - The handshake negotiation failed" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01009018 -S "SSL - Unknown identity received" \
9019 -S "SSL - Verification of the message MAC failed"
9020
9021requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
9022run_test "PSK callback: raw psk on client, no static PSK on server, opaque PSK from callback, EMS" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00009023 "$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 +01009024 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA extended_ms=1" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00009025 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Hanno Becker28c79dc2018-10-26 13:15:08 +01009026 psk_identity=abc psk=dead extended_ms=1" \
9027 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02009028 -c "session hash for extended master secret"\
9029 -s "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01009030 -S "SSL - The handshake negotiation failed" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01009031 -S "SSL - Unknown identity received" \
9032 -S "SSL - Verification of the message MAC failed"
9033
9034requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
9035run_test "PSK callback: raw psk on client, no static PSK on server, opaque PSK from callback, EMS, SHA384" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00009036 "$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 +01009037 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 extended_ms=1" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00009038 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 \
Hanno Becker28c79dc2018-10-26 13:15:08 +01009039 psk_identity=abc psk=dead extended_ms=1" \
9040 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02009041 -c "session hash for extended master secret"\
9042 -s "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01009043 -S "SSL - The handshake negotiation failed" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01009044 -S "SSL - Unknown identity received" \
9045 -S "SSL - Verification of the message MAC failed"
9046
9047requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekielb270b562022-04-06 13:12:48 +02009048run_test "PSK callback: raw rsa-psk on client, no static RSA-PSK on server, opaque RSA-PSK from callback" \
9049 "$P_SRV extended_ms=0 debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA" \
9050 "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA \
9051 psk_identity=def psk=beef" \
9052 0 \
Przemek Stekielb270b562022-04-06 13:12:48 +02009053 -C "session hash for extended master secret"\
9054 -S "session hash for extended master secret"\
9055 -S "SSL - The handshake negotiation failed" \
9056 -S "SSL - Unknown identity received" \
9057 -S "SSL - Verification of the message MAC failed"
9058
9059requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekielb270b562022-04-06 13:12:48 +02009060run_test "PSK callback: raw rsa-psk on client, no static RSA-PSK on server, opaque RSA-PSK from callback, SHA-384" \
9061 "$P_SRV extended_ms=0 debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-256-CBC-SHA384" \
9062 "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-256-CBC-SHA384 \
9063 psk_identity=def psk=beef" \
9064 0 \
Przemek Stekielb270b562022-04-06 13:12:48 +02009065 -C "session hash for extended master secret"\
9066 -S "session hash for extended master secret"\
9067 -S "SSL - The handshake negotiation failed" \
9068 -S "SSL - Unknown identity received" \
9069 -S "SSL - Verification of the message MAC failed"
9070
9071requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekielb270b562022-04-06 13:12:48 +02009072run_test "PSK callback: raw rsa-psk on client, no static RSA-PSK on server, opaque RSA-PSK from callback, EMS" \
9073 "$P_SRV debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 \
9074 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA extended_ms=1" \
9075 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA \
9076 psk_identity=abc psk=dead extended_ms=1" \
9077 0 \
9078 -c "session hash for extended master secret"\
9079 -s "session hash for extended master secret"\
Przemek Stekielb270b562022-04-06 13:12:48 +02009080 -S "SSL - The handshake negotiation failed" \
9081 -S "SSL - Unknown identity received" \
9082 -S "SSL - Verification of the message MAC failed"
9083
9084requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekielb270b562022-04-06 13:12:48 +02009085run_test "PSK callback: raw rsa-psk on client, no static RSA-PSK on server, opaque RSA-PSK from callback, EMS, SHA384" \
9086 "$P_SRV debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 \
9087 force_ciphersuite=TLS-RSA-PSK-WITH-AES-256-CBC-SHA384 extended_ms=1" \
9088 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-256-CBC-SHA384 \
9089 psk_identity=abc psk=dead extended_ms=1" \
9090 0 \
9091 -c "session hash for extended master secret"\
9092 -s "session hash for extended master secret"\
Przemek Stekielb270b562022-04-06 13:12:48 +02009093 -S "SSL - The handshake negotiation failed" \
9094 -S "SSL - Unknown identity received" \
9095 -S "SSL - Verification of the message MAC failed"
9096
9097requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekielb6a05032022-04-14 10:22:18 +02009098run_test "PSK callback: raw ecdhe-psk on client, no static ECDHE-PSK on server, opaque ECDHE-PSK from callback" \
9099 "$P_SRV extended_ms=0 debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA" \
9100 "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA \
9101 psk_identity=def psk=beef" \
9102 0 \
Przemek Stekielb6a05032022-04-14 10:22:18 +02009103 -C "session hash for extended master secret"\
9104 -S "session hash for extended master secret"\
9105 -S "SSL - The handshake negotiation failed" \
9106 -S "SSL - Unknown identity received" \
9107 -S "SSL - Verification of the message MAC failed"
9108
9109requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekielb6a05032022-04-14 10:22:18 +02009110run_test "PSK callback: raw ecdhe-psk on client, no static ECDHE-PSK on server, opaque ECDHE-PSK from callback, SHA-384" \
9111 "$P_SRV extended_ms=0 debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384" \
9112 "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384 \
9113 psk_identity=def psk=beef" \
9114 0 \
Przemek Stekielb6a05032022-04-14 10:22:18 +02009115 -C "session hash for extended master secret"\
9116 -S "session hash for extended master secret"\
9117 -S "SSL - The handshake negotiation failed" \
9118 -S "SSL - Unknown identity received" \
9119 -S "SSL - Verification of the message MAC failed"
9120
9121requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekielb6a05032022-04-14 10:22:18 +02009122run_test "PSK callback: raw ecdhe-psk on client, no static ECDHE-PSK on server, opaque ECDHE-PSK from callback, EMS" \
9123 "$P_SRV debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 \
9124 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA extended_ms=1" \
9125 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA \
9126 psk_identity=abc psk=dead extended_ms=1" \
9127 0 \
9128 -c "session hash for extended master secret"\
9129 -s "session hash for extended master secret"\
Przemek Stekielb6a05032022-04-14 10:22:18 +02009130 -S "SSL - The handshake negotiation failed" \
9131 -S "SSL - Unknown identity received" \
9132 -S "SSL - Verification of the message MAC failed"
9133
9134requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekielb6a05032022-04-14 10:22:18 +02009135run_test "PSK callback: raw ecdhe-psk on client, no static ECDHE-PSK on server, opaque ECDHE-PSK from callback, EMS, SHA384" \
9136 "$P_SRV debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 \
9137 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384 extended_ms=1" \
9138 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384 \
9139 psk_identity=abc psk=dead extended_ms=1" \
9140 0 \
9141 -c "session hash for extended master secret"\
9142 -s "session hash for extended master secret"\
Przemek Stekielb6a05032022-04-14 10:22:18 +02009143 -S "SSL - The handshake negotiation failed" \
9144 -S "SSL - Unknown identity received" \
9145 -S "SSL - Verification of the message MAC failed"
9146
9147requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02009148run_test "PSK callback: raw dhe-psk on client, no static DHE-PSK on server, opaque DHE-PSK from callback" \
9149 "$P_SRV extended_ms=0 debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-128-CBC-SHA" \
9150 "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-128-CBC-SHA \
9151 psk_identity=def psk=beef" \
9152 0 \
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02009153 -C "session hash for extended master secret"\
9154 -S "session hash for extended master secret"\
9155 -S "SSL - The handshake negotiation failed" \
9156 -S "SSL - Unknown identity received" \
9157 -S "SSL - Verification of the message MAC failed"
9158
9159requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02009160run_test "PSK callback: raw dhe-psk on client, no static DHE-PSK on server, opaque DHE-PSK from callback, SHA-384" \
9161 "$P_SRV extended_ms=0 debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-256-CBC-SHA384" \
9162 "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-256-CBC-SHA384 \
9163 psk_identity=def psk=beef" \
9164 0 \
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02009165 -C "session hash for extended master secret"\
9166 -S "session hash for extended master secret"\
9167 -S "SSL - The handshake negotiation failed" \
9168 -S "SSL - Unknown identity received" \
9169 -S "SSL - Verification of the message MAC failed"
9170
9171requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02009172run_test "PSK callback: raw dhe-psk on client, no static DHE-PSK on server, opaque DHE-PSK from callback, EMS" \
9173 "$P_SRV debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 \
9174 force_ciphersuite=TLS-DHE-PSK-WITH-AES-128-CBC-SHA extended_ms=1" \
9175 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-128-CBC-SHA \
9176 psk_identity=abc psk=dead extended_ms=1" \
9177 0 \
9178 -c "session hash for extended master secret"\
9179 -s "session hash for extended master secret"\
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02009180 -S "SSL - The handshake negotiation failed" \
9181 -S "SSL - Unknown identity received" \
9182 -S "SSL - Verification of the message MAC failed"
9183
9184requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02009185run_test "PSK callback: raw dhe-psk on client, no static DHE-PSK on server, opaque DHE-PSK from callback, EMS, SHA384" \
9186 "$P_SRV debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 \
9187 force_ciphersuite=TLS-DHE-PSK-WITH-AES-256-CBC-SHA384 extended_ms=1" \
9188 "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-256-CBC-SHA384 \
9189 psk_identity=abc psk=dead extended_ms=1" \
9190 0 \
9191 -c "session hash for extended master secret"\
9192 -s "session hash for extended master secret"\
Przemek Stekiel85d46fe2022-04-19 12:47:48 +02009193 -S "SSL - The handshake negotiation failed" \
9194 -S "SSL - Unknown identity received" \
9195 -S "SSL - Verification of the message MAC failed"
9196
9197requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Hanno Becker28c79dc2018-10-26 13:15:08 +01009198run_test "PSK callback: raw psk on client, mismatching static raw PSK on server, opaque PSK from callback" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02009199 "$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 Bai8b5c3822021-12-02 08:43:35 +00009200 "$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 +01009201 psk_identity=def psk=beef" \
9202 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02009203 -C "session hash for extended master secret"\
9204 -S "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01009205 -S "SSL - The handshake negotiation failed" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01009206 -S "SSL - Unknown identity received" \
9207 -S "SSL - Verification of the message MAC failed"
9208
9209requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
9210run_test "PSK callback: raw psk on client, mismatching static opaque PSK on server, opaque PSK from callback" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02009211 "$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 Bai8b5c3822021-12-02 08:43:35 +00009212 "$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 +01009213 psk_identity=def psk=beef" \
9214 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02009215 -C "session hash for extended master secret"\
9216 -S "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01009217 -S "SSL - The handshake negotiation failed" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01009218 -S "SSL - Unknown identity received" \
9219 -S "SSL - Verification of the message MAC failed"
9220
9221requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
9222run_test "PSK callback: raw psk on client, mismatching static opaque PSK on server, raw PSK from callback" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02009223 "$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 Bai8b5c3822021-12-02 08:43:35 +00009224 "$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 +01009225 psk_identity=def psk=beef" \
9226 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02009227 -C "session hash for extended master secret"\
9228 -S "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01009229 -S "SSL - The handshake negotiation failed" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01009230 -S "SSL - Unknown identity received" \
9231 -S "SSL - Verification of the message MAC failed"
9232
9233requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
9234run_test "PSK callback: raw psk on client, id-matching but wrong raw PSK on server, opaque PSK from callback" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02009235 "$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 Bai8b5c3822021-12-02 08:43:35 +00009236 "$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 +01009237 psk_identity=def psk=beef" \
9238 0 \
Manuel Pégourié-Gonnard8faa70e2019-05-20 12:09:50 +02009239 -C "session hash for extended master secret"\
9240 -S "session hash for extended master secret"\
Dave Rodgmane5b828c2021-06-29 19:05:34 +01009241 -S "SSL - The handshake negotiation failed" \
Hanno Becker28c79dc2018-10-26 13:15:08 +01009242 -S "SSL - Unknown identity received" \
9243 -S "SSL - Verification of the message MAC failed"
9244
9245requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
9246run_test "PSK callback: raw psk on client, matching opaque PSK on server, wrong opaque PSK from callback" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02009247 "$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 Bai8b5c3822021-12-02 08:43:35 +00009248 "$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 +01009249 psk_identity=def psk=beef" \
9250 1 \
9251 -s "SSL - Verification of the message MAC failed"
9252
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02009253run_test "PSK callback: no psk, no callback" \
Manuel Pégourié-Gonnard10c3c9f2014-06-10 15:28:52 +02009254 "$P_SRV" \
9255 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Gilles Peskine02cd7162024-04-29 16:09:52 +02009256 psk_identity=foo psk=73776f726466697368" \
Manuel Pégourié-Gonnard10c3c9f2014-06-10 15:28:52 +02009257 1 \
Dave Rodgman6ce10be2021-06-29 14:20:31 +01009258 -s "SSL - The handshake negotiation failed" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02009259 -S "SSL - Unknown identity received" \
9260 -S "SSL - Verification of the message MAC failed"
9261
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02009262run_test "PSK callback: callback overrides other settings" \
Gilles Peskine02cd7162024-04-29 16:09:52 +02009263 "$P_SRV psk=73776f726466697368 psk_identity=foo psk_list=abc,dead,def,beef" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02009264 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
Gilles Peskine02cd7162024-04-29 16:09:52 +02009265 psk_identity=foo psk=73776f726466697368" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02009266 1 \
Dave Rodgmane5b828c2021-06-29 19:05:34 +01009267 -S "SSL - The handshake negotiation failed" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02009268 -s "SSL - Unknown identity received" \
9269 -S "SSL - Verification of the message MAC failed"
9270
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02009271run_test "PSK callback: first id matches" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02009272 "$P_SRV psk_list=abc,dead,def,beef" \
9273 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
9274 psk_identity=abc psk=dead" \
9275 0 \
Dave Rodgmane5b828c2021-06-29 19:05:34 +01009276 -S "SSL - The handshake negotiation failed" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02009277 -S "SSL - Unknown identity received" \
9278 -S "SSL - Verification of the message MAC failed"
9279
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02009280run_test "PSK callback: second id matches" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02009281 "$P_SRV psk_list=abc,dead,def,beef" \
9282 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
9283 psk_identity=def psk=beef" \
9284 0 \
Dave Rodgmane5b828c2021-06-29 19:05:34 +01009285 -S "SSL - The handshake negotiation failed" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02009286 -S "SSL - Unknown identity received" \
9287 -S "SSL - Verification of the message MAC failed"
9288
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02009289run_test "PSK callback: no match" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02009290 "$P_SRV psk_list=abc,dead,def,beef" \
9291 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
9292 psk_identity=ghi psk=beef" \
9293 1 \
Dave Rodgmane5b828c2021-06-29 19:05:34 +01009294 -S "SSL - The handshake negotiation failed" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02009295 -s "SSL - Unknown identity received" \
9296 -S "SSL - Verification of the message MAC failed"
9297
Manuel Pégourié-Gonnard8e03c712014-08-30 21:42:40 +02009298run_test "PSK callback: wrong key" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02009299 "$P_SRV psk_list=abc,dead,def,beef" \
9300 "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
9301 psk_identity=abc psk=beef" \
9302 1 \
Dave Rodgmane5b828c2021-06-29 19:05:34 +01009303 -S "SSL - The handshake negotiation failed" \
Manuel Pégourié-Gonnarda6781c92014-06-10 15:00:46 +02009304 -S "SSL - Unknown identity received" \
9305 -s "SSL - Verification of the message MAC failed"
Manuel Pégourié-Gonnard0cc7e312014-06-09 11:36:47 +02009306
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02009307# Tests for EC J-PAKE
9308
Hanno Beckerfa452c42020-08-14 15:42:49 +01009309requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Jerry Yuab082902021-12-23 18:02:22 +08009310requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02009311run_test "ECJPAKE: client not configured" \
9312 "$P_SRV debug_level=3" \
9313 "$P_CLI debug_level=3" \
9314 0 \
Hanno Beckeree63af62020-08-14 15:41:23 +01009315 -C "add ciphersuite: 0xc0ff" \
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02009316 -C "adding ecjpake_kkpp extension" \
Manuel Pégourié-Gonnardbf57be62015-09-16 15:04:01 +02009317 -S "found ecjpake kkpp extension" \
9318 -S "skip ecjpake kkpp extension" \
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02009319 -S "ciphersuite mismatch: ecjpake not configured" \
Manuel Pégourié-Gonnard55c7f992015-09-16 15:35:27 +02009320 -S "server hello, ecjpake kkpp extension" \
Manuel Pégourié-Gonnard0a1324a2015-09-16 16:01:00 +02009321 -C "found ecjpake_kkpp extension" \
Dave Rodgman737237f2021-06-29 19:07:57 +01009322 -S "SSL - The handshake negotiation failed"
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02009323
Hanno Beckerfa452c42020-08-14 15:42:49 +01009324requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02009325run_test "ECJPAKE: server not configured" \
9326 "$P_SRV debug_level=3" \
9327 "$P_CLI debug_level=3 ecjpake_pw=bla \
9328 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
9329 1 \
Ronald Cron7320e642022-03-08 13:34:49 +01009330 -c "add ciphersuite: c0ff" \
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02009331 -c "adding ecjpake_kkpp extension" \
Manuel Pégourié-Gonnardbf57be62015-09-16 15:04:01 +02009332 -s "found ecjpake kkpp extension" \
9333 -s "skip ecjpake kkpp extension" \
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02009334 -s "ciphersuite mismatch: ecjpake not configured" \
Manuel Pégourié-Gonnard55c7f992015-09-16 15:35:27 +02009335 -S "server hello, ecjpake kkpp extension" \
Manuel Pégourié-Gonnard0a1324a2015-09-16 16:01:00 +02009336 -C "found ecjpake_kkpp extension" \
Dave Rodgman737237f2021-06-29 19:07:57 +01009337 -s "SSL - The handshake negotiation failed"
Manuel Pégourié-Gonnarde511b4e2015-09-16 14:11:09 +02009338
Valerio Settif11e05a2022-12-07 15:41:05 +01009339# Note: if the name of this test is changed, then please adjust the corresponding
9340# filtering label in "test_tls1_2_ecjpake_compatibility" (in "all.sh")
Hanno Beckerfa452c42020-08-14 15:42:49 +01009341requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Manuel Pégourié-Gonnardbf57be62015-09-16 15:04:01 +02009342run_test "ECJPAKE: working, TLS" \
9343 "$P_SRV debug_level=3 ecjpake_pw=bla" \
9344 "$P_CLI debug_level=3 ecjpake_pw=bla \
9345 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
Manuel Pégourié-Gonnard0f1660a2015-09-16 22:41:06 +02009346 0 \
Ronald Cron7320e642022-03-08 13:34:49 +01009347 -c "add ciphersuite: c0ff" \
Manuel Pégourié-Gonnardbf57be62015-09-16 15:04:01 +02009348 -c "adding ecjpake_kkpp extension" \
Manuel Pégourié-Gonnardd0d8cb32015-09-17 14:16:30 +02009349 -C "re-using cached ecjpake parameters" \
Manuel Pégourié-Gonnardbf57be62015-09-16 15:04:01 +02009350 -s "found ecjpake kkpp extension" \
9351 -S "skip ecjpake kkpp extension" \
9352 -S "ciphersuite mismatch: ecjpake not configured" \
Manuel Pégourié-Gonnard55c7f992015-09-16 15:35:27 +02009353 -s "server hello, ecjpake kkpp extension" \
Manuel Pégourié-Gonnard0a1324a2015-09-16 16:01:00 +02009354 -c "found ecjpake_kkpp extension" \
Dave Rodgman737237f2021-06-29 19:07:57 +01009355 -S "SSL - The handshake negotiation failed" \
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02009356 -S "SSL - Verification of the message MAC failed"
9357
Valerio Settid572a822022-11-28 18:27:51 +01009358requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Valerio Settia6b69da2022-11-30 16:44:49 +01009359requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Valerio Setti70e02902022-12-02 16:21:56 +01009360run_test "ECJPAKE: opaque password client+server, working, TLS" \
Valerio Settid572a822022-11-28 18:27:51 +01009361 "$P_SRV debug_level=3 ecjpake_pw=bla ecjpake_pw_opaque=1" \
9362 "$P_CLI debug_level=3 ecjpake_pw=bla ecjpake_pw_opaque=1\
9363 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
9364 0 \
9365 -c "add ciphersuite: c0ff" \
9366 -c "adding ecjpake_kkpp extension" \
Valerio Setti661b9bc2022-11-29 17:19:25 +01009367 -c "using opaque password" \
9368 -s "using opaque password" \
Valerio Settid572a822022-11-28 18:27:51 +01009369 -C "re-using cached ecjpake parameters" \
9370 -s "found ecjpake kkpp extension" \
9371 -S "skip ecjpake kkpp extension" \
9372 -S "ciphersuite mismatch: ecjpake not configured" \
9373 -s "server hello, ecjpake kkpp extension" \
9374 -c "found ecjpake_kkpp extension" \
9375 -S "SSL - The handshake negotiation failed" \
9376 -S "SSL - Verification of the message MAC failed"
9377
Valerio Settif11e05a2022-12-07 15:41:05 +01009378# Note: if the name of this test is changed, then please adjust the corresponding
9379# filtering label in "test_tls1_2_ecjpake_compatibility" (in "all.sh")
Valerio Settib287ddf2022-12-01 16:18:12 +01009380requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
9381requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Valerio Setti70e02902022-12-02 16:21:56 +01009382run_test "ECJPAKE: opaque password client only, working, TLS" \
Valerio Settib287ddf2022-12-01 16:18:12 +01009383 "$P_SRV debug_level=3 ecjpake_pw=bla" \
9384 "$P_CLI debug_level=3 ecjpake_pw=bla ecjpake_pw_opaque=1\
9385 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
9386 0 \
9387 -c "add ciphersuite: c0ff" \
9388 -c "adding ecjpake_kkpp extension" \
9389 -c "using opaque password" \
9390 -S "using opaque password" \
9391 -C "re-using cached ecjpake parameters" \
9392 -s "found ecjpake kkpp extension" \
9393 -S "skip ecjpake kkpp extension" \
9394 -S "ciphersuite mismatch: ecjpake not configured" \
9395 -s "server hello, ecjpake kkpp extension" \
9396 -c "found ecjpake_kkpp extension" \
9397 -S "SSL - The handshake negotiation failed" \
9398 -S "SSL - Verification of the message MAC failed"
9399
Valerio Settif11e05a2022-12-07 15:41:05 +01009400# Note: if the name of this test is changed, then please adjust the corresponding
9401# filtering label in "test_tls1_2_ecjpake_compatibility" (in "all.sh")
Valerio Settib287ddf2022-12-01 16:18:12 +01009402requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
9403requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Valerio Setti70e02902022-12-02 16:21:56 +01009404run_test "ECJPAKE: opaque password server only, working, TLS" \
Valerio Settib287ddf2022-12-01 16:18:12 +01009405 "$P_SRV debug_level=3 ecjpake_pw=bla ecjpake_pw_opaque=1" \
9406 "$P_CLI debug_level=3 ecjpake_pw=bla\
9407 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
9408 0 \
9409 -c "add ciphersuite: c0ff" \
9410 -c "adding ecjpake_kkpp extension" \
9411 -C "using opaque password" \
9412 -s "using opaque password" \
9413 -C "re-using cached ecjpake parameters" \
9414 -s "found ecjpake kkpp extension" \
9415 -S "skip ecjpake kkpp extension" \
9416 -S "ciphersuite mismatch: ecjpake not configured" \
9417 -s "server hello, ecjpake kkpp extension" \
9418 -c "found ecjpake_kkpp extension" \
9419 -S "SSL - The handshake negotiation failed" \
9420 -S "SSL - Verification of the message MAC failed"
9421
Janos Follath74537a62016-09-02 13:45:28 +01009422server_needs_more_time 1
Dave Rodgmanbec7caf2021-06-29 19:05:34 +01009423requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02009424run_test "ECJPAKE: password mismatch, TLS" \
9425 "$P_SRV debug_level=3 ecjpake_pw=bla" \
9426 "$P_CLI debug_level=3 ecjpake_pw=bad \
9427 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
9428 1 \
Manuel Pégourié-Gonnardd0d8cb32015-09-17 14:16:30 +02009429 -C "re-using cached ecjpake parameters" \
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02009430 -s "SSL - Verification of the message MAC failed"
9431
Valerio Settib287ddf2022-12-01 16:18:12 +01009432server_needs_more_time 1
9433requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
9434requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Valerio Settib287ddf2022-12-01 16:18:12 +01009435run_test "ECJPAKE_OPAQUE_PW: opaque password mismatch, TLS" \
9436 "$P_SRV debug_level=3 ecjpake_pw=bla ecjpake_pw_opaque=1" \
9437 "$P_CLI debug_level=3 ecjpake_pw=bad ecjpake_pw_opaque=1 \
9438 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
9439 1 \
9440 -c "using opaque password" \
9441 -s "using opaque password" \
9442 -C "re-using cached ecjpake parameters" \
9443 -s "SSL - Verification of the message MAC failed"
9444
Dave Rodgmanbec7caf2021-06-29 19:05:34 +01009445requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02009446run_test "ECJPAKE: working, DTLS" \
9447 "$P_SRV debug_level=3 dtls=1 ecjpake_pw=bla" \
9448 "$P_CLI debug_level=3 dtls=1 ecjpake_pw=bla \
9449 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
9450 0 \
Manuel Pégourié-Gonnardd0d8cb32015-09-17 14:16:30 +02009451 -c "re-using cached ecjpake parameters" \
9452 -S "SSL - Verification of the message MAC failed"
9453
Dave Rodgmanbec7caf2021-06-29 19:05:34 +01009454requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Manuel Pégourié-Gonnardd0d8cb32015-09-17 14:16:30 +02009455run_test "ECJPAKE: working, DTLS, no cookie" \
9456 "$P_SRV debug_level=3 dtls=1 ecjpake_pw=bla cookies=0" \
9457 "$P_CLI debug_level=3 dtls=1 ecjpake_pw=bla \
9458 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
9459 0 \
9460 -C "re-using cached ecjpake parameters" \
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02009461 -S "SSL - Verification of the message MAC failed"
9462
Janos Follath74537a62016-09-02 13:45:28 +01009463server_needs_more_time 1
Dave Rodgmanbec7caf2021-06-29 19:05:34 +01009464requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02009465run_test "ECJPAKE: password mismatch, DTLS" \
9466 "$P_SRV debug_level=3 dtls=1 ecjpake_pw=bla" \
9467 "$P_CLI debug_level=3 dtls=1 ecjpake_pw=bad \
9468 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
9469 1 \
Manuel Pégourié-Gonnardd0d8cb32015-09-17 14:16:30 +02009470 -c "re-using cached ecjpake parameters" \
Manuel Pégourié-Gonnard921f2d02015-09-16 22:52:18 +02009471 -s "SSL - Verification of the message MAC failed"
Manuel Pégourié-Gonnardbf57be62015-09-16 15:04:01 +02009472
Manuel Pégourié-Gonnardca700b22015-10-20 14:47:00 +02009473# for tests with configs/config-thread.h
Dave Rodgmanbec7caf2021-06-29 19:05:34 +01009474requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
Manuel Pégourié-Gonnardca700b22015-10-20 14:47:00 +02009475run_test "ECJPAKE: working, DTLS, nolog" \
9476 "$P_SRV dtls=1 ecjpake_pw=bla" \
9477 "$P_CLI dtls=1 ecjpake_pw=bla \
9478 force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
9479 0
9480
Manuel Pégourié-Gonnard4cc8c632015-07-23 12:24:03 +02009481# Test for ClientHello without extensions
9482
Gilles Peskine80e54a22024-04-29 17:42:52 +02009483# Without extensions, ECC is impossible (no curve negotiation).
9484requires_config_enabled MBEDTLS_RSA_C
Manuel Pégourié-Gonnardd55bc202015-08-04 16:22:30 +02009485requires_gnutls
Gilles Peskine80e54a22024-04-29 17:42:52 +02009486run_test "ClientHello without extensions: RSA" \
Ronald Cronf95d1692023-03-14 17:19:42 +01009487 "$P_SRV force_version=tls12 debug_level=3" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +02009488 "$G_CLI --priority=NORMAL:%NO_EXTENSIONS:%DISABLE_SAFE_RENEGOTIATION localhost" \
Gilles Peskine5d2511c2017-05-12 13:16:40 +02009489 0 \
Gilles Peskine80e54a22024-04-29 17:42:52 +02009490 -s "Ciphersuite is .*-RSA-WITH-.*" \
9491 -S "Ciphersuite is .*-EC.*" \
9492 -s "dumping 'client hello extensions' (0 bytes)"
9493
Gilles Peskinef2876912024-05-13 21:18:41 +02009494requires_config_enabled MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
Gilles Peskine80e54a22024-04-29 17:42:52 +02009495requires_gnutls
9496run_test "ClientHello without extensions: PSK" \
9497 "$P_SRV force_version=tls12 debug_level=3 psk=73776f726466697368" \
9498 "$G_CLI --priority=NORMAL:+PSK:-RSA:-DHE-RSA:%NO_EXTENSIONS:%DISABLE_SAFE_RENEGOTIATION --pskusername=Client_identity --pskkey=73776f726466697368 localhost" \
9499 0 \
9500 -s "Ciphersuite is .*-PSK-.*" \
9501 -S "Ciphersuite is .*-EC.*" \
Gilles Peskine5d2511c2017-05-12 13:16:40 +02009502 -s "dumping 'client hello extensions' (0 bytes)"
9503
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02009504# Tests for mbedtls_ssl_get_bytes_avail()
Manuel Pégourié-Gonnard95c0a632014-06-11 18:32:36 +02009505
Gilles Peskined2d90af2022-04-06 23:35:56 +02009506# The server first reads buffer_size-1 bytes, then reads the remainder.
Jerry Yuab082902021-12-23 18:02:22 +08009507requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02009508run_test "mbedtls_ssl_get_bytes_avail: no extra data" \
Gilles Peskined2d90af2022-04-06 23:35:56 +02009509 "$P_SRV buffer_size=100" \
Manuel Pégourié-Gonnard95c0a632014-06-11 18:32:36 +02009510 "$P_CLI request_size=100" \
9511 0 \
9512 -s "Read from client: 100 bytes read$"
9513
Jerry Yuab082902021-12-23 18:02:22 +08009514requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Gilles Peskined2d90af2022-04-06 23:35:56 +02009515run_test "mbedtls_ssl_get_bytes_avail: extra data (+1)" \
9516 "$P_SRV buffer_size=100" \
9517 "$P_CLI request_size=101" \
Manuel Pégourié-Gonnard95c0a632014-06-11 18:32:36 +02009518 0 \
Gilles Peskined2d90af2022-04-06 23:35:56 +02009519 -s "Read from client: 101 bytes read (100 + 1)"
9520
9521requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9522requires_max_content_len 200
9523run_test "mbedtls_ssl_get_bytes_avail: extra data (*2)" \
9524 "$P_SRV buffer_size=100" \
9525 "$P_CLI request_size=200" \
9526 0 \
9527 -s "Read from client: 200 bytes read (100 + 100)"
9528
9529requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9530run_test "mbedtls_ssl_get_bytes_avail: extra data (max)" \
Waleed Elmelegybae705c2024-01-01 14:21:21 +00009531 "$P_SRV buffer_size=100 force_version=tls12" \
Gilles Peskined2d90af2022-04-06 23:35:56 +02009532 "$P_CLI request_size=$MAX_CONTENT_LEN" \
9533 0 \
9534 -s "Read from client: $MAX_CONTENT_LEN bytes read (100 + $((MAX_CONTENT_LEN - 100)))"
Manuel Pégourié-Gonnard90805a82014-06-11 14:06:01 +02009535
Andrzej Kurekc19fc552018-06-19 09:37:30 -04009536# Tests for small client packets
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02009537
Andrzej Kurekc19fc552018-06-19 09:37:30 -04009538run_test "Small client packet TLS 1.2 BlockCipher" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01009539 "$P_SRV force_version=tls12" \
9540 "$P_CLI request_size=1 \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02009541 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
9542 0 \
9543 -s "Read from client: 1 bytes read"
9544
Andrzej Kurekc19fc552018-06-19 09:37:30 -04009545run_test "Small client packet TLS 1.2 BlockCipher, without EtM" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01009546 "$P_SRV force_version=tls12" \
9547 "$P_CLI request_size=1 \
Hanno Becker909f9a32017-11-21 17:10:12 +00009548 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA etm=0" \
Manuel Pégourié-Gonnard169dd6a2014-11-04 16:15:39 +01009549 0 \
9550 -s "Read from client: 1 bytes read"
9551
Andrzej Kurekc19fc552018-06-19 09:37:30 -04009552run_test "Small client packet TLS 1.2 BlockCipher larger MAC" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01009553 "$P_SRV force_version=tls12" \
9554 "$P_CLI request_size=1 \
Manuel Pégourié-Gonnardc82ee352015-01-07 16:35:25 +01009555 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02009556 0 \
9557 -s "Read from client: 1 bytes read"
9558
Andrzej Kurekc19fc552018-06-19 09:37:30 -04009559run_test "Small client packet TLS 1.2 AEAD" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01009560 "$P_SRV force_version=tls12" \
9561 "$P_CLI request_size=1 \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02009562 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \
9563 0 \
9564 -s "Read from client: 1 bytes read"
9565
Andrzej Kurekc19fc552018-06-19 09:37:30 -04009566run_test "Small client packet TLS 1.2 AEAD shorter tag" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01009567 "$P_SRV force_version=tls12" \
9568 "$P_CLI request_size=1 \
Manuel Pégourié-Gonnardee415032014-06-18 15:08:56 +02009569 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \
9570 0 \
9571 -s "Read from client: 1 bytes read"
9572
Ronald Cron928cbd32022-10-04 16:14:26 +02009573requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crona4417c12022-06-23 16:06:28 +02009574run_test "Small client packet TLS 1.3 AEAD" \
Ronald Cron50ae84e2023-03-14 08:59:56 +01009575 "$P_SRV" \
Ronald Crona4417c12022-06-23 16:06:28 +02009576 "$P_CLI request_size=1 \
9577 force_ciphersuite=TLS1-3-AES-128-CCM-SHA256" \
9578 0 \
9579 -s "Read from client: 1 bytes read"
9580
Ronald Cron928cbd32022-10-04 16:14:26 +02009581requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crona4417c12022-06-23 16:06:28 +02009582run_test "Small client packet TLS 1.3 AEAD shorter tag" \
Ronald Cron50ae84e2023-03-14 08:59:56 +01009583 "$P_SRV" \
Ronald Crona4417c12022-06-23 16:06:28 +02009584 "$P_CLI request_size=1 \
9585 force_ciphersuite=TLS1-3-AES-128-CCM-8-SHA256" \
9586 0 \
9587 -s "Read from client: 1 bytes read"
9588
Andrzej Kurekc19fc552018-06-19 09:37:30 -04009589# Tests for small client packets in DTLS
Hanno Beckere2148042017-11-10 08:59:18 +00009590
9591requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
Andrzej Kurekc19fc552018-06-19 09:37:30 -04009592run_test "Small client packet DTLS 1.2" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00009593 "$P_SRV dtls=1 force_version=dtls12" \
Hanno Beckere2148042017-11-10 08:59:18 +00009594 "$P_CLI dtls=1 request_size=1 \
9595 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
9596 0 \
9597 -s "Read from client: 1 bytes read"
9598
9599requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
Andrzej Kurekc19fc552018-06-19 09:37:30 -04009600run_test "Small client packet DTLS 1.2, without EtM" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00009601 "$P_SRV dtls=1 force_version=dtls12 etm=0" \
Hanno Beckere2148042017-11-10 08:59:18 +00009602 "$P_CLI dtls=1 request_size=1 \
9603 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
9604 0 \
9605 -s "Read from client: 1 bytes read"
9606
Andrzej Kurekc19fc552018-06-19 09:37:30 -04009607# Tests for small server packets
9608
Andrzej Kurekc19fc552018-06-19 09:37:30 -04009609run_test "Small server packet TLS 1.2 BlockCipher" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01009610 "$P_SRV response_size=1 force_version=tls12" \
9611 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04009612 0 \
9613 -c "Read from server: 1 bytes read"
9614
9615run_test "Small server packet TLS 1.2 BlockCipher, without EtM" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01009616 "$P_SRV response_size=1 force_version=tls12" \
9617 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA etm=0" \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04009618 0 \
9619 -c "Read from server: 1 bytes read"
9620
9621run_test "Small server packet TLS 1.2 BlockCipher larger MAC" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01009622 "$P_SRV response_size=1 force_version=tls12" \
9623 "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04009624 0 \
9625 -c "Read from server: 1 bytes read"
9626
Andrzej Kurekc19fc552018-06-19 09:37:30 -04009627run_test "Small server packet TLS 1.2 AEAD" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01009628 "$P_SRV response_size=1 force_version=tls12" \
9629 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04009630 0 \
9631 -c "Read from server: 1 bytes read"
9632
9633run_test "Small server packet TLS 1.2 AEAD shorter tag" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01009634 "$P_SRV response_size=1 force_version=tls12" \
9635 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04009636 0 \
9637 -c "Read from server: 1 bytes read"
9638
Ronald Cron928cbd32022-10-04 16:14:26 +02009639requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crona4417c12022-06-23 16:06:28 +02009640run_test "Small server packet TLS 1.3 AEAD" \
Ronald Cron50ae84e2023-03-14 08:59:56 +01009641 "$P_SRV response_size=1" \
Ronald Crona4417c12022-06-23 16:06:28 +02009642 "$P_CLI force_ciphersuite=TLS1-3-AES-128-CCM-SHA256" \
9643 0 \
9644 -c "Read from server: 1 bytes read"
9645
Ronald Cron928cbd32022-10-04 16:14:26 +02009646requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crona4417c12022-06-23 16:06:28 +02009647run_test "Small server packet TLS 1.3 AEAD shorter tag" \
Ronald Cron50ae84e2023-03-14 08:59:56 +01009648 "$P_SRV response_size=1" \
Ronald Crona4417c12022-06-23 16:06:28 +02009649 "$P_CLI force_ciphersuite=TLS1-3-AES-128-CCM-8-SHA256" \
9650 0 \
9651 -c "Read from server: 1 bytes read"
9652
Andrzej Kurekc19fc552018-06-19 09:37:30 -04009653# Tests for small server packets in DTLS
9654
9655requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
Andrzej Kurekc19fc552018-06-19 09:37:30 -04009656run_test "Small server packet DTLS 1.2" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00009657 "$P_SRV dtls=1 response_size=1 force_version=dtls12" \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04009658 "$P_CLI dtls=1 \
9659 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
9660 0 \
9661 -c "Read from server: 1 bytes read"
9662
9663requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9664run_test "Small server packet DTLS 1.2, without EtM" \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +00009665 "$P_SRV dtls=1 response_size=1 force_version=dtls12 etm=0" \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04009666 "$P_CLI dtls=1 \
9667 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
9668 0 \
9669 -c "Read from server: 1 bytes read"
9670
Andrzej Kurek30e731d2017-10-12 13:50:29 +02009671# Test for large client packets
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02009672
Angus Grattonc4dd0732018-04-11 16:28:39 +10009673# How many fragments do we expect to write $1 bytes?
9674fragments_for_write() {
9675 echo "$(( ( $1 + $MAX_OUT_LEN - 1 ) / $MAX_OUT_LEN ))"
9676}
9677
Andrzej Kurek30e731d2017-10-12 13:50:29 +02009678run_test "Large client packet TLS 1.2 BlockCipher" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01009679 "$P_SRV force_version=tls12" \
9680 "$P_CLI request_size=16384 \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02009681 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
9682 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10009683 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
9684 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02009685
Andrzej Kurek30e731d2017-10-12 13:50:29 +02009686run_test "Large client packet TLS 1.2 BlockCipher, without EtM" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01009687 "$P_SRV force_version=tls12" \
9688 "$P_CLI request_size=16384 etm=0 \
Hanno Becker278fc7a2017-11-10 09:16:28 +00009689 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
9690 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10009691 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Hanno Becker278fc7a2017-11-10 09:16:28 +00009692
Andrzej Kurek30e731d2017-10-12 13:50:29 +02009693run_test "Large client packet TLS 1.2 BlockCipher larger MAC" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01009694 "$P_SRV force_version=tls12" \
9695 "$P_CLI request_size=16384 \
Manuel Pégourié-Gonnardc82ee352015-01-07 16:35:25 +01009696 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02009697 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10009698 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
9699 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02009700
Andrzej Kurek30e731d2017-10-12 13:50:29 +02009701run_test "Large client packet TLS 1.2 AEAD" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01009702 "$P_SRV force_version=tls12" \
9703 "$P_CLI request_size=16384 \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02009704 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \
9705 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10009706 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
9707 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02009708
Andrzej Kurek30e731d2017-10-12 13:50:29 +02009709run_test "Large client packet TLS 1.2 AEAD shorter tag" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01009710 "$P_SRV force_version=tls12" \
9711 "$P_CLI request_size=16384 \
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02009712 force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \
9713 0 \
Angus Grattonc4dd0732018-04-11 16:28:39 +10009714 -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
9715 -s "Read from client: $MAX_CONTENT_LEN bytes read"
Manuel Pégourié-Gonnard8920f692014-06-18 22:05:08 +02009716
Ronald Cron928cbd32022-10-04 16:14:26 +02009717requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crona4417c12022-06-23 16:06:28 +02009718run_test "Large client packet TLS 1.3 AEAD" \
Ronald Cron50ae84e2023-03-14 08:59:56 +01009719 "$P_SRV" \
Waleed Elmelegyea031832023-12-29 15:36:51 +00009720 "$P_CLI request_size=16383 \
Ronald Crona4417c12022-06-23 16:06:28 +02009721 force_ciphersuite=TLS1-3-AES-128-CCM-SHA256" \
9722 0 \
Waleed Elmelegyea031832023-12-29 15:36:51 +00009723 -c "16383 bytes written in $(fragments_for_write 16383) fragments" \
9724 -s "Read from client: 16383 bytes read"
Ronald Crona4417c12022-06-23 16:06:28 +02009725
Ronald Cron928cbd32022-10-04 16:14:26 +02009726requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crona4417c12022-06-23 16:06:28 +02009727run_test "Large client packet TLS 1.3 AEAD shorter tag" \
Ronald Cron50ae84e2023-03-14 08:59:56 +01009728 "$P_SRV" \
Waleed Elmelegyea031832023-12-29 15:36:51 +00009729 "$P_CLI request_size=16383 \
Ronald Crona4417c12022-06-23 16:06:28 +02009730 force_ciphersuite=TLS1-3-AES-128-CCM-8-SHA256" \
9731 0 \
Waleed Elmelegyea031832023-12-29 15:36:51 +00009732 -c "16383 bytes written in $(fragments_for_write 16383) fragments" \
9733 -s "Read from client: 16383 bytes read"
Ronald Crona4417c12022-06-23 16:06:28 +02009734
Yuto Takanobc87b1d2021-07-08 15:56:33 +01009735# The tests below fail when the server's OUT_CONTENT_LEN is less than 16384.
Andrzej Kurek30e731d2017-10-12 13:50:29 +02009736run_test "Large server packet TLS 1.2 BlockCipher" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01009737 "$P_SRV response_size=16384 force_version=tls12" \
9738 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02009739 0 \
9740 -c "Read from server: 16384 bytes read"
9741
Andrzej Kurekc19fc552018-06-19 09:37:30 -04009742run_test "Large server packet TLS 1.2 BlockCipher, without EtM" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01009743 "$P_SRV response_size=16384 force_version=tls12" \
9744 "$P_CLI etm=0 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04009745 0 \
9746 -s "16384 bytes written in 1 fragments" \
9747 -c "Read from server: 16384 bytes read"
9748
Andrzej Kurek30e731d2017-10-12 13:50:29 +02009749run_test "Large server packet TLS 1.2 BlockCipher larger MAC" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01009750 "$P_SRV response_size=16384 force_version=tls12" \
9751 "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02009752 0 \
9753 -c "Read from server: 16384 bytes read"
9754
Andrzej Kurekc19fc552018-06-19 09:37:30 -04009755run_test "Large server packet TLS 1.2 BlockCipher, without EtM, truncated MAC" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01009756 "$P_SRV response_size=16384 trunc_hmac=1 force_version=tls12" \
9757 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
Andrzej Kurekc19fc552018-06-19 09:37:30 -04009758 0 \
9759 -s "16384 bytes written in 1 fragments" \
9760 -c "Read from server: 16384 bytes read"
9761
Andrzej Kurek30e731d2017-10-12 13:50:29 +02009762run_test "Large server packet TLS 1.2 AEAD" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01009763 "$P_SRV response_size=16384 force_version=tls12" \
9764 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02009765 0 \
9766 -c "Read from server: 16384 bytes read"
9767
9768run_test "Large server packet TLS 1.2 AEAD shorter tag" \
Ronald Cronf3b425b2022-03-17 16:45:09 +01009769 "$P_SRV response_size=16384 force_version=tls12" \
9770 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \
Andrzej Kurek30e731d2017-10-12 13:50:29 +02009771 0 \
9772 -c "Read from server: 16384 bytes read"
9773
Ronald Cron928cbd32022-10-04 16:14:26 +02009774requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crona4417c12022-06-23 16:06:28 +02009775run_test "Large server packet TLS 1.3 AEAD" \
Waleed Elmelegyea031832023-12-29 15:36:51 +00009776 "$P_SRV response_size=16383" \
Ronald Crona4417c12022-06-23 16:06:28 +02009777 "$P_CLI force_ciphersuite=TLS1-3-AES-128-CCM-SHA256" \
9778 0 \
Waleed Elmelegyea031832023-12-29 15:36:51 +00009779 -c "Read from server: 16383 bytes read"
Ronald Crona4417c12022-06-23 16:06:28 +02009780
Ronald Cron928cbd32022-10-04 16:14:26 +02009781requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crona4417c12022-06-23 16:06:28 +02009782run_test "Large server packet TLS 1.3 AEAD shorter tag" \
Waleed Elmelegyea031832023-12-29 15:36:51 +00009783 "$P_SRV response_size=16383" \
Ronald Crona4417c12022-06-23 16:06:28 +02009784 "$P_CLI force_ciphersuite=TLS1-3-AES-128-CCM-8-SHA256" \
9785 0 \
Waleed Elmelegyea031832023-12-29 15:36:51 +00009786 -c "Read from server: 16383 bytes read"
Ronald Crona4417c12022-06-23 16:06:28 +02009787
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02009788# Tests for restartable ECC
9789
Gilles Peskine4a02cef2021-06-03 11:12:40 +02009790# Force the use of a curve that supports restartable ECC (secp256r1).
9791
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02009792requires_config_enabled MBEDTLS_ECP_RESTARTABLE
Gilles Peskine4a02cef2021-06-03 11:12:40 +02009793requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02009794run_test "EC restart: TLS, default" \
Przemek Stekiel45255e42023-06-29 13:56:36 +02009795 "$P_SRV groups=secp256r1 auth_mode=required" \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02009796 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
David Horstmann5ab92be2024-07-01 17:01:28 +01009797 key_file=$DATA_FILES_PATH/server5.key crt_file=$DATA_FILES_PATH/server5.crt \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02009798 debug_level=1" \
9799 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02009800 -C "x509_verify_cert.*4b00" \
9801 -C "mbedtls_pk_verify.*4b00" \
9802 -C "mbedtls_ecdh_make_public.*4b00" \
9803 -C "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02009804
9805requires_config_enabled MBEDTLS_ECP_RESTARTABLE
Gilles Peskine4a02cef2021-06-03 11:12:40 +02009806requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02009807run_test "EC restart: TLS, max_ops=0" \
Przemek Stekiel45255e42023-06-29 13:56:36 +02009808 "$P_SRV groups=secp256r1 auth_mode=required" \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02009809 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
David Horstmann5ab92be2024-07-01 17:01:28 +01009810 key_file=$DATA_FILES_PATH/server5.key crt_file=$DATA_FILES_PATH/server5.crt \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02009811 debug_level=1 ec_max_ops=0" \
9812 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02009813 -C "x509_verify_cert.*4b00" \
9814 -C "mbedtls_pk_verify.*4b00" \
9815 -C "mbedtls_ecdh_make_public.*4b00" \
9816 -C "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02009817
9818requires_config_enabled MBEDTLS_ECP_RESTARTABLE
Gilles Peskine4a02cef2021-06-03 11:12:40 +02009819requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02009820run_test "EC restart: TLS, max_ops=65535" \
Przemek Stekiel45255e42023-06-29 13:56:36 +02009821 "$P_SRV groups=secp256r1 auth_mode=required" \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02009822 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
David Horstmann5ab92be2024-07-01 17:01:28 +01009823 key_file=$DATA_FILES_PATH/server5.key crt_file=$DATA_FILES_PATH/server5.crt \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02009824 debug_level=1 ec_max_ops=65535" \
9825 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02009826 -C "x509_verify_cert.*4b00" \
9827 -C "mbedtls_pk_verify.*4b00" \
9828 -C "mbedtls_ecdh_make_public.*4b00" \
9829 -C "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02009830
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +01009831# With USE_PSA disabled we expect full restartable behaviour.
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02009832requires_config_enabled MBEDTLS_ECP_RESTARTABLE
Gilles Peskine4a02cef2021-06-03 11:12:40 +02009833requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +01009834requires_config_disabled MBEDTLS_USE_PSA_CRYPTO
9835run_test "EC restart: TLS, max_ops=1000 (no USE_PSA)" \
Przemek Stekiel45255e42023-06-29 13:56:36 +02009836 "$P_SRV groups=secp256r1 auth_mode=required" \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02009837 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
David Horstmann5ab92be2024-07-01 17:01:28 +01009838 key_file=$DATA_FILES_PATH/server5.key crt_file=$DATA_FILES_PATH/server5.crt \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02009839 debug_level=1 ec_max_ops=1000" \
9840 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02009841 -c "x509_verify_cert.*4b00" \
9842 -c "mbedtls_pk_verify.*4b00" \
9843 -c "mbedtls_ecdh_make_public.*4b00" \
9844 -c "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02009845
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +01009846# With USE_PSA enabled we expect only partial restartable behaviour:
9847# everything except ECDH (where TLS calls PSA directly).
9848requires_config_enabled MBEDTLS_ECP_RESTARTABLE
9849requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +01009850requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
9851run_test "EC restart: TLS, max_ops=1000 (USE_PSA)" \
Przemek Stekiel45255e42023-06-29 13:56:36 +02009852 "$P_SRV groups=secp256r1 auth_mode=required" \
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +01009853 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
David Horstmann5ab92be2024-07-01 17:01:28 +01009854 key_file=$DATA_FILES_PATH/server5.key crt_file=$DATA_FILES_PATH/server5.crt \
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +01009855 debug_level=1 ec_max_ops=1000" \
9856 0 \
9857 -c "x509_verify_cert.*4b00" \
9858 -c "mbedtls_pk_verify.*4b00" \
9859 -C "mbedtls_ecdh_make_public.*4b00" \
9860 -c "mbedtls_pk_sign.*4b00"
9861
9862# This works the same with & without USE_PSA as we never get to ECDH:
9863# we abort as soon as we determined the cert is bad.
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02009864requires_config_enabled MBEDTLS_ECP_RESTARTABLE
Gilles Peskine4a02cef2021-06-03 11:12:40 +02009865requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02009866run_test "EC restart: TLS, max_ops=1000, badsign" \
Przemek Stekiel45255e42023-06-29 13:56:36 +02009867 "$P_SRV groups=secp256r1 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +01009868 crt_file=$DATA_FILES_PATH/server5-badsign.crt \
9869 key_file=$DATA_FILES_PATH/server5.key" \
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02009870 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
David Horstmann5ab92be2024-07-01 17:01:28 +01009871 key_file=$DATA_FILES_PATH/server5.key crt_file=$DATA_FILES_PATH/server5.crt \
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02009872 debug_level=1 ec_max_ops=1000" \
9873 1 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02009874 -c "x509_verify_cert.*4b00" \
9875 -C "mbedtls_pk_verify.*4b00" \
9876 -C "mbedtls_ecdh_make_public.*4b00" \
9877 -C "mbedtls_pk_sign.*4b00" \
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02009878 -c "! The certificate is not correctly signed by the trusted CA" \
9879 -c "! mbedtls_ssl_handshake returned" \
9880 -c "X509 - Certificate verification failed"
9881
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +01009882# With USE_PSA disabled we expect full restartable behaviour.
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02009883requires_config_enabled MBEDTLS_ECP_RESTARTABLE
Gilles Peskine4a02cef2021-06-03 11:12:40 +02009884requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +01009885requires_config_disabled MBEDTLS_USE_PSA_CRYPTO
9886run_test "EC restart: TLS, max_ops=1000, auth_mode=optional badsign (no USE_PSA)" \
Przemek Stekiel45255e42023-06-29 13:56:36 +02009887 "$P_SRV groups=secp256r1 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +01009888 crt_file=$DATA_FILES_PATH/server5-badsign.crt \
9889 key_file=$DATA_FILES_PATH/server5.key" \
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02009890 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
David Horstmann5ab92be2024-07-01 17:01:28 +01009891 key_file=$DATA_FILES_PATH/server5.key crt_file=$DATA_FILES_PATH/server5.crt \
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02009892 debug_level=1 ec_max_ops=1000 auth_mode=optional" \
9893 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02009894 -c "x509_verify_cert.*4b00" \
9895 -c "mbedtls_pk_verify.*4b00" \
9896 -c "mbedtls_ecdh_make_public.*4b00" \
9897 -c "mbedtls_pk_sign.*4b00" \
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02009898 -c "! The certificate is not correctly signed by the trusted CA" \
9899 -C "! mbedtls_ssl_handshake returned" \
9900 -C "X509 - Certificate verification failed"
9901
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +01009902# With USE_PSA enabled we expect only partial restartable behaviour:
9903# everything except ECDH (where TLS calls PSA directly).
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02009904requires_config_enabled MBEDTLS_ECP_RESTARTABLE
Gilles Peskine4a02cef2021-06-03 11:12:40 +02009905requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +01009906requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
9907run_test "EC restart: TLS, max_ops=1000, auth_mode=optional badsign (USE_PSA)" \
Przemek Stekiel45255e42023-06-29 13:56:36 +02009908 "$P_SRV groups=secp256r1 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +01009909 crt_file=$DATA_FILES_PATH/server5-badsign.crt \
9910 key_file=$DATA_FILES_PATH/server5.key" \
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +01009911 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
David Horstmann5ab92be2024-07-01 17:01:28 +01009912 key_file=$DATA_FILES_PATH/server5.key crt_file=$DATA_FILES_PATH/server5.crt \
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +01009913 debug_level=1 ec_max_ops=1000 auth_mode=optional" \
9914 0 \
9915 -c "x509_verify_cert.*4b00" \
9916 -c "mbedtls_pk_verify.*4b00" \
9917 -C "mbedtls_ecdh_make_public.*4b00" \
9918 -c "mbedtls_pk_sign.*4b00" \
9919 -c "! The certificate is not correctly signed by the trusted CA" \
9920 -C "! mbedtls_ssl_handshake returned" \
9921 -C "X509 - Certificate verification failed"
9922
9923# With USE_PSA disabled we expect full restartable behaviour.
9924requires_config_enabled MBEDTLS_ECP_RESTARTABLE
9925requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +01009926requires_config_disabled MBEDTLS_USE_PSA_CRYPTO
9927run_test "EC restart: TLS, max_ops=1000, auth_mode=none badsign (no USE_PSA)" \
Przemek Stekiel45255e42023-06-29 13:56:36 +02009928 "$P_SRV groups=secp256r1 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +01009929 crt_file=$DATA_FILES_PATH/server5-badsign.crt \
9930 key_file=$DATA_FILES_PATH/server5.key" \
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02009931 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
David Horstmann5ab92be2024-07-01 17:01:28 +01009932 key_file=$DATA_FILES_PATH/server5.key crt_file=$DATA_FILES_PATH/server5.crt \
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02009933 debug_level=1 ec_max_ops=1000 auth_mode=none" \
9934 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02009935 -C "x509_verify_cert.*4b00" \
9936 -c "mbedtls_pk_verify.*4b00" \
9937 -c "mbedtls_ecdh_make_public.*4b00" \
9938 -c "mbedtls_pk_sign.*4b00" \
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02009939 -C "! The certificate is not correctly signed by the trusted CA" \
9940 -C "! mbedtls_ssl_handshake returned" \
9941 -C "X509 - Certificate verification failed"
9942
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +01009943# With USE_PSA enabled we expect only partial restartable behaviour:
9944# everything except ECDH (where TLS calls PSA directly).
Manuel Pégourié-Gonnard3bf49c42017-08-15 13:47:06 +02009945requires_config_enabled MBEDTLS_ECP_RESTARTABLE
Gilles Peskine4a02cef2021-06-03 11:12:40 +02009946requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +01009947requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
9948run_test "EC restart: TLS, max_ops=1000, auth_mode=none badsign (USE_PSA)" \
Przemek Stekiel45255e42023-06-29 13:56:36 +02009949 "$P_SRV groups=secp256r1 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +01009950 crt_file=$DATA_FILES_PATH/server5-badsign.crt \
9951 key_file=$DATA_FILES_PATH/server5.key" \
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +01009952 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
David Horstmann5ab92be2024-07-01 17:01:28 +01009953 key_file=$DATA_FILES_PATH/server5.key crt_file=$DATA_FILES_PATH/server5.crt \
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +01009954 debug_level=1 ec_max_ops=1000 auth_mode=none" \
9955 0 \
9956 -C "x509_verify_cert.*4b00" \
9957 -c "mbedtls_pk_verify.*4b00" \
9958 -C "mbedtls_ecdh_make_public.*4b00" \
9959 -c "mbedtls_pk_sign.*4b00" \
9960 -C "! The certificate is not correctly signed by the trusted CA" \
9961 -C "! mbedtls_ssl_handshake returned" \
9962 -C "X509 - Certificate verification failed"
9963
9964# With USE_PSA disabled we expect full restartable behaviour.
9965requires_config_enabled MBEDTLS_ECP_RESTARTABLE
9966requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +01009967requires_config_disabled MBEDTLS_USE_PSA_CRYPTO
9968run_test "EC restart: DTLS, max_ops=1000 (no USE_PSA)" \
Przemek Stekiel45255e42023-06-29 13:56:36 +02009969 "$P_SRV groups=secp256r1 auth_mode=required dtls=1" \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02009970 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
David Horstmann5ab92be2024-07-01 17:01:28 +01009971 key_file=$DATA_FILES_PATH/server5.key crt_file=$DATA_FILES_PATH/server5.crt \
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02009972 dtls=1 debug_level=1 ec_max_ops=1000" \
9973 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +02009974 -c "x509_verify_cert.*4b00" \
9975 -c "mbedtls_pk_verify.*4b00" \
9976 -c "mbedtls_ecdh_make_public.*4b00" \
9977 -c "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard2350b4e2017-05-16 09:26:48 +02009978
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +01009979# With USE_PSA enabled we expect only partial restartable behaviour:
9980# everything except ECDH (where TLS calls PSA directly).
Manuel Pégourié-Gonnard32033da2017-05-18 12:49:27 +02009981requires_config_enabled MBEDTLS_ECP_RESTARTABLE
Gilles Peskine4a02cef2021-06-03 11:12:40 +02009982requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +01009983requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
9984run_test "EC restart: DTLS, max_ops=1000 (USE_PSA)" \
Przemek Stekiel45255e42023-06-29 13:56:36 +02009985 "$P_SRV groups=secp256r1 auth_mode=required dtls=1" \
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +01009986 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
David Horstmann5ab92be2024-07-01 17:01:28 +01009987 key_file=$DATA_FILES_PATH/server5.key crt_file=$DATA_FILES_PATH/server5.crt \
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +01009988 dtls=1 debug_level=1 ec_max_ops=1000" \
9989 0 \
9990 -c "x509_verify_cert.*4b00" \
9991 -c "mbedtls_pk_verify.*4b00" \
9992 -C "mbedtls_ecdh_make_public.*4b00" \
9993 -c "mbedtls_pk_sign.*4b00"
9994
9995# With USE_PSA disabled we expect full restartable behaviour.
9996requires_config_enabled MBEDTLS_ECP_RESTARTABLE
9997requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +01009998requires_config_disabled MBEDTLS_USE_PSA_CRYPTO
9999run_test "EC restart: TLS, max_ops=1000 no client auth (no USE_PSA)" \
Przemek Stekiel45255e42023-06-29 13:56:36 +020010000 "$P_SRV groups=secp256r1" \
Manuel Pégourié-Gonnard32033da2017-05-18 12:49:27 +020010001 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
10002 debug_level=1 ec_max_ops=1000" \
10003 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +020010004 -c "x509_verify_cert.*4b00" \
10005 -c "mbedtls_pk_verify.*4b00" \
10006 -c "mbedtls_ecdh_make_public.*4b00" \
10007 -C "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard32033da2017-05-18 12:49:27 +020010008
Manuel Pégourié-Gonnard2b7ad642022-12-06 10:42:44 +010010009
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +010010010# With USE_PSA enabled we expect only partial restartable behaviour:
10011# everything except ECDH (where TLS calls PSA directly).
Manuel Pégourié-Gonnard32033da2017-05-18 12:49:27 +020010012requires_config_enabled MBEDTLS_ECP_RESTARTABLE
Gilles Peskine4a02cef2021-06-03 11:12:40 +020010013requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +010010014requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
10015run_test "EC restart: TLS, max_ops=1000 no client auth (USE_PSA)" \
Przemek Stekiel45255e42023-06-29 13:56:36 +020010016 "$P_SRV groups=secp256r1" \
Manuel Pégourié-Gonnard55a188b2022-12-06 12:00:33 +010010017 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
10018 debug_level=1 ec_max_ops=1000" \
10019 0 \
10020 -c "x509_verify_cert.*4b00" \
10021 -c "mbedtls_pk_verify.*4b00" \
10022 -C "mbedtls_ecdh_make_public.*4b00" \
10023 -C "mbedtls_pk_sign.*4b00"
10024
Manuel Pégourié-Gonnard2b7ad642022-12-06 10:42:44 +010010025# Restartable is only for ECDHE-ECDSA, with another ciphersuite we expect no
10026# restartable behaviour at all (not even client auth).
10027# This is the same as "EC restart: TLS, max_ops=1000" except with ECDHE-RSA,
10028# and all 4 assertions negated.
Manuel Pégourié-Gonnard32033da2017-05-18 12:49:27 +020010029requires_config_enabled MBEDTLS_ECP_RESTARTABLE
10030requires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
Manuel Pégourié-Gonnard2b7ad642022-12-06 10:42:44 +010010031run_test "EC restart: TLS, max_ops=1000, ECDHE-RSA" \
Przemek Stekiel45255e42023-06-29 13:56:36 +020010032 "$P_SRV groups=secp256r1 auth_mode=required" \
Manuel Pégourié-Gonnard2b7ad642022-12-06 10:42:44 +010010033 "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 \
David Horstmann5ab92be2024-07-01 17:01:28 +010010034 key_file=$DATA_FILES_PATH/server5.key crt_file=$DATA_FILES_PATH/server5.crt \
Manuel Pégourié-Gonnard2b7ad642022-12-06 10:42:44 +010010035 debug_level=1 ec_max_ops=1000" \
Manuel Pégourié-Gonnard32033da2017-05-18 12:49:27 +020010036 0 \
Manuel Pégourié-Gonnardb5d668a2018-06-13 11:22:01 +020010037 -C "x509_verify_cert.*4b00" \
10038 -C "mbedtls_pk_verify.*4b00" \
10039 -C "mbedtls_ecdh_make_public.*4b00" \
10040 -C "mbedtls_pk_sign.*4b00"
Manuel Pégourié-Gonnard32033da2017-05-18 12:49:27 +020010041
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010042# Tests of asynchronous private key support in SSL
10043
Gilles Peskineb74a1c72018-04-24 13:09:22 +020010044requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010045run_test "SSL async private: sign, delay=0" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +010010046 "$P_SRV force_version=tls12 \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010047 async_operations=s async_private_delay1=0 async_private_delay2=0" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010048 "$P_CLI" \
10049 0 \
10050 -s "Async sign callback: using key slot " \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010051 -s "Async resume (slot [0-9]): sign done, status=0"
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010052
Gilles Peskineb74a1c72018-04-24 13:09:22 +020010053requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010054run_test "SSL async private: sign, delay=1" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +010010055 "$P_SRV force_version=tls12 \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010056 async_operations=s async_private_delay1=1 async_private_delay2=1" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010057 "$P_CLI" \
10058 0 \
10059 -s "Async sign callback: using key slot " \
10060 -s "Async resume (slot [0-9]): call 0 more times." \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010061 -s "Async resume (slot [0-9]): sign done, status=0"
10062
Gilles Peskine12d0cc12018-04-26 15:06:56 +020010063requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
10064run_test "SSL async private: sign, delay=2" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +010010065 "$P_SRV force_version=tls12 \
Gilles Peskine12d0cc12018-04-26 15:06:56 +020010066 async_operations=s async_private_delay1=2 async_private_delay2=2" \
10067 "$P_CLI" \
10068 0 \
10069 -s "Async sign callback: using key slot " \
10070 -U "Async sign callback: using key slot " \
10071 -s "Async resume (slot [0-9]): call 1 more times." \
10072 -s "Async resume (slot [0-9]): call 0 more times." \
10073 -s "Async resume (slot [0-9]): sign done, status=0"
10074
Gilles Peskineb74a1c72018-04-24 13:09:22 +020010075requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Hanno Beckerc5722d12020-10-09 11:10:42 +010010076requires_config_disabled MBEDTLS_X509_REMOVE_INFO
Gilles Peskine807d74a2018-04-30 10:30:49 +020010077run_test "SSL async private: sign, SNI" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +010010078 "$P_SRV force_version=tls12 debug_level=3 \
Gilles Peskine807d74a2018-04-30 10:30:49 +020010079 async_operations=s async_private_delay1=0 async_private_delay2=0 \
David Horstmann5ab92be2024-07-01 17:01:28 +010010080 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key \
10081 sni=localhost,$DATA_FILES_PATH/server2.crt,$DATA_FILES_PATH/server2.key,-,-,-,polarssl.example,$DATA_FILES_PATH/server1-nospace.crt,$DATA_FILES_PATH/server1.key,-,-,-" \
Gilles Peskine807d74a2018-04-30 10:30:49 +020010082 "$P_CLI server_name=polarssl.example" \
10083 0 \
10084 -s "Async sign callback: using key slot " \
10085 -s "Async resume (slot [0-9]): sign done, status=0" \
10086 -s "parse ServerName extension" \
10087 -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
10088 -c "subject name *: C=NL, O=PolarSSL, CN=polarssl.example"
10089
10090requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010091run_test "SSL async private: decrypt, delay=0" \
10092 "$P_SRV \
10093 async_operations=d async_private_delay1=0 async_private_delay2=0" \
10094 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
10095 0 \
10096 -s "Async decrypt callback: using key slot " \
10097 -s "Async resume (slot [0-9]): decrypt done, status=0"
10098
Gilles Peskineb74a1c72018-04-24 13:09:22 +020010099requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010100run_test "SSL async private: decrypt, delay=1" \
10101 "$P_SRV \
10102 async_operations=d async_private_delay1=1 async_private_delay2=1" \
10103 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
10104 0 \
10105 -s "Async decrypt callback: using key slot " \
10106 -s "Async resume (slot [0-9]): call 0 more times." \
10107 -s "Async resume (slot [0-9]): decrypt done, status=0"
10108
Gilles Peskineb74a1c72018-04-24 13:09:22 +020010109requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010110run_test "SSL async private: decrypt RSA-PSK, delay=0" \
Gilles Peskine02cd7162024-04-29 16:09:52 +020010111 "$P_SRV psk=73776f726466697368 \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010112 async_operations=d async_private_delay1=0 async_private_delay2=0" \
Gilles Peskine02cd7162024-04-29 16:09:52 +020010113 "$P_CLI psk=73776f726466697368 \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010114 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA256" \
10115 0 \
10116 -s "Async decrypt callback: using key slot " \
10117 -s "Async resume (slot [0-9]): decrypt done, status=0"
10118
Gilles Peskineb74a1c72018-04-24 13:09:22 +020010119requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010120run_test "SSL async private: decrypt RSA-PSK, delay=1" \
Gilles Peskine02cd7162024-04-29 16:09:52 +020010121 "$P_SRV psk=73776f726466697368 \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010122 async_operations=d async_private_delay1=1 async_private_delay2=1" \
Gilles Peskine02cd7162024-04-29 16:09:52 +020010123 "$P_CLI psk=73776f726466697368 \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010124 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA256" \
10125 0 \
10126 -s "Async decrypt callback: using key slot " \
10127 -s "Async resume (slot [0-9]): call 0 more times." \
10128 -s "Async resume (slot [0-9]): decrypt done, status=0"
10129
Gilles Peskineb74a1c72018-04-24 13:09:22 +020010130requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010131run_test "SSL async private: sign callback not present" \
10132 "$P_SRV \
10133 async_operations=d async_private_delay1=1 async_private_delay2=1" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +010010134 "$P_CLI force_version=tls12; [ \$? -eq 1 ] &&
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010135 $P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
10136 0 \
10137 -S "Async sign callback" \
10138 -s "! mbedtls_ssl_handshake returned" \
10139 -s "The own private key or pre-shared key is not set, but needed" \
10140 -s "Async resume (slot [0-9]): decrypt done, status=0" \
10141 -s "Successful connection"
10142
Gilles Peskineb74a1c72018-04-24 13:09:22 +020010143requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010144run_test "SSL async private: decrypt callback not present" \
10145 "$P_SRV debug_level=1 \
10146 async_operations=s async_private_delay1=1 async_private_delay2=1" \
10147 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA;
Ronald Cronc5649382023-04-04 15:33:42 +020010148 [ \$? -eq 1 ] && $P_CLI force_version=tls12" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010149 0 \
10150 -S "Async decrypt callback" \
10151 -s "! mbedtls_ssl_handshake returned" \
10152 -s "got no RSA private key" \
10153 -s "Async resume (slot [0-9]): sign done, status=0" \
10154 -s "Successful connection"
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010155
10156# key1: ECDSA, key2: RSA; use key1 from slot 0
Gilles Peskineb74a1c72018-04-24 13:09:22 +020010157requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010158run_test "SSL async private: slot 0 used with key1" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010159 "$P_SRV \
10160 async_operations=s async_private_delay1=1 \
David Horstmann5ab92be2024-07-01 17:01:28 +010010161 key_file=$DATA_FILES_PATH/server5.key crt_file=$DATA_FILES_PATH/server5.crt \
10162 key_file2=$DATA_FILES_PATH/server2.key crt_file2=$DATA_FILES_PATH/server2.crt" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010163 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
10164 0 \
10165 -s "Async sign callback: using key slot 0," \
10166 -s "Async resume (slot 0): call 0 more times." \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010167 -s "Async resume (slot 0): sign done, status=0"
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010168
10169# key1: ECDSA, key2: RSA; use key2 from slot 0
Gilles Peskineb74a1c72018-04-24 13:09:22 +020010170requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010171run_test "SSL async private: slot 0 used with key2" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010172 "$P_SRV \
10173 async_operations=s async_private_delay2=1 \
David Horstmann5ab92be2024-07-01 17:01:28 +010010174 key_file=$DATA_FILES_PATH/server5.key crt_file=$DATA_FILES_PATH/server5.crt \
10175 key_file2=$DATA_FILES_PATH/server2.key crt_file2=$DATA_FILES_PATH/server2.crt" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010176 "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \
10177 0 \
10178 -s "Async sign callback: using key slot 0," \
10179 -s "Async resume (slot 0): call 0 more times." \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010180 -s "Async resume (slot 0): sign done, status=0"
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010181
10182# key1: ECDSA, key2: RSA; use key2 from slot 1
Gilles Peskineb74a1c72018-04-24 13:09:22 +020010183requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinead28bf02018-04-26 00:19:16 +020010184run_test "SSL async private: slot 1 used with key2" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010185 "$P_SRV \
Gilles Peskine168dae82018-04-25 23:35:42 +020010186 async_operations=s async_private_delay1=1 async_private_delay2=1 \
David Horstmann5ab92be2024-07-01 17:01:28 +010010187 key_file=$DATA_FILES_PATH/server5.key crt_file=$DATA_FILES_PATH/server5.crt \
10188 key_file2=$DATA_FILES_PATH/server2.key crt_file2=$DATA_FILES_PATH/server2.crt" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010189 "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \
10190 0 \
10191 -s "Async sign callback: using key slot 1," \
10192 -s "Async resume (slot 1): call 0 more times." \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010193 -s "Async resume (slot 1): sign done, status=0"
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010194
10195# key1: ECDSA, key2: RSA; use key2 directly
Gilles Peskineb74a1c72018-04-24 13:09:22 +020010196requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010197run_test "SSL async private: fall back to transparent key" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010198 "$P_SRV \
10199 async_operations=s async_private_delay1=1 \
David Horstmann5ab92be2024-07-01 17:01:28 +010010200 key_file=$DATA_FILES_PATH/server5.key crt_file=$DATA_FILES_PATH/server5.crt \
10201 key_file2=$DATA_FILES_PATH/server2.key crt_file2=$DATA_FILES_PATH/server2.crt " \
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010202 "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \
10203 0 \
10204 -s "Async sign callback: no key matches this certificate."
10205
Gilles Peskineb74a1c72018-04-24 13:09:22 +020010206requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine725f1cb2018-06-12 15:06:40 +020010207run_test "SSL async private: sign, error in start" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +010010208 "$P_SRV force_version=tls12 \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010209 async_operations=s async_private_delay1=1 async_private_delay2=1 \
10210 async_private_error=1" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010211 "$P_CLI" \
10212 1 \
10213 -s "Async sign callback: injected error" \
10214 -S "Async resume" \
Gilles Peskine37289cd2018-04-27 11:50:14 +020010215 -S "Async cancel" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010216 -s "! mbedtls_ssl_handshake returned"
10217
Gilles Peskineb74a1c72018-04-24 13:09:22 +020010218requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine725f1cb2018-06-12 15:06:40 +020010219run_test "SSL async private: sign, cancel after start" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +010010220 "$P_SRV force_version=tls12 \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010221 async_operations=s async_private_delay1=1 async_private_delay2=1 \
10222 async_private_error=2" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010223 "$P_CLI" \
10224 1 \
10225 -s "Async sign callback: using key slot " \
10226 -S "Async resume" \
10227 -s "Async cancel"
10228
Gilles Peskineb74a1c72018-04-24 13:09:22 +020010229requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine725f1cb2018-06-12 15:06:40 +020010230run_test "SSL async private: sign, error in resume" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +010010231 "$P_SRV force_version=tls12 \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010232 async_operations=s async_private_delay1=1 async_private_delay2=1 \
10233 async_private_error=3" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010234 "$P_CLI" \
10235 1 \
10236 -s "Async sign callback: using key slot " \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010237 -s "Async resume callback: sign done but injected error" \
Gilles Peskine37289cd2018-04-27 11:50:14 +020010238 -S "Async cancel" \
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010239 -s "! mbedtls_ssl_handshake returned"
10240
Gilles Peskineb74a1c72018-04-24 13:09:22 +020010241requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine725f1cb2018-06-12 15:06:40 +020010242run_test "SSL async private: decrypt, error in start" \
10243 "$P_SRV \
10244 async_operations=d async_private_delay1=1 async_private_delay2=1 \
10245 async_private_error=1" \
10246 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
10247 1 \
10248 -s "Async decrypt callback: injected error" \
10249 -S "Async resume" \
10250 -S "Async cancel" \
10251 -s "! mbedtls_ssl_handshake returned"
10252
10253requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
10254run_test "SSL async private: decrypt, cancel after start" \
10255 "$P_SRV \
10256 async_operations=d async_private_delay1=1 async_private_delay2=1 \
10257 async_private_error=2" \
10258 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
10259 1 \
10260 -s "Async decrypt callback: using key slot " \
10261 -S "Async resume" \
10262 -s "Async cancel"
10263
10264requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
10265run_test "SSL async private: decrypt, error in resume" \
10266 "$P_SRV \
10267 async_operations=d async_private_delay1=1 async_private_delay2=1 \
10268 async_private_error=3" \
10269 "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
10270 1 \
10271 -s "Async decrypt callback: using key slot " \
10272 -s "Async resume callback: decrypt done but injected error" \
10273 -S "Async cancel" \
10274 -s "! mbedtls_ssl_handshake returned"
10275
10276requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine60ee4ca2018-01-08 11:28:05 +010010277run_test "SSL async private: cancel after start then operate correctly" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +010010278 "$P_SRV force_version=tls12 \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010279 async_operations=s async_private_delay1=1 async_private_delay2=1 \
10280 async_private_error=-2" \
Gilles Peskine60ee4ca2018-01-08 11:28:05 +010010281 "$P_CLI; [ \$? -eq 1 ] && $P_CLI" \
10282 0 \
10283 -s "Async cancel" \
10284 -s "! mbedtls_ssl_handshake returned" \
10285 -s "Async resume" \
10286 -s "Successful connection"
10287
Gilles Peskineb74a1c72018-04-24 13:09:22 +020010288requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine60ee4ca2018-01-08 11:28:05 +010010289run_test "SSL async private: error in resume then operate correctly" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +010010290 "$P_SRV force_version=tls12 \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010291 async_operations=s async_private_delay1=1 async_private_delay2=1 \
10292 async_private_error=-3" \
Gilles Peskine60ee4ca2018-01-08 11:28:05 +010010293 "$P_CLI; [ \$? -eq 1 ] && $P_CLI" \
10294 0 \
10295 -s "! mbedtls_ssl_handshake returned" \
10296 -s "Async resume" \
10297 -s "Successful connection"
10298
10299# key1: ECDSA, key2: RSA; use key1 through async, then key2 directly
Gilles Peskineb74a1c72018-04-24 13:09:22 +020010300requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Valerio Setti3f2309f2023-02-23 13:47:30 +010010301# Note: the function "detect_required_features()" is not able to detect more than
10302# one "force_ciphersuite" per client/server and it only picks the 2nd one.
10303# Therefore the 1st one is added explicitly here
Valerio Settid1f991c2023-02-22 12:54:13 +010010304requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Gilles Peskine60ee4ca2018-01-08 11:28:05 +010010305run_test "SSL async private: cancel after start then fall back to transparent key" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010306 "$P_SRV \
10307 async_operations=s async_private_delay1=1 async_private_error=-2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010010308 key_file=$DATA_FILES_PATH/server5.key crt_file=$DATA_FILES_PATH/server5.crt \
10309 key_file2=$DATA_FILES_PATH/server2.key crt_file2=$DATA_FILES_PATH/server2.crt" \
Gilles Peskine60ee4ca2018-01-08 11:28:05 +010010310 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256;
10311 [ \$? -eq 1 ] &&
10312 $P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \
10313 0 \
Gilles Peskinededa75a2018-04-30 10:02:45 +020010314 -s "Async sign callback: using key slot 0" \
Gilles Peskine60ee4ca2018-01-08 11:28:05 +010010315 -S "Async resume" \
10316 -s "Async cancel" \
10317 -s "! mbedtls_ssl_handshake returned" \
10318 -s "Async sign callback: no key matches this certificate." \
10319 -s "Successful connection"
10320
10321# key1: ECDSA, key2: RSA; use key1 through async, then key2 directly
Gilles Peskineb74a1c72018-04-24 13:09:22 +020010322requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Valerio Setti3f2309f2023-02-23 13:47:30 +010010323# Note: the function "detect_required_features()" is not able to detect more than
10324# one "force_ciphersuite" per client/server and it only picks the 2nd one.
10325# Therefore the 1st one is added explicitly here
Valerio Settid1f991c2023-02-22 12:54:13 +010010326requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
Gilles Peskine725f1cb2018-06-12 15:06:40 +020010327run_test "SSL async private: sign, error in resume then fall back to transparent key" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010328 "$P_SRV \
10329 async_operations=s async_private_delay1=1 async_private_error=-3 \
David Horstmann5ab92be2024-07-01 17:01:28 +010010330 key_file=$DATA_FILES_PATH/server5.key crt_file=$DATA_FILES_PATH/server5.crt \
10331 key_file2=$DATA_FILES_PATH/server2.key crt_file2=$DATA_FILES_PATH/server2.crt" \
Gilles Peskine60ee4ca2018-01-08 11:28:05 +010010332 "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256;
10333 [ \$? -eq 1 ] &&
10334 $P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \
10335 0 \
10336 -s "Async resume" \
10337 -s "! mbedtls_ssl_handshake returned" \
10338 -s "Async sign callback: no key matches this certificate." \
10339 -s "Successful connection"
10340
Gilles Peskineb74a1c72018-04-24 13:09:22 +020010341requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010342requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Gilles Peskine654bab72019-09-16 15:19:20 +020010343run_test "SSL async private: renegotiation: client-initiated, sign" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +010010344 "$P_SRV force_version=tls12 \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010345 async_operations=s async_private_delay1=1 async_private_delay2=1 \
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010346 exchanges=2 renegotiation=1" \
10347 "$P_CLI exchanges=2 renegotiation=1 renegotiate=1" \
10348 0 \
10349 -s "Async sign callback: using key slot " \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010350 -s "Async resume (slot [0-9]): sign done, status=0"
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010351
Gilles Peskineb74a1c72018-04-24 13:09:22 +020010352requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010353requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Gilles Peskine654bab72019-09-16 15:19:20 +020010354run_test "SSL async private: renegotiation: server-initiated, sign" \
Ronald Cronfd4c6af2023-03-11 10:46:01 +010010355 "$P_SRV force_version=tls12 \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010356 async_operations=s async_private_delay1=1 async_private_delay2=1 \
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010357 exchanges=2 renegotiation=1 renegotiate=1" \
10358 "$P_CLI exchanges=2 renegotiation=1" \
10359 0 \
10360 -s "Async sign callback: using key slot " \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010361 -s "Async resume (slot [0-9]): sign done, status=0"
10362
Gilles Peskineb74a1c72018-04-24 13:09:22 +020010363requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010364requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Gilles Peskine654bab72019-09-16 15:19:20 +020010365run_test "SSL async private: renegotiation: client-initiated, decrypt" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010366 "$P_SRV \
10367 async_operations=d async_private_delay1=1 async_private_delay2=1 \
10368 exchanges=2 renegotiation=1" \
10369 "$P_CLI exchanges=2 renegotiation=1 renegotiate=1 \
10370 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
10371 0 \
10372 -s "Async decrypt callback: using key slot " \
10373 -s "Async resume (slot [0-9]): decrypt done, status=0"
10374
Gilles Peskineb74a1c72018-04-24 13:09:22 +020010375requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010376requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Gilles Peskine654bab72019-09-16 15:19:20 +020010377run_test "SSL async private: renegotiation: server-initiated, decrypt" \
Gilles Peskinefcca9d82018-01-12 13:47:48 +010010378 "$P_SRV \
10379 async_operations=d async_private_delay1=1 async_private_delay2=1 \
10380 exchanges=2 renegotiation=1 renegotiate=1" \
10381 "$P_CLI exchanges=2 renegotiation=1 \
10382 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
10383 0 \
10384 -s "Async decrypt callback: using key slot " \
10385 -s "Async resume (slot [0-9]): decrypt done, status=0"
Gilles Peskine3665f1d2018-01-05 21:22:12 +010010386
Ron Eldor58093c82018-06-28 13:22:05 +030010387# Tests for ECC extensions (rfc 4492)
10388
Andrzej Kurek934e9cd2022-09-05 14:44:46 -040010389requires_hash_alg SHA_256
Ron Eldor643df7c2018-06-28 16:17:00 +030010390requires_config_enabled MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
Ron Eldor58093c82018-06-28 13:22:05 +030010391run_test "Force a non ECC ciphersuite in the client side" \
10392 "$P_SRV debug_level=3" \
Ron Eldor643df7c2018-06-28 16:17:00 +030010393 "$P_CLI debug_level=3 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA256" \
Ron Eldor58093c82018-06-28 13:22:05 +030010394 0 \
Jerry Yu136320b2021-12-21 17:09:00 +080010395 -C "client hello, adding supported_groups extension" \
Ron Eldor58093c82018-06-28 13:22:05 +030010396 -C "client hello, adding supported_point_formats extension" \
10397 -S "found supported elliptic curves extension" \
10398 -S "found supported point formats extension"
10399
Andrzej Kurek934e9cd2022-09-05 14:44:46 -040010400requires_hash_alg SHA_256
Ron Eldor643df7c2018-06-28 16:17:00 +030010401requires_config_enabled MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
Ron Eldor58093c82018-06-28 13:22:05 +030010402run_test "Force a non ECC ciphersuite in the server side" \
Ron Eldor643df7c2018-06-28 16:17:00 +030010403 "$P_SRV debug_level=3 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA256" \
Ron Eldor58093c82018-06-28 13:22:05 +030010404 "$P_CLI debug_level=3" \
10405 0 \
10406 -C "found supported_point_formats extension" \
10407 -S "server hello, supported_point_formats extension"
10408
Andrzej Kurek934e9cd2022-09-05 14:44:46 -040010409requires_hash_alg SHA_256
Ron Eldor58093c82018-06-28 13:22:05 +030010410run_test "Force an ECC ciphersuite in the client side" \
10411 "$P_SRV debug_level=3" \
10412 "$P_CLI debug_level=3 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
10413 0 \
Jerry Yu136320b2021-12-21 17:09:00 +080010414 -c "client hello, adding supported_groups extension" \
Ron Eldor58093c82018-06-28 13:22:05 +030010415 -c "client hello, adding supported_point_formats extension" \
10416 -s "found supported elliptic curves extension" \
10417 -s "found supported point formats extension"
10418
Andrzej Kurek934e9cd2022-09-05 14:44:46 -040010419requires_hash_alg SHA_256
Ron Eldor58093c82018-06-28 13:22:05 +030010420run_test "Force an ECC ciphersuite in the server side" \
10421 "$P_SRV debug_level=3 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
10422 "$P_CLI debug_level=3" \
10423 0 \
10424 -c "found supported_point_formats extension" \
10425 -s "server hello, supported_point_formats extension"
10426
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +020010427# Tests for DTLS HelloVerifyRequest
10428
Jerry Yuab082902021-12-23 18:02:22 +080010429requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +020010430run_test "DTLS cookie: enabled" \
10431 "$P_SRV dtls=1 debug_level=2" \
10432 "$P_CLI dtls=1 debug_level=2" \
10433 0 \
10434 -s "cookie verification failed" \
10435 -s "cookie verification passed" \
10436 -S "cookie verification skipped" \
10437 -c "received hello verify request" \
Manuel Pégourié-Gonnardcaecdae2014-10-13 19:04:37 +020010438 -s "hello verification requested" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +020010439 -S "SSL - The requested feature is not available"
10440
Jerry Yuab082902021-12-23 18:02:22 +080010441requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +020010442run_test "DTLS cookie: disabled" \
10443 "$P_SRV dtls=1 debug_level=2 cookies=0" \
10444 "$P_CLI dtls=1 debug_level=2" \
10445 0 \
10446 -S "cookie verification failed" \
10447 -S "cookie verification passed" \
10448 -s "cookie verification skipped" \
10449 -C "received hello verify request" \
Manuel Pégourié-Gonnardcaecdae2014-10-13 19:04:37 +020010450 -S "hello verification requested" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +020010451 -S "SSL - The requested feature is not available"
10452
Jerry Yuab082902021-12-23 18:02:22 +080010453requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardcaecdae2014-10-13 19:04:37 +020010454run_test "DTLS cookie: default (failing)" \
10455 "$P_SRV dtls=1 debug_level=2 cookies=-1" \
10456 "$P_CLI dtls=1 debug_level=2 hs_timeout=100-400" \
10457 1 \
10458 -s "cookie verification failed" \
10459 -S "cookie verification passed" \
10460 -S "cookie verification skipped" \
10461 -C "received hello verify request" \
10462 -S "hello verification requested" \
10463 -s "SSL - The requested feature is not available"
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +020010464
10465requires_ipv6
Jerry Yuab082902021-12-23 18:02:22 +080010466requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +020010467run_test "DTLS cookie: enabled, IPv6" \
10468 "$P_SRV dtls=1 debug_level=2 server_addr=::1" \
10469 "$P_CLI dtls=1 debug_level=2 server_addr=::1" \
10470 0 \
10471 -s "cookie verification failed" \
10472 -s "cookie verification passed" \
10473 -S "cookie verification skipped" \
10474 -c "received hello verify request" \
Manuel Pégourié-Gonnardcaecdae2014-10-13 19:04:37 +020010475 -s "hello verification requested" \
Manuel Pégourié-Gonnard0eb6cab2014-07-23 20:17:47 +020010476 -S "SSL - The requested feature is not available"
10477
Jerry Yuab082902021-12-23 18:02:22 +080010478requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard579950c2014-09-29 17:47:33 +020010479run_test "DTLS cookie: enabled, nbio" \
10480 "$P_SRV dtls=1 nbio=2 debug_level=2" \
10481 "$P_CLI dtls=1 nbio=2 debug_level=2" \
10482 0 \
10483 -s "cookie verification failed" \
10484 -s "cookie verification passed" \
10485 -S "cookie verification skipped" \
10486 -c "received hello verify request" \
Manuel Pégourié-Gonnardcaecdae2014-10-13 19:04:37 +020010487 -s "hello verification requested" \
Manuel Pégourié-Gonnard579950c2014-09-29 17:47:33 +020010488 -S "SSL - The requested feature is not available"
10489
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +020010490# Tests for client reconnecting from the same port with DTLS
10491
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +020010492not_with_valgrind # spurious resend
Jerry Yuab082902021-12-23 18:02:22 +080010493requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +020010494run_test "DTLS client reconnect from same port: reference" \
Manuel Pégourié-Gonnardb6929892019-09-09 11:14:37 +020010495 "$P_SRV dtls=1 exchanges=2 read_timeout=20000 hs_timeout=10000-20000" \
10496 "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=10000-20000" \
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +020010497 0 \
10498 -C "resend" \
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +020010499 -S "The operation timed out" \
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +020010500 -S "Client initiated reconnection from same port"
10501
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +020010502not_with_valgrind # spurious resend
Jerry Yuab082902021-12-23 18:02:22 +080010503requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +020010504run_test "DTLS client reconnect from same port: reconnect" \
Manuel Pégourié-Gonnardb6929892019-09-09 11:14:37 +020010505 "$P_SRV dtls=1 exchanges=2 read_timeout=20000 hs_timeout=10000-20000" \
10506 "$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 +020010507 0 \
10508 -C "resend" \
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +020010509 -S "The operation timed out" \
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +020010510 -s "Client initiated reconnection from same port"
10511
Paul Bakker362689d2016-05-13 10:33:25 +010010512not_with_valgrind # server/client too slow to respond in time (next test has higher timeouts)
Jerry Yuab082902021-12-23 18:02:22 +080010513requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Paul Bakker362689d2016-05-13 10:33:25 +010010514run_test "DTLS client reconnect from same port: reconnect, nbio, no valgrind" \
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +020010515 "$P_SRV dtls=1 exchanges=2 read_timeout=1000 nbio=2" \
10516 "$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 +020010517 0 \
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +020010518 -S "The operation timed out" \
Manuel Pégourié-Gonnardd745a1a2015-09-08 12:40:43 +020010519 -s "Client initiated reconnection from same port"
10520
Paul Bakker362689d2016-05-13 10:33:25 +010010521only_with_valgrind # Only with valgrind, do previous test but with higher read_timeout and hs_timeout
Jerry Yuab082902021-12-23 18:02:22 +080010522requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Paul Bakker362689d2016-05-13 10:33:25 +010010523run_test "DTLS client reconnect from same port: reconnect, nbio, valgrind" \
10524 "$P_SRV dtls=1 exchanges=2 read_timeout=2000 nbio=2 hs_timeout=1500-6000" \
10525 "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=1500-3000 reconnect_hard=1" \
10526 0 \
10527 -S "The operation timed out" \
10528 -s "Client initiated reconnection from same port"
10529
Jerry Yuab082902021-12-23 18:02:22 +080010530requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +020010531run_test "DTLS client reconnect from same port: no cookies" \
10532 "$P_SRV dtls=1 exchanges=2 read_timeout=1000 cookies=0" \
Manuel Pégourié-Gonnard6ad23b92015-09-15 12:57:46 +020010533 "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=500-8000 reconnect_hard=1" \
10534 0 \
Manuel Pégourié-Gonnard259db912015-09-09 11:37:17 +020010535 -s "The operation timed out" \
10536 -S "Client initiated reconnection from same port"
10537
Jerry Yuab082902021-12-23 18:02:22 +080010538requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardbaad2de2020-03-13 11:11:02 +010010539run_test "DTLS client reconnect from same port: attacker-injected" \
10540 -p "$P_PXY inject_clihlo=1" \
10541 "$P_SRV dtls=1 exchanges=2 debug_level=1" \
10542 "$P_CLI dtls=1 exchanges=2" \
10543 0 \
10544 -s "possible client reconnect from the same port" \
10545 -S "Client initiated reconnection from same port"
10546
Manuel Pégourié-Gonnard08a1d4b2014-09-26 10:35:50 +020010547# Tests for various cases of client authentication with DTLS
10548# (focused on handshake flows and message parsing)
10549
Jerry Yuab082902021-12-23 18:02:22 +080010550requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard08a1d4b2014-09-26 10:35:50 +020010551run_test "DTLS client auth: required" \
10552 "$P_SRV dtls=1 auth_mode=required" \
10553 "$P_CLI dtls=1" \
10554 0 \
10555 -s "Verifying peer X.509 certificate... ok"
10556
Jerry Yuab082902021-12-23 18:02:22 +080010557requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard08a1d4b2014-09-26 10:35:50 +020010558run_test "DTLS client auth: optional, client has no cert" \
10559 "$P_SRV dtls=1 auth_mode=optional" \
10560 "$P_CLI dtls=1 crt_file=none key_file=none" \
10561 0 \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +010010562 -s "! Certificate was missing"
Manuel Pégourié-Gonnard08a1d4b2014-09-26 10:35:50 +020010563
Jerry Yuab082902021-12-23 18:02:22 +080010564requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +010010565run_test "DTLS client auth: none, client has no cert" \
Manuel Pégourié-Gonnard08a1d4b2014-09-26 10:35:50 +020010566 "$P_SRV dtls=1 auth_mode=none" \
10567 "$P_CLI dtls=1 crt_file=none key_file=none debug_level=2" \
10568 0 \
10569 -c "skip write certificate$" \
Manuel Pégourié-Gonnard89addc42015-04-20 10:56:18 +010010570 -s "! Certificate verification was skipped"
Manuel Pégourié-Gonnard08a1d4b2014-09-26 10:35:50 +020010571
Manuel Pégourié-Gonnard0a885742015-08-04 12:08:35 +020010572run_test "DTLS wrong PSK: badmac alert" \
Gilles Peskine02cd7162024-04-29 16:09:52 +020010573 "$P_SRV dtls=1 psk=73776f726466697368 force_ciphersuite=TLS-PSK-WITH-AES-128-GCM-SHA256" \
Gilles Peskineabb1c222024-05-13 21:06:26 +020010574 "$P_CLI dtls=1 psk=73776f726466697374" \
Manuel Pégourié-Gonnard0a885742015-08-04 12:08:35 +020010575 1 \
10576 -s "SSL - Verification of the message MAC failed" \
10577 -c "SSL - A fatal alert message was received from our peer"
10578
Manuel Pégourié-Gonnard502bf302014-08-20 13:12:58 +020010579# Tests for receiving fragmented handshake messages with DTLS
10580
10581requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +080010582requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard502bf302014-08-20 13:12:58 +020010583run_test "DTLS reassembly: no fragmentation (gnutls server)" \
10584 "$G_SRV -u --mtu 2048 -a" \
10585 "$P_CLI dtls=1 debug_level=2" \
10586 0 \
10587 -C "found fragmented DTLS handshake message" \
10588 -C "error"
10589
10590requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +080010591requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard502bf302014-08-20 13:12:58 +020010592run_test "DTLS reassembly: some fragmentation (gnutls server)" \
10593 "$G_SRV -u --mtu 512" \
10594 "$P_CLI dtls=1 debug_level=2" \
10595 0 \
10596 -c "found fragmented DTLS handshake message" \
10597 -C "error"
10598
10599requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +080010600requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard502bf302014-08-20 13:12:58 +020010601run_test "DTLS reassembly: more fragmentation (gnutls server)" \
10602 "$G_SRV -u --mtu 128" \
10603 "$P_CLI dtls=1 debug_level=2" \
10604 0 \
10605 -c "found fragmented DTLS handshake message" \
10606 -C "error"
10607
10608requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +080010609requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard502bf302014-08-20 13:12:58 +020010610run_test "DTLS reassembly: more fragmentation, nbio (gnutls server)" \
10611 "$G_SRV -u --mtu 128" \
10612 "$P_CLI dtls=1 nbio=2 debug_level=2" \
10613 0 \
10614 -c "found fragmented DTLS handshake message" \
10615 -C "error"
10616
Manuel Pégourié-Gonnard0c4cbc72014-09-02 14:47:31 +020010617requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +010010618requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +080010619requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard0c4cbc72014-09-02 14:47:31 +020010620run_test "DTLS reassembly: fragmentation, renego (gnutls server)" \
10621 "$G_SRV -u --mtu 256" \
10622 "$P_CLI debug_level=3 dtls=1 renegotiation=1 renegotiate=1" \
10623 0 \
10624 -c "found fragmented DTLS handshake message" \
10625 -c "client hello, adding renegotiation extension" \
10626 -c "found renegotiation extension" \
10627 -c "=> renegotiate" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020010628 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0c4cbc72014-09-02 14:47:31 +020010629 -C "error" \
10630 -s "Extra-header:"
10631
10632requires_gnutls
Hanno Becker6a243642017-10-12 15:18:45 +010010633requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Jerry Yuab082902021-12-23 18:02:22 +080010634requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard0c4cbc72014-09-02 14:47:31 +020010635run_test "DTLS reassembly: fragmentation, nbio, renego (gnutls server)" \
10636 "$G_SRV -u --mtu 256" \
10637 "$P_CLI debug_level=3 nbio=2 dtls=1 renegotiation=1 renegotiate=1" \
10638 0 \
10639 -c "found fragmented DTLS handshake message" \
10640 -c "client hello, adding renegotiation extension" \
10641 -c "found renegotiation extension" \
10642 -c "=> renegotiate" \
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020010643 -C "mbedtls_ssl_handshake returned" \
Manuel Pégourié-Gonnard0c4cbc72014-09-02 14:47:31 +020010644 -C "error" \
10645 -s "Extra-header:"
10646
Jerry Yuab082902021-12-23 18:02:22 +080010647requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +020010648run_test "DTLS reassembly: no fragmentation (openssl server)" \
10649 "$O_SRV -dtls -mtu 2048" \
10650 "$P_CLI dtls=1 debug_level=2" \
10651 0 \
10652 -C "found fragmented DTLS handshake message" \
10653 -C "error"
10654
Jerry Yuab082902021-12-23 18:02:22 +080010655requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +020010656run_test "DTLS reassembly: some fragmentation (openssl server)" \
Valerio Setti6ba247c2023-03-14 17:13:43 +010010657 "$O_SRV -dtls -mtu 256" \
TRodziewicz4ca18aa2021-05-20 14:46:20 +020010658 "$P_CLI dtls=1 debug_level=2" \
10659 0 \
10660 -c "found fragmented DTLS handshake message" \
10661 -C "error"
10662
Jerry Yuab082902021-12-23 18:02:22 +080010663requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +020010664run_test "DTLS reassembly: more fragmentation (openssl server)" \
10665 "$O_SRV -dtls -mtu 256" \
10666 "$P_CLI dtls=1 debug_level=2" \
10667 0 \
10668 -c "found fragmented DTLS handshake message" \
10669 -C "error"
10670
Jerry Yuab082902021-12-23 18:02:22 +080010671requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +020010672run_test "DTLS reassembly: fragmentation, nbio (openssl server)" \
10673 "$O_SRV -dtls -mtu 256" \
10674 "$P_CLI dtls=1 nbio=2 debug_level=2" \
10675 0 \
10676 -c "found fragmented DTLS handshake message" \
10677 -C "error"
10678
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +020010679# Tests for sending fragmented handshake messages with DTLS
10680#
10681# Use client auth when we need the client to send large messages,
10682# and use large cert chains on both sides too (the long chains we have all use
10683# both RSA and ECDSA, but ideally we should have long chains with either).
10684# Sizes reached (UDP payload):
10685# - 2037B for server certificate
10686# - 1542B for client certificate
10687# - 1013B for newsessionticket
10688# - all others below 512B
10689# All those tests assume MAX_CONTENT_LEN is at least 2048
10690
10691requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
10692requires_config_enabled MBEDTLS_RSA_C
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +020010693requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanobc87b1d2021-07-08 15:56:33 +010010694requires_max_content_len 4096
Jerry Yuab082902021-12-23 18:02:22 +080010695requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +020010696run_test "DTLS fragmenting: none (for reference)" \
10697 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +010010698 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
10699 key_file=$DATA_FILES_PATH/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -040010700 hs_timeout=2500-60000 \
Hanno Becker12405e72018-08-13 16:45:46 +010010701 max_frag_len=4096" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +020010702 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010010703 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
10704 key_file=$DATA_FILES_PATH/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -040010705 hs_timeout=2500-60000 \
Hanno Becker12405e72018-08-13 16:45:46 +010010706 max_frag_len=4096" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +020010707 0 \
10708 -S "found fragmented DTLS handshake message" \
10709 -C "found fragmented DTLS handshake message" \
10710 -C "error"
10711
10712requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
10713requires_config_enabled MBEDTLS_RSA_C
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +020010714requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanobc87b1d2021-07-08 15:56:33 +010010715requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +080010716requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +020010717run_test "DTLS fragmenting: server only (max_frag_len)" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +020010718 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +010010719 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
10720 key_file=$DATA_FILES_PATH/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -040010721 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +020010722 max_frag_len=1024" \
10723 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010010724 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
10725 key_file=$DATA_FILES_PATH/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -040010726 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +020010727 max_frag_len=2048" \
10728 0 \
10729 -S "found fragmented DTLS handshake message" \
10730 -c "found fragmented DTLS handshake message" \
10731 -C "error"
10732
Hanno Becker69ca0ad2018-08-24 12:11:35 +010010733# With the MFL extension, the server has no way of forcing
10734# the client to not exceed a certain MTU; hence, the following
10735# test can't be replicated with an MTU proxy such as the one
10736# `client-initiated, server only (max_frag_len)` below.
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +020010737requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
10738requires_config_enabled MBEDTLS_RSA_C
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +020010739requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanobc87b1d2021-07-08 15:56:33 +010010740requires_max_content_len 4096
Jerry Yuab082902021-12-23 18:02:22 +080010741requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +020010742run_test "DTLS fragmenting: server only (more) (max_frag_len)" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +020010743 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +010010744 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
10745 key_file=$DATA_FILES_PATH/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -040010746 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +020010747 max_frag_len=512" \
10748 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010010749 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
10750 key_file=$DATA_FILES_PATH/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -040010751 hs_timeout=2500-60000 \
Hanno Becker69ca0ad2018-08-24 12:11:35 +010010752 max_frag_len=4096" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +020010753 0 \
10754 -S "found fragmented DTLS handshake message" \
10755 -c "found fragmented DTLS handshake message" \
10756 -C "error"
10757
10758requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
10759requires_config_enabled MBEDTLS_RSA_C
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +020010760requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanobc87b1d2021-07-08 15:56:33 +010010761requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +080010762requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +020010763run_test "DTLS fragmenting: client-initiated, server only (max_frag_len)" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +020010764 "$P_SRV dtls=1 debug_level=2 auth_mode=none \
David Horstmann5ab92be2024-07-01 17:01:28 +010010765 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
10766 key_file=$DATA_FILES_PATH/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -040010767 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +020010768 max_frag_len=2048" \
10769 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010010770 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
10771 key_file=$DATA_FILES_PATH/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -040010772 hs_timeout=2500-60000 \
10773 max_frag_len=1024" \
10774 0 \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +020010775 -S "found fragmented DTLS handshake message" \
10776 -c "found fragmented DTLS handshake message" \
10777 -C "error"
10778
Hanno Beckerc92b5c82018-08-24 11:48:01 +010010779# While not required by the standard defining the MFL extension
10780# (according to which it only applies to records, not to datagrams),
10781# Mbed TLS will never send datagrams larger than MFL + { Max record expansion },
10782# as otherwise there wouldn't be any means to communicate MTU restrictions
10783# to the peer.
10784# The next test checks that no datagrams significantly larger than the
10785# negotiated MFL are sent.
10786requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
10787requires_config_enabled MBEDTLS_RSA_C
Hanno Beckerc92b5c82018-08-24 11:48:01 +010010788requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanobc87b1d2021-07-08 15:56:33 +010010789requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +080010790requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckerc92b5c82018-08-24 11:48:01 +010010791run_test "DTLS fragmenting: client-initiated, server only (max_frag_len), proxy MTU" \
Andrzej Kurek0fc9cf42018-10-09 03:09:41 -040010792 -p "$P_PXY mtu=1110" \
Hanno Beckerc92b5c82018-08-24 11:48:01 +010010793 "$P_SRV dtls=1 debug_level=2 auth_mode=none \
David Horstmann5ab92be2024-07-01 17:01:28 +010010794 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
10795 key_file=$DATA_FILES_PATH/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -040010796 hs_timeout=2500-60000 \
Hanno Beckerc92b5c82018-08-24 11:48:01 +010010797 max_frag_len=2048" \
10798 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010010799 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
10800 key_file=$DATA_FILES_PATH/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -040010801 hs_timeout=2500-60000 \
10802 max_frag_len=1024" \
Hanno Beckerc92b5c82018-08-24 11:48:01 +010010803 0 \
10804 -S "found fragmented DTLS handshake message" \
10805 -c "found fragmented DTLS handshake message" \
10806 -C "error"
10807
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +020010808requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
10809requires_config_enabled MBEDTLS_RSA_C
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +020010810requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanobc87b1d2021-07-08 15:56:33 +010010811requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +080010812requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +020010813run_test "DTLS fragmenting: client-initiated, both (max_frag_len)" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +020010814 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +010010815 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
10816 key_file=$DATA_FILES_PATH/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -040010817 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +020010818 max_frag_len=2048" \
10819 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010010820 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
10821 key_file=$DATA_FILES_PATH/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -040010822 hs_timeout=2500-60000 \
10823 max_frag_len=1024" \
Manuel Pégourié-Gonnard2cb17e22017-09-19 13:00:47 +020010824 0 \
10825 -s "found fragmented DTLS handshake message" \
10826 -c "found fragmented DTLS handshake message" \
10827 -C "error"
10828
Hanno Beckerc92b5c82018-08-24 11:48:01 +010010829# While not required by the standard defining the MFL extension
10830# (according to which it only applies to records, not to datagrams),
10831# Mbed TLS will never send datagrams larger than MFL + { Max record expansion },
10832# as otherwise there wouldn't be any means to communicate MTU restrictions
10833# to the peer.
10834# The next test checks that no datagrams significantly larger than the
10835# negotiated MFL are sent.
10836requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
10837requires_config_enabled MBEDTLS_RSA_C
Hanno Beckerc92b5c82018-08-24 11:48:01 +010010838requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanobc87b1d2021-07-08 15:56:33 +010010839requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +080010840requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckerc92b5c82018-08-24 11:48:01 +010010841run_test "DTLS fragmenting: client-initiated, both (max_frag_len), proxy MTU" \
Andrzej Kurek0fc9cf42018-10-09 03:09:41 -040010842 -p "$P_PXY mtu=1110" \
Hanno Beckerc92b5c82018-08-24 11:48:01 +010010843 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +010010844 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
10845 key_file=$DATA_FILES_PATH/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -040010846 hs_timeout=2500-60000 \
Hanno Beckerc92b5c82018-08-24 11:48:01 +010010847 max_frag_len=2048" \
10848 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010010849 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
10850 key_file=$DATA_FILES_PATH/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -040010851 hs_timeout=2500-60000 \
10852 max_frag_len=1024" \
Hanno Beckerc92b5c82018-08-24 11:48:01 +010010853 0 \
10854 -s "found fragmented DTLS handshake message" \
10855 -c "found fragmented DTLS handshake message" \
10856 -C "error"
10857
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +020010858requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
10859requires_config_enabled MBEDTLS_RSA_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +010010860requires_max_content_len 4096
Jerry Yuab082902021-12-23 18:02:22 +080010861requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +020010862run_test "DTLS fragmenting: none (for reference) (MTU)" \
10863 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +010010864 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
10865 key_file=$DATA_FILES_PATH/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -040010866 hs_timeout=2500-60000 \
Hanno Becker12405e72018-08-13 16:45:46 +010010867 mtu=4096" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +020010868 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010010869 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
10870 key_file=$DATA_FILES_PATH/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -040010871 hs_timeout=2500-60000 \
Hanno Becker12405e72018-08-13 16:45:46 +010010872 mtu=4096" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +020010873 0 \
10874 -S "found fragmented DTLS handshake message" \
10875 -C "found fragmented DTLS handshake message" \
10876 -C "error"
10877
10878requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
10879requires_config_enabled MBEDTLS_RSA_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +010010880requires_max_content_len 4096
Jerry Yuab082902021-12-23 18:02:22 +080010881requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +020010882run_test "DTLS fragmenting: client (MTU)" \
10883 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +010010884 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
10885 key_file=$DATA_FILES_PATH/server7.key \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010886 hs_timeout=3500-60000 \
Hanno Becker12405e72018-08-13 16:45:46 +010010887 mtu=4096" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +020010888 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010010889 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
10890 key_file=$DATA_FILES_PATH/server8.key \
Andrzej Kurek948fe802018-10-05 15:42:44 -040010891 hs_timeout=3500-60000 \
Andrzej Kurek52f84912018-10-05 07:53:40 -040010892 mtu=1024" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +020010893 0 \
10894 -s "found fragmented DTLS handshake message" \
10895 -C "found fragmented DTLS handshake message" \
10896 -C "error"
10897
10898requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
10899requires_config_enabled MBEDTLS_RSA_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +010010900requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +080010901requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +020010902run_test "DTLS fragmenting: server (MTU)" \
10903 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +010010904 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
10905 key_file=$DATA_FILES_PATH/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -040010906 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +020010907 mtu=512" \
10908 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010010909 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
10910 key_file=$DATA_FILES_PATH/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -040010911 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +020010912 mtu=2048" \
10913 0 \
10914 -S "found fragmented DTLS handshake message" \
10915 -c "found fragmented DTLS handshake message" \
10916 -C "error"
10917
10918requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
10919requires_config_enabled MBEDTLS_RSA_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +010010920requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +080010921requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek7311c782018-10-11 06:49:41 -040010922run_test "DTLS fragmenting: both (MTU=1024)" \
Andrzej Kurek52f84912018-10-05 07:53:40 -040010923 -p "$P_PXY mtu=1024" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +020010924 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +010010925 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
10926 key_file=$DATA_FILES_PATH/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -040010927 hs_timeout=2500-60000 \
Andrzej Kurek95805282018-10-11 08:55:37 -040010928 mtu=1024" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +020010929 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010010930 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
10931 key_file=$DATA_FILES_PATH/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -040010932 hs_timeout=2500-60000 \
10933 mtu=1024" \
Manuel Pégourié-Gonnardb747c6c2018-08-12 13:28:53 +020010934 0 \
10935 -s "found fragmented DTLS handshake message" \
10936 -c "found fragmented DTLS handshake message" \
10937 -C "error"
10938
Andrzej Kurek77826052018-10-11 07:34:08 -040010939# Forcing ciphersuite for this test to fit the MTU of 512 with full config.
Andrzej Kurek7311c782018-10-11 06:49:41 -040010940requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
10941requires_config_enabled MBEDTLS_RSA_C
Andrzej Kurek934e9cd2022-09-05 14:44:46 -040010942requires_hash_alg SHA_256
Yuto Takanobc87b1d2021-07-08 15:56:33 +010010943requires_max_content_len 2048
Andrzej Kurek7311c782018-10-11 06:49:41 -040010944run_test "DTLS fragmenting: both (MTU=512)" \
Hanno Becker8d832182018-03-15 10:14:19 +000010945 -p "$P_PXY mtu=512" \
Hanno Becker72a4f032017-11-15 16:39:20 +000010946 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +010010947 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
10948 key_file=$DATA_FILES_PATH/server7.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -040010949 hs_timeout=2500-60000 \
Hanno Becker72a4f032017-11-15 16:39:20 +000010950 mtu=512" \
10951 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010010952 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
10953 key_file=$DATA_FILES_PATH/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -040010954 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
10955 hs_timeout=2500-60000 \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +020010956 mtu=512" \
Manuel Pégourié-Gonnard63eca932014-09-08 16:39:08 +020010957 0 \
Manuel Pégourié-Gonnard246c13a2014-09-24 13:56:09 +020010958 -s "found fragmented DTLS handshake message" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +020010959 -c "found fragmented DTLS handshake message" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020010960 -C "error"
Manuel Pégourié-Gonnard74a13782014-10-14 22:34:08 +020010961
Andrzej Kurek7311c782018-10-11 06:49:41 -040010962# Test for automatic MTU reduction on repeated resend.
Andrzej Kurek77826052018-10-11 07:34:08 -040010963# Forcing ciphersuite for this test to fit the MTU of 508 with full config.
Andrzej Kurek7311c782018-10-11 06:49:41 -040010964# The ratio of max/min timeout should ideally equal 4 to accept two
10965# retransmissions, but in some cases (like both the server and client using
10966# fragmentation and auto-reduction) an extra retransmission might occur,
10967# hence the ratio of 8.
Hanno Becker37029eb2018-08-29 17:01:40 +010010968not_with_valgrind
Manuel Pégourié-Gonnardb8eec192018-08-20 09:34:02 +020010969requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
10970requires_config_enabled MBEDTLS_RSA_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +010010971requires_max_content_len 2048
Gilles Peskine0d8b86a2019-09-20 18:03:11 +020010972run_test "DTLS fragmenting: proxy MTU: auto-reduction (not valgrind)" \
Manuel Pégourié-Gonnardb8eec192018-08-20 09:34:02 +020010973 -p "$P_PXY mtu=508" \
10974 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +010010975 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
10976 key_file=$DATA_FILES_PATH/server7.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -040010977 hs_timeout=400-3200" \
Manuel Pégourié-Gonnardb8eec192018-08-20 09:34:02 +020010978 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010010979 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
10980 key_file=$DATA_FILES_PATH/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -040010981 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
10982 hs_timeout=400-3200" \
Manuel Pégourié-Gonnardb8eec192018-08-20 09:34:02 +020010983 0 \
10984 -s "found fragmented DTLS handshake message" \
10985 -c "found fragmented DTLS handshake message" \
10986 -C "error"
10987
Andrzej Kurek77826052018-10-11 07:34:08 -040010988# Forcing ciphersuite for this test to fit the MTU of 508 with full config.
Hanno Becker108992e2018-08-29 17:04:18 +010010989only_with_valgrind
10990requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
10991requires_config_enabled MBEDTLS_RSA_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +010010992requires_max_content_len 2048
Gilles Peskine0d8b86a2019-09-20 18:03:11 +020010993run_test "DTLS fragmenting: proxy MTU: auto-reduction (with valgrind)" \
Hanno Becker108992e2018-08-29 17:04:18 +010010994 -p "$P_PXY mtu=508" \
10995 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +010010996 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
10997 key_file=$DATA_FILES_PATH/server7.key \
Hanno Becker108992e2018-08-29 17:04:18 +010010998 hs_timeout=250-10000" \
10999 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010011000 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
11001 key_file=$DATA_FILES_PATH/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -040011002 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Hanno Becker108992e2018-08-29 17:04:18 +010011003 hs_timeout=250-10000" \
11004 0 \
11005 -s "found fragmented DTLS handshake message" \
11006 -c "found fragmented DTLS handshake message" \
11007 -C "error"
11008
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011009# 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 +020011010# OTOH the client might resend if the server is to slow to reset after sending
11011# a HelloVerifyRequest, so only check for no retransmission server-side
Andrzej Kurek35f2f302018-10-09 08:52:14 -040011012not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011013requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
11014requires_config_enabled MBEDTLS_RSA_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +010011015requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +080011016requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek7311c782018-10-11 06:49:41 -040011017run_test "DTLS fragmenting: proxy MTU, simple handshake (MTU=1024)" \
Andrzej Kurek52f84912018-10-05 07:53:40 -040011018 -p "$P_PXY mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011019 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +010011020 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
11021 key_file=$DATA_FILES_PATH/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -040011022 hs_timeout=10000-60000 \
11023 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011024 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010011025 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
11026 key_file=$DATA_FILES_PATH/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -040011027 hs_timeout=10000-60000 \
11028 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011029 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -040011030 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011031 -s "found fragmented DTLS handshake message" \
11032 -c "found fragmented DTLS handshake message" \
11033 -C "error"
11034
Andrzej Kurek77826052018-10-11 07:34:08 -040011035# Forcing ciphersuite for this test to fit the MTU of 512 with full config.
Andrzej Kurek7311c782018-10-11 06:49:41 -040011036# the proxy shouldn't drop or mess up anything, so we shouldn't need to resend
11037# OTOH the client might resend if the server is to slow to reset after sending
11038# a HelloVerifyRequest, so only check for no retransmission server-side
Andrzej Kurek35f2f302018-10-09 08:52:14 -040011039not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +020011040requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
11041requires_config_enabled MBEDTLS_RSA_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +010011042requires_max_content_len 2048
Andrzej Kurek7311c782018-10-11 06:49:41 -040011043run_test "DTLS fragmenting: proxy MTU, simple handshake (MTU=512)" \
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +020011044 -p "$P_PXY mtu=512" \
11045 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +010011046 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
11047 key_file=$DATA_FILES_PATH/server7.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -040011048 hs_timeout=10000-60000 \
11049 mtu=512" \
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +020011050 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010011051 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
11052 key_file=$DATA_FILES_PATH/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -040011053 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
11054 hs_timeout=10000-60000 \
11055 mtu=512" \
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +020011056 0 \
Andrzej Kurek7311c782018-10-11 06:49:41 -040011057 -S "autoreduction" \
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +020011058 -s "found fragmented DTLS handshake message" \
11059 -c "found fragmented DTLS handshake message" \
11060 -C "error"
11061
Andrzej Kurek7311c782018-10-11 06:49:41 -040011062not_with_valgrind # spurious autoreduction due to timeout
11063requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
11064requires_config_enabled MBEDTLS_RSA_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +010011065requires_max_content_len 2048
Jerry Yuab082902021-12-23 18:02:22 +080011066requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Andrzej Kurek7311c782018-10-11 06:49:41 -040011067run_test "DTLS fragmenting: proxy MTU, simple handshake, nbio (MTU=1024)" \
Andrzej Kurek52f84912018-10-05 07:53:40 -040011068 -p "$P_PXY mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011069 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +010011070 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
11071 key_file=$DATA_FILES_PATH/server7.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -040011072 hs_timeout=10000-60000 \
11073 mtu=1024 nbio=2" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011074 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010011075 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
11076 key_file=$DATA_FILES_PATH/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -040011077 hs_timeout=10000-60000 \
11078 mtu=1024 nbio=2" \
11079 0 \
11080 -S "autoreduction" \
11081 -s "found fragmented DTLS handshake message" \
11082 -c "found fragmented DTLS handshake message" \
11083 -C "error"
11084
Andrzej Kurek77826052018-10-11 07:34:08 -040011085# Forcing ciphersuite for this test to fit the MTU of 512 with full config.
Andrzej Kurek7311c782018-10-11 06:49:41 -040011086not_with_valgrind # spurious autoreduction due to timeout
11087requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
11088requires_config_enabled MBEDTLS_RSA_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +010011089requires_max_content_len 2048
Andrzej Kurek7311c782018-10-11 06:49:41 -040011090run_test "DTLS fragmenting: proxy MTU, simple handshake, nbio (MTU=512)" \
11091 -p "$P_PXY mtu=512" \
11092 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +010011093 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
11094 key_file=$DATA_FILES_PATH/server7.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -040011095 hs_timeout=10000-60000 \
11096 mtu=512 nbio=2" \
11097 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010011098 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
11099 key_file=$DATA_FILES_PATH/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -040011100 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
11101 hs_timeout=10000-60000 \
11102 mtu=512 nbio=2" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011103 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -040011104 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011105 -s "found fragmented DTLS handshake message" \
11106 -c "found fragmented DTLS handshake message" \
11107 -C "error"
11108
Andrzej Kurek77826052018-10-11 07:34:08 -040011109# Forcing ciphersuite for this test to fit the MTU of 1450 with full config.
Hanno Beckerb841b4f2018-08-28 10:25:51 +010011110# This ensures things still work after session_reset().
11111# It also exercises the "resumed handshake" flow.
Manuel Pégourié-Gonnard19c62f92018-08-16 10:50:39 +020011112# Since we don't support reading fragmented ClientHello yet,
11113# up the MTU to 1450 (larger than ClientHello with session ticket,
11114# but still smaller than client's Certificate to ensure fragmentation).
Andrzej Kurek35f2f302018-10-09 08:52:14 -040011115# An autoreduction on the client-side might happen if the server is
11116# slow to reset, therefore omitting '-C "autoreduction"' below.
Manuel Pégourié-Gonnard2f2d9022018-08-21 12:17:54 +020011117# reco_delay avoids races where the client reconnects before the server has
Andrzej Kurek35f2f302018-10-09 08:52:14 -040011118# resumed listening, which would result in a spurious autoreduction.
11119not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard19c62f92018-08-16 10:50:39 +020011120requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
11121requires_config_enabled MBEDTLS_RSA_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +010011122requires_max_content_len 2048
Manuel Pégourié-Gonnard19c62f92018-08-16 10:50:39 +020011123run_test "DTLS fragmenting: proxy MTU, resumed handshake" \
11124 -p "$P_PXY mtu=1450" \
11125 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +010011126 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
11127 key_file=$DATA_FILES_PATH/server7.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -040011128 hs_timeout=10000-60000 \
Manuel Pégourié-Gonnard19c62f92018-08-16 10:50:39 +020011129 mtu=1450" \
11130 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010011131 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
11132 key_file=$DATA_FILES_PATH/server8.key \
Andrzej Kurek52f84912018-10-05 07:53:40 -040011133 hs_timeout=10000-60000 \
Andrzej Kurek7311c782018-10-11 06:49:41 -040011134 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Jerry Yua15af372022-12-05 15:55:24 +080011135 mtu=1450 reconnect=1 skip_close_notify=1 reco_delay=1000" \
Manuel Pégourié-Gonnard19c62f92018-08-16 10:50:39 +020011136 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -040011137 -S "autoreduction" \
Manuel Pégourié-Gonnard19c62f92018-08-16 10:50:39 +020011138 -s "found fragmented DTLS handshake message" \
11139 -c "found fragmented DTLS handshake message" \
11140 -C "error"
11141
Andrzej Kurek35f2f302018-10-09 08:52:14 -040011142# An autoreduction on the client-side might happen if the server is
11143# slow to reset, therefore omitting '-C "autoreduction"' below.
11144not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011145requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
11146requires_config_enabled MBEDTLS_RSA_C
Andrzej Kurek934e9cd2022-09-05 14:44:46 -040011147requires_hash_alg SHA_256
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011148requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Yuto Takanobc87b1d2021-07-08 15:56:33 +010011149requires_max_content_len 2048
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011150run_test "DTLS fragmenting: proxy MTU, ChachaPoly renego" \
11151 -p "$P_PXY mtu=512" \
11152 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +010011153 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
11154 key_file=$DATA_FILES_PATH/server7.key \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011155 exchanges=2 renegotiation=1 \
Andrzej Kurek52f84912018-10-05 07:53:40 -040011156 hs_timeout=10000-60000 \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011157 mtu=512" \
11158 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010011159 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
11160 key_file=$DATA_FILES_PATH/server8.key \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011161 exchanges=2 renegotiation=1 renegotiate=1 \
Ronald Cron60f76662023-11-28 17:52:42 +010011162 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256 \
Andrzej Kurek52f84912018-10-05 07:53:40 -040011163 hs_timeout=10000-60000 \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011164 mtu=512" \
11165 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -040011166 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011167 -s "found fragmented DTLS handshake message" \
11168 -c "found fragmented DTLS handshake message" \
11169 -C "error"
11170
Andrzej Kurek35f2f302018-10-09 08:52:14 -040011171# An autoreduction on the client-side might happen if the server is
11172# slow to reset, therefore omitting '-C "autoreduction"' below.
11173not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011174requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
11175requires_config_enabled MBEDTLS_RSA_C
Andrzej Kurek934e9cd2022-09-05 14:44:46 -040011176requires_hash_alg SHA_256
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011177requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Yuto Takanobc87b1d2021-07-08 15:56:33 +010011178requires_max_content_len 2048
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011179run_test "DTLS fragmenting: proxy MTU, AES-GCM renego" \
11180 -p "$P_PXY mtu=512" \
11181 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +010011182 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
11183 key_file=$DATA_FILES_PATH/server7.key \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011184 exchanges=2 renegotiation=1 \
Andrzej Kurek52f84912018-10-05 07:53:40 -040011185 hs_timeout=10000-60000 \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011186 mtu=512" \
11187 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010011188 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
11189 key_file=$DATA_FILES_PATH/server8.key \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011190 exchanges=2 renegotiation=1 renegotiate=1 \
Andrzej Kurek7311c782018-10-11 06:49:41 -040011191 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Andrzej Kurek52f84912018-10-05 07:53:40 -040011192 hs_timeout=10000-60000 \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011193 mtu=512" \
11194 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -040011195 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011196 -s "found fragmented DTLS handshake message" \
11197 -c "found fragmented DTLS handshake message" \
11198 -C "error"
11199
Andrzej Kurek35f2f302018-10-09 08:52:14 -040011200# An autoreduction on the client-side might happen if the server is
11201# slow to reset, therefore omitting '-C "autoreduction"' below.
11202not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011203requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
11204requires_config_enabled MBEDTLS_RSA_C
Andrzej Kurek934e9cd2022-09-05 14:44:46 -040011205requires_hash_alg SHA_256
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011206requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Yuto Takanobc87b1d2021-07-08 15:56:33 +010011207requires_max_content_len 2048
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011208run_test "DTLS fragmenting: proxy MTU, AES-CCM renego" \
Andrzej Kurek52f84912018-10-05 07:53:40 -040011209 -p "$P_PXY mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011210 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +010011211 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
11212 key_file=$DATA_FILES_PATH/server7.key \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011213 exchanges=2 renegotiation=1 \
11214 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8 \
Andrzej Kurek52f84912018-10-05 07:53:40 -040011215 hs_timeout=10000-60000 \
11216 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011217 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010011218 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
11219 key_file=$DATA_FILES_PATH/server8.key \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011220 exchanges=2 renegotiation=1 renegotiate=1 \
Andrzej Kurek52f84912018-10-05 07:53:40 -040011221 hs_timeout=10000-60000 \
11222 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011223 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -040011224 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011225 -s "found fragmented DTLS handshake message" \
11226 -c "found fragmented DTLS handshake message" \
11227 -C "error"
11228
Andrzej Kurek35f2f302018-10-09 08:52:14 -040011229# An autoreduction on the client-side might happen if the server is
11230# slow to reset, therefore omitting '-C "autoreduction"' below.
11231not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011232requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
11233requires_config_enabled MBEDTLS_RSA_C
Andrzej Kurek934e9cd2022-09-05 14:44:46 -040011234requires_hash_alg SHA_256
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011235requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011236requires_config_enabled MBEDTLS_SSL_ENCRYPT_THEN_MAC
Yuto Takanobc87b1d2021-07-08 15:56:33 +010011237requires_max_content_len 2048
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011238run_test "DTLS fragmenting: proxy MTU, AES-CBC EtM renego" \
Andrzej Kurek52f84912018-10-05 07:53:40 -040011239 -p "$P_PXY mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011240 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +010011241 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
11242 key_file=$DATA_FILES_PATH/server7.key \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011243 exchanges=2 renegotiation=1 \
11244 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256 \
Andrzej Kurek52f84912018-10-05 07:53:40 -040011245 hs_timeout=10000-60000 \
11246 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011247 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010011248 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
11249 key_file=$DATA_FILES_PATH/server8.key \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011250 exchanges=2 renegotiation=1 renegotiate=1 \
Andrzej Kurek52f84912018-10-05 07:53:40 -040011251 hs_timeout=10000-60000 \
11252 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011253 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -040011254 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011255 -s "found fragmented DTLS handshake message" \
11256 -c "found fragmented DTLS handshake message" \
11257 -C "error"
11258
Andrzej Kurek35f2f302018-10-09 08:52:14 -040011259# An autoreduction on the client-side might happen if the server is
11260# slow to reset, therefore omitting '-C "autoreduction"' below.
11261not_with_valgrind # spurious autoreduction due to timeout
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011262requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
11263requires_config_enabled MBEDTLS_RSA_C
Andrzej Kurek934e9cd2022-09-05 14:44:46 -040011264requires_hash_alg SHA_256
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011265requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Yuto Takanobc87b1d2021-07-08 15:56:33 +010011266requires_max_content_len 2048
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011267run_test "DTLS fragmenting: proxy MTU, AES-CBC non-EtM renego" \
Andrzej Kurek52f84912018-10-05 07:53:40 -040011268 -p "$P_PXY mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011269 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +010011270 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
11271 key_file=$DATA_FILES_PATH/server7.key \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011272 exchanges=2 renegotiation=1 \
11273 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256 etm=0 \
Andrzej Kurek52f84912018-10-05 07:53:40 -040011274 hs_timeout=10000-60000 \
11275 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011276 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010011277 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
11278 key_file=$DATA_FILES_PATH/server8.key \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011279 exchanges=2 renegotiation=1 renegotiate=1 \
Andrzej Kurek52f84912018-10-05 07:53:40 -040011280 hs_timeout=10000-60000 \
11281 mtu=1024" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011282 0 \
Andrzej Kurek35f2f302018-10-09 08:52:14 -040011283 -S "autoreduction" \
Manuel Pégourié-Gonnard72c27072018-08-13 12:37:51 +020011284 -s "found fragmented DTLS handshake message" \
11285 -c "found fragmented DTLS handshake message" \
11286 -C "error"
11287
Andrzej Kurek77826052018-10-11 07:34:08 -040011288# Forcing ciphersuite for this test to fit the MTU of 512 with full config.
Manuel Pégourié-Gonnard2d56f0d2018-08-16 11:09:03 +020011289requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
11290requires_config_enabled MBEDTLS_RSA_C
Manuel Pégourié-Gonnard2d56f0d2018-08-16 11:09:03 +020011291client_needs_more_time 2
Yuto Takanobc87b1d2021-07-08 15:56:33 +010011292requires_max_content_len 2048
Manuel Pégourié-Gonnard2d56f0d2018-08-16 11:09:03 +020011293run_test "DTLS fragmenting: proxy MTU + 3d" \
11294 -p "$P_PXY mtu=512 drop=8 delay=8 duplicate=8" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +010011295 "$P_SRV dgram_packing=0 dtls=1 debug_level=2 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +010011296 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
11297 key_file=$DATA_FILES_PATH/server7.key \
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +020011298 hs_timeout=250-10000 mtu=512" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +010011299 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010011300 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
11301 key_file=$DATA_FILES_PATH/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -040011302 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +020011303 hs_timeout=250-10000 mtu=512" \
Manuel Pégourié-Gonnard2d56f0d2018-08-16 11:09:03 +020011304 0 \
11305 -s "found fragmented DTLS handshake message" \
11306 -c "found fragmented DTLS handshake message" \
11307 -C "error"
11308
Andrzej Kurek77826052018-10-11 07:34:08 -040011309# Forcing ciphersuite for this test to fit the MTU of 512 with full config.
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +020011310requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
11311requires_config_enabled MBEDTLS_RSA_C
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +020011312client_needs_more_time 2
Yuto Takanobc87b1d2021-07-08 15:56:33 +010011313requires_max_content_len 2048
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +020011314run_test "DTLS fragmenting: proxy MTU + 3d, nbio" \
11315 -p "$P_PXY mtu=512 drop=8 delay=8 duplicate=8" \
11316 "$P_SRV dtls=1 debug_level=2 auth_mode=required \
David Horstmann5ab92be2024-07-01 17:01:28 +010011317 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
11318 key_file=$DATA_FILES_PATH/server7.key \
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +020011319 hs_timeout=250-10000 mtu=512 nbio=2" \
11320 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010011321 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
11322 key_file=$DATA_FILES_PATH/server8.key \
Andrzej Kurek7311c782018-10-11 06:49:41 -040011323 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
Manuel Pégourié-Gonnardc1d54b72018-08-22 10:02:59 +020011324 hs_timeout=250-10000 mtu=512 nbio=2" \
11325 0 \
11326 -s "found fragmented DTLS handshake message" \
11327 -c "found fragmented DTLS handshake message" \
11328 -C "error"
11329
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +020011330# interop tests for DTLS fragmentating with reliable connection
11331#
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +020011332# here and below we just want to test that the we fragment in a way that
11333# pleases other implementations, so we don't need the peer to fragment
11334requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
11335requires_config_enabled MBEDTLS_RSA_C
Manuel Pégourié-Gonnard61512982018-08-21 09:40:07 +020011336requires_gnutls
Yuto Takanobc87b1d2021-07-08 15:56:33 +010011337requires_max_content_len 2048
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +020011338run_test "DTLS fragmenting: gnutls server, DTLS 1.2" \
11339 "$G_SRV -u" \
11340 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010011341 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
11342 key_file=$DATA_FILES_PATH/server8.key \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +000011343 mtu=512 force_version=dtls12" \
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +020011344 0 \
11345 -c "fragmenting handshake message" \
11346 -C "error"
11347
Hanno Beckerb9a00862018-08-28 10:20:22 +010011348# We use --insecure for the GnuTLS client because it expects
11349# the hostname / IP it connects to to be the name used in the
11350# certificate obtained from the server. Here, however, it
11351# connects to 127.0.0.1 while our test certificates use 'localhost'
11352# as the server name in the certificate. This will make the
Shaun Case8b0ecbc2021-12-20 21:14:10 -080011353# certificate validation fail, but passing --insecure makes
Hanno Beckerb9a00862018-08-28 10:20:22 +010011354# GnuTLS continue the connection nonetheless.
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +020011355requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
11356requires_config_enabled MBEDTLS_RSA_C
Manuel Pégourié-Gonnard61512982018-08-21 09:40:07 +020011357requires_gnutls
Andrzej Kurekb4593462018-10-11 08:43:30 -040011358requires_not_i686
Yuto Takanobc87b1d2021-07-08 15:56:33 +010011359requires_max_content_len 2048
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +020011360run_test "DTLS fragmenting: gnutls client, DTLS 1.2" \
Valerio Setti3b2c0282023-03-08 10:22:29 +010011361 "$P_SRV dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010011362 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
11363 key_file=$DATA_FILES_PATH/server7.key \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +000011364 mtu=512 force_version=dtls12" \
Manuel Pégourié-Gonnard34aa1872018-08-23 19:07:15 +020011365 "$G_CLI -u --insecure 127.0.0.1" \
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +020011366 0 \
11367 -s "fragmenting handshake message"
11368
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +020011369requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
11370requires_config_enabled MBEDTLS_RSA_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +010011371requires_max_content_len 2048
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +020011372run_test "DTLS fragmenting: openssl server, DTLS 1.2" \
11373 "$O_SRV -dtls1_2 -verify 10" \
11374 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010011375 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
11376 key_file=$DATA_FILES_PATH/server8.key \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +000011377 mtu=512 force_version=dtls12" \
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +020011378 0 \
11379 -c "fragmenting handshake message" \
11380 -C "error"
11381
11382requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
11383requires_config_enabled MBEDTLS_RSA_C
Yuto Takanobc87b1d2021-07-08 15:56:33 +010011384requires_max_content_len 2048
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +020011385run_test "DTLS fragmenting: openssl client, DTLS 1.2" \
11386 "$P_SRV dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010011387 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
11388 key_file=$DATA_FILES_PATH/server7.key \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +000011389 mtu=512 force_version=dtls12" \
Manuel Pégourié-Gonnard1218bc02018-08-17 10:51:26 +020011390 "$O_CLI -dtls1_2" \
11391 0 \
11392 -s "fragmenting handshake message"
11393
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +020011394# interop tests for DTLS fragmentating with unreliable connection
11395#
11396# again we just want to test that the we fragment in a way that
11397# pleases other implementations, so we don't need the peer to fragment
11398requires_gnutls_next
11399requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
11400requires_config_enabled MBEDTLS_RSA_C
Manuel Pégourié-Gonnard02f3a8a2018-08-20 10:49:28 +020011401client_needs_more_time 4
Yuto Takanobc87b1d2021-07-08 15:56:33 +010011402requires_max_content_len 2048
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +020011403run_test "DTLS fragmenting: 3d, gnutls server, DTLS 1.2" \
11404 -p "$P_PXY drop=8 delay=8 duplicate=8" \
11405 "$G_NEXT_SRV -u" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +010011406 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010011407 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
11408 key_file=$DATA_FILES_PATH/server8.key \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +000011409 hs_timeout=250-60000 mtu=512 force_version=dtls12" \
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +020011410 0 \
11411 -c "fragmenting handshake message" \
11412 -C "error"
11413
11414requires_gnutls_next
11415requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
11416requires_config_enabled MBEDTLS_RSA_C
Hanno Becker3b8b40c2018-08-28 10:25:41 +010011417client_needs_more_time 4
Yuto Takanobc87b1d2021-07-08 15:56:33 +010011418requires_max_content_len 2048
Hanno Becker3b8b40c2018-08-28 10:25:41 +010011419run_test "DTLS fragmenting: 3d, gnutls client, DTLS 1.2" \
11420 -p "$P_PXY drop=8 delay=8 duplicate=8" \
11421 "$P_SRV dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010011422 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
11423 key_file=$DATA_FILES_PATH/server7.key \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +000011424 hs_timeout=250-60000 mtu=512 force_version=dtls12" \
k-stachowiak17a38d32019-02-18 15:29:56 +010011425 "$G_NEXT_CLI -u --insecure 127.0.0.1" \
Hanno Becker3b8b40c2018-08-28 10:25:41 +010011426 0 \
11427 -s "fragmenting handshake message"
11428
Zhangsen Wang91385122022-07-12 01:48:17 +000011429## The test below requires 1.1.1a or higher version of openssl, otherwise
11430## it might trigger a bug due to openssl server (https://github.com/openssl/openssl/issues/6902)
Zhangsen Wang87a9c862022-06-28 06:10:35 +000011431requires_openssl_next
Hanno Becker3b8b40c2018-08-28 10:25:41 +010011432requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
11433requires_config_enabled MBEDTLS_RSA_C
Hanno Becker3b8b40c2018-08-28 10:25:41 +010011434client_needs_more_time 4
Yuto Takanobc87b1d2021-07-08 15:56:33 +010011435requires_max_content_len 2048
Hanno Becker3b8b40c2018-08-28 10:25:41 +010011436run_test "DTLS fragmenting: 3d, openssl server, DTLS 1.2" \
11437 -p "$P_PXY drop=8 delay=8 duplicate=8" \
Zhangsen Wang87a9c862022-06-28 06:10:35 +000011438 "$O_NEXT_SRV -dtls1_2 -verify 10" \
Hanno Becker3b8b40c2018-08-28 10:25:41 +010011439 "$P_CLI dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010011440 crt_file=$DATA_FILES_PATH/server8_int-ca2.crt \
11441 key_file=$DATA_FILES_PATH/server8.key \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +000011442 hs_timeout=250-60000 mtu=512 force_version=dtls12" \
Hanno Becker3b8b40c2018-08-28 10:25:41 +010011443 0 \
11444 -c "fragmenting handshake message" \
11445 -C "error"
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +020011446
Zhangsen Wangd5e8a482022-07-29 07:53:36 +000011447## the test below will time out with certain seed.
Zhangsen Wangbaeffbb2022-07-29 06:34:47 +000011448## The cause is an openssl bug (https://github.com/openssl/openssl/issues/18887)
11449skip_next_test
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +020011450requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
11451requires_config_enabled MBEDTLS_RSA_C
Manuel Pégourié-Gonnardc1eda672018-09-03 10:41:49 +020011452client_needs_more_time 4
Yuto Takanobc87b1d2021-07-08 15:56:33 +010011453requires_max_content_len 2048
Manuel Pégourié-Gonnardc1eda672018-09-03 10:41:49 +020011454run_test "DTLS fragmenting: 3d, openssl client, DTLS 1.2" \
11455 -p "$P_PXY drop=8 delay=8 duplicate=8" \
11456 "$P_SRV dtls=1 debug_level=2 \
David Horstmann5ab92be2024-07-01 17:01:28 +010011457 crt_file=$DATA_FILES_PATH/server7_int-ca.crt \
11458 key_file=$DATA_FILES_PATH/server7.key \
Xiaofei Bai8b5c3822021-12-02 08:43:35 +000011459 hs_timeout=250-60000 mtu=512 force_version=dtls12" \
Manuel Pégourié-Gonnardc1eda672018-09-03 10:41:49 +020011460 "$O_CLI -dtls1_2" \
11461 0 \
11462 -s "fragmenting handshake message"
Manuel Pégourié-Gonnard38110df2018-08-17 12:44:54 +020011463
Ron Eldorb4655392018-07-05 18:25:39 +030011464# Tests for DTLS-SRTP (RFC 5764)
11465requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +080011466requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldorb4655392018-07-05 18:25:39 +030011467run_test "DTLS-SRTP all profiles supported" \
11468 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
11469 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
11470 0 \
11471 -s "found use_srtp extension" \
11472 -s "found srtp profile" \
11473 -s "selected srtp profile" \
11474 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011475 -s "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +030011476 -c "client hello, adding use_srtp extension" \
11477 -c "found use_srtp extension" \
11478 -c "found srtp profile" \
11479 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011480 -c "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +020011481 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldorb4655392018-07-05 18:25:39 +030011482 -C "error"
11483
Johan Pascal9bc50b02020-09-24 12:01:13 +020011484
Ron Eldorb4655392018-07-05 18:25:39 +030011485requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +080011486requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldorb4655392018-07-05 18:25:39 +030011487run_test "DTLS-SRTP server supports all profiles. Client supports one profile." \
11488 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
Johan Pascal43f94902020-09-22 12:25:52 +020011489 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=5 debug_level=3" \
Ron Eldorb4655392018-07-05 18:25:39 +030011490 0 \
11491 -s "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +020011492 -s "found srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80" \
11493 -s "selected srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80" \
Ron Eldorb4655392018-07-05 18:25:39 +030011494 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011495 -s "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +030011496 -c "client hello, adding use_srtp extension" \
11497 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +020011498 -c "found srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80" \
Ron Eldorb4655392018-07-05 18:25:39 +030011499 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011500 -c "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +020011501 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldorb4655392018-07-05 18:25:39 +030011502 -C "error"
11503
11504requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +080011505requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011506run_test "DTLS-SRTP server supports one profile. Client supports all profiles." \
Johan Pascal43f94902020-09-22 12:25:52 +020011507 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=6 debug_level=3" \
Ron Eldorb4655392018-07-05 18:25:39 +030011508 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
11509 0 \
11510 -s "found use_srtp extension" \
11511 -s "found srtp profile" \
Johan Pascal43f94902020-09-22 12:25:52 +020011512 -s "selected srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32" \
Ron Eldorb4655392018-07-05 18:25:39 +030011513 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011514 -s "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +030011515 -c "client hello, adding use_srtp extension" \
11516 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +020011517 -c "found srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32" \
Ron Eldorb4655392018-07-05 18:25:39 +030011518 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011519 -c "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +020011520 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldorb4655392018-07-05 18:25:39 +030011521 -C "error"
11522
11523requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +080011524requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldorb4655392018-07-05 18:25:39 +030011525run_test "DTLS-SRTP server and Client support only one matching profile." \
11526 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
11527 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
11528 0 \
11529 -s "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +020011530 -s "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
11531 -s "selected srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldorb4655392018-07-05 18:25:39 +030011532 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011533 -s "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +030011534 -c "client hello, adding use_srtp extension" \
11535 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +020011536 -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldorb4655392018-07-05 18:25:39 +030011537 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011538 -c "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +020011539 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldorb4655392018-07-05 18:25:39 +030011540 -C "error"
11541
11542requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +080011543requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldorb4655392018-07-05 18:25:39 +030011544run_test "DTLS-SRTP server and Client support only one different profile." \
11545 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
Johan Pascal43f94902020-09-22 12:25:52 +020011546 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=6 debug_level=3" \
Ron Eldorb4655392018-07-05 18:25:39 +030011547 0 \
11548 -s "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +020011549 -s "found srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32" \
Ron Eldorb4655392018-07-05 18:25:39 +030011550 -S "selected srtp profile" \
11551 -S "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011552 -S "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +030011553 -c "client hello, adding use_srtp extension" \
11554 -C "found use_srtp extension" \
11555 -C "found srtp profile" \
11556 -C "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011557 -C "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +030011558 -C "error"
11559
11560requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +080011561requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldorb4655392018-07-05 18:25:39 +030011562run_test "DTLS-SRTP server doesn't support use_srtp extension." \
11563 "$P_SRV dtls=1 debug_level=3" \
11564 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
11565 0 \
11566 -s "found use_srtp extension" \
11567 -S "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011568 -S "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +030011569 -c "client hello, adding use_srtp extension" \
11570 -C "found use_srtp extension" \
11571 -C "found srtp profile" \
11572 -C "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011573 -C "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +030011574 -C "error"
11575
11576requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +080011577requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldorb4655392018-07-05 18:25:39 +030011578run_test "DTLS-SRTP all profiles supported. mki used" \
11579 "$P_SRV dtls=1 use_srtp=1 support_mki=1 debug_level=3" \
11580 "$P_CLI dtls=1 use_srtp=1 mki=542310ab34290481 debug_level=3" \
11581 0 \
11582 -s "found use_srtp extension" \
11583 -s "found srtp profile" \
11584 -s "selected srtp profile" \
11585 -s "server hello, adding use_srtp extension" \
11586 -s "dumping 'using mki' (8 bytes)" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011587 -s "DTLS-SRTP key material is"\
Ron Eldorb4655392018-07-05 18:25:39 +030011588 -c "client hello, adding use_srtp extension" \
11589 -c "found use_srtp extension" \
11590 -c "found srtp profile" \
11591 -c "selected srtp profile" \
11592 -c "dumping 'sending mki' (8 bytes)" \
11593 -c "dumping 'received mki' (8 bytes)" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011594 -c "DTLS-SRTP key material is"\
Johan Pascal9bc50b02020-09-24 12:01:13 +020011595 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Johan Pascal20c7db32020-10-26 22:45:58 +010011596 -g "find_in_both '^ *DTLS-SRTP mki value: [0-9A-F]*$'"\
Ron Eldorb4655392018-07-05 18:25:39 +030011597 -C "error"
11598
11599requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +080011600requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldorb4655392018-07-05 18:25:39 +030011601run_test "DTLS-SRTP all profiles supported. server doesn't support mki." \
11602 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
11603 "$P_CLI dtls=1 use_srtp=1 mki=542310ab34290481 debug_level=3" \
11604 0 \
11605 -s "found use_srtp extension" \
11606 -s "found srtp profile" \
11607 -s "selected srtp profile" \
11608 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011609 -s "DTLS-SRTP key material is"\
Johan Pascal5ef72d22020-10-28 17:05:47 +010011610 -s "DTLS-SRTP no mki value negotiated"\
Ron Eldorb4655392018-07-05 18:25:39 +030011611 -S "dumping 'using mki' (8 bytes)" \
11612 -c "client hello, adding use_srtp extension" \
11613 -c "found use_srtp extension" \
11614 -c "found srtp profile" \
11615 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011616 -c "DTLS-SRTP key material is"\
Johan Pascal5ef72d22020-10-28 17:05:47 +010011617 -c "DTLS-SRTP no mki value negotiated"\
Johan Pascal9bc50b02020-09-24 12:01:13 +020011618 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
Ron Eldorb4655392018-07-05 18:25:39 +030011619 -c "dumping 'sending mki' (8 bytes)" \
11620 -C "dumping 'received mki' (8 bytes)" \
11621 -C "error"
11622
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011623requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +080011624requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +020011625run_test "DTLS-SRTP all profiles supported. openssl client." \
11626 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
11627 "$O_CLI -dtls -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
11628 0 \
11629 -s "found use_srtp extension" \
11630 -s "found srtp profile" \
11631 -s "selected srtp profile" \
11632 -s "server hello, adding use_srtp extension" \
11633 -s "DTLS-SRTP key material is"\
11634 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
11635 -c "SRTP Extension negotiated, profile=SRTP_AES128_CM_SHA1_80"
11636
11637requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +080011638requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +020011639run_test "DTLS-SRTP server supports all profiles. Client supports all profiles, in different order. openssl client." \
11640 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
11641 "$O_CLI -dtls -use_srtp SRTP_AES128_CM_SHA1_32:SRTP_AES128_CM_SHA1_80 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
11642 0 \
11643 -s "found use_srtp extension" \
11644 -s "found srtp profile" \
11645 -s "selected srtp profile" \
11646 -s "server hello, adding use_srtp extension" \
11647 -s "DTLS-SRTP key material is"\
11648 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
11649 -c "SRTP Extension negotiated, profile=SRTP_AES128_CM_SHA1_32"
11650
11651requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +080011652requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +020011653run_test "DTLS-SRTP server supports all profiles. Client supports one profile. openssl client." \
11654 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
11655 "$O_CLI -dtls -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
11656 0 \
11657 -s "found use_srtp extension" \
11658 -s "found srtp profile" \
11659 -s "selected srtp profile" \
11660 -s "server hello, adding use_srtp extension" \
11661 -s "DTLS-SRTP key material is"\
11662 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
11663 -c "SRTP Extension negotiated, profile=SRTP_AES128_CM_SHA1_32"
11664
11665requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +080011666requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +020011667run_test "DTLS-SRTP server supports one profile. Client supports all profiles. openssl client." \
11668 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
11669 "$O_CLI -dtls -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
11670 0 \
11671 -s "found use_srtp extension" \
11672 -s "found srtp profile" \
11673 -s "selected srtp profile" \
11674 -s "server hello, adding use_srtp extension" \
11675 -s "DTLS-SRTP key material is"\
11676 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
11677 -c "SRTP Extension negotiated, profile=SRTP_AES128_CM_SHA1_32"
11678
11679requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +080011680requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +020011681run_test "DTLS-SRTP server and Client support only one matching profile. openssl client." \
11682 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
11683 "$O_CLI -dtls -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
11684 0 \
11685 -s "found use_srtp extension" \
11686 -s "found srtp profile" \
11687 -s "selected srtp profile" \
11688 -s "server hello, adding use_srtp extension" \
11689 -s "DTLS-SRTP key material is"\
11690 -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
11691 -c "SRTP Extension negotiated, profile=SRTP_AES128_CM_SHA1_32"
11692
11693requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +080011694requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +020011695run_test "DTLS-SRTP server and Client support only one different profile. openssl client." \
11696 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=1 debug_level=3" \
11697 "$O_CLI -dtls -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
11698 0 \
11699 -s "found use_srtp extension" \
11700 -s "found srtp profile" \
11701 -S "selected srtp profile" \
11702 -S "server hello, adding use_srtp extension" \
11703 -S "DTLS-SRTP key material is"\
11704 -C "SRTP Extension negotiated, profile"
11705
11706requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +080011707requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +020011708run_test "DTLS-SRTP server doesn't support use_srtp extension. openssl client" \
11709 "$P_SRV dtls=1 debug_level=3" \
11710 "$O_CLI -dtls -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
11711 0 \
11712 -s "found use_srtp extension" \
11713 -S "server hello, adding use_srtp extension" \
11714 -S "DTLS-SRTP key material is"\
11715 -C "SRTP Extension negotiated, profile"
11716
11717requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +080011718requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +020011719run_test "DTLS-SRTP all profiles supported. openssl server" \
11720 "$O_SRV -dtls -verify 0 -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
11721 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
11722 0 \
11723 -c "client hello, adding use_srtp extension" \
11724 -c "found use_srtp extension" \
11725 -c "found srtp profile" \
11726 -c "selected srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80" \
11727 -c "DTLS-SRTP key material is"\
11728 -C "error"
11729
11730requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +080011731requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +020011732run_test "DTLS-SRTP server supports all profiles. Client supports all profiles, in different order. openssl server." \
11733 "$O_SRV -dtls -verify 0 -use_srtp SRTP_AES128_CM_SHA1_32:SRTP_AES128_CM_SHA1_80 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
11734 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
11735 0 \
11736 -c "client hello, adding use_srtp extension" \
11737 -c "found use_srtp extension" \
11738 -c "found srtp profile" \
11739 -c "selected srtp profile" \
11740 -c "DTLS-SRTP key material is"\
11741 -C "error"
11742
11743requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +080011744requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +020011745run_test "DTLS-SRTP server supports all profiles. Client supports one profile. openssl server." \
11746 "$O_SRV -dtls -verify 0 -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
11747 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
11748 0 \
11749 -c "client hello, adding use_srtp extension" \
11750 -c "found use_srtp extension" \
11751 -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
11752 -c "selected srtp profile" \
11753 -c "DTLS-SRTP key material is"\
11754 -C "error"
11755
11756requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +080011757requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +020011758run_test "DTLS-SRTP server supports one profile. Client supports all profiles. openssl server." \
11759 "$O_SRV -dtls -verify 0 -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
11760 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
11761 0 \
11762 -c "client hello, adding use_srtp extension" \
11763 -c "found use_srtp extension" \
11764 -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
11765 -c "selected srtp profile" \
11766 -c "DTLS-SRTP key material is"\
11767 -C "error"
11768
11769requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +080011770requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +020011771run_test "DTLS-SRTP server and Client support only one matching profile. openssl server." \
11772 "$O_SRV -dtls -verify 0 -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
11773 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
11774 0 \
11775 -c "client hello, adding use_srtp extension" \
11776 -c "found use_srtp extension" \
11777 -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
11778 -c "selected srtp profile" \
11779 -c "DTLS-SRTP key material is"\
11780 -C "error"
11781
11782requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +080011783requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +020011784run_test "DTLS-SRTP server and Client support only one different profile. openssl server." \
11785 "$O_SRV -dtls -verify 0 -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
11786 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=6 debug_level=3" \
11787 0 \
11788 -c "client hello, adding use_srtp extension" \
11789 -C "found use_srtp extension" \
11790 -C "found srtp profile" \
11791 -C "selected srtp profile" \
11792 -C "DTLS-SRTP key material is"\
11793 -C "error"
11794
11795requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +080011796requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +020011797run_test "DTLS-SRTP server doesn't support use_srtp extension. openssl server" \
11798 "$O_SRV -dtls" \
11799 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
11800 0 \
11801 -c "client hello, adding use_srtp extension" \
11802 -C "found use_srtp extension" \
11803 -C "found srtp profile" \
11804 -C "selected srtp profile" \
11805 -C "DTLS-SRTP key material is"\
11806 -C "error"
11807
11808requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Jerry Yuab082902021-12-23 18:02:22 +080011809requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
TRodziewicz4ca18aa2021-05-20 14:46:20 +020011810run_test "DTLS-SRTP all profiles supported. server doesn't support mki. openssl server." \
11811 "$O_SRV -dtls -verify 0 -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
11812 "$P_CLI dtls=1 use_srtp=1 mki=542310ab34290481 debug_level=3" \
11813 0 \
11814 -c "client hello, adding use_srtp extension" \
11815 -c "found use_srtp extension" \
11816 -c "found srtp profile" \
11817 -c "selected srtp profile" \
11818 -c "DTLS-SRTP key material is"\
11819 -c "DTLS-SRTP no mki value negotiated"\
11820 -c "dumping 'sending mki' (8 bytes)" \
11821 -C "dumping 'received mki' (8 bytes)" \
11822 -C "error"
11823
11824requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +020011825requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +080011826requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011827run_test "DTLS-SRTP all profiles supported. gnutls client." \
Ron Eldor5d991c92019-01-15 18:54:03 +020011828 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
11829 "$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 +030011830 0 \
11831 -s "found use_srtp extension" \
11832 -s "found srtp profile" \
11833 -s "selected srtp profile" \
11834 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011835 -s "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011836 -c "SRTP profile: SRTP_AES128_CM_HMAC_SHA1_80"
11837
11838requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +020011839requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +080011840requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011841run_test "DTLS-SRTP server supports all profiles. Client supports all profiles, in different order. gnutls client." \
Ron Eldor5d991c92019-01-15 18:54:03 +020011842 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
11843 "$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 +030011844 0 \
11845 -s "found use_srtp extension" \
11846 -s "found srtp profile" \
11847 -s "selected srtp profile" \
11848 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011849 -s "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011850 -c "SRTP profile: SRTP_NULL_HMAC_SHA1_80"
11851
11852requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +020011853requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +080011854requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011855run_test "DTLS-SRTP server supports all profiles. Client supports one profile. gnutls client." \
Ron Eldor5d991c92019-01-15 18:54:03 +020011856 "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
11857 "$G_CLI -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_32 --insecure 127.0.0.1" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011858 0 \
11859 -s "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +020011860 -s "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
11861 -s "selected srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011862 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011863 -s "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011864 -c "SRTP profile: SRTP_AES128_CM_HMAC_SHA1_32"
11865
11866requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +020011867requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +080011868requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011869run_test "DTLS-SRTP server supports one profile. Client supports all profiles. gnutls client." \
Johan Pascal43f94902020-09-22 12:25:52 +020011870 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=6 debug_level=3" \
Ron Eldor5d991c92019-01-15 18:54:03 +020011871 "$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 +030011872 0 \
11873 -s "found use_srtp extension" \
11874 -s "found srtp profile" \
Johan Pascal43f94902020-09-22 12:25:52 +020011875 -s "selected srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011876 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011877 -s "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011878 -c "SRTP profile: SRTP_NULL_SHA1_32"
11879
11880requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +020011881requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +080011882requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011883run_test "DTLS-SRTP server and Client support only one matching profile. gnutls client." \
Ron Eldor5d991c92019-01-15 18:54:03 +020011884 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
11885 "$G_CLI -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_32 --insecure 127.0.0.1" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011886 0 \
11887 -s "found use_srtp extension" \
11888 -s "found srtp profile" \
11889 -s "selected srtp profile" \
11890 -s "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011891 -s "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011892 -c "SRTP profile: SRTP_AES128_CM_HMAC_SHA1_32"
11893
11894requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +020011895requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +080011896requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011897run_test "DTLS-SRTP server and Client support only one different profile. gnutls client." \
Ron Eldor5d991c92019-01-15 18:54:03 +020011898 "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=1 debug_level=3" \
11899 "$G_CLI -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_32 --insecure 127.0.0.1" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011900 0 \
11901 -s "found use_srtp extension" \
11902 -s "found srtp profile" \
11903 -S "selected srtp profile" \
11904 -S "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011905 -S "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011906 -C "SRTP profile:"
11907
11908requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +020011909requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +080011910requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011911run_test "DTLS-SRTP server doesn't support use_srtp extension. gnutls client" \
Ron Eldor5d991c92019-01-15 18:54:03 +020011912 "$P_SRV dtls=1 debug_level=3" \
11913 "$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 +030011914 0 \
11915 -s "found use_srtp extension" \
11916 -S "server hello, adding use_srtp extension" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011917 -S "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011918 -C "SRTP profile:"
11919
11920requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +020011921requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +080011922requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011923run_test "DTLS-SRTP all profiles supported. gnutls server" \
11924 "$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" \
11925 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
11926 0 \
11927 -c "client hello, adding use_srtp extension" \
11928 -c "found use_srtp extension" \
11929 -c "found srtp profile" \
Johan Pascal43f94902020-09-22 12:25:52 +020011930 -c "selected srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011931 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011932 -C "error"
11933
11934requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +020011935requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +080011936requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011937run_test "DTLS-SRTP server supports all profiles. Client supports all profiles, in different order. gnutls server." \
11938 "$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" \
11939 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
11940 0 \
11941 -c "client hello, adding use_srtp extension" \
11942 -c "found use_srtp extension" \
11943 -c "found srtp profile" \
Johan Pascal43f94902020-09-22 12:25:52 +020011944 -c "selected srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011945 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011946 -C "error"
11947
11948requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +020011949requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +080011950requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011951run_test "DTLS-SRTP server supports all profiles. Client supports one profile. gnutls server." \
11952 "$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" \
11953 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
11954 0 \
11955 -c "client hello, adding use_srtp extension" \
11956 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +020011957 -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011958 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011959 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011960 -C "error"
11961
11962requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +020011963requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +080011964requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011965run_test "DTLS-SRTP server supports one profile. Client supports all profiles. gnutls server." \
11966 "$G_SRV -u --srtp-profiles=SRTP_NULL_HMAC_SHA1_80" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011967 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011968 0 \
11969 -c "client hello, adding use_srtp extension" \
11970 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +020011971 -c "found srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011972 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011973 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011974 -C "error"
11975
11976requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +020011977requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +080011978requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011979run_test "DTLS-SRTP server and Client support only one matching profile. gnutls server." \
11980 "$G_SRV -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_32" \
11981 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
11982 0 \
11983 -c "client hello, adding use_srtp extension" \
11984 -c "found use_srtp extension" \
Johan Pascal43f94902020-09-22 12:25:52 +020011985 -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011986 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020011987 -c "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011988 -C "error"
11989
11990requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +020011991requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +080011992requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011993run_test "DTLS-SRTP server and Client support only one different profile. gnutls server." \
11994 "$G_SRV -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_32" \
Johan Pascal43f94902020-09-22 12:25:52 +020011995 "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=6 debug_level=3" \
Ron Eldor3c6a44b2018-07-10 10:32:10 +030011996 0 \
11997 -c "client hello, adding use_srtp extension" \
11998 -C "found use_srtp extension" \
11999 -C "found srtp profile" \
12000 -C "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020012001 -C "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +030012002 -C "error"
12003
12004requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +020012005requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +080012006requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +030012007run_test "DTLS-SRTP server doesn't support use_srtp extension. gnutls server" \
12008 "$G_SRV -u" \
12009 "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
12010 0 \
12011 -c "client hello, adding use_srtp extension" \
12012 -C "found use_srtp extension" \
12013 -C "found srtp profile" \
12014 -C "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020012015 -C "DTLS-SRTP key material is"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +030012016 -C "error"
12017
12018requires_config_enabled MBEDTLS_SSL_DTLS_SRTP
Ron Eldor5d991c92019-01-15 18:54:03 +020012019requires_gnutls
Jerry Yuab082902021-12-23 18:02:22 +080012020requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldor3c6a44b2018-07-10 10:32:10 +030012021run_test "DTLS-SRTP all profiles supported. mki used. gnutls server." \
12022 "$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" \
12023 "$P_CLI dtls=1 use_srtp=1 mki=542310ab34290481 debug_level=3" \
12024 0 \
12025 -c "client hello, adding use_srtp extension" \
12026 -c "found use_srtp extension" \
12027 -c "found srtp profile" \
12028 -c "selected srtp profile" \
Johan Pascal9bc97ca2020-09-21 23:44:45 +020012029 -c "DTLS-SRTP key material is"\
Johan Pascal20c7db32020-10-26 22:45:58 +010012030 -c "DTLS-SRTP mki value:"\
Ron Eldor3c6a44b2018-07-10 10:32:10 +030012031 -c "dumping 'sending mki' (8 bytes)" \
12032 -c "dumping 'received mki' (8 bytes)" \
12033 -C "error"
12034
Manuel Pégourié-Gonnard64dffc52014-09-02 13:39:16 +020012035# Tests for specific things with "unreliable" UDP connection
12036
12037not_with_valgrind # spurious resend due to timeout
Jerry Yuab082902021-12-23 18:02:22 +080012038requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard64dffc52014-09-02 13:39:16 +020012039run_test "DTLS proxy: reference" \
12040 -p "$P_PXY" \
Manuel Pégourié-Gonnardb6929892019-09-09 11:14:37 +020012041 "$P_SRV dtls=1 debug_level=2 hs_timeout=10000-20000" \
12042 "$P_CLI dtls=1 debug_level=2 hs_timeout=10000-20000" \
Manuel Pégourié-Gonnard64dffc52014-09-02 13:39:16 +020012043 0 \
12044 -C "replayed record" \
12045 -S "replayed record" \
Hanno Beckerb2a86c32019-07-19 15:43:09 +010012046 -C "Buffer record from epoch" \
12047 -S "Buffer record from epoch" \
12048 -C "ssl_buffer_message" \
12049 -S "ssl_buffer_message" \
Manuel Pégourié-Gonnarda7756172014-08-31 18:37:01 +020012050 -C "discarding invalid record" \
Manuel Pégourié-Gonnard990f9e42014-09-06 12:27:02 +020012051 -S "discarding invalid record" \
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +020012052 -S "resend" \
Manuel Pégourié-Gonnard990f9e42014-09-06 12:27:02 +020012053 -s "Extra-header:" \
Manuel Pégourié-Gonnardbe9eb872014-09-05 17:45:19 +020012054 -c "HTTP/1.0 200 OK"
12055
12056not_with_valgrind # spurious resend due to timeout
Jerry Yuab082902021-12-23 18:02:22 +080012057requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard990f9e42014-09-06 12:27:02 +020012058run_test "DTLS proxy: duplicate every packet" \
12059 -p "$P_PXY duplicate=1" \
Manuel Pégourié-Gonnardb6929892019-09-09 11:14:37 +020012060 "$P_SRV dtls=1 dgram_packing=0 debug_level=2 hs_timeout=10000-20000" \
12061 "$P_CLI dtls=1 dgram_packing=0 debug_level=2 hs_timeout=10000-20000" \
Manuel Pégourié-Gonnard990f9e42014-09-06 12:27:02 +020012062 0 \
12063 -c "replayed record" \
12064 -s "replayed record" \
12065 -c "record from another epoch" \
12066 -s "record from another epoch" \
12067 -S "resend" \
12068 -s "Extra-header:" \
12069 -c "HTTP/1.0 200 OK"
12070
Jerry Yuab082902021-12-23 18:02:22 +080012071requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard990f9e42014-09-06 12:27:02 +020012072run_test "DTLS proxy: duplicate every packet, server anti-replay off" \
12073 -p "$P_PXY duplicate=1" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +010012074 "$P_SRV dtls=1 dgram_packing=0 debug_level=2 anti_replay=0" \
12075 "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \
Manuel Pégourié-Gonnard63eca932014-09-08 16:39:08 +020012076 0 \
12077 -c "replayed record" \
12078 -S "replayed record" \
12079 -c "record from another epoch" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020012080 -s "record from another epoch" \
12081 -c "resend" \
12082 -s "resend" \
Manuel Pégourié-Gonnard246c13a2014-09-24 13:56:09 +020012083 -s "Extra-header:" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020012084 -c "HTTP/1.0 200 OK"
12085
Jerry Yuab082902021-12-23 18:02:22 +080012086requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard246c13a2014-09-24 13:56:09 +020012087run_test "DTLS proxy: multiple records in same datagram" \
12088 -p "$P_PXY pack=50" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +010012089 "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \
12090 "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \
Manuel Pégourié-Gonnard63eca932014-09-08 16:39:08 +020012091 0 \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020012092 -c "next record in same datagram" \
12093 -s "next record in same datagram"
12094
Jerry Yuab082902021-12-23 18:02:22 +080012095requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020012096run_test "DTLS proxy: multiple records in same datagram, duplicate every packet" \
12097 -p "$P_PXY pack=50 duplicate=1" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +010012098 "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \
12099 "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \
Manuel Pégourié-Gonnard246c13a2014-09-24 13:56:09 +020012100 0 \
12101 -c "next record in same datagram" \
12102 -s "next record in same datagram"
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020012103
Jerry Yuab082902021-12-23 18:02:22 +080012104requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard63eca932014-09-08 16:39:08 +020012105run_test "DTLS proxy: inject invalid AD record, default badmac_limit" \
12106 -p "$P_PXY bad_ad=1" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +010012107 "$P_SRV dtls=1 dgram_packing=0 debug_level=1" \
12108 "$P_CLI dtls=1 dgram_packing=0 debug_level=1 read_timeout=100" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020012109 0 \
Manuel Pégourié-Gonnard74a13782014-10-14 22:34:08 +020012110 -c "discarding invalid record (mac)" \
12111 -s "discarding invalid record (mac)" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020012112 -s "Extra-header:" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +020012113 -c "HTTP/1.0 200 OK" \
12114 -S "too many records with bad MAC" \
12115 -S "Verification of the message MAC failed"
12116
Jerry Yuab082902021-12-23 18:02:22 +080012117requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +020012118run_test "DTLS proxy: inject invalid AD record, badmac_limit 1" \
12119 -p "$P_PXY bad_ad=1" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +010012120 "$P_SRV dtls=1 dgram_packing=0 debug_level=1 badmac_limit=1" \
12121 "$P_CLI dtls=1 dgram_packing=0 debug_level=1 read_timeout=100" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +020012122 1 \
Manuel Pégourié-Gonnard74a13782014-10-14 22:34:08 +020012123 -C "discarding invalid record (mac)" \
12124 -S "discarding invalid record (mac)" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +020012125 -S "Extra-header:" \
12126 -C "HTTP/1.0 200 OK" \
12127 -s "too many records with bad MAC" \
12128 -s "Verification of the message MAC failed"
12129
Jerry Yuab082902021-12-23 18:02:22 +080012130requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +020012131run_test "DTLS proxy: inject invalid AD record, badmac_limit 2" \
12132 -p "$P_PXY bad_ad=1" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +010012133 "$P_SRV dtls=1 dgram_packing=0 debug_level=1 badmac_limit=2" \
12134 "$P_CLI dtls=1 dgram_packing=0 debug_level=1 read_timeout=100" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +020012135 0 \
Manuel Pégourié-Gonnard74a13782014-10-14 22:34:08 +020012136 -c "discarding invalid record (mac)" \
12137 -s "discarding invalid record (mac)" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +020012138 -s "Extra-header:" \
12139 -c "HTTP/1.0 200 OK" \
12140 -S "too many records with bad MAC" \
12141 -S "Verification of the message MAC failed"
12142
Jerry Yuab082902021-12-23 18:02:22 +080012143requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +020012144run_test "DTLS proxy: inject invalid AD record, badmac_limit 2, exchanges 2"\
12145 -p "$P_PXY bad_ad=1" \
Hanno Becker1c9a24c2018-08-14 13:46:33 +010012146 "$P_SRV dtls=1 dgram_packing=0 debug_level=1 badmac_limit=2 exchanges=2" \
12147 "$P_CLI dtls=1 dgram_packing=0 debug_level=1 read_timeout=100 exchanges=2" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +020012148 1 \
Manuel Pégourié-Gonnard74a13782014-10-14 22:34:08 +020012149 -c "discarding invalid record (mac)" \
12150 -s "discarding invalid record (mac)" \
Manuel Pégourié-Gonnarde698f592014-10-14 19:36:36 +020012151 -s "Extra-header:" \
12152 -c "HTTP/1.0 200 OK" \
12153 -s "too many records with bad MAC" \
12154 -s "Verification of the message MAC failed"
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020012155
Jerry Yuab082902021-12-23 18:02:22 +080012156requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020012157run_test "DTLS proxy: delay ChangeCipherSpec" \
12158 -p "$P_PXY delay_ccs=1" \
Hanno Beckerc4305232018-08-14 13:41:21 +010012159 "$P_SRV dtls=1 debug_level=1 dgram_packing=0" \
12160 "$P_CLI dtls=1 debug_level=1 dgram_packing=0" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020012161 0 \
Manuel Pégourié-Gonnard246c13a2014-09-24 13:56:09 +020012162 -c "record from another epoch" \
12163 -s "record from another epoch" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020012164 -s "Extra-header:" \
12165 -c "HTTP/1.0 200 OK"
12166
Hanno Beckeraa5d0c42018-08-16 13:15:19 +010012167# Tests for reordering support with DTLS
12168
Gilles Peskine6f160ca2022-03-14 18:21:24 +010012169requires_certificate_authentication
Jerry Yuab082902021-12-23 18:02:22 +080012170requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker56cdfd12018-08-17 13:42:15 +010012171run_test "DTLS reordering: Buffer out-of-order handshake message on client" \
12172 -p "$P_PXY delay_srv=ServerHello" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012173 "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
12174 hs_timeout=2500-60000" \
12175 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
12176 hs_timeout=2500-60000" \
Hanno Beckere3842212018-08-16 15:28:59 +010012177 0 \
12178 -c "Buffering HS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010012179 -c "Next handshake message has been buffered - load"\
12180 -S "Buffering HS message" \
12181 -S "Next handshake message has been buffered - load"\
Hanno Becker39b8bc92018-08-28 17:17:13 +010012182 -C "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010012183 -C "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +010012184 -S "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010012185 -S "Remember CCS message"
Hanno Beckere3842212018-08-16 15:28:59 +010012186
Gilles Peskine6f160ca2022-03-14 18:21:24 +010012187requires_certificate_authentication
Jerry Yuab082902021-12-23 18:02:22 +080012188requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckerdc1e9502018-08-28 16:02:33 +010012189run_test "DTLS reordering: Buffer out-of-order handshake message fragment on client" \
12190 -p "$P_PXY delay_srv=ServerHello" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012191 "$P_SRV mtu=512 dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
12192 hs_timeout=2500-60000" \
12193 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
12194 hs_timeout=2500-60000" \
Hanno Beckerdc1e9502018-08-28 16:02:33 +010012195 0 \
12196 -c "Buffering HS message" \
12197 -c "found fragmented DTLS handshake message"\
12198 -c "Next handshake message 1 not or only partially bufffered" \
12199 -c "Next handshake message has been buffered - load"\
12200 -S "Buffering HS message" \
12201 -S "Next handshake message has been buffered - load"\
Hanno Becker39b8bc92018-08-28 17:17:13 +010012202 -C "Injecting buffered CCS message" \
Hanno Beckerdc1e9502018-08-28 16:02:33 +010012203 -C "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +010012204 -S "Injecting buffered CCS message" \
Hanno Beckeraa5d0c42018-08-16 13:15:19 +010012205 -S "Remember CCS message"
12206
Hanno Beckera1adcca2018-08-24 14:41:07 +010012207# The client buffers the ServerKeyExchange before receiving the fragmented
12208# Certificate message; at the time of writing, together these are aroudn 1200b
12209# in size, so that the bound below ensures that the certificate can be reassembled
12210# while keeping the ServerKeyExchange.
Gilles Peskine6f160ca2022-03-14 18:21:24 +010012211requires_certificate_authentication
Hanno Beckera1adcca2018-08-24 14:41:07 +010012212requires_config_value_at_least "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 1300
Jerry Yuab082902021-12-23 18:02:22 +080012213requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera1adcca2018-08-24 14:41:07 +010012214run_test "DTLS reordering: Buffer out-of-order hs msg before reassembling next" \
Hanno Beckere3567052018-08-21 16:50:43 +010012215 -p "$P_PXY delay_srv=Certificate delay_srv=Certificate" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012216 "$P_SRV mtu=512 dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
12217 hs_timeout=2500-60000" \
12218 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
12219 hs_timeout=2500-60000" \
Hanno Beckere3567052018-08-21 16:50:43 +010012220 0 \
12221 -c "Buffering HS message" \
12222 -c "Next handshake message has been buffered - load"\
Hanno Beckera1adcca2018-08-24 14:41:07 +010012223 -C "attempt to make space by freeing buffered messages" \
12224 -S "Buffering HS message" \
12225 -S "Next handshake message has been buffered - load"\
Hanno Becker39b8bc92018-08-28 17:17:13 +010012226 -C "Injecting buffered CCS message" \
Hanno Beckera1adcca2018-08-24 14:41:07 +010012227 -C "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +010012228 -S "Injecting buffered CCS message" \
Hanno Beckera1adcca2018-08-24 14:41:07 +010012229 -S "Remember CCS message"
12230
12231# The size constraints ensure that the delayed certificate message can't
12232# be reassembled while keeping the ServerKeyExchange message, but it can
12233# when dropping it first.
Gilles Peskine6f160ca2022-03-14 18:21:24 +010012234requires_certificate_authentication
Hanno Beckera1adcca2018-08-24 14:41:07 +010012235requires_config_value_at_least "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 900
12236requires_config_value_at_most "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 1299
Jerry Yuab082902021-12-23 18:02:22 +080012237requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera1adcca2018-08-24 14:41:07 +010012238run_test "DTLS reordering: Buffer out-of-order hs msg before reassembling next, free buffered msg" \
12239 -p "$P_PXY delay_srv=Certificate delay_srv=Certificate" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012240 "$P_SRV mtu=512 dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
12241 hs_timeout=2500-60000" \
12242 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
12243 hs_timeout=2500-60000" \
Hanno Beckera1adcca2018-08-24 14:41:07 +010012244 0 \
12245 -c "Buffering HS message" \
12246 -c "attempt to make space by freeing buffered future messages" \
12247 -c "Enough space available after freeing buffered HS messages" \
Hanno Beckere3567052018-08-21 16:50:43 +010012248 -S "Buffering HS message" \
12249 -S "Next handshake message has been buffered - load"\
Hanno Becker39b8bc92018-08-28 17:17:13 +010012250 -C "Injecting buffered CCS message" \
Hanno Beckere3567052018-08-21 16:50:43 +010012251 -C "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +010012252 -S "Injecting buffered CCS message" \
Hanno Beckere3567052018-08-21 16:50:43 +010012253 -S "Remember CCS message"
12254
Gilles Peskine6f160ca2022-03-14 18:21:24 +010012255requires_certificate_authentication
Jerry Yuab082902021-12-23 18:02:22 +080012256requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker56cdfd12018-08-17 13:42:15 +010012257run_test "DTLS reordering: Buffer out-of-order handshake message on server" \
12258 -p "$P_PXY delay_cli=Certificate" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012259 "$P_SRV dgram_packing=0 auth_mode=required cookies=0 dtls=1 debug_level=2 \
12260 hs_timeout=2500-60000" \
12261 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
12262 hs_timeout=2500-60000" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010012263 0 \
12264 -C "Buffering HS message" \
12265 -C "Next handshake message has been buffered - load"\
12266 -s "Buffering HS message" \
12267 -s "Next handshake message has been buffered - load" \
Hanno Becker39b8bc92018-08-28 17:17:13 +010012268 -C "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010012269 -C "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +010012270 -S "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010012271 -S "Remember CCS message"
12272
Gilles Peskine6f160ca2022-03-14 18:21:24 +010012273requires_certificate_authentication
Jerry Yuab082902021-12-23 18:02:22 +080012274requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Norbert Fabritiusc93fc862023-04-12 09:50:30 +020012275requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Hanno Becker56cdfd12018-08-17 13:42:15 +010012276run_test "DTLS reordering: Buffer out-of-order CCS message on client"\
12277 -p "$P_PXY delay_srv=NewSessionTicket" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012278 "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
12279 hs_timeout=2500-60000" \
12280 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
12281 hs_timeout=2500-60000" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010012282 0 \
12283 -C "Buffering HS message" \
12284 -C "Next handshake message has been buffered - load"\
12285 -S "Buffering HS message" \
12286 -S "Next handshake message has been buffered - load" \
Hanno Becker39b8bc92018-08-28 17:17:13 +010012287 -c "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010012288 -c "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +010012289 -S "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010012290 -S "Remember CCS message"
12291
Gilles Peskine6f160ca2022-03-14 18:21:24 +010012292requires_certificate_authentication
Jerry Yuab082902021-12-23 18:02:22 +080012293requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Becker56cdfd12018-08-17 13:42:15 +010012294run_test "DTLS reordering: Buffer out-of-order CCS message on server"\
12295 -p "$P_PXY delay_cli=ClientKeyExchange" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012296 "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
12297 hs_timeout=2500-60000" \
12298 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
12299 hs_timeout=2500-60000" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010012300 0 \
12301 -C "Buffering HS message" \
12302 -C "Next handshake message has been buffered - load"\
12303 -S "Buffering HS message" \
12304 -S "Next handshake message has been buffered - load" \
Hanno Becker39b8bc92018-08-28 17:17:13 +010012305 -C "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010012306 -C "Remember CCS message" \
Hanno Becker39b8bc92018-08-28 17:17:13 +010012307 -s "Injecting buffered CCS message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010012308 -s "Remember CCS message"
12309
Jerry Yuab082902021-12-23 18:02:22 +080012310requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Hanno Beckera1adcca2018-08-24 14:41:07 +010012311run_test "DTLS reordering: Buffer encrypted Finished message" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010012312 -p "$P_PXY delay_ccs=1" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012313 "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
12314 hs_timeout=2500-60000" \
12315 "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
12316 hs_timeout=2500-60000" \
Hanno Beckerb34149c2018-08-16 15:29:06 +010012317 0 \
12318 -s "Buffer record from epoch 1" \
Hanno Becker56cdfd12018-08-17 13:42:15 +010012319 -s "Found buffered record from current epoch - load" \
12320 -c "Buffer record from epoch 1" \
12321 -c "Found buffered record from current epoch - load"
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020012322
Hanno Beckera1adcca2018-08-24 14:41:07 +010012323# In this test, both the fragmented NewSessionTicket and the ChangeCipherSpec
12324# from the server are delayed, so that the encrypted Finished message
12325# is received and buffered. When the fragmented NewSessionTicket comes
12326# in afterwards, the encrypted Finished message must be freed in order
12327# to make space for the NewSessionTicket to be reassembled.
12328# This works only in very particular circumstances:
12329# - MBEDTLS_SSL_DTLS_MAX_BUFFERING must be large enough to allow buffering
12330# of the NewSessionTicket, but small enough to also allow buffering of
12331# the encrypted Finished message.
12332# - The MTU setting on the server must be so small that the NewSessionTicket
12333# needs to be fragmented.
12334# - All messages sent by the server must be small enough to be either sent
12335# without fragmentation or be reassembled within the bounds of
12336# MBEDTLS_SSL_DTLS_MAX_BUFFERING. Achieve this by testing with a PSK-based
12337# handshake, omitting CRTs.
Manuel Pégourié-Gonnardeef4c752019-05-28 10:21:30 +020012338requires_config_value_at_least "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 190
12339requires_config_value_at_most "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 230
Hanno Beckera1adcca2018-08-24 14:41:07 +010012340run_test "DTLS reordering: Buffer encrypted Finished message, drop for fragmented NewSessionTicket" \
12341 -p "$P_PXY delay_srv=NewSessionTicket delay_srv=NewSessionTicket delay_ccs=1" \
Gilles Peskine02cd7162024-04-29 16:09:52 +020012342 "$P_SRV mtu=140 response_size=90 dgram_packing=0 psk=73776f726466697368 psk_identity=foo cookies=0 dtls=1 debug_level=2" \
12343 "$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 +010012344 0 \
12345 -s "Buffer record from epoch 1" \
12346 -s "Found buffered record from current epoch - load" \
12347 -c "Buffer record from epoch 1" \
12348 -C "Found buffered record from current epoch - load" \
12349 -c "Enough space available after freeing future epoch record"
12350
Manuel Pégourié-Gonnarda0719722014-09-20 12:46:27 +020012351# Tests for "randomly unreliable connection": try a variety of flows and peers
12352
12353client_needs_more_time 2
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020012354run_test "DTLS proxy: 3d (drop, delay, duplicate), \"short\" PSK handshake" \
12355 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Gilles Peskine4c1347c2024-09-07 19:50:46 +020012356 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 \
Gilles Peskine02cd7162024-04-29 16:09:52 +020012357 psk=73776f726466697368" \
12358 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=73776f726466697368 \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020012359 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
12360 0 \
12361 -s "Extra-header:" \
12362 -c "HTTP/1.0 200 OK"
12363
Janos Follath74537a62016-09-02 13:45:28 +010012364client_needs_more_time 2
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020012365run_test "DTLS proxy: 3d, \"short\" RSA handshake" \
12366 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012367 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none" \
12368 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020012369 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
12370 0 \
12371 -s "Extra-header:" \
12372 -c "HTTP/1.0 200 OK"
12373
Janos Follath74537a62016-09-02 13:45:28 +010012374client_needs_more_time 2
Jerry Yuab082902021-12-23 18:02:22 +080012375requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020012376run_test "DTLS proxy: 3d, \"short\" (no ticket, no cli_auth) FS handshake" \
12377 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012378 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none" \
12379 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0" \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020012380 0 \
12381 -s "Extra-header:" \
12382 -c "HTTP/1.0 200 OK"
12383
Janos Follath74537a62016-09-02 13:45:28 +010012384client_needs_more_time 2
Jerry Yuab082902021-12-23 18:02:22 +080012385requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020012386run_test "DTLS proxy: 3d, FS, client auth" \
12387 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012388 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=required" \
12389 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0" \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020012390 0 \
12391 -s "Extra-header:" \
12392 -c "HTTP/1.0 200 OK"
12393
Janos Follath74537a62016-09-02 13:45:28 +010012394client_needs_more_time 2
Jerry Yuab082902021-12-23 18:02:22 +080012395requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Norbert Fabritiusc93fc862023-04-12 09:50:30 +020012396requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020012397run_test "DTLS proxy: 3d, FS, ticket" \
12398 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012399 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=1 auth_mode=none" \
12400 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=1" \
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020012401 0 \
12402 -s "Extra-header:" \
12403 -c "HTTP/1.0 200 OK"
12404
Janos Follath74537a62016-09-02 13:45:28 +010012405client_needs_more_time 2
Jerry Yuab082902021-12-23 18:02:22 +080012406requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Norbert Fabritiusc93fc862023-04-12 09:50:30 +020012407requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Manuel Pégourié-Gonnard18e519a2014-09-24 19:09:17 +020012408run_test "DTLS proxy: 3d, max handshake (FS, ticket + client auth)" \
12409 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012410 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=1 auth_mode=required" \
12411 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=1" \
Manuel Pégourié-Gonnard825a49e2014-09-23 11:00:37 +020012412 0 \
12413 -s "Extra-header:" \
12414 -c "HTTP/1.0 200 OK"
12415
Janos Follath74537a62016-09-02 13:45:28 +010012416client_needs_more_time 2
Jerry Yuab082902021-12-23 18:02:22 +080012417requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Norbert Fabritiusc93fc862023-04-12 09:50:30 +020012418requires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020012419run_test "DTLS proxy: 3d, max handshake, nbio" \
12420 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012421 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 nbio=2 tickets=1 \
Manuel Pégourié-Gonnard37a4de22014-10-01 16:38:03 +020012422 auth_mode=required" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012423 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 nbio=2 tickets=1" \
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020012424 0 \
12425 -s "Extra-header:" \
12426 -c "HTTP/1.0 200 OK"
12427
Janos Follath74537a62016-09-02 13:45:28 +010012428client_needs_more_time 4
Gilles Peskine2fe796f2022-02-25 19:51:52 +010012429requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard7a26d732014-10-02 14:50:46 +020012430run_test "DTLS proxy: 3d, min handshake, resumption" \
12431 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012432 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
Gilles Peskine02cd7162024-04-29 16:09:52 +020012433 psk=73776f726466697368 debug_level=3" \
12434 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=73776f726466697368 \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +010012435 debug_level=3 reconnect=1 skip_close_notify=1 read_timeout=1000 max_resend=10 \
Manuel Pégourié-Gonnard7a26d732014-10-02 14:50:46 +020012436 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
12437 0 \
12438 -s "a session has been resumed" \
12439 -c "a session has been resumed" \
12440 -s "Extra-header:" \
12441 -c "HTTP/1.0 200 OK"
12442
Janos Follath74537a62016-09-02 13:45:28 +010012443client_needs_more_time 4
Gilles Peskine2fe796f2022-02-25 19:51:52 +010012444requires_config_enabled MBEDTLS_SSL_CACHE_C
Manuel Pégourié-Gonnard85beb302014-10-02 17:59:19 +020012445run_test "DTLS proxy: 3d, min handshake, resumption, nbio" \
12446 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012447 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
Gilles Peskine02cd7162024-04-29 16:09:52 +020012448 psk=73776f726466697368 debug_level=3 nbio=2" \
12449 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=73776f726466697368 \
Manuel Pégourié-Gonnard56941fe2020-02-17 11:04:33 +010012450 debug_level=3 reconnect=1 skip_close_notify=1 read_timeout=1000 max_resend=10 \
Manuel Pégourié-Gonnard85beb302014-10-02 17:59:19 +020012451 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8 nbio=2" \
12452 0 \
12453 -s "a session has been resumed" \
12454 -c "a session has been resumed" \
12455 -s "Extra-header:" \
12456 -c "HTTP/1.0 200 OK"
12457
Janos Follath74537a62016-09-02 13:45:28 +010012458client_needs_more_time 4
Hanno Becker6a243642017-10-12 15:18:45 +010012459requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020012460run_test "DTLS proxy: 3d, min handshake, client-initiated renego" \
Manuel Pégourié-Gonnard1b753f12014-09-25 16:09:36 +020012461 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012462 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
Gilles Peskine02cd7162024-04-29 16:09:52 +020012463 psk=73776f726466697368 renegotiation=1 debug_level=2" \
12464 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=73776f726466697368 \
Manuel Pégourié-Gonnard37a4de22014-10-01 16:38:03 +020012465 renegotiate=1 debug_level=2 \
Manuel Pégourié-Gonnard1b753f12014-09-25 16:09:36 +020012466 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
12467 0 \
12468 -c "=> renegotiate" \
12469 -s "=> renegotiate" \
12470 -s "Extra-header:" \
12471 -c "HTTP/1.0 200 OK"
12472
Janos Follath74537a62016-09-02 13:45:28 +010012473client_needs_more_time 4
Hanno Becker6a243642017-10-12 15:18:45 +010012474requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020012475run_test "DTLS proxy: 3d, min handshake, client-initiated renego, nbio" \
12476 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012477 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
Gilles Peskine02cd7162024-04-29 16:09:52 +020012478 psk=73776f726466697368 renegotiation=1 debug_level=2" \
12479 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=73776f726466697368 \
Manuel Pégourié-Gonnard37a4de22014-10-01 16:38:03 +020012480 renegotiate=1 debug_level=2 \
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020012481 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
12482 0 \
12483 -c "=> renegotiate" \
12484 -s "=> renegotiate" \
12485 -s "Extra-header:" \
12486 -c "HTTP/1.0 200 OK"
12487
Janos Follath74537a62016-09-02 13:45:28 +010012488client_needs_more_time 4
Hanno Becker6a243642017-10-12 15:18:45 +010012489requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +020012490run_test "DTLS proxy: 3d, min handshake, server-initiated renego" \
Manuel Pégourié-Gonnarda6ace042014-10-15 12:44:41 +020012491 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012492 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
Gilles Peskine02cd7162024-04-29 16:09:52 +020012493 psk=73776f726466697368 renegotiate=1 renegotiation=1 exchanges=4 \
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +020012494 debug_level=2" \
Gilles Peskine02cd7162024-04-29 16:09:52 +020012495 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=73776f726466697368 \
Manuel Pégourié-Gonnarda6ace042014-10-15 12:44:41 +020012496 renegotiation=1 exchanges=4 debug_level=2 \
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +020012497 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
12498 0 \
12499 -c "=> renegotiate" \
12500 -s "=> renegotiate" \
12501 -s "Extra-header:" \
12502 -c "HTTP/1.0 200 OK"
12503
Janos Follath74537a62016-09-02 13:45:28 +010012504client_needs_more_time 4
Hanno Becker6a243642017-10-12 15:18:45 +010012505requires_config_enabled MBEDTLS_SSL_RENEGOTIATION
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +020012506run_test "DTLS proxy: 3d, min handshake, server-initiated renego, nbio" \
Manuel Pégourié-Gonnarda6ace042014-10-15 12:44:41 +020012507 -p "$P_PXY drop=5 delay=5 duplicate=5" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012508 "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
Gilles Peskine02cd7162024-04-29 16:09:52 +020012509 psk=73776f726466697368 renegotiate=1 renegotiation=1 exchanges=4 \
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +020012510 debug_level=2 nbio=2" \
Gilles Peskine02cd7162024-04-29 16:09:52 +020012511 "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=73776f726466697368 \
Manuel Pégourié-Gonnarda6ace042014-10-15 12:44:41 +020012512 renegotiation=1 exchanges=4 debug_level=2 nbio=2 \
Manuel Pégourié-Gonnardba958b82014-10-09 16:13:44 +020012513 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
12514 0 \
12515 -c "=> renegotiate" \
12516 -s "=> renegotiate" \
12517 -s "Extra-header:" \
12518 -c "HTTP/1.0 200 OK"
12519
Zhangsen Wang87a9c862022-06-28 06:10:35 +000012520## The three tests below require 1.1.1a or higher version of openssl, otherwise
12521## it might trigger a bug due to openssl (https://github.com/openssl/openssl/issues/6902)
12522## Besides, openssl should use dtls1_2 or dtls, otherwise it will cause "SSL alert number 70" error
12523requires_openssl_next
Janos Follath74537a62016-09-02 13:45:28 +010012524client_needs_more_time 6
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +020012525not_with_valgrind # risk of non-mbedtls peer timing out
Jerry Yuab082902021-12-23 18:02:22 +080012526requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +020012527run_test "DTLS proxy: 3d, openssl server" \
Manuel Pégourié-Gonnardd0fd1da2014-09-25 17:00:27 +020012528 -p "$P_PXY drop=5 delay=5 duplicate=5 protect_hvr=1" \
Valerio Setti2f8eb622023-03-16 13:04:44 +010012529 "$O_NEXT_SRV -dtls1_2 -mtu 2048" \
12530 "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000 tickets=0" \
Manuel Pégourié-Gonnardd0fd1da2014-09-25 17:00:27 +020012531 0 \
Manuel Pégourié-Gonnardd0fd1da2014-09-25 17:00:27 +020012532 -c "HTTP/1.0 200 OK"
12533
Zhangsen Wang87a9c862022-06-28 06:10:35 +000012534requires_openssl_next
Janos Follath74537a62016-09-02 13:45:28 +010012535client_needs_more_time 8
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +020012536not_with_valgrind # risk of non-mbedtls peer timing out
Jerry Yuab082902021-12-23 18:02:22 +080012537requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +020012538run_test "DTLS proxy: 3d, openssl server, fragmentation" \
12539 -p "$P_PXY drop=5 delay=5 duplicate=5 protect_hvr=1" \
Zhangsen Wang87a9c862022-06-28 06:10:35 +000012540 "$O_NEXT_SRV -dtls1_2 -mtu 768" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012541 "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000 tickets=0" \
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +020012542 0 \
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +020012543 -c "HTTP/1.0 200 OK"
12544
Zhangsen Wang87a9c862022-06-28 06:10:35 +000012545requires_openssl_next
Janos Follath74537a62016-09-02 13:45:28 +010012546client_needs_more_time 8
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +020012547not_with_valgrind # risk of non-mbedtls peer timing out
Jerry Yuab082902021-12-23 18:02:22 +080012548requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020012549run_test "DTLS proxy: 3d, openssl server, fragmentation, nbio" \
12550 -p "$P_PXY drop=5 delay=5 duplicate=5 protect_hvr=1" \
Zhangsen Wang87a9c862022-06-28 06:10:35 +000012551 "$O_NEXT_SRV -dtls1_2 -mtu 768" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012552 "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000 nbio=2 tickets=0" \
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020012553 0 \
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020012554 -c "HTTP/1.0 200 OK"
12555
Manuel Pégourié-Gonnard96999962015-02-17 16:02:37 +000012556requires_gnutls
Janos Follath74537a62016-09-02 13:45:28 +010012557client_needs_more_time 6
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +020012558not_with_valgrind # risk of non-mbedtls peer timing out
Jerry Yuab082902021-12-23 18:02:22 +080012559requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +020012560run_test "DTLS proxy: 3d, gnutls server" \
12561 -p "$P_PXY drop=5 delay=5 duplicate=5" \
12562 "$G_SRV -u --mtu 2048 -a" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012563 "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000" \
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +020012564 0 \
12565 -s "Extra-header:" \
12566 -c "Extra-header:"
12567
k-stachowiak17a38d32019-02-18 15:29:56 +010012568requires_gnutls_next
Janos Follath74537a62016-09-02 13:45:28 +010012569client_needs_more_time 8
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +020012570not_with_valgrind # risk of non-mbedtls peer timing out
Jerry Yuab082902021-12-23 18:02:22 +080012571requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +020012572run_test "DTLS proxy: 3d, gnutls server, fragmentation" \
12573 -p "$P_PXY drop=5 delay=5 duplicate=5" \
k-stachowiak17a38d32019-02-18 15:29:56 +010012574 "$G_NEXT_SRV -u --mtu 512" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012575 "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000" \
Manuel Pégourié-Gonnard9590e0a2014-09-26 16:27:59 +020012576 0 \
12577 -s "Extra-header:" \
12578 -c "Extra-header:"
12579
k-stachowiak17a38d32019-02-18 15:29:56 +010012580requires_gnutls_next
Janos Follath74537a62016-09-02 13:45:28 +010012581client_needs_more_time 8
Manuel Pégourié-Gonnardd68434e2015-08-31 12:48:22 +020012582not_with_valgrind # risk of non-mbedtls peer timing out
Jerry Yuab082902021-12-23 18:02:22 +080012583requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020012584run_test "DTLS proxy: 3d, gnutls server, fragmentation, nbio" \
12585 -p "$P_PXY drop=5 delay=5 duplicate=5" \
k-stachowiak17a38d32019-02-18 15:29:56 +010012586 "$G_NEXT_SRV -u --mtu 512" \
Andrzej Kurek948fe802018-10-05 15:42:44 -040012587 "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000 nbio=2" \
Manuel Pégourié-Gonnard6093d812014-09-29 17:52:57 +020012588 0 \
12589 -s "Extra-header:" \
12590 -c "Extra-header:"
12591
Jerry Yuab082902021-12-23 18:02:22 +080012592requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Ron Eldorf75e2522019-05-14 20:38:49 +030012593run_test "export keys functionality" \
12594 "$P_SRV eap_tls=1 debug_level=3" \
Ronald Cronf95d1692023-03-14 17:19:42 +010012595 "$P_CLI force_version=tls12 eap_tls=1 debug_level=3" \
Ron Eldorf75e2522019-05-14 20:38:49 +030012596 0 \
Ron Eldor65d8c262019-06-04 13:05:36 +030012597 -c "EAP-TLS key material is:"\
12598 -s "EAP-TLS key material is:"\
12599 -c "EAP-TLS IV is:" \
12600 -s "EAP-TLS IV is:"
Ron Eldorf75e2522019-05-14 20:38:49 +030012601
Jerry Yu04029792021-08-10 16:45:37 +080012602# openssl feature tests: check if tls1.3 exists.
12603requires_openssl_tls1_3
Jerry Yuc502dff2021-12-03 10:04:08 +080012604run_test "TLS 1.3: Test openssl tls1_3 feature" \
Jerry Yu04029792021-08-10 16:45:37 +080012605 "$O_NEXT_SRV -tls1_3 -msg" \
12606 "$O_NEXT_CLI -tls1_3 -msg" \
12607 0 \
12608 -c "TLS 1.3" \
12609 -s "TLS 1.3"
12610
Jerry Yu75261df2021-09-02 17:40:08 +080012611# gnutls feature tests: check if TLS 1.3 is supported as well as the NO_TICKETS and DISABLE_TLS13_COMPAT_MODE options.
Jerry Yu04029792021-08-10 16:45:37 +080012612requires_gnutls_tls1_3
Jerry Yub12d81d2021-08-17 10:56:08 +080012613requires_gnutls_next_no_ticket
12614requires_gnutls_next_disable_tls13_compat
Jerry Yuc502dff2021-12-03 10:04:08 +080012615run_test "TLS 1.3: Test gnutls tls1_3 feature" \
Jerry Yu937ac672021-10-28 17:39:28 +080012616 "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE --disable-client-cert " \
Jerry Yub12d81d2021-08-17 10:56:08 +080012617 "$G_NEXT_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE -V" \
Jerry Yu04029792021-08-10 16:45:37 +080012618 0 \
12619 -s "Version: TLS1.3" \
12620 -c "Version: TLS1.3"
12621
Jerry Yuc46e9b42021-08-06 11:22:24 +080012622# TLS1.3 test cases
Ronald Cronb18c67a2023-02-16 16:57:16 +010012623requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
12624requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Cron4bb67732023-02-16 15:51:18 +010012625requires_ciphersuite_enabled TLS1-3-CHACHA20-POLY1305-SHA256
Valerio Setticf29c5d2023-09-01 09:03:41 +020012626requires_any_configs_enabled "PSA_WANT_ECC_MONTGOMERY_255"
12627requires_any_configs_enabled "PSA_WANT_ECC_SECP_R1_256"
Ronald Cronb18c67a2023-02-16 16:57:16 +010012628run_test "TLS 1.3: Default" \
David Horstmann5ab92be2024-07-01 17:01:28 +010012629 "$P_SRV allow_sha1=0 debug_level=3 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key force_version=tls13" \
Ronald Cronb18c67a2023-02-16 16:57:16 +010012630 "$P_CLI allow_sha1=0" \
12631 0 \
12632 -s "Protocol is TLSv1.3" \
Ronald Cron4bb67732023-02-16 15:51:18 +010012633 -s "Ciphersuite is TLS1-3-CHACHA20-POLY1305-SHA256" \
Przemek Stekiel1f5c2ba2023-06-15 17:04:44 +020012634 -s "ECDH/FFDH group: " \
Ronald Cronb18c67a2023-02-16 16:57:16 +010012635 -s "selected signature algorithm ecdsa_secp256r1_sha256"
12636
Ronald Cron587cfe62024-02-08 08:56:09 +010012637requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
12638requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
12639requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12640requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
12641run_test "Establish TLS 1.2 then TLS 1.3 session" \
12642 "$P_SRV" \
12643 "( $P_CLI force_version=tls12; \
12644 $P_CLI force_version=tls13 )" \
12645 0 \
12646 -s "Protocol is TLSv1.2" \
12647 -s "Protocol is TLSv1.3" \
12648
Ronald Cron90abb222024-02-08 09:02:49 +010012649requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
12650requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
12651requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12652requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
12653run_test "Establish TLS 1.3 then TLS 1.2 session" \
12654 "$P_SRV" \
12655 "( $P_CLI force_version=tls13; \
12656 $P_CLI force_version=tls12 )" \
12657 0 \
12658 -s "Protocol is TLSv1.3" \
12659 -s "Protocol is TLSv1.2" \
12660
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020012661requires_openssl_tls1_3_with_compatible_ephemeral
Ronald Cron7c0185f2021-11-30 09:16:24 +010012662requires_config_enabled MBEDTLS_DEBUG_C
12663requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +020012664requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yuc502dff2021-12-03 10:04:08 +080012665run_test "TLS 1.3: minimal feature sets - openssl" \
Ronald Cronfdb0e3f2021-12-09 10:39:19 +010012666 "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache" \
Ronald Crona1b8f6e2022-03-18 14:04:12 +010012667 "$P_CLI debug_level=3" \
Jerry Yue1b1e2d2021-10-29 17:46:32 +080012668 0 \
Ronald Cron27c85e72022-03-08 11:37:55 +010012669 -c "client state: MBEDTLS_SSL_HELLO_REQUEST" \
12670 -c "client state: MBEDTLS_SSL_SERVER_HELLO" \
12671 -c "client state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
12672 -c "client state: MBEDTLS_SSL_CERTIFICATE_REQUEST" \
12673 -c "client state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
12674 -c "client state: MBEDTLS_SSL_CERTIFICATE_VERIFY" \
12675 -c "client state: MBEDTLS_SSL_SERVER_FINISHED" \
12676 -c "client state: MBEDTLS_SSL_CLIENT_FINISHED" \
12677 -c "client state: MBEDTLS_SSL_FLUSH_BUFFERS" \
12678 -c "client state: MBEDTLS_SSL_HANDSHAKE_WRAPUP" \
Xiaofei Bai746f9482021-11-12 08:53:56 +000012679 -c "<= ssl_tls13_process_server_hello" \
Ronald Cron4bb67732023-02-16 15:51:18 +010012680 -c "server hello, chosen ciphersuite: ( 1303 ) - TLS1-3-CHACHA20-POLY1305-SHA256" \
Przemek Stekiel1f5c2ba2023-06-15 17:04:44 +020012681 -c "DHE group name: " \
Xiaofei Bai746f9482021-11-12 08:53:56 +000012682 -c "=> ssl_tls13_process_server_hello" \
Ronald Cron27c85e72022-03-08 11:37:55 +010012683 -c "<= parse encrypted extensions" \
Jerry Yu834886d2021-10-30 13:26:15 +080012684 -c "Certificate verification flags clear" \
Ronald Cron27c85e72022-03-08 11:37:55 +010012685 -c "=> parse certificate verify" \
12686 -c "<= parse certificate verify" \
XiaokangQiand0aa3e92021-11-10 06:17:40 +000012687 -c "mbedtls_ssl_tls13_process_certificate_verify() returned 0" \
Jerry Yu6d38c192021-11-15 14:01:04 +080012688 -c "<= parse finished message" \
Gilles Peskinec63a1e02022-01-13 01:10:24 +010012689 -c "Protocol is TLSv1.3" \
Jerry Yu6d38c192021-11-15 14:01:04 +080012690 -c "HTTP/1.0 200 ok"
Jerry Yued2ef2d2021-08-19 18:11:43 +080012691
Jerry Yu76e31ec2021-09-22 21:16:27 +080012692requires_gnutls_tls1_3
Jerry Yu937ac672021-10-28 17:39:28 +080012693requires_gnutls_next_no_ticket
Ronald Cron7c0185f2021-11-30 09:16:24 +010012694requires_config_enabled MBEDTLS_DEBUG_C
12695requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +020012696requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yuc502dff2021-12-03 10:04:08 +080012697run_test "TLS 1.3: minimal feature sets - gnutls" \
Ronald Cronfdb0e3f2021-12-09 10:39:19 +010012698 "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS --disable-client-cert" \
Ronald Crona1b8f6e2022-03-18 14:04:12 +010012699 "$P_CLI debug_level=3" \
Jerry Yue1b1e2d2021-10-29 17:46:32 +080012700 0 \
Ronald Cron27c85e72022-03-08 11:37:55 +010012701 -s "SERVER HELLO was queued" \
12702 -c "client state: MBEDTLS_SSL_HELLO_REQUEST" \
12703 -c "client state: MBEDTLS_SSL_SERVER_HELLO" \
12704 -c "client state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
12705 -c "client state: MBEDTLS_SSL_CERTIFICATE_REQUEST" \
12706 -c "client state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
12707 -c "client state: MBEDTLS_SSL_CERTIFICATE_VERIFY" \
12708 -c "client state: MBEDTLS_SSL_SERVER_FINISHED" \
12709 -c "client state: MBEDTLS_SSL_CLIENT_FINISHED" \
12710 -c "client state: MBEDTLS_SSL_FLUSH_BUFFERS" \
12711 -c "client state: MBEDTLS_SSL_HANDSHAKE_WRAPUP" \
Xiaofei Bai746f9482021-11-12 08:53:56 +000012712 -c "<= ssl_tls13_process_server_hello" \
Ronald Cron4bb67732023-02-16 15:51:18 +010012713 -c "server hello, chosen ciphersuite: ( 1303 ) - TLS1-3-CHACHA20-POLY1305-SHA256" \
Przemek Stekiel1f5c2ba2023-06-15 17:04:44 +020012714 -c "DHE group name: " \
Xiaofei Bai746f9482021-11-12 08:53:56 +000012715 -c "=> ssl_tls13_process_server_hello" \
Ronald Cron27c85e72022-03-08 11:37:55 +010012716 -c "<= parse encrypted extensions" \
Jerry Yu834886d2021-10-30 13:26:15 +080012717 -c "Certificate verification flags clear" \
Ronald Cron27c85e72022-03-08 11:37:55 +010012718 -c "=> parse certificate verify" \
12719 -c "<= parse certificate verify" \
XiaokangQiand0aa3e92021-11-10 06:17:40 +000012720 -c "mbedtls_ssl_tls13_process_certificate_verify() returned 0" \
Jerry Yu6d38c192021-11-15 14:01:04 +080012721 -c "<= parse finished message" \
Gilles Peskine860429f2022-02-12 00:44:48 +010012722 -c "Protocol is TLSv1.3" \
Jerry Yu6d38c192021-11-15 14:01:04 +080012723 -c "HTTP/1.0 200 OK"
XiaokangQiand0aa3e92021-11-10 06:17:40 +000012724
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020012725requires_openssl_tls1_3_with_compatible_ephemeral
lhuang0486cacac2022-01-21 07:34:27 -080012726requires_config_enabled MBEDTLS_DEBUG_C
12727requires_config_enabled MBEDTLS_SSL_CLI_C
12728requires_config_enabled MBEDTLS_SSL_ALPN
Gilles Peskine365296a2024-09-13 14:15:46 +020012729requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
lhuang0486cacac2022-01-21 07:34:27 -080012730run_test "TLS 1.3: alpn - openssl" \
12731 "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -alpn h2" \
Ronald Crona1b8f6e2022-03-18 14:04:12 +010012732 "$P_CLI debug_level=3 alpn=h2" \
lhuang0486cacac2022-01-21 07:34:27 -080012733 0 \
Ronald Cron27c85e72022-03-08 11:37:55 +010012734 -c "client state: MBEDTLS_SSL_HELLO_REQUEST" \
12735 -c "client state: MBEDTLS_SSL_SERVER_HELLO" \
12736 -c "client state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
12737 -c "client state: MBEDTLS_SSL_CERTIFICATE_REQUEST" \
12738 -c "client state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
12739 -c "client state: MBEDTLS_SSL_CERTIFICATE_VERIFY" \
12740 -c "client state: MBEDTLS_SSL_SERVER_FINISHED" \
12741 -c "client state: MBEDTLS_SSL_CLIENT_FINISHED" \
12742 -c "client state: MBEDTLS_SSL_FLUSH_BUFFERS" \
12743 -c "client state: MBEDTLS_SSL_HANDSHAKE_WRAPUP" \
lhuang0486cacac2022-01-21 07:34:27 -080012744 -c "<= ssl_tls13_process_server_hello" \
Ronald Cron4bb67732023-02-16 15:51:18 +010012745 -c "server hello, chosen ciphersuite: ( 1303 ) - TLS1-3-CHACHA20-POLY1305-SHA256" \
Przemek Stekiel1f5c2ba2023-06-15 17:04:44 +020012746 -c "DHE group name: " \
lhuang0486cacac2022-01-21 07:34:27 -080012747 -c "=> ssl_tls13_process_server_hello" \
Ronald Cron27c85e72022-03-08 11:37:55 +010012748 -c "<= parse encrypted extensions" \
lhuang0486cacac2022-01-21 07:34:27 -080012749 -c "Certificate verification flags clear" \
Ronald Cron27c85e72022-03-08 11:37:55 +010012750 -c "=> parse certificate verify" \
12751 -c "<= parse certificate verify" \
lhuang0486cacac2022-01-21 07:34:27 -080012752 -c "mbedtls_ssl_tls13_process_certificate_verify() returned 0" \
12753 -c "<= parse finished message" \
Ronald Crona1b8f6e2022-03-18 14:04:12 +010012754 -c "Protocol is TLSv1.3" \
lhuang0486cacac2022-01-21 07:34:27 -080012755 -c "HTTP/1.0 200 ok" \
12756 -c "Application Layer Protocol is h2"
12757
12758requires_gnutls_tls1_3
12759requires_gnutls_next_no_ticket
lhuang0486cacac2022-01-21 07:34:27 -080012760requires_config_enabled MBEDTLS_DEBUG_C
12761requires_config_enabled MBEDTLS_SSL_CLI_C
12762requires_config_enabled MBEDTLS_SSL_ALPN
Gilles Peskine365296a2024-09-13 14:15:46 +020012763requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
lhuang0486cacac2022-01-21 07:34:27 -080012764run_test "TLS 1.3: alpn - gnutls" \
12765 "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS --disable-client-cert --alpn=h2" \
Ronald Crona1b8f6e2022-03-18 14:04:12 +010012766 "$P_CLI debug_level=3 alpn=h2" \
lhuang0486cacac2022-01-21 07:34:27 -080012767 0 \
Ronald Cron27c85e72022-03-08 11:37:55 +010012768 -s "SERVER HELLO was queued" \
12769 -c "client state: MBEDTLS_SSL_HELLO_REQUEST" \
12770 -c "client state: MBEDTLS_SSL_SERVER_HELLO" \
12771 -c "client state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
12772 -c "client state: MBEDTLS_SSL_CERTIFICATE_REQUEST" \
12773 -c "client state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
12774 -c "client state: MBEDTLS_SSL_CERTIFICATE_VERIFY" \
12775 -c "client state: MBEDTLS_SSL_SERVER_FINISHED" \
12776 -c "client state: MBEDTLS_SSL_CLIENT_FINISHED" \
12777 -c "client state: MBEDTLS_SSL_FLUSH_BUFFERS" \
12778 -c "client state: MBEDTLS_SSL_HANDSHAKE_WRAPUP" \
lhuang0486cacac2022-01-21 07:34:27 -080012779 -c "<= ssl_tls13_process_server_hello" \
Ronald Cron4bb67732023-02-16 15:51:18 +010012780 -c "server hello, chosen ciphersuite: ( 1303 ) - TLS1-3-CHACHA20-POLY1305-SHA256" \
Przemek Stekiel1f5c2ba2023-06-15 17:04:44 +020012781 -c "DHE group name: " \
lhuang0486cacac2022-01-21 07:34:27 -080012782 -c "=> ssl_tls13_process_server_hello" \
Ronald Cron27c85e72022-03-08 11:37:55 +010012783 -c "<= parse encrypted extensions" \
lhuang0486cacac2022-01-21 07:34:27 -080012784 -c "Certificate verification flags clear" \
Ronald Cron27c85e72022-03-08 11:37:55 +010012785 -c "=> parse certificate verify" \
12786 -c "<= parse certificate verify" \
lhuang0486cacac2022-01-21 07:34:27 -080012787 -c "mbedtls_ssl_tls13_process_certificate_verify() returned 0" \
12788 -c "<= parse finished message" \
Ronald Crona1b8f6e2022-03-18 14:04:12 +010012789 -c "Protocol is TLSv1.3" \
lhuang0486cacac2022-01-21 07:34:27 -080012790 -c "HTTP/1.0 200 OK" \
12791 -c "Application Layer Protocol is h2"
12792
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020012793requires_openssl_tls1_3_with_compatible_ephemeral
XiaokangQianacb39922022-06-17 10:18:48 +000012794requires_config_enabled MBEDTLS_DEBUG_C
XiaokangQian95d5f542022-06-24 02:29:26 +000012795requires_config_enabled MBEDTLS_SSL_SRV_C
XiaokangQianacb39922022-06-17 10:18:48 +000012796requires_config_enabled MBEDTLS_SSL_ALPN
Ronald Cron928cbd32022-10-04 16:14:26 +020012797requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
XiaokangQianacb39922022-06-17 10:18:48 +000012798run_test "TLS 1.3: server alpn - openssl" \
David Horstmann5ab92be2024-07-01 17:01:28 +010012799 "$P_SRV debug_level=3 tickets=0 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key alpn=h2" \
XiaokangQianacb39922022-06-17 10:18:48 +000012800 "$O_NEXT_CLI -msg -tls1_3 -no_middlebox -alpn h2" \
12801 0 \
XiaokangQianc7403452022-06-23 03:24:12 +000012802 -s "found alpn extension" \
12803 -s "server side, adding alpn extension" \
12804 -s "Protocol is TLSv1.3" \
12805 -s "HTTP/1.0 200 OK" \
12806 -s "Application Layer Protocol is h2"
12807
12808requires_gnutls_tls1_3
XiaokangQianc7403452022-06-23 03:24:12 +000012809requires_config_enabled MBEDTLS_DEBUG_C
XiaokangQian95d5f542022-06-24 02:29:26 +000012810requires_config_enabled MBEDTLS_SSL_SRV_C
XiaokangQianc7403452022-06-23 03:24:12 +000012811requires_config_enabled MBEDTLS_SSL_ALPN
Ronald Cron928cbd32022-10-04 16:14:26 +020012812requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
XiaokangQianc7403452022-06-23 03:24:12 +000012813run_test "TLS 1.3: server alpn - gnutls" \
David Horstmann5ab92be2024-07-01 17:01:28 +010012814 "$P_SRV debug_level=3 tickets=0 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key alpn=h2" \
XiaokangQianc7403452022-06-23 03:24:12 +000012815 "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE -V --alpn h2" \
12816 0 \
XiaokangQianacb39922022-06-17 10:18:48 +000012817 -s "found alpn extension" \
12818 -s "server side, adding alpn extension" \
12819 -s "Protocol is TLSv1.3" \
12820 -s "HTTP/1.0 200 OK" \
12821 -s "Application Layer Protocol is h2"
12822
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020012823requires_openssl_tls1_3_with_compatible_ephemeral
Jerry Yuaa6214a2022-01-30 19:53:28 +080012824requires_config_enabled MBEDTLS_DEBUG_C
12825requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +020012826requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yu6c3d8212022-02-18 15:23:23 +080012827run_test "TLS 1.3: Client authentication, no client certificate - openssl" \
Jerry Yu819f2972022-02-22 10:14:24 +080012828 "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -verify 10" \
Ronald Crona1b8f6e2022-03-18 14:04:12 +010012829 "$P_CLI debug_level=4 crt_file=none key_file=none" \
Jerry Yuaa6214a2022-01-30 19:53:28 +080012830 0 \
Jerry Yuaa6214a2022-01-30 19:53:28 +080012831 -c "got a certificate request" \
Jerry Yu6c3d8212022-02-18 15:23:23 +080012832 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
12833 -s "TLS 1.3" \
Jerry Yu562a0fd2022-02-18 15:35:11 +080012834 -c "HTTP/1.0 200 ok" \
12835 -c "Protocol is TLSv1.3"
Jerry Yu6c3d8212022-02-18 15:23:23 +080012836
12837requires_gnutls_tls1_3
12838requires_gnutls_next_no_ticket
Jerry Yu6c3d8212022-02-18 15:23:23 +080012839requires_config_enabled MBEDTLS_DEBUG_C
12840requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +020012841requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yu6c3d8212022-02-18 15:23:23 +080012842run_test "TLS 1.3: Client authentication, no client certificate - gnutls" \
Jerry Yu819f2972022-02-22 10:14:24 +080012843 "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS --verify-client-cert" \
Ronald Crona1b8f6e2022-03-18 14:04:12 +010012844 "$P_CLI debug_level=3 crt_file=none key_file=none" \
Jerry Yu6c3d8212022-02-18 15:23:23 +080012845 0 \
12846 -c "got a certificate request" \
12847 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE"\
12848 -s "Version: TLS1.3" \
Jerry Yu562a0fd2022-02-18 15:35:11 +080012849 -c "HTTP/1.0 200 OK" \
12850 -c "Protocol is TLSv1.3"
12851
Jerry Yuaa6214a2022-01-30 19:53:28 +080012852
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020012853requires_openssl_tls1_3_with_compatible_ephemeral
Jerry Yu960bc282022-01-26 11:12:34 +080012854requires_config_enabled MBEDTLS_DEBUG_C
12855requires_config_enabled MBEDTLS_SSL_CLI_C
Ronald Cron928cbd32022-10-04 16:14:26 +020012856requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yu819f2972022-02-22 10:14:24 +080012857run_test "TLS 1.3: Client authentication, no server middlebox compat - openssl" \
Jerry Yu960bc282022-01-26 11:12:34 +080012858 "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10 -no_middlebox" \
David Horstmann5ab92be2024-07-01 17:01:28 +010012859 "$P_CLI debug_level=4 crt_file=$DATA_FILES_PATH/cli2.crt key_file=$DATA_FILES_PATH/cli2.key" \
Jerry Yuc19884f2022-01-29 10:44:44 +080012860 0 \
Jerry Yu960bc282022-01-26 11:12:34 +080012861 -c "got a certificate request" \
Jerry Yu200b47b2022-01-28 14:26:30 +080012862 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
Jerry Yu562a0fd2022-02-18 15:35:11 +080012863 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
12864 -c "Protocol is TLSv1.3"
Jerry Yu960bc282022-01-26 11:12:34 +080012865
12866requires_gnutls_tls1_3
12867requires_gnutls_next_no_ticket
Jerry Yu960bc282022-01-26 11:12:34 +080012868requires_config_enabled MBEDTLS_DEBUG_C
12869requires_config_enabled MBEDTLS_SSL_CLI_C
Ronald Cron928cbd32022-10-04 16:14:26 +020012870requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yu819f2972022-02-22 10:14:24 +080012871run_test "TLS 1.3: Client authentication, no server middlebox compat - gnutls" \
Jerry Yu960bc282022-01-26 11:12:34 +080012872 "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE" \
David Horstmann5ab92be2024-07-01 17:01:28 +010012873 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/cli2.crt \
12874 key_file=$DATA_FILES_PATH/cli2.key" \
Jerry Yuc19884f2022-01-29 10:44:44 +080012875 0 \
Jerry Yu960bc282022-01-26 11:12:34 +080012876 -c "got a certificate request" \
Jerry Yu200b47b2022-01-28 14:26:30 +080012877 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
Jerry Yu562a0fd2022-02-18 15:35:11 +080012878 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
12879 -c "Protocol is TLSv1.3"
Jerry Yu200b47b2022-01-28 14:26:30 +080012880
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020012881requires_openssl_tls1_3_with_compatible_ephemeral
Jerry Yu200b47b2022-01-28 14:26:30 +080012882requires_config_enabled MBEDTLS_DEBUG_C
12883requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +020012884requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yu6c3d8212022-02-18 15:23:23 +080012885run_test "TLS 1.3: Client authentication, ecdsa_secp256r1_sha256 - openssl" \
Jerry Yu819f2972022-02-22 10:14:24 +080012886 "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10" \
David Horstmann5ab92be2024-07-01 17:01:28 +010012887 "$P_CLI debug_level=4 crt_file=$DATA_FILES_PATH/ecdsa_secp256r1.crt \
12888 key_file=$DATA_FILES_PATH/ecdsa_secp256r1.key" \
Jerry Yu6c3d8212022-02-18 15:23:23 +080012889 0 \
12890 -c "got a certificate request" \
12891 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
Jerry Yu562a0fd2022-02-18 15:35:11 +080012892 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
12893 -c "Protocol is TLSv1.3"
Jerry Yu6c3d8212022-02-18 15:23:23 +080012894
12895requires_gnutls_tls1_3
12896requires_gnutls_next_no_ticket
Jerry Yu6c3d8212022-02-18 15:23:23 +080012897requires_config_enabled MBEDTLS_DEBUG_C
12898requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +020012899requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yu6c3d8212022-02-18 15:23:23 +080012900run_test "TLS 1.3: Client authentication, ecdsa_secp256r1_sha256 - gnutls" \
Jerry Yu819f2972022-02-22 10:14:24 +080012901 "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS" \
David Horstmann5ab92be2024-07-01 17:01:28 +010012902 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/ecdsa_secp256r1.crt \
12903 key_file=$DATA_FILES_PATH/ecdsa_secp256r1.key" \
Jerry Yu6c3d8212022-02-18 15:23:23 +080012904 0 \
12905 -c "got a certificate request" \
12906 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
Jerry Yu562a0fd2022-02-18 15:35:11 +080012907 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
12908 -c "Protocol is TLSv1.3"
Jerry Yu6c3d8212022-02-18 15:23:23 +080012909
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020012910requires_openssl_tls1_3_with_compatible_ephemeral
Jerry Yu6c3d8212022-02-18 15:23:23 +080012911requires_config_enabled MBEDTLS_DEBUG_C
12912requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +020012913requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yu6c3d8212022-02-18 15:23:23 +080012914run_test "TLS 1.3: Client authentication, ecdsa_secp384r1_sha384 - openssl" \
Jerry Yu819f2972022-02-22 10:14:24 +080012915 "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10" \
David Horstmann5ab92be2024-07-01 17:01:28 +010012916 "$P_CLI debug_level=4 crt_file=$DATA_FILES_PATH/ecdsa_secp384r1.crt \
12917 key_file=$DATA_FILES_PATH/ecdsa_secp384r1.key" \
Jerry Yu6c3d8212022-02-18 15:23:23 +080012918 0 \
12919 -c "got a certificate request" \
12920 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
Jerry Yu562a0fd2022-02-18 15:35:11 +080012921 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
12922 -c "Protocol is TLSv1.3"
Jerry Yu6c3d8212022-02-18 15:23:23 +080012923
12924requires_gnutls_tls1_3
12925requires_gnutls_next_no_ticket
Jerry Yu6c3d8212022-02-18 15:23:23 +080012926requires_config_enabled MBEDTLS_DEBUG_C
12927requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +020012928requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yu6c3d8212022-02-18 15:23:23 +080012929run_test "TLS 1.3: Client authentication, ecdsa_secp384r1_sha384 - gnutls" \
Jerry Yu819f2972022-02-22 10:14:24 +080012930 "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS" \
David Horstmann5ab92be2024-07-01 17:01:28 +010012931 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/ecdsa_secp384r1.crt \
12932 key_file=$DATA_FILES_PATH/ecdsa_secp384r1.key" \
Jerry Yu6c3d8212022-02-18 15:23:23 +080012933 0 \
12934 -c "got a certificate request" \
12935 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
Jerry Yu562a0fd2022-02-18 15:35:11 +080012936 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
12937 -c "Protocol is TLSv1.3"
Jerry Yu6c3d8212022-02-18 15:23:23 +080012938
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020012939requires_openssl_tls1_3_with_compatible_ephemeral
Jerry Yu6c3d8212022-02-18 15:23:23 +080012940requires_config_enabled MBEDTLS_DEBUG_C
12941requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +020012942requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yu6c3d8212022-02-18 15:23:23 +080012943run_test "TLS 1.3: Client authentication, ecdsa_secp521r1_sha512 - openssl" \
Jerry Yu819f2972022-02-22 10:14:24 +080012944 "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10" \
David Horstmann5ab92be2024-07-01 17:01:28 +010012945 "$P_CLI debug_level=4 crt_file=$DATA_FILES_PATH/ecdsa_secp521r1.crt \
12946 key_file=$DATA_FILES_PATH/ecdsa_secp521r1.key" \
Jerry Yu6c3d8212022-02-18 15:23:23 +080012947 0 \
12948 -c "got a certificate request" \
12949 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
Jerry Yu562a0fd2022-02-18 15:35:11 +080012950 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
12951 -c "Protocol is TLSv1.3"
Jerry Yu6c3d8212022-02-18 15:23:23 +080012952
12953requires_gnutls_tls1_3
12954requires_gnutls_next_no_ticket
Jerry Yu6c3d8212022-02-18 15:23:23 +080012955requires_config_enabled MBEDTLS_DEBUG_C
12956requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +020012957requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yu6c3d8212022-02-18 15:23:23 +080012958run_test "TLS 1.3: Client authentication, ecdsa_secp521r1_sha512 - gnutls" \
Jerry Yu819f2972022-02-22 10:14:24 +080012959 "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS" \
David Horstmann5ab92be2024-07-01 17:01:28 +010012960 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/ecdsa_secp521r1.crt \
12961 key_file=$DATA_FILES_PATH/ecdsa_secp521r1.key" \
Jerry Yu6c3d8212022-02-18 15:23:23 +080012962 0 \
12963 -c "got a certificate request" \
12964 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
Jerry Yu562a0fd2022-02-18 15:35:11 +080012965 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
12966 -c "Protocol is TLSv1.3"
Jerry Yu6c3d8212022-02-18 15:23:23 +080012967
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020012968requires_openssl_tls1_3_with_compatible_ephemeral
Jerry Yu6c3d8212022-02-18 15:23:23 +080012969requires_config_enabled MBEDTLS_DEBUG_C
12970requires_config_enabled MBEDTLS_SSL_CLI_C
12971requires_config_enabled MBEDTLS_RSA_C
Gilles Peskine365296a2024-09-13 14:15:46 +020012972requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yu6c3d8212022-02-18 15:23:23 +080012973run_test "TLS 1.3: Client authentication, rsa_pss_rsae_sha256 - openssl" \
Jerry Yu819f2972022-02-22 10:14:24 +080012974 "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10" \
David Horstmann5ab92be2024-07-01 17:01:28 +010012975 "$P_CLI debug_level=4 crt_file=$DATA_FILES_PATH/cert_sha256.crt \
12976 key_file=$DATA_FILES_PATH/server1.key sig_algs=ecdsa_secp256r1_sha256,rsa_pss_rsae_sha256" \
Jerry Yu919130c2022-02-23 10:40:19 +080012977 0 \
Jerry Yu6c3d8212022-02-18 15:23:23 +080012978 -c "got a certificate request" \
12979 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
Jerry Yu562a0fd2022-02-18 15:35:11 +080012980 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
Jerry Yu919130c2022-02-23 10:40:19 +080012981 -c "Protocol is TLSv1.3"
Jerry Yu6c3d8212022-02-18 15:23:23 +080012982
12983requires_gnutls_tls1_3
12984requires_gnutls_next_no_ticket
Jerry Yu6c3d8212022-02-18 15:23:23 +080012985requires_config_enabled MBEDTLS_DEBUG_C
12986requires_config_enabled MBEDTLS_SSL_CLI_C
12987requires_config_enabled MBEDTLS_RSA_C
Gilles Peskine365296a2024-09-13 14:15:46 +020012988requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yu6c3d8212022-02-18 15:23:23 +080012989run_test "TLS 1.3: Client authentication, rsa_pss_rsae_sha256 - gnutls" \
Jerry Yu819f2972022-02-22 10:14:24 +080012990 "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS" \
David Horstmann5ab92be2024-07-01 17:01:28 +010012991 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/server2-sha256.crt \
12992 key_file=$DATA_FILES_PATH/server2.key sig_algs=ecdsa_secp256r1_sha256,rsa_pss_rsae_sha256" \
Jerry Yu919130c2022-02-23 10:40:19 +080012993 0 \
Jerry Yu6c3d8212022-02-18 15:23:23 +080012994 -c "got a certificate request" \
12995 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
Jerry Yu562a0fd2022-02-18 15:35:11 +080012996 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
Jerry Yu919130c2022-02-23 10:40:19 +080012997 -c "Protocol is TLSv1.3"
Jerry Yu960bc282022-01-26 11:12:34 +080012998
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020012999requires_openssl_tls1_3_with_compatible_ephemeral
Jerry Yu2124d052022-02-18 21:07:18 +080013000requires_config_enabled MBEDTLS_DEBUG_C
13001requires_config_enabled MBEDTLS_SSL_CLI_C
13002requires_config_enabled MBEDTLS_RSA_C
Gilles Peskine365296a2024-09-13 14:15:46 +020013003requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yu3a58b462022-02-22 16:42:29 +080013004run_test "TLS 1.3: Client authentication, rsa_pss_rsae_sha384 - openssl" \
13005 "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013006 "$P_CLI debug_level=4 crt_file=$DATA_FILES_PATH/cert_sha256.crt \
13007 key_file=$DATA_FILES_PATH/server1.key sig_algs=ecdsa_secp256r1_sha256,rsa_pss_rsae_sha384" \
Jerry Yu3a58b462022-02-22 16:42:29 +080013008 0 \
13009 -c "got a certificate request" \
13010 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
13011 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
13012 -c "Protocol is TLSv1.3"
13013
13014requires_gnutls_tls1_3
13015requires_gnutls_next_no_ticket
Jerry Yu3a58b462022-02-22 16:42:29 +080013016requires_config_enabled MBEDTLS_DEBUG_C
13017requires_config_enabled MBEDTLS_SSL_CLI_C
13018requires_config_enabled MBEDTLS_RSA_C
Gilles Peskine365296a2024-09-13 14:15:46 +020013019requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yu3a58b462022-02-22 16:42:29 +080013020run_test "TLS 1.3: Client authentication, rsa_pss_rsae_sha384 - gnutls" \
13021 "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013022 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/server2-sha256.crt \
13023 key_file=$DATA_FILES_PATH/server2.key sig_algs=ecdsa_secp256r1_sha256,rsa_pss_rsae_sha384" \
Jerry Yu3a58b462022-02-22 16:42:29 +080013024 0 \
13025 -c "got a certificate request" \
13026 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
13027 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
13028 -c "Protocol is TLSv1.3"
13029
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013030requires_openssl_tls1_3_with_compatible_ephemeral
Jerry Yu3a58b462022-02-22 16:42:29 +080013031requires_config_enabled MBEDTLS_DEBUG_C
13032requires_config_enabled MBEDTLS_SSL_CLI_C
13033requires_config_enabled MBEDTLS_RSA_C
Gilles Peskine365296a2024-09-13 14:15:46 +020013034requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yu3a58b462022-02-22 16:42:29 +080013035run_test "TLS 1.3: Client authentication, rsa_pss_rsae_sha512 - openssl" \
13036 "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013037 "$P_CLI debug_level=4 crt_file=$DATA_FILES_PATH/cert_sha256.crt \
13038 key_file=$DATA_FILES_PATH/server1.key sig_algs=ecdsa_secp256r1_sha256,rsa_pss_rsae_sha512" \
Jerry Yu3a58b462022-02-22 16:42:29 +080013039 0 \
13040 -c "got a certificate request" \
13041 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
13042 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
13043 -c "Protocol is TLSv1.3"
13044
13045requires_gnutls_tls1_3
13046requires_gnutls_next_no_ticket
Jerry Yu3a58b462022-02-22 16:42:29 +080013047requires_config_enabled MBEDTLS_DEBUG_C
13048requires_config_enabled MBEDTLS_SSL_CLI_C
13049requires_config_enabled MBEDTLS_RSA_C
Gilles Peskine365296a2024-09-13 14:15:46 +020013050requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yu3a58b462022-02-22 16:42:29 +080013051run_test "TLS 1.3: Client authentication, rsa_pss_rsae_sha512 - gnutls" \
13052 "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013053 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/server2-sha256.crt \
13054 key_file=$DATA_FILES_PATH/server2.key sig_algs=ecdsa_secp256r1_sha256,rsa_pss_rsae_sha512" \
Jerry Yu3a58b462022-02-22 16:42:29 +080013055 0 \
13056 -c "got a certificate request" \
13057 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
13058 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
13059 -c "Protocol is TLSv1.3"
13060
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013061requires_openssl_tls1_3_with_compatible_ephemeral
Jerry Yu3a58b462022-02-22 16:42:29 +080013062requires_config_enabled MBEDTLS_DEBUG_C
13063requires_config_enabled MBEDTLS_SSL_CLI_C
13064requires_config_enabled MBEDTLS_RSA_C
Gilles Peskine365296a2024-09-13 14:15:46 +020013065requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yuccb005e2022-02-22 17:38:34 +080013066run_test "TLS 1.3: Client authentication, client alg not in server list - openssl" \
Jerry Yu819f2972022-02-22 10:14:24 +080013067 "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10
Jerry Yu2124d052022-02-18 21:07:18 +080013068 -sigalgs ecdsa_secp256r1_sha256" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013069 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/ecdsa_secp521r1.crt \
13070 key_file=$DATA_FILES_PATH/ecdsa_secp521r1.key sig_algs=ecdsa_secp256r1_sha256,ecdsa_secp521r1_sha512" \
Jerry Yu2124d052022-02-18 21:07:18 +080013071 1 \
13072 -c "got a certificate request" \
13073 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
13074 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
Xiaokang Qianea3d9332022-12-07 06:19:49 +000013075 -c "no suitable signature algorithm"
Jerry Yu2124d052022-02-18 21:07:18 +080013076
13077requires_gnutls_tls1_3
13078requires_gnutls_next_no_ticket
Jerry Yu2124d052022-02-18 21:07:18 +080013079requires_config_enabled MBEDTLS_DEBUG_C
13080requires_config_enabled MBEDTLS_SSL_CLI_C
13081requires_config_enabled MBEDTLS_RSA_C
Gilles Peskine365296a2024-09-13 14:15:46 +020013082requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yu819f2972022-02-22 10:14:24 +080013083run_test "TLS 1.3: Client authentication, client alg not in server list - gnutls" \
13084 "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:-SIGN-ALL:+SIGN-ECDSA-SECP256R1-SHA256:%NO_TICKETS" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013085 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/ecdsa_secp521r1.crt \
13086 key_file=$DATA_FILES_PATH/ecdsa_secp521r1.key sig_algs=ecdsa_secp256r1_sha256,ecdsa_secp521r1_sha512" \
Jerry Yu2124d052022-02-18 21:07:18 +080013087 1 \
13088 -c "got a certificate request" \
13089 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
13090 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
Xiaokang Qianea3d9332022-12-07 06:19:49 +000013091 -c "no suitable signature algorithm"
Jerry Yu2124d052022-02-18 21:07:18 +080013092
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013093# Test using an opaque private key for client authentication
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013094requires_openssl_tls1_3_with_compatible_ephemeral
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013095requires_config_enabled MBEDTLS_DEBUG_C
13096requires_config_enabled MBEDTLS_SSL_CLI_C
13097requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Ronald Cron928cbd32022-10-04 16:14:26 +020013098requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013099run_test "TLS 1.3: Client authentication - opaque key, no server middlebox compat - openssl" \
13100 "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10 -no_middlebox" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013101 "$P_CLI debug_level=4 crt_file=$DATA_FILES_PATH/cli2.crt key_file=$DATA_FILES_PATH/cli2.key key_opaque=1" \
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013102 0 \
13103 -c "got a certificate request" \
13104 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
13105 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
13106 -c "Protocol is TLSv1.3"
13107
13108requires_gnutls_tls1_3
13109requires_gnutls_next_no_ticket
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013110requires_config_enabled MBEDTLS_DEBUG_C
13111requires_config_enabled MBEDTLS_SSL_CLI_C
13112requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Ronald Cron928cbd32022-10-04 16:14:26 +020013113requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013114run_test "TLS 1.3: Client authentication - opaque key, no server middlebox compat - gnutls" \
13115 "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013116 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/cli2.crt \
13117 key_file=$DATA_FILES_PATH/cli2.key key_opaque=1" \
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013118 0 \
13119 -c "got a certificate request" \
13120 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
13121 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
13122 -c "Protocol is TLSv1.3"
13123
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013124requires_openssl_tls1_3_with_compatible_ephemeral
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013125requires_config_enabled MBEDTLS_DEBUG_C
13126requires_config_enabled MBEDTLS_SSL_CLI_C
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013127requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Gilles Peskine365296a2024-09-13 14:15:46 +020013128requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013129run_test "TLS 1.3: Client authentication - opaque key, ecdsa_secp256r1_sha256 - openssl" \
13130 "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013131 "$P_CLI debug_level=4 crt_file=$DATA_FILES_PATH/ecdsa_secp256r1.crt \
13132 key_file=$DATA_FILES_PATH/ecdsa_secp256r1.key key_opaque=1" \
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013133 0 \
13134 -c "got a certificate request" \
13135 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
13136 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
13137 -c "Protocol is TLSv1.3"
13138
13139requires_gnutls_tls1_3
13140requires_gnutls_next_no_ticket
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013141requires_config_enabled MBEDTLS_DEBUG_C
13142requires_config_enabled MBEDTLS_SSL_CLI_C
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013143requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Gilles Peskine365296a2024-09-13 14:15:46 +020013144requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013145run_test "TLS 1.3: Client authentication - opaque key, ecdsa_secp256r1_sha256 - gnutls" \
13146 "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013147 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/ecdsa_secp256r1.crt \
13148 key_file=$DATA_FILES_PATH/ecdsa_secp256r1.key key_opaque=1" \
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013149 0 \
13150 -c "got a certificate request" \
13151 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
13152 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
13153 -c "Protocol is TLSv1.3"
13154
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013155requires_openssl_tls1_3_with_compatible_ephemeral
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013156requires_config_enabled MBEDTLS_DEBUG_C
13157requires_config_enabled MBEDTLS_SSL_CLI_C
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013158requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Gilles Peskine365296a2024-09-13 14:15:46 +020013159requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013160run_test "TLS 1.3: Client authentication - opaque key, ecdsa_secp384r1_sha384 - openssl" \
13161 "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013162 "$P_CLI debug_level=4 crt_file=$DATA_FILES_PATH/ecdsa_secp384r1.crt \
13163 key_file=$DATA_FILES_PATH/ecdsa_secp384r1.key key_opaque=1" \
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013164 0 \
13165 -c "got a certificate request" \
13166 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
13167 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
13168 -c "Protocol is TLSv1.3"
13169
13170requires_gnutls_tls1_3
13171requires_gnutls_next_no_ticket
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013172requires_config_enabled MBEDTLS_DEBUG_C
13173requires_config_enabled MBEDTLS_SSL_CLI_C
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013174requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Gilles Peskine365296a2024-09-13 14:15:46 +020013175requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013176run_test "TLS 1.3: Client authentication - opaque key, ecdsa_secp384r1_sha384 - gnutls" \
13177 "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013178 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/ecdsa_secp384r1.crt \
13179 key_file=$DATA_FILES_PATH/ecdsa_secp384r1.key key_opaque=1" \
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013180 0 \
13181 -c "got a certificate request" \
13182 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
13183 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
13184 -c "Protocol is TLSv1.3"
13185
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013186requires_openssl_tls1_3_with_compatible_ephemeral
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013187requires_config_enabled MBEDTLS_DEBUG_C
13188requires_config_enabled MBEDTLS_SSL_CLI_C
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013189requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Gilles Peskine365296a2024-09-13 14:15:46 +020013190requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013191run_test "TLS 1.3: Client authentication - opaque key, ecdsa_secp521r1_sha512 - openssl" \
13192 "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013193 "$P_CLI debug_level=4 crt_file=$DATA_FILES_PATH/ecdsa_secp521r1.crt \
13194 key_file=$DATA_FILES_PATH/ecdsa_secp521r1.key key_opaque=1" \
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013195 0 \
13196 -c "got a certificate request" \
13197 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
13198 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
13199 -c "Protocol is TLSv1.3"
13200
13201requires_gnutls_tls1_3
13202requires_gnutls_next_no_ticket
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013203requires_config_enabled MBEDTLS_DEBUG_C
13204requires_config_enabled MBEDTLS_SSL_CLI_C
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013205requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Gilles Peskine365296a2024-09-13 14:15:46 +020013206requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013207run_test "TLS 1.3: Client authentication - opaque key, ecdsa_secp521r1_sha512 - gnutls" \
13208 "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013209 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/ecdsa_secp521r1.crt \
13210 key_file=$DATA_FILES_PATH/ecdsa_secp521r1.key key_opaque=1" \
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013211 0 \
13212 -c "got a certificate request" \
13213 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
13214 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
13215 -c "Protocol is TLSv1.3"
13216
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013217requires_openssl_tls1_3_with_compatible_ephemeral
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013218requires_config_enabled MBEDTLS_DEBUG_C
13219requires_config_enabled MBEDTLS_SSL_CLI_C
13220requires_config_enabled MBEDTLS_RSA_C
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013221requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Gilles Peskine365296a2024-09-13 14:15:46 +020013222requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013223run_test "TLS 1.3: Client authentication - opaque key, rsa_pss_rsae_sha256 - openssl" \
13224 "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013225 "$P_CLI debug_level=4 crt_file=$DATA_FILES_PATH/cert_sha256.crt \
13226 key_file=$DATA_FILES_PATH/server1.key sig_algs=ecdsa_secp256r1_sha256,rsa_pss_rsae_sha256 key_opaque=1" \
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013227 0 \
13228 -c "got a certificate request" \
13229 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
13230 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
13231 -c "Protocol is TLSv1.3"
13232
13233requires_gnutls_tls1_3
13234requires_gnutls_next_no_ticket
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013235requires_config_enabled MBEDTLS_DEBUG_C
13236requires_config_enabled MBEDTLS_SSL_CLI_C
13237requires_config_enabled MBEDTLS_RSA_C
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013238requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Gilles Peskine365296a2024-09-13 14:15:46 +020013239requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013240run_test "TLS 1.3: Client authentication - opaque key, rsa_pss_rsae_sha256 - gnutls" \
13241 "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013242 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/server2-sha256.crt \
13243 key_file=$DATA_FILES_PATH/server2.key sig_algs=ecdsa_secp256r1_sha256,rsa_pss_rsae_sha256 key_opaque=1" \
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013244 0 \
13245 -c "got a certificate request" \
13246 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
13247 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
13248 -c "Protocol is TLSv1.3"
13249
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013250requires_openssl_tls1_3_with_compatible_ephemeral
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013251requires_config_enabled MBEDTLS_DEBUG_C
13252requires_config_enabled MBEDTLS_SSL_CLI_C
13253requires_config_enabled MBEDTLS_RSA_C
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013254requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Gilles Peskine365296a2024-09-13 14:15:46 +020013255requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013256run_test "TLS 1.3: Client authentication - opaque key, rsa_pss_rsae_sha384 - openssl" \
13257 "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013258 "$P_CLI debug_level=4 crt_file=$DATA_FILES_PATH/cert_sha256.crt \
13259 key_file=$DATA_FILES_PATH/server1.key sig_algs=ecdsa_secp256r1_sha256,rsa_pss_rsae_sha384 key_opaque=1" \
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013260 0 \
13261 -c "got a certificate request" \
13262 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
13263 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
13264 -c "Protocol is TLSv1.3"
13265
13266requires_gnutls_tls1_3
13267requires_gnutls_next_no_ticket
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013268requires_config_enabled MBEDTLS_DEBUG_C
13269requires_config_enabled MBEDTLS_SSL_CLI_C
13270requires_config_enabled MBEDTLS_RSA_C
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013271requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Gilles Peskine365296a2024-09-13 14:15:46 +020013272requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013273run_test "TLS 1.3: Client authentication - opaque key, rsa_pss_rsae_sha384 - gnutls" \
13274 "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013275 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/server2-sha256.crt \
13276 key_file=$DATA_FILES_PATH/server2.key sig_algs=ecdsa_secp256r1_sha256,rsa_pss_rsae_sha384 key_opaque=1" \
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013277 0 \
13278 -c "got a certificate request" \
13279 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
13280 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
13281 -c "Protocol is TLSv1.3"
13282
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013283requires_openssl_tls1_3_with_compatible_ephemeral
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013284requires_config_enabled MBEDTLS_DEBUG_C
13285requires_config_enabled MBEDTLS_SSL_CLI_C
13286requires_config_enabled MBEDTLS_RSA_C
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013287requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Gilles Peskine365296a2024-09-13 14:15:46 +020013288requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013289run_test "TLS 1.3: Client authentication - opaque key, rsa_pss_rsae_sha512 - openssl" \
13290 "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013291 "$P_CLI debug_level=4 crt_file=$DATA_FILES_PATH/cert_sha256.crt \
13292 key_file=$DATA_FILES_PATH/server1.key sig_algs=ecdsa_secp256r1_sha256,rsa_pss_rsae_sha512 key_opaque=1" \
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013293 0 \
13294 -c "got a certificate request" \
13295 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
13296 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
13297 -c "Protocol is TLSv1.3"
13298
13299requires_gnutls_tls1_3
13300requires_gnutls_next_no_ticket
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013301requires_config_enabled MBEDTLS_DEBUG_C
13302requires_config_enabled MBEDTLS_SSL_CLI_C
13303requires_config_enabled MBEDTLS_RSA_C
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013304requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Gilles Peskine365296a2024-09-13 14:15:46 +020013305requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013306run_test "TLS 1.3: Client authentication - opaque key, rsa_pss_rsae_sha512 - gnutls" \
13307 "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013308 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/server2-sha256.crt \
13309 key_file=$DATA_FILES_PATH/server2.key sig_algs=ecdsa_secp256r1_sha256,rsa_pss_rsae_sha512 key_opaque=1" \
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013310 0 \
13311 -c "got a certificate request" \
13312 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
13313 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
13314 -c "Protocol is TLSv1.3"
13315
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013316requires_openssl_tls1_3_with_compatible_ephemeral
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013317requires_config_enabled MBEDTLS_DEBUG_C
13318requires_config_enabled MBEDTLS_SSL_CLI_C
13319requires_config_enabled MBEDTLS_RSA_C
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013320requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Gilles Peskine365296a2024-09-13 14:15:46 +020013321requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013322run_test "TLS 1.3: Client authentication - opaque key, client alg not in server list - openssl" \
13323 "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10
13324 -sigalgs ecdsa_secp256r1_sha256" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013325 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/ecdsa_secp521r1.crt \
13326 key_file=$DATA_FILES_PATH/ecdsa_secp521r1.key sig_algs=ecdsa_secp256r1_sha256,ecdsa_secp521r1_sha512 key_opaque=1" \
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013327 1 \
13328 -c "got a certificate request" \
13329 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
13330 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
Xiaokang Qianea3d9332022-12-07 06:19:49 +000013331 -c "no suitable signature algorithm"
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013332
13333requires_gnutls_tls1_3
13334requires_gnutls_next_no_ticket
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013335requires_config_enabled MBEDTLS_DEBUG_C
13336requires_config_enabled MBEDTLS_SSL_CLI_C
13337requires_config_enabled MBEDTLS_RSA_C
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013338requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
Gilles Peskine365296a2024-09-13 14:15:46 +020013339requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013340run_test "TLS 1.3: Client authentication - opaque key, client alg not in server list - gnutls" \
13341 "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:-SIGN-ALL:+SIGN-ECDSA-SECP256R1-SHA256:%NO_TICKETS" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013342 "$P_CLI debug_level=3 crt_file=$DATA_FILES_PATH/ecdsa_secp521r1.crt \
13343 key_file=$DATA_FILES_PATH/ecdsa_secp521r1.key sig_algs=ecdsa_secp256r1_sha256,ecdsa_secp521r1_sha512 key_opaque=1" \
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013344 1 \
13345 -c "got a certificate request" \
13346 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
13347 -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
Xiaokang Qianea3d9332022-12-07 06:19:49 +000013348 -c "no suitable signature algorithm"
Neil Armstrong7f6f6722022-04-15 10:09:11 +020013349
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013350requires_openssl_tls1_3_with_compatible_ephemeral
Ronald Cron7c0185f2021-11-30 09:16:24 +010013351requires_config_enabled MBEDTLS_DEBUG_C
13352requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +020013353requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crondf5f8682022-04-05 16:01:03 +020013354run_test "TLS 1.3: HRR check, ciphersuite TLS_AES_128_GCM_SHA256 - openssl" \
XiaokangQian7bae3b62022-01-26 06:31:39 +000013355 "$O_NEXT_SRV -ciphersuites TLS_AES_128_GCM_SHA256 -sigalgs ecdsa_secp256r1_sha256 -groups P-256 -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache" \
Ronald Crona1b8f6e2022-03-18 14:04:12 +010013356 "$P_CLI debug_level=4" \
XiaokangQian7bae3b62022-01-26 06:31:39 +000013357 0 \
13358 -c "received HelloRetryRequest message" \
XiaokangQiana9090612022-01-27 03:48:27 +000013359 -c "<= ssl_tls13_process_server_hello ( HelloRetryRequest )" \
Ronald Cron27c85e72022-03-08 11:37:55 +010013360 -c "client state: MBEDTLS_SSL_CLIENT_HELLO" \
Ronald Crona1b8f6e2022-03-18 14:04:12 +010013361 -c "Protocol is TLSv1.3" \
XiaokangQian7bae3b62022-01-26 06:31:39 +000013362 -c "HTTP/1.0 200 ok"
13363
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013364requires_openssl_tls1_3_with_compatible_ephemeral
XiaokangQian7bae3b62022-01-26 06:31:39 +000013365requires_config_enabled MBEDTLS_DEBUG_C
13366requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +020013367requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crondf5f8682022-04-05 16:01:03 +020013368run_test "TLS 1.3: HRR check, ciphersuite TLS_AES_256_GCM_SHA384 - openssl" \
Ronald Cronfdb0e3f2021-12-09 10:39:19 +010013369 "$O_NEXT_SRV -ciphersuites TLS_AES_256_GCM_SHA384 -sigalgs ecdsa_secp256r1_sha256 -groups P-256 -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache" \
Ronald Crona1b8f6e2022-03-18 14:04:12 +010013370 "$P_CLI debug_level=4" \
XiaokangQian6db08dd2022-01-18 06:36:23 +000013371 0 \
Jerry Yu8c5559d2021-11-22 21:15:41 +080013372 -c "received HelloRetryRequest message" \
XiaokangQiana9090612022-01-27 03:48:27 +000013373 -c "<= ssl_tls13_process_server_hello ( HelloRetryRequest )" \
Ronald Cron27c85e72022-03-08 11:37:55 +010013374 -c "client state: MBEDTLS_SSL_CLIENT_HELLO" \
Ronald Crona1b8f6e2022-03-18 14:04:12 +010013375 -c "Protocol is TLSv1.3" \
XiaokangQian6db08dd2022-01-18 06:36:23 +000013376 -c "HTTP/1.0 200 ok"
Jerry Yu8c5559d2021-11-22 21:15:41 +080013377
13378requires_gnutls_tls1_3
13379requires_gnutls_next_no_ticket
Ronald Cron7c0185f2021-11-30 09:16:24 +010013380requires_config_enabled MBEDTLS_DEBUG_C
13381requires_config_enabled MBEDTLS_SSL_CLI_C
Przemek Stekielc31a7982023-06-27 10:53:33 +020013382requires_config_enabled PSA_WANT_ALG_ECDH
Gilles Peskine365296a2024-09-13 14:15:46 +020013383requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crondf5f8682022-04-05 16:01:03 +020013384run_test "TLS 1.3: HRR check, ciphersuite TLS_AES_128_GCM_SHA256 - gnutls" \
XiaokangQian7bae3b62022-01-26 06:31:39 +000013385 "$G_NEXT_SRV -d 4 --priority=NONE:+GROUP-SECP256R1:+AES-128-GCM:+SHA256:+AEAD:+SIGN-ECDSA-SECP256R1-SHA256:+VERS-TLS1.3:%NO_TICKETS --disable-client-cert" \
Ronald Crona1b8f6e2022-03-18 14:04:12 +010013386 "$P_CLI debug_level=4" \
XiaokangQian7bae3b62022-01-26 06:31:39 +000013387 0 \
13388 -c "received HelloRetryRequest message" \
XiaokangQiana9090612022-01-27 03:48:27 +000013389 -c "<= ssl_tls13_process_server_hello ( HelloRetryRequest )" \
Ronald Cron27c85e72022-03-08 11:37:55 +010013390 -c "client state: MBEDTLS_SSL_CLIENT_HELLO" \
Ronald Crona1b8f6e2022-03-18 14:04:12 +010013391 -c "Protocol is TLSv1.3" \
XiaokangQian7bae3b62022-01-26 06:31:39 +000013392 -c "HTTP/1.0 200 OK"
13393
13394requires_gnutls_tls1_3
13395requires_gnutls_next_no_ticket
XiaokangQian7bae3b62022-01-26 06:31:39 +000013396requires_config_enabled MBEDTLS_DEBUG_C
13397requires_config_enabled MBEDTLS_SSL_CLI_C
Przemek Stekielc31a7982023-06-27 10:53:33 +020013398requires_config_enabled PSA_WANT_ALG_ECDH
Gilles Peskine365296a2024-09-13 14:15:46 +020013399requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crondf5f8682022-04-05 16:01:03 +020013400run_test "TLS 1.3: HRR check, ciphersuite TLS_AES_256_GCM_SHA384 - gnutls" \
XiaokangQian355e09a2022-01-20 11:14:50 +000013401 "$G_NEXT_SRV -d 4 --priority=NONE:+GROUP-SECP256R1:+AES-256-GCM:+SHA384:+AEAD:+SIGN-ECDSA-SECP256R1-SHA256:+VERS-TLS1.3:%NO_TICKETS --disable-client-cert" \
Ronald Crona1b8f6e2022-03-18 14:04:12 +010013402 "$P_CLI debug_level=4" \
XiaokangQian355e09a2022-01-20 11:14:50 +000013403 0 \
Jerry Yu8c5559d2021-11-22 21:15:41 +080013404 -c "received HelloRetryRequest message" \
XiaokangQiana9090612022-01-27 03:48:27 +000013405 -c "<= ssl_tls13_process_server_hello ( HelloRetryRequest )" \
Ronald Cron27c85e72022-03-08 11:37:55 +010013406 -c "client state: MBEDTLS_SSL_CLIENT_HELLO" \
Ronald Crona1b8f6e2022-03-18 14:04:12 +010013407 -c "Protocol is TLSv1.3" \
XiaokangQian355e09a2022-01-20 11:14:50 +000013408 -c "HTTP/1.0 200 OK"
Ronald Cronfdb0e3f2021-12-09 10:39:19 +010013409
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013410requires_openssl_tls1_3_with_compatible_ephemeral
XiaokangQian5e4528c2022-02-17 07:51:12 +000013411requires_config_enabled MBEDTLS_DEBUG_C
XiaokangQiane8ff3502022-04-22 02:34:40 +000013412requires_config_enabled MBEDTLS_SSL_SRV_C
Ronald Cron928cbd32022-10-04 16:14:26 +020013413requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
XiaokangQian318dc762022-04-20 09:43:51 +000013414run_test "TLS 1.3: Server side check - openssl" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013415 "$P_SRV debug_level=4 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key tickets=0" \
Jerry Yu66220492022-04-23 13:53:36 +080013416 "$O_NEXT_CLI -msg -debug -tls1_3 -no_middlebox" \
Jerry Yu4d8567f2022-04-17 10:57:57 +080013417 0 \
Jerry Yuabf20c72022-04-14 18:36:14 +080013418 -s "tls13 server state: MBEDTLS_SSL_CLIENT_HELLO" \
13419 -s "tls13 server state: MBEDTLS_SSL_SERVER_HELLO" \
13420 -s "tls13 server state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
Jerry Yucef55db2022-04-23 11:02:05 +080013421 -s "tls13 server state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
Jerry Yuc8bdbf72022-04-23 12:37:35 +080013422 -s "tls13 server state: MBEDTLS_SSL_CERTIFICATE_VERIFY" \
13423 -s "tls13 server state: MBEDTLS_SSL_SERVER_FINISHED" \
Jerry Yu66220492022-04-23 13:53:36 +080013424 -s "tls13 server state: MBEDTLS_SSL_CLIENT_FINISHED" \
Jerry Yu155493d2022-04-25 13:30:18 +080013425 -s "tls13 server state: MBEDTLS_SSL_HANDSHAKE_WRAPUP"
XiaokangQian5e4528c2022-02-17 07:51:12 +000013426
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013427requires_openssl_tls1_3_with_compatible_ephemeral
XiaokangQian2f150e12022-04-29 02:01:19 +000013428requires_config_enabled MBEDTLS_DEBUG_C
13429requires_config_enabled MBEDTLS_SSL_SRV_C
Ronald Cron928cbd32022-10-04 16:14:26 +020013430requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
XiaokangQiana987e1d2022-05-07 01:25:58 +000013431run_test "TLS 1.3: Server side check - openssl with client authentication" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013432 "$P_SRV debug_level=4 auth_mode=required crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key tickets=0" \
13433 "$O_NEXT_CLI -msg -debug -cert $DATA_FILES_PATH/server5.crt -key $DATA_FILES_PATH/server5.key -tls1_3 -no_middlebox" \
XiaokangQian9a4e1dd2022-05-26 00:58:11 +000013434 0 \
XiaokangQian2f150e12022-04-29 02:01:19 +000013435 -s "tls13 server state: MBEDTLS_SSL_CLIENT_HELLO" \
13436 -s "tls13 server state: MBEDTLS_SSL_SERVER_HELLO" \
13437 -s "tls13 server state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
13438 -s "tls13 server state: MBEDTLS_SSL_CERTIFICATE_REQUEST" \
13439 -s "tls13 server state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
Jerry Yuc4505662022-05-10 20:39:21 +080013440 -s "tls13 server state: MBEDTLS_SSL_CERTIFICATE_VERIFY" \
13441 -s "tls13 server state: MBEDTLS_SSL_SERVER_FINISHED" \
XiaokangQiana987e1d2022-05-07 01:25:58 +000013442 -s "=> write certificate request" \
XiaokangQian2f150e12022-04-29 02:01:19 +000013443 -s "=> parse client hello" \
13444 -s "<= parse client hello"
13445
XiaokangQian5e4528c2022-02-17 07:51:12 +000013446requires_gnutls_tls1_3
13447requires_gnutls_next_no_ticket
XiaokangQian5e4528c2022-02-17 07:51:12 +000013448requires_config_enabled MBEDTLS_DEBUG_C
XiaokangQiane8ff3502022-04-22 02:34:40 +000013449requires_config_enabled MBEDTLS_SSL_SRV_C
Ronald Cron928cbd32022-10-04 16:14:26 +020013450requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
XiaokangQian318dc762022-04-20 09:43:51 +000013451run_test "TLS 1.3: Server side check - gnutls" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013452 "$P_SRV debug_level=4 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key tickets=0" \
XiaokangQian3f84d5d2022-04-19 06:36:17 +000013453 "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE -V" \
Jerry Yu66220492022-04-23 13:53:36 +080013454 0 \
Jerry Yuabf20c72022-04-14 18:36:14 +080013455 -s "tls13 server state: MBEDTLS_SSL_CLIENT_HELLO" \
13456 -s "tls13 server state: MBEDTLS_SSL_SERVER_HELLO" \
13457 -s "tls13 server state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
Jerry Yucef55db2022-04-23 11:02:05 +080013458 -s "tls13 server state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
Jerry Yuc8bdbf72022-04-23 12:37:35 +080013459 -s "tls13 server state: MBEDTLS_SSL_CERTIFICATE_VERIFY" \
13460 -s "tls13 server state: MBEDTLS_SSL_SERVER_FINISHED" \
Jerry Yu66220492022-04-23 13:53:36 +080013461 -s "tls13 server state: MBEDTLS_SSL_CLIENT_FINISHED" \
13462 -s "tls13 server state: MBEDTLS_SSL_HANDSHAKE_WRAPUP" \
13463 -c "HTTP/1.0 200 OK"
XiaokangQian5e4528c2022-02-17 07:51:12 +000013464
XiaokangQian2f150e12022-04-29 02:01:19 +000013465requires_gnutls_tls1_3
13466requires_gnutls_next_no_ticket
XiaokangQian2f150e12022-04-29 02:01:19 +000013467requires_config_enabled MBEDTLS_DEBUG_C
13468requires_config_enabled MBEDTLS_SSL_SRV_C
Ronald Cron928cbd32022-10-04 16:14:26 +020013469requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
XiaokangQiana987e1d2022-05-07 01:25:58 +000013470run_test "TLS 1.3: Server side check - gnutls with client authentication" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013471 "$P_SRV debug_level=4 auth_mode=required crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key tickets=0" \
13472 "$G_NEXT_CLI localhost -d 4 --x509certfile $DATA_FILES_PATH/server5.crt --x509keyfile $DATA_FILES_PATH/server5.key --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE -V" \
XiaokangQianc3017f62022-05-13 05:55:41 +000013473 0 \
XiaokangQian2f150e12022-04-29 02:01:19 +000013474 -s "tls13 server state: MBEDTLS_SSL_CLIENT_HELLO" \
13475 -s "tls13 server state: MBEDTLS_SSL_SERVER_HELLO" \
13476 -s "tls13 server state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
13477 -s "tls13 server state: MBEDTLS_SSL_CERTIFICATE_REQUEST" \
13478 -s "tls13 server state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
Jerry Yuc4505662022-05-10 20:39:21 +080013479 -s "tls13 server state: MBEDTLS_SSL_CERTIFICATE_VERIFY" \
13480 -s "tls13 server state: MBEDTLS_SSL_SERVER_FINISHED" \
XiaokangQiana987e1d2022-05-07 01:25:58 +000013481 -s "=> write certificate request" \
XiaokangQian2f150e12022-04-29 02:01:19 +000013482 -s "=> parse client hello" \
13483 -s "<= parse client hello"
13484
Jerry Yu8b9fd372022-04-14 20:55:12 +080013485requires_config_enabled MBEDTLS_DEBUG_C
13486requires_config_enabled MBEDTLS_SSL_SRV_C
Jerry Yu955ddd72022-04-22 22:27:33 +080013487requires_config_enabled MBEDTLS_SSL_CLI_C
Ronald Cron928cbd32022-10-04 16:14:26 +020013488requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yu8b9fd372022-04-14 20:55:12 +080013489run_test "TLS 1.3: Server side check - mbedtls" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013490 "$P_SRV debug_level=4 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key tickets=0" \
Ronald Cron65f90292023-03-13 17:38:12 +010013491 "$P_CLI debug_level=4" \
XiaokangQianc3017f62022-05-13 05:55:41 +000013492 0 \
Jerry Yu8b9fd372022-04-14 20:55:12 +080013493 -s "tls13 server state: MBEDTLS_SSL_CLIENT_HELLO" \
13494 -s "tls13 server state: MBEDTLS_SSL_SERVER_HELLO" \
13495 -s "tls13 server state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
Jerry Yua7abc5e2022-05-11 13:32:03 +080013496 -s "tls13 server state: MBEDTLS_SSL_CERTIFICATE_REQUEST" \
Jerry Yucef55db2022-04-23 11:02:05 +080013497 -s "tls13 server state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
Jerry Yua7abc5e2022-05-11 13:32:03 +080013498 -s "tls13 server state: MBEDTLS_SSL_CERTIFICATE_VERIFY" \
13499 -s "tls13 server state: MBEDTLS_SSL_SERVER_FINISHED" \
13500 -s "tls13 server state: MBEDTLS_SSL_CLIENT_FINISHED" \
13501 -s "tls13 server state: MBEDTLS_SSL_HANDSHAKE_WRAPUP" \
13502 -c "HTTP/1.0 200 OK"
Jerry Yu8b9fd372022-04-14 20:55:12 +080013503
XiaokangQian45c22202022-05-06 06:54:09 +000013504requires_config_enabled MBEDTLS_DEBUG_C
13505requires_config_enabled MBEDTLS_SSL_SRV_C
13506requires_config_enabled MBEDTLS_SSL_CLI_C
Ronald Cron928cbd32022-10-04 16:14:26 +020013507requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
XiaokangQiana987e1d2022-05-07 01:25:58 +000013508run_test "TLS 1.3: Server side check - mbedtls with client authentication" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013509 "$P_SRV debug_level=4 auth_mode=required crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key tickets=0" \
13510 "$P_CLI debug_level=4 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key" \
XiaokangQianc3017f62022-05-13 05:55:41 +000013511 0 \
XiaokangQian45c22202022-05-06 06:54:09 +000013512 -s "tls13 server state: MBEDTLS_SSL_CLIENT_HELLO" \
13513 -s "tls13 server state: MBEDTLS_SSL_SERVER_HELLO" \
13514 -s "tls13 server state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
13515 -s "tls13 server state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
Jerry Yua7abc5e2022-05-11 13:32:03 +080013516 -s "=> write certificate request" \
XiaokangQian45c22202022-05-06 06:54:09 +000013517 -c "client state: MBEDTLS_SSL_CERTIFICATE_REQUEST" \
XiaokangQian45c22202022-05-06 06:54:09 +000013518 -s "=> parse client hello" \
13519 -s "<= parse client hello"
13520
XiaokangQianaca90482022-05-19 07:19:31 +000013521requires_config_enabled MBEDTLS_DEBUG_C
13522requires_config_enabled MBEDTLS_SSL_SRV_C
13523requires_config_enabled MBEDTLS_SSL_CLI_C
Ronald Cron928cbd32022-10-04 16:14:26 +020013524requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
XiaokangQianaca90482022-05-19 07:19:31 +000013525run_test "TLS 1.3: Server side check - mbedtls with client empty certificate" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013526 "$P_SRV debug_level=4 auth_mode=required crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key tickets=0" \
Ronald Cron65f90292023-03-13 17:38:12 +010013527 "$P_CLI debug_level=4 crt_file=none key_file=none" \
XiaokangQianaca90482022-05-19 07:19:31 +000013528 1 \
13529 -s "tls13 server state: MBEDTLS_SSL_CLIENT_HELLO" \
13530 -s "tls13 server state: MBEDTLS_SSL_SERVER_HELLO" \
13531 -s "tls13 server state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
13532 -s "tls13 server state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
13533 -s "=> write certificate request" \
13534 -s "SSL - No client certification received from the client, but required by the authentication mode" \
13535 -c "client state: MBEDTLS_SSL_CERTIFICATE_REQUEST" \
13536 -s "=> parse client hello" \
13537 -s "<= parse client hello"
13538
XiaokangQianaca90482022-05-19 07:19:31 +000013539requires_config_enabled MBEDTLS_DEBUG_C
13540requires_config_enabled MBEDTLS_SSL_SRV_C
13541requires_config_enabled MBEDTLS_SSL_CLI_C
Ronald Cron928cbd32022-10-04 16:14:26 +020013542requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
XiaokangQianaca90482022-05-19 07:19:31 +000013543run_test "TLS 1.3: Server side check - mbedtls with optional client authentication" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013544 "$P_SRV debug_level=4 auth_mode=optional crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key tickets=0" \
Ronald Cron65f90292023-03-13 17:38:12 +010013545 "$P_CLI debug_level=4 crt_file=none key_file=none" \
XiaokangQianaca90482022-05-19 07:19:31 +000013546 0 \
13547 -s "tls13 server state: MBEDTLS_SSL_CLIENT_HELLO" \
13548 -s "tls13 server state: MBEDTLS_SSL_SERVER_HELLO" \
13549 -s "tls13 server state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
13550 -s "tls13 server state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
13551 -s "=> write certificate request" \
13552 -c "client state: MBEDTLS_SSL_CERTIFICATE_REQUEST" \
13553 -s "=> parse client hello" \
13554 -s "<= parse client hello"
Jerry Yuede50ea2022-05-05 11:21:20 +080013555
13556requires_config_enabled MBEDTLS_DEBUG_C
13557requires_config_enabled MBEDTLS_SSL_CLI_C
13558requires_config_enabled MBEDTLS_SSL_SRV_C
Ronald Cron928cbd32022-10-04 16:14:26 +020013559requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Przemek Stekielc31a7982023-06-27 10:53:33 +020013560requires_config_enabled PSA_WANT_ALG_ECDH
Jerry Yuede50ea2022-05-05 11:21:20 +080013561run_test "TLS 1.3: server: HRR check - mbedtls" \
Przemek Stekiel45255e42023-06-29 13:56:36 +020013562 "$P_SRV debug_level=4 groups=secp384r1" \
13563 "$P_CLI debug_level=4 groups=secp256r1,secp384r1" \
Jerry Yu36becb12022-05-12 16:57:20 +080013564 0 \
Jerry Yuede50ea2022-05-05 11:21:20 +080013565 -s "tls13 server state: MBEDTLS_SSL_CLIENT_HELLO" \
13566 -s "tls13 server state: MBEDTLS_SSL_SERVER_HELLO" \
13567 -s "tls13 server state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
13568 -s "tls13 server state: MBEDTLS_SSL_HELLO_RETRY_REQUEST" \
13569 -c "client state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
13570 -s "selected_group: secp384r1" \
Jerry Yuede50ea2022-05-05 11:21:20 +080013571 -s "=> write hello retry request" \
13572 -s "<= write hello retry request"
13573
Jerry Yub89125b2022-05-13 15:45:49 +080013574requires_config_enabled MBEDTLS_DEBUG_C
13575requires_config_enabled MBEDTLS_SSL_SRV_C
13576requires_config_enabled MBEDTLS_SSL_CLI_C
Ronald Cron928cbd32022-10-04 16:14:26 +020013577requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yub89125b2022-05-13 15:45:49 +080013578run_test "TLS 1.3: Server side check, no server certificate available" \
Ronald Cron50ae84e2023-03-14 08:59:56 +010013579 "$P_SRV debug_level=4 crt_file=none key_file=none" \
Ronald Cron65f90292023-03-13 17:38:12 +010013580 "$P_CLI debug_level=4" \
Jerry Yub89125b2022-05-13 15:45:49 +080013581 1 \
13582 -s "tls13 server state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
13583 -s "No certificate available."
13584
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013585requires_openssl_tls1_3_with_compatible_ephemeral
XiaokangQianf2a94202022-05-20 06:44:24 +000013586requires_config_enabled MBEDTLS_DEBUG_C
13587requires_config_enabled MBEDTLS_SSL_SRV_C
Gilles Peskine365296a2024-09-13 14:15:46 +020013588requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
XiaokangQian2ccd97b2022-05-31 08:30:17 +000013589run_test "TLS 1.3: Server side check - openssl with sni" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013590 "$P_SRV debug_level=4 auth_mode=required crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key tickets=0 \
13591 sni=localhost,$DATA_FILES_PATH/server5.crt,$DATA_FILES_PATH/server5.key,$DATA_FILES_PATH/test-ca_cat12.crt,-,-,polarssl.example,$DATA_FILES_PATH/server1-nospace.crt,$DATA_FILES_PATH/server1.key,-,-,-" \
13592 "$O_NEXT_CLI -msg -debug -servername localhost -CAfile $DATA_FILES_PATH/test-ca_cat12.crt -cert $DATA_FILES_PATH/server5.crt -key $DATA_FILES_PATH/server5.key -tls1_3" \
XiaokangQianf2a94202022-05-20 06:44:24 +000013593 0 \
XiaokangQianf2a94202022-05-20 06:44:24 +000013594 -s "parse ServerName extension" \
XiaokangQian129aeb92022-06-02 09:29:18 +000013595 -s "HTTP/1.0 200 OK"
XiaokangQianf2a94202022-05-20 06:44:24 +000013596
XiaokangQianac41edf2022-05-31 13:22:13 +000013597requires_gnutls_tls1_3
XiaokangQianf2a94202022-05-20 06:44:24 +000013598requires_config_enabled MBEDTLS_DEBUG_C
13599requires_config_enabled MBEDTLS_SSL_SRV_C
Gilles Peskine365296a2024-09-13 14:15:46 +020013600requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
XiaokangQian2ccd97b2022-05-31 08:30:17 +000013601run_test "TLS 1.3: Server side check - gnutls with sni" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013602 "$P_SRV debug_level=4 auth_mode=required crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key tickets=0 \
13603 sni=localhost,$DATA_FILES_PATH/server5.crt,$DATA_FILES_PATH/server5.key,$DATA_FILES_PATH/test-ca_cat12.crt,-,-,polarssl.example,$DATA_FILES_PATH/server1-nospace.crt,$DATA_FILES_PATH/server1.key,-,-,-" \
13604 "$G_NEXT_CLI localhost -d 4 --sni-hostname=localhost --x509certfile $DATA_FILES_PATH/server5.crt --x509keyfile $DATA_FILES_PATH/server5.key --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:%NO_TICKETS -V" \
XiaokangQianf2a94202022-05-20 06:44:24 +000013605 0 \
XiaokangQianf2a94202022-05-20 06:44:24 +000013606 -s "parse ServerName extension" \
XiaokangQian129aeb92022-06-02 09:29:18 +000013607 -s "HTTP/1.0 200 OK"
XiaokangQianf2a94202022-05-20 06:44:24 +000013608
XiaokangQian40a35232022-05-07 09:02:40 +000013609requires_config_enabled MBEDTLS_DEBUG_C
13610requires_config_enabled MBEDTLS_SSL_SRV_C
13611requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +020013612requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
XiaokangQian2ccd97b2022-05-31 08:30:17 +000013613run_test "TLS 1.3: Server side check - mbedtls with sni" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013614 "$P_SRV debug_level=4 auth_mode=required crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key tickets=0 \
13615 sni=localhost,$DATA_FILES_PATH/server2.crt,$DATA_FILES_PATH/server2.key,-,-,-,polarssl.example,$DATA_FILES_PATH/server1-nospace.crt,$DATA_FILES_PATH/server1.key,-,-,-" \
13616 "$P_CLI debug_level=4 server_name=localhost crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key" \
XiaokangQianf2a94202022-05-20 06:44:24 +000013617 0 \
XiaokangQianf2a94202022-05-20 06:44:24 +000013618 -s "parse ServerName extension" \
XiaokangQian129aeb92022-06-02 09:29:18 +000013619 -s "HTTP/1.0 200 OK"
XiaokangQian40a35232022-05-07 09:02:40 +000013620
Gilles Peskine2baaf602022-01-07 15:46:12 +010013621for i in opt-testcases/*.sh
Jerry Yucdcb6832021-11-29 16:50:13 +080013622do
Gilles Peskine5eb2b022022-01-07 15:47:02 +010013623 TEST_SUITE_NAME=${i##*/}
13624 TEST_SUITE_NAME=${TEST_SUITE_NAME%.*}
13625 . "$i"
Jerry Yucdcb6832021-11-29 16:50:13 +080013626done
Gilles Peskine5eb2b022022-01-07 15:47:02 +010013627unset TEST_SUITE_NAME
Jerry Yu305bfc32021-11-24 16:04:47 +080013628
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013629# Test 1.3 compatibility mode
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013630requires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13631requires_config_enabled MBEDTLS_DEBUG_C
13632requires_config_enabled MBEDTLS_SSL_SRV_C
13633requires_config_enabled MBEDTLS_SSL_CLI_C
Ronald Cron928cbd32022-10-04 16:14:26 +020013634requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013635run_test "TLS 1.3 m->m both peers do not support middlebox compatibility" \
Ronald Cron50ae84e2023-03-14 08:59:56 +010013636 "$P_SRV debug_level=4 tickets=0" \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013637 "$P_CLI debug_level=4" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013638 0 \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013639 -s "Protocol is TLSv1.3" \
13640 -c "Protocol is TLSv1.3" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013641 -S "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_SERVER_HELLO" \
13642 -C "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
13643
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013644requires_config_enabled MBEDTLS_DEBUG_C
13645requires_config_enabled MBEDTLS_SSL_SRV_C
13646requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +020013647requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13648requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013649run_test "TLS 1.3 m->m both with middlebox compat support" \
Ronald Cron50ae84e2023-03-14 08:59:56 +010013650 "$P_SRV debug_level=4 tickets=0" \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013651 "$P_CLI debug_level=4" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013652 0 \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013653 -s "Protocol is TLSv1.3" \
13654 -c "Protocol is TLSv1.3" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013655 -s "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_SERVER_HELLO" \
13656 -c "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
13657
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013658requires_openssl_tls1_3_with_compatible_ephemeral
Ronald Cronfdb0e3f2021-12-09 10:39:19 +010013659requires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
Ronald Cron7c0185f2021-11-30 09:16:24 +010013660requires_config_enabled MBEDTLS_DEBUG_C
13661requires_config_enabled MBEDTLS_SSL_CLI_C
Ronald Cron928cbd32022-10-04 16:14:26 +020013662requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crona55c5a12021-11-30 09:32:47 +010013663run_test "TLS 1.3 m->O both peers do not support middlebox compatibility" \
Ronald Cronfdb0e3f2021-12-09 10:39:19 +010013664 "$O_NEXT_SRV -msg -tls1_3 -no_middlebox -num_tickets 0 -no_resume_ephemeral -no_cache" \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013665 "$P_CLI debug_level=4" \
Ronald Cronfdb0e3f2021-12-09 10:39:19 +010013666 0 \
Ronald Crona1b8f6e2022-03-18 14:04:12 +010013667 -c "Protocol is TLSv1.3" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013668 -C "ChangeCipherSpec invalid in TLS 1.3 without compatibility mode" \
13669 -C "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
Ronald Cronfdb0e3f2021-12-09 10:39:19 +010013670
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013671requires_openssl_tls1_3_with_compatible_ephemeral
Ronald Cronfdb0e3f2021-12-09 10:39:19 +010013672requires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
Ronald Cron7c0185f2021-11-30 09:16:24 +010013673requires_config_enabled MBEDTLS_DEBUG_C
13674requires_config_enabled MBEDTLS_SSL_CLI_C
Ronald Cron928cbd32022-10-04 16:14:26 +020013675requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crona55c5a12021-11-30 09:32:47 +010013676run_test "TLS 1.3 m->O server with middlebox compat support, not client" \
Ronald Cronfdb0e3f2021-12-09 10:39:19 +010013677 "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache" \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013678 "$P_CLI debug_level=4" \
Gilles Peskinefc3accd2024-09-13 13:46:37 +020013679 0 \
13680 -c "Protocol is TLSv1.3" \
13681 -c "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
Ronald Cronfdb0e3f2021-12-09 10:39:19 +010013682
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013683requires_openssl_tls1_3_with_compatible_ephemeral
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013684requires_config_enabled MBEDTLS_DEBUG_C
13685requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +020013686requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13687requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013688run_test "TLS 1.3 m->O both with middlebox compat support" \
13689 "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache" \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013690 "$P_CLI debug_level=4" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013691 0 \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013692 -c "Protocol is TLSv1.3" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013693 -c "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
13694
Ronald Crona55c5a12021-11-30 09:32:47 +010013695requires_gnutls_tls1_3
13696requires_gnutls_next_no_ticket
13697requires_gnutls_next_disable_tls13_compat
Ronald Crona55c5a12021-11-30 09:32:47 +010013698requires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13699requires_config_enabled MBEDTLS_DEBUG_C
13700requires_config_enabled MBEDTLS_SSL_CLI_C
Ronald Cron928cbd32022-10-04 16:14:26 +020013701requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crona55c5a12021-11-30 09:32:47 +010013702run_test "TLS 1.3 m->G both peers do not support middlebox compatibility" \
13703 "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE --disable-client-cert" \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013704 "$P_CLI debug_level=4" \
Ronald Crona55c5a12021-11-30 09:32:47 +010013705 0 \
Ronald Crona1b8f6e2022-03-18 14:04:12 +010013706 -c "Protocol is TLSv1.3" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013707 -C "ChangeCipherSpec invalid in TLS 1.3 without compatibility mode" \
13708 -C "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
Ronald Crona55c5a12021-11-30 09:32:47 +010013709
13710requires_gnutls_tls1_3
13711requires_gnutls_next_no_ticket
Ronald Crona55c5a12021-11-30 09:32:47 +010013712requires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13713requires_config_enabled MBEDTLS_DEBUG_C
13714requires_config_enabled MBEDTLS_SSL_CLI_C
Ronald Cron928cbd32022-10-04 16:14:26 +020013715requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Ronald Crona55c5a12021-11-30 09:32:47 +010013716run_test "TLS 1.3 m->G server with middlebox compat support, not client" \
13717 "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS --disable-client-cert" \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013718 "$P_CLI debug_level=4" \
Gilles Peskinefc3accd2024-09-13 13:46:37 +020013719 0 \
13720 -c "Protocol is TLSv1.3" \
13721 -c "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
Ronald Crona55c5a12021-11-30 09:32:47 +010013722
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013723requires_gnutls_tls1_3
13724requires_gnutls_next_no_ticket
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013725requires_config_enabled MBEDTLS_DEBUG_C
13726requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +020013727requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13728requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013729run_test "TLS 1.3 m->G both with middlebox compat support" \
13730 "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS --disable-client-cert" \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013731 "$P_CLI debug_level=4" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013732 0 \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013733 -c "Protocol is TLSv1.3" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013734 -c "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
13735
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013736requires_openssl_tls1_3_with_compatible_ephemeral
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013737requires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13738requires_config_enabled MBEDTLS_DEBUG_C
13739requires_config_enabled MBEDTLS_SSL_SRV_C
Ronald Cron928cbd32022-10-04 16:14:26 +020013740requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013741run_test "TLS 1.3 O->m both peers do not support middlebox compatibility" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013742 "$P_SRV debug_level=4 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key tickets=0" \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013743 "$O_NEXT_CLI -msg -debug -no_middlebox" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013744 0 \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013745 -s "Protocol is TLSv1.3" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013746 -S "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_SERVER_HELLO" \
13747 -C "14 03 03 00 01"
13748
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013749requires_openssl_tls1_3_with_compatible_ephemeral
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013750requires_config_enabled MBEDTLS_DEBUG_C
13751requires_config_enabled MBEDTLS_SSL_SRV_C
Gilles Peskine365296a2024-09-13 14:15:46 +020013752requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13753requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013754run_test "TLS 1.3 O->m server with middlebox compat support, not client" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013755 "$P_SRV debug_level=4 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key tickets=0" \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013756 "$O_NEXT_CLI -msg -debug -no_middlebox" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013757 0 \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013758 -s "Protocol is TLSv1.3" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013759 -s "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_SERVER_HELLO"
13760
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013761requires_openssl_tls1_3_with_compatible_ephemeral
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013762requires_config_enabled MBEDTLS_DEBUG_C
13763requires_config_enabled MBEDTLS_SSL_SRV_C
Gilles Peskine365296a2024-09-13 14:15:46 +020013764requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13765requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013766run_test "TLS 1.3 O->m both with middlebox compat support" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013767 "$P_SRV debug_level=4 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key tickets=0" \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013768 "$O_NEXT_CLI -msg -debug" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013769 0 \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013770 -s "Protocol is TLSv1.3" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013771 -s "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_SERVER_HELLO" \
13772 -c "14 03 03 00 01"
13773
13774requires_gnutls_tls1_3
13775requires_gnutls_next_no_ticket
13776requires_gnutls_next_disable_tls13_compat
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013777requires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13778requires_config_enabled MBEDTLS_DEBUG_C
13779requires_config_enabled MBEDTLS_SSL_SRV_C
Ronald Cron928cbd32022-10-04 16:14:26 +020013780requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013781run_test "TLS 1.3 G->m both peers do not support middlebox compatibility" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013782 "$P_SRV debug_level=4 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key tickets=0" \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013783 "$G_NEXT_CLI localhost --priority=NORMAL:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE -V" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013784 0 \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013785 -s "Protocol is TLSv1.3" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013786 -S "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_SERVER_HELLO" \
13787 -C "SSL 3.3 ChangeCipherSpec packet received"
13788
13789requires_gnutls_tls1_3
13790requires_gnutls_next_no_ticket
13791requires_gnutls_next_disable_tls13_compat
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013792requires_config_enabled MBEDTLS_DEBUG_C
13793requires_config_enabled MBEDTLS_SSL_SRV_C
Gilles Peskine365296a2024-09-13 14:15:46 +020013794requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13795requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013796run_test "TLS 1.3 G->m server with middlebox compat support, not client" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013797 "$P_SRV debug_level=4 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key tickets=0" \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013798 "$G_NEXT_CLI localhost --debug=10 --priority=NORMAL:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE -V" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013799 0 \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013800 -s "Protocol is TLSv1.3" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013801 -s "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_SERVER_HELLO" \
13802 -c "SSL 3.3 ChangeCipherSpec packet received" \
13803 -c "discarding change cipher spec in TLS1.3"
13804
13805requires_gnutls_tls1_3
13806requires_gnutls_next_no_ticket
13807requires_gnutls_next_disable_tls13_compat
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013808requires_config_enabled MBEDTLS_DEBUG_C
13809requires_config_enabled MBEDTLS_SSL_SRV_C
Gilles Peskine365296a2024-09-13 14:15:46 +020013810requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13811requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013812run_test "TLS 1.3 G->m both with middlebox compat support" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013813 "$P_SRV debug_level=4 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key tickets=0" \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013814 "$G_NEXT_CLI localhost --debug=10 --priority=NORMAL:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE -V" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013815 0 \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013816 -s "Protocol is TLSv1.3" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013817 -s "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_SERVER_HELLO" \
13818 -c "SSL 3.3 ChangeCipherSpec packet received"
13819
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013820requires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13821requires_config_enabled MBEDTLS_DEBUG_C
13822requires_config_enabled MBEDTLS_SSL_SRV_C
13823requires_config_enabled MBEDTLS_SSL_CLI_C
Ronald Cron928cbd32022-10-04 16:14:26 +020013824requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013825run_test "TLS 1.3 m->m HRR both peers do not support middlebox compatibility" \
Przemek Stekiel45255e42023-06-29 13:56:36 +020013826 "$P_SRV debug_level=4 groups=secp384r1 tickets=0" \
13827 "$P_CLI debug_level=4 groups=secp256r1,secp384r1" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013828 0 \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013829 -s "Protocol is TLSv1.3" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013830 -c "Protocol is TLSv1.3" \
13831 -s "tls13 server state: MBEDTLS_SSL_HELLO_RETRY_REQUEST" \
Gabor Mezeif7044ea2022-06-28 16:01:49 +020013832 -S "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_HELLO_RETRY_REQUEST" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013833 -C "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
13834
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013835requires_config_enabled MBEDTLS_DEBUG_C
13836requires_config_enabled MBEDTLS_SSL_SRV_C
13837requires_config_enabled MBEDTLS_SSL_CLI_C
Przemek Stekielc31a7982023-06-27 10:53:33 +020013838requires_config_enabled PSA_WANT_ALG_ECDH
Gilles Peskine365296a2024-09-13 14:15:46 +020013839requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13840requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013841run_test "TLS 1.3 m->m HRR both with middlebox compat support" \
Przemek Stekiel45255e42023-06-29 13:56:36 +020013842 "$P_SRV debug_level=4 groups=secp384r1 tickets=0" \
13843 "$P_CLI debug_level=4 groups=secp256r1,secp384r1" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013844 0 \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013845 -s "Protocol is TLSv1.3" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013846 -c "Protocol is TLSv1.3" \
13847 -s "tls13 server state: MBEDTLS_SSL_HELLO_RETRY_REQUEST" \
Gabor Mezeif7044ea2022-06-28 16:01:49 +020013848 -s "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_HELLO_RETRY_REQUEST" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013849 -c "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
13850
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013851requires_openssl_tls1_3_with_compatible_ephemeral
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013852requires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13853requires_config_enabled MBEDTLS_DEBUG_C
13854requires_config_enabled MBEDTLS_SSL_CLI_C
Ronald Cron928cbd32022-10-04 16:14:26 +020013855requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013856run_test "TLS 1.3 m->O HRR both peers do not support middlebox compatibility" \
13857 "$O_NEXT_SRV -msg -tls1_3 -groups P-384 -no_middlebox -num_tickets 0 -no_cache" \
Przemek Stekiel45255e42023-06-29 13:56:36 +020013858 "$P_CLI debug_level=4 groups=secp256r1,secp384r1" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013859 0 \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013860 -c "Protocol is TLSv1.3" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013861 -c "received HelloRetryRequest message" \
13862 -C "ChangeCipherSpec invalid in TLS 1.3 without compatibility mode" \
13863 -C "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
13864
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013865requires_openssl_tls1_3_with_compatible_ephemeral
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013866requires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13867requires_config_enabled MBEDTLS_DEBUG_C
13868requires_config_enabled MBEDTLS_SSL_CLI_C
Ronald Cron928cbd32022-10-04 16:14:26 +020013869requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013870run_test "TLS 1.3 m->O HRR server with middlebox compat support, not client" \
13871 "$O_NEXT_SRV -msg -tls1_3 -groups P-384 -num_tickets 0 -no_cache" \
Przemek Stekiel45255e42023-06-29 13:56:36 +020013872 "$P_CLI debug_level=4 groups=secp256r1,secp384r1" \
Gilles Peskinefc3accd2024-09-13 13:46:37 +020013873 0 \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013874 -c "received HelloRetryRequest message" \
Gilles Peskinefc3accd2024-09-13 13:46:37 +020013875 -c "Protocol is TLSv1.3" \
13876 -c "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013877
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013878requires_openssl_tls1_3_with_compatible_ephemeral
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013879requires_config_enabled MBEDTLS_DEBUG_C
13880requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +020013881requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13882requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013883run_test "TLS 1.3 m->O HRR both with middlebox compat support" \
13884 "$O_NEXT_SRV -msg -tls1_3 -groups P-384 -num_tickets 0 -no_resume_ephemeral -no_cache" \
Przemek Stekiel45255e42023-06-29 13:56:36 +020013885 "$P_CLI debug_level=4 groups=secp256r1,secp384r1" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013886 0 \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013887 -c "Protocol is TLSv1.3" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013888 -c "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
13889
13890requires_gnutls_tls1_3
13891requires_gnutls_next_no_ticket
13892requires_gnutls_next_disable_tls13_compat
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013893requires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13894requires_config_enabled MBEDTLS_DEBUG_C
13895requires_config_enabled MBEDTLS_SSL_CLI_C
Ronald Cron928cbd32022-10-04 16:14:26 +020013896requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013897run_test "TLS 1.3 m->G HRR both peers do not support middlebox compatibility" \
13898 "$G_NEXT_SRV --priority=NORMAL:-GROUP-ALL:+GROUP-SECP384R1:-VERS-ALL:+VERS-TLS1.3:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE --disable-client-cert" \
Przemek Stekiel45255e42023-06-29 13:56:36 +020013899 "$P_CLI debug_level=4 groups=secp256r1,secp384r1" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013900 0 \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013901 -c "Protocol is TLSv1.3" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013902 -c "received HelloRetryRequest message" \
13903 -C "ChangeCipherSpec invalid in TLS 1.3 without compatibility mode" \
13904 -C "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
13905
13906requires_gnutls_tls1_3
13907requires_gnutls_next_no_ticket
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013908requires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13909requires_config_enabled MBEDTLS_DEBUG_C
13910requires_config_enabled MBEDTLS_SSL_CLI_C
Ronald Cron928cbd32022-10-04 16:14:26 +020013911requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013912run_test "TLS 1.3 m->G HRR server with middlebox compat support, not client" \
13913 "$G_NEXT_SRV --priority=NORMAL:-GROUP-ALL:+GROUP-SECP384R1:-VERS-ALL:+VERS-TLS1.3:%NO_TICKETS --disable-client-cert" \
Przemek Stekiel45255e42023-06-29 13:56:36 +020013914 "$P_CLI debug_level=4 groups=secp256r1,secp384r1" \
Gilles Peskinefc3accd2024-09-13 13:46:37 +020013915 0 \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013916 -c "received HelloRetryRequest message" \
Gilles Peskinefc3accd2024-09-13 13:46:37 +020013917 -c "Protocol is TLSv1.3" \
13918 -c "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013919
13920requires_gnutls_tls1_3
13921requires_gnutls_next_no_ticket
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013922requires_config_enabled MBEDTLS_DEBUG_C
13923requires_config_enabled MBEDTLS_SSL_CLI_C
Przemek Stekielc31a7982023-06-27 10:53:33 +020013924requires_config_enabled PSA_WANT_ALG_ECDH
Gilles Peskine365296a2024-09-13 14:15:46 +020013925requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13926requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013927run_test "TLS 1.3 m->G HRR both with middlebox compat support" \
13928 "$G_NEXT_SRV --priority=NORMAL:-GROUP-ALL:+GROUP-SECP384R1:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS --disable-client-cert" \
Przemek Stekiel45255e42023-06-29 13:56:36 +020013929 "$P_CLI debug_level=4 groups=secp256r1,secp384r1" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013930 0 \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013931 -c "Protocol is TLSv1.3" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013932 -c "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
13933
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013934requires_openssl_tls1_3_with_compatible_ephemeral
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013935requires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13936requires_config_enabled MBEDTLS_DEBUG_C
13937requires_config_enabled MBEDTLS_SSL_SRV_C
Ronald Cron928cbd32022-10-04 16:14:26 +020013938requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013939run_test "TLS 1.3 O->m HRR both peers do not support middlebox compatibility" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013940 "$P_SRV debug_level=4 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key groups=secp384r1 tickets=0" \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013941 "$O_NEXT_CLI -msg -debug -groups P-256:P-384 -no_middlebox" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013942 0 \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013943 -s "Protocol is TLSv1.3" \
Gabor Mezeif7044ea2022-06-28 16:01:49 +020013944 -S "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_HELLO_RETRY_REQUEST" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013945 -C "14 03 03 00 01"
13946
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013947requires_openssl_tls1_3_with_compatible_ephemeral
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013948requires_config_enabled MBEDTLS_DEBUG_C
13949requires_config_enabled MBEDTLS_SSL_SRV_C
Gilles Peskine365296a2024-09-13 14:15:46 +020013950requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13951requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013952run_test "TLS 1.3 O->m HRR server with middlebox compat support, not client" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013953 "$P_SRV debug_level=4 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key groups=secp384r1 tickets=0" \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013954 "$O_NEXT_CLI -msg -debug -groups P-256:P-384 -no_middlebox" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013955 0 \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013956 -s "Protocol is TLSv1.3" \
Gabor Mezeif7044ea2022-06-28 16:01:49 +020013957 -s "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_HELLO_RETRY_REQUEST" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013958
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020013959requires_openssl_tls1_3_with_compatible_ephemeral
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013960requires_config_enabled MBEDTLS_DEBUG_C
13961requires_config_enabled MBEDTLS_SSL_SRV_C
Gilles Peskine365296a2024-09-13 14:15:46 +020013962requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13963requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013964run_test "TLS 1.3 O->m HRR both with middlebox compat support" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013965 "$P_SRV debug_level=4 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key groups=secp384r1 tickets=0" \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013966 "$O_NEXT_CLI -msg -debug -groups P-256:P-384" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013967 0 \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013968 -s "Protocol is TLSv1.3" \
Gabor Mezeif7044ea2022-06-28 16:01:49 +020013969 -s "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_HELLO_RETRY_REQUEST" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013970 -c "14 03 03 00 01"
13971
13972requires_gnutls_tls1_3
13973requires_gnutls_next_no_ticket
13974requires_gnutls_next_disable_tls13_compat
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013975requires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13976requires_config_enabled MBEDTLS_DEBUG_C
13977requires_config_enabled MBEDTLS_SSL_SRV_C
Ronald Cron928cbd32022-10-04 16:14:26 +020013978requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013979run_test "TLS 1.3 G->m HRR both peers do not support middlebox compatibility" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013980 "$P_SRV debug_level=4 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key groups=secp384r1 tickets=0" \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013981 "$G_NEXT_CLI localhost --priority=NORMAL:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-SECP384R1:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE -V" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013982 0 \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013983 -s "Protocol is TLSv1.3" \
Gabor Mezeif7044ea2022-06-28 16:01:49 +020013984 -S "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_HELLO_RETRY_REQUEST" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013985 -C "SSL 3.3 ChangeCipherSpec packet received"
13986
13987requires_gnutls_tls1_3
13988requires_gnutls_next_no_ticket
13989requires_gnutls_next_disable_tls13_compat
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013990requires_config_enabled MBEDTLS_DEBUG_C
13991requires_config_enabled MBEDTLS_SSL_SRV_C
Przemek Stekielc31a7982023-06-27 10:53:33 +020013992requires_config_enabled PSA_WANT_ALG_ECDH
Gilles Peskine365296a2024-09-13 14:15:46 +020013993requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13994requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013995run_test "TLS 1.3 G->m HRR server with middlebox compat support, not client" \
David Horstmann5ab92be2024-07-01 17:01:28 +010013996 "$P_SRV debug_level=4 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key groups=secp384r1 tickets=0" \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013997 "$G_NEXT_CLI localhost --debug=10 --priority=NORMAL:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-SECP384R1:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE -V" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020013998 0 \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020013999 -s "Protocol is TLSv1.3" \
Gabor Mezeif7044ea2022-06-28 16:01:49 +020014000 -s "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_HELLO_RETRY_REQUEST" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020014001 -c "SSL 3.3 ChangeCipherSpec packet received" \
14002 -c "discarding change cipher spec in TLS1.3"
14003
14004requires_gnutls_tls1_3
14005requires_gnutls_next_no_ticket
14006requires_gnutls_next_disable_tls13_compat
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020014007requires_config_enabled MBEDTLS_DEBUG_C
14008requires_config_enabled MBEDTLS_SSL_SRV_C
Przemek Stekielc31a7982023-06-27 10:53:33 +020014009requires_config_enabled PSA_WANT_ALG_ECDH
Gilles Peskine365296a2024-09-13 14:15:46 +020014010requires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
14011requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020014012run_test "TLS 1.3 G->m HRR both with middlebox compat support" \
David Horstmann5ab92be2024-07-01 17:01:28 +010014013 "$P_SRV debug_level=4 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key groups=secp384r1 tickets=0" \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020014014 "$G_NEXT_CLI localhost --debug=10 --priority=NORMAL:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-SECP384R1:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE -V" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020014015 0 \
Gabor Mezei9e4b7bd2022-06-28 16:22:14 +020014016 -s "Protocol is TLSv1.3" \
Gabor Mezeif7044ea2022-06-28 16:01:49 +020014017 -s "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_HELLO_RETRY_REQUEST" \
Gabor Mezei7e2dbaf2022-05-24 16:05:29 +020014018 -c "SSL 3.3 ChangeCipherSpec packet received"
14019
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020014020requires_openssl_tls1_3_with_compatible_ephemeral
Jerry Yuaae28f12022-06-29 16:21:32 +080014021requires_config_enabled MBEDTLS_DEBUG_C
14022requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +020014023requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yuaae28f12022-06-29 16:21:32 +080014024run_test "TLS 1.3: Check signature algorithm order, m->O" \
David Horstmann5ab92be2024-07-01 17:01:28 +010014025 "$O_NEXT_SRV_NO_CERT -cert $DATA_FILES_PATH/server2-sha256.crt -key $DATA_FILES_PATH/server2.key
Jerry Yuaae28f12022-06-29 16:21:32 +080014026 -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache
14027 -Verify 10 -sigalgs rsa_pkcs1_sha512:rsa_pss_rsae_sha512:rsa_pss_rsae_sha384:ecdsa_secp256r1_sha256" \
David Horstmann5ab92be2024-07-01 17:01:28 +010014028 "$P_CLI debug_level=4 crt_file=$DATA_FILES_PATH/server2-sha256.crt key_file=$DATA_FILES_PATH/server2.key \
Jerry Yu7ac0d492022-07-01 19:29:30 +080014029 sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp256r1_sha256" \
Jerry Yuaae28f12022-06-29 16:21:32 +080014030 0 \
14031 -c "Protocol is TLSv1.3" \
Ronald Cron067a1e72022-09-16 13:44:49 +020014032 -c "CertificateVerify signature with rsa_pss_rsae_sha512" \
Jerry Yuaae28f12022-06-29 16:21:32 +080014033 -c "HTTP/1.0 200 [Oo][Kk]"
14034
14035requires_gnutls_tls1_3
Jerry Yuaae28f12022-06-29 16:21:32 +080014036requires_config_enabled MBEDTLS_DEBUG_C
14037requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +020014038requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yuaae28f12022-06-29 16:21:32 +080014039run_test "TLS 1.3: Check signature algorithm order, m->G" \
David Horstmann5ab92be2024-07-01 17:01:28 +010014040 "$G_NEXT_SRV_NO_CERT --x509certfile $DATA_FILES_PATH/server2-sha256.crt --x509keyfile $DATA_FILES_PATH/server2.key
Jerry Yuaae28f12022-06-29 16:21:32 +080014041 -d 4
14042 --priority=NORMAL:-VERS-ALL:-SIGN-ALL:+SIGN-RSA-SHA512:+SIGN-RSA-PSS-RSAE-SHA512:+SIGN-RSA-PSS-RSAE-SHA384:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS " \
David Horstmann5ab92be2024-07-01 17:01:28 +010014043 "$P_CLI debug_level=4 crt_file=$DATA_FILES_PATH/server2-sha256.crt key_file=$DATA_FILES_PATH/server2.key \
Jerry Yu7ac0d492022-07-01 19:29:30 +080014044 sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp256r1_sha256" \
Jerry Yuaae28f12022-06-29 16:21:32 +080014045 0 \
14046 -c "Protocol is TLSv1.3" \
Ronald Cron067a1e72022-09-16 13:44:49 +020014047 -c "CertificateVerify signature with rsa_pss_rsae_sha512" \
Jerry Yuaae28f12022-06-29 16:21:32 +080014048 -c "HTTP/1.0 200 [Oo][Kk]"
14049
Jerry Yuaae28f12022-06-29 16:21:32 +080014050requires_config_enabled MBEDTLS_DEBUG_C
14051requires_config_enabled MBEDTLS_SSL_SRV_C
14052requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +020014053requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yuaae28f12022-06-29 16:21:32 +080014054run_test "TLS 1.3: Check signature algorithm order, m->m" \
Ronald Cron50ae84e2023-03-14 08:59:56 +010014055 "$P_SRV debug_level=4 auth_mode=required
David Horstmann5ab92be2024-07-01 17:01:28 +010014056 crt_file2=$DATA_FILES_PATH/server2-sha256.crt key_file2=$DATA_FILES_PATH/server2.key
14057 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key
Jerry Yuaae28f12022-06-29 16:21:32 +080014058 sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp256r1_sha256 " \
David Horstmann5ab92be2024-07-01 17:01:28 +010014059 "$P_CLI debug_level=4 crt_file=$DATA_FILES_PATH/server2-sha256.crt key_file=$DATA_FILES_PATH/server2.key \
Jerry Yu7ac0d492022-07-01 19:29:30 +080014060 sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp256r1_sha256" \
Jerry Yuaae28f12022-06-29 16:21:32 +080014061 0 \
14062 -c "Protocol is TLSv1.3" \
Ronald Cron067a1e72022-09-16 13:44:49 +020014063 -c "CertificateVerify signature with rsa_pss_rsae_sha512" \
14064 -s "CertificateVerify signature with rsa_pss_rsae_sha512" \
Jerry Yuaae28f12022-06-29 16:21:32 +080014065 -s "ssl_tls13_pick_key_cert:selected signature algorithm rsa_pss_rsae_sha512" \
14066 -c "HTTP/1.0 200 [Oo][Kk]"
14067
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020014068requires_openssl_tls1_3_with_compatible_ephemeral
Jerry Yuaae28f12022-06-29 16:21:32 +080014069requires_config_enabled MBEDTLS_DEBUG_C
14070requires_config_enabled MBEDTLS_SSL_SRV_C
Gilles Peskine365296a2024-09-13 14:15:46 +020014071requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yuaae28f12022-06-29 16:21:32 +080014072run_test "TLS 1.3: Check signature algorithm order, O->m" \
Ronald Cron50ae84e2023-03-14 08:59:56 +010014073 "$P_SRV debug_level=4 auth_mode=required
David Horstmann5ab92be2024-07-01 17:01:28 +010014074 crt_file2=$DATA_FILES_PATH/server2-sha256.crt key_file2=$DATA_FILES_PATH/server2.key
14075 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key
Jerry Yuaae28f12022-06-29 16:21:32 +080014076 sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp256r1_sha256 " \
David Horstmann5ab92be2024-07-01 17:01:28 +010014077 "$O_NEXT_CLI_NO_CERT -msg -CAfile $DATA_FILES_PATH/test-ca_cat12.crt \
14078 -cert $DATA_FILES_PATH/server2-sha256.crt -key $DATA_FILES_PATH/server2.key \
Jerry Yuaae28f12022-06-29 16:21:32 +080014079 -sigalgs rsa_pkcs1_sha512:rsa_pss_rsae_sha512:rsa_pss_rsae_sha384:ecdsa_secp256r1_sha256" \
14080 0 \
14081 -c "TLSv1.3" \
Ronald Cron067a1e72022-09-16 13:44:49 +020014082 -s "CertificateVerify signature with rsa_pss_rsae_sha512" \
Jerry Yuaae28f12022-06-29 16:21:32 +080014083 -s "ssl_tls13_pick_key_cert:selected signature algorithm rsa_pss_rsae_sha512"
14084
14085requires_gnutls_tls1_3
Jerry Yuaae28f12022-06-29 16:21:32 +080014086requires_config_enabled MBEDTLS_DEBUG_C
14087requires_config_enabled MBEDTLS_SSL_SRV_C
Gilles Peskine365296a2024-09-13 14:15:46 +020014088requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yuaae28f12022-06-29 16:21:32 +080014089run_test "TLS 1.3: Check signature algorithm order, G->m" \
Ronald Cron50ae84e2023-03-14 08:59:56 +010014090 "$P_SRV debug_level=4 auth_mode=required
David Horstmann5ab92be2024-07-01 17:01:28 +010014091 crt_file2=$DATA_FILES_PATH/server2-sha256.crt key_file2=$DATA_FILES_PATH/server2.key
14092 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key
Jerry Yuaae28f12022-06-29 16:21:32 +080014093 sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp256r1_sha256 " \
David Horstmann5ab92be2024-07-01 17:01:28 +010014094 "$G_NEXT_CLI_NO_CERT localhost -d 4 --x509cafile $DATA_FILES_PATH/test-ca_cat12.crt \
14095 --x509certfile $DATA_FILES_PATH/server2-sha256.crt --x509keyfile $DATA_FILES_PATH/server2.key \
Jerry Yuaae28f12022-06-29 16:21:32 +080014096 --priority=NORMAL:-SIGN-ALL:+SIGN-RSA-SHA512:+SIGN-RSA-PSS-RSAE-SHA512:+SIGN-RSA-PSS-RSAE-SHA384" \
14097 0 \
14098 -c "Negotiated version: 3.4" \
14099 -c "HTTP/1.0 200 [Oo][Kk]" \
Ronald Cron067a1e72022-09-16 13:44:49 +020014100 -s "CertificateVerify signature with rsa_pss_rsae_sha512" \
Jerry Yuaae28f12022-06-29 16:21:32 +080014101 -s "ssl_tls13_pick_key_cert:selected signature algorithm rsa_pss_rsae_sha512"
14102
14103requires_gnutls_tls1_3
Jerry Yuaae28f12022-06-29 16:21:32 +080014104requires_config_enabled MBEDTLS_DEBUG_C
14105requires_config_enabled MBEDTLS_SSL_SRV_C
Gilles Peskine365296a2024-09-13 14:15:46 +020014106requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yuaae28f12022-06-29 16:21:32 +080014107run_test "TLS 1.3: Check server no suitable signature algorithm, G->m" \
Ronald Cron50ae84e2023-03-14 08:59:56 +010014108 "$P_SRV debug_level=4 auth_mode=required
David Horstmann5ab92be2024-07-01 17:01:28 +010014109 crt_file2=$DATA_FILES_PATH/server2-sha256.crt key_file2=$DATA_FILES_PATH/server2.key
14110 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key
Jerry Yuaae28f12022-06-29 16:21:32 +080014111 sig_algs=rsa_pkcs1_sha512,ecdsa_secp256r1_sha256 " \
David Horstmann5ab92be2024-07-01 17:01:28 +010014112 "$G_NEXT_CLI_NO_CERT localhost -d 4 --x509cafile $DATA_FILES_PATH/test-ca_cat12.crt \
14113 --x509certfile $DATA_FILES_PATH/server2-sha256.crt --x509keyfile $DATA_FILES_PATH/server2.key \
Jerry Yuaae28f12022-06-29 16:21:32 +080014114 --priority=NORMAL:-SIGN-ALL:+SIGN-RSA-SHA512:+SIGN-RSA-PSS-RSAE-SHA512:+SIGN-ECDSA-SECP521R1-SHA512" \
14115 1 \
Ronald Cron67ea2542022-09-15 17:34:42 +020014116 -S "ssl_tls13_pick_key_cert:check signature algorithm"
Jerry Yuaae28f12022-06-29 16:21:32 +080014117
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020014118requires_openssl_tls1_3_with_compatible_ephemeral
Jerry Yuaae28f12022-06-29 16:21:32 +080014119requires_config_enabled MBEDTLS_DEBUG_C
14120requires_config_enabled MBEDTLS_SSL_SRV_C
Gilles Peskine365296a2024-09-13 14:15:46 +020014121requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yuaae28f12022-06-29 16:21:32 +080014122run_test "TLS 1.3: Check server no suitable signature algorithm, O->m" \
Ronald Cron50ae84e2023-03-14 08:59:56 +010014123 "$P_SRV debug_level=4 auth_mode=required
David Horstmann5ab92be2024-07-01 17:01:28 +010014124 crt_file2=$DATA_FILES_PATH/server2-sha256.crt key_file2=$DATA_FILES_PATH/server2.key
14125 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key
Jerry Yuaae28f12022-06-29 16:21:32 +080014126 sig_algs=rsa_pkcs1_sha512,ecdsa_secp256r1_sha256" \
David Horstmann5ab92be2024-07-01 17:01:28 +010014127 "$O_NEXT_CLI_NO_CERT -msg -CAfile $DATA_FILES_PATH/test-ca_cat12.crt \
14128 -cert $DATA_FILES_PATH/server2-sha256.crt -key $DATA_FILES_PATH/server2.key \
Jerry Yuaae28f12022-06-29 16:21:32 +080014129 -sigalgs rsa_pkcs1_sha512:rsa_pss_rsae_sha512:ecdsa_secp521r1_sha512" \
14130 1 \
Ronald Cron67ea2542022-09-15 17:34:42 +020014131 -S "ssl_tls13_pick_key_cert:check signature algorithm"
Jerry Yuaae28f12022-06-29 16:21:32 +080014132
Jerry Yuaae28f12022-06-29 16:21:32 +080014133requires_config_enabled MBEDTLS_DEBUG_C
14134requires_config_enabled MBEDTLS_SSL_SRV_C
14135requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +020014136requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yuaae28f12022-06-29 16:21:32 +080014137run_test "TLS 1.3: Check server no suitable signature algorithm, m->m" \
Ronald Cron50ae84e2023-03-14 08:59:56 +010014138 "$P_SRV debug_level=4 auth_mode=required
David Horstmann5ab92be2024-07-01 17:01:28 +010014139 crt_file2=$DATA_FILES_PATH/server2-sha256.crt key_file2=$DATA_FILES_PATH/server2.key
14140 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key
Jerry Yuaae28f12022-06-29 16:21:32 +080014141 sig_algs=rsa_pkcs1_sha512,ecdsa_secp256r1_sha256 " \
David Horstmann5ab92be2024-07-01 17:01:28 +010014142 "$P_CLI allow_sha1=0 debug_level=4 crt_file=$DATA_FILES_PATH/server2-sha256.crt key_file=$DATA_FILES_PATH/server2.key \
Jerry Yu7ac0d492022-07-01 19:29:30 +080014143 sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,ecdsa_secp521r1_sha512" \
Jerry Yuaae28f12022-06-29 16:21:32 +080014144 1 \
Ronald Cron67ea2542022-09-15 17:34:42 +020014145 -S "ssl_tls13_pick_key_cert:check signature algorithm"
Jerry Yuaae28f12022-06-29 16:21:32 +080014146
14147requires_gnutls_tls1_3
Jerry Yuaae28f12022-06-29 16:21:32 +080014148requires_config_enabled MBEDTLS_DEBUG_C
14149requires_config_enabled MBEDTLS_SSL_SRV_C
Gilles Peskine365296a2024-09-13 14:15:46 +020014150requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yuaae28f12022-06-29 16:21:32 +080014151run_test "TLS 1.3: Check server no suitable certificate, G->m" \
Ronald Cron50ae84e2023-03-14 08:59:56 +010014152 "$P_SRV debug_level=4
David Horstmann5ab92be2024-07-01 17:01:28 +010014153 crt_file=$DATA_FILES_PATH/server2-sha256.crt key_file=$DATA_FILES_PATH/server2.key
Jerry Yuaae28f12022-06-29 16:21:32 +080014154 sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp256r1_sha256 " \
David Horstmann5ab92be2024-07-01 17:01:28 +010014155 "$G_NEXT_CLI_NO_CERT localhost -d 4 --x509cafile $DATA_FILES_PATH/test-ca_cat12.crt \
Jerry Yuaae28f12022-06-29 16:21:32 +080014156 --priority=NORMAL:-SIGN-ALL:+SIGN-ECDSA-SECP521R1-SHA512:+SIGN-ECDSA-SECP256R1-SHA256" \
14157 1 \
14158 -s "ssl_tls13_pick_key_cert:no suitable certificate found"
14159
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020014160requires_openssl_tls1_3_with_compatible_ephemeral
Jerry Yuaae28f12022-06-29 16:21:32 +080014161requires_config_enabled MBEDTLS_DEBUG_C
14162requires_config_enabled MBEDTLS_SSL_SRV_C
Gilles Peskine365296a2024-09-13 14:15:46 +020014163requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yuaae28f12022-06-29 16:21:32 +080014164run_test "TLS 1.3: Check server no suitable certificate, O->m" \
Ronald Cron50ae84e2023-03-14 08:59:56 +010014165 "$P_SRV debug_level=4
David Horstmann5ab92be2024-07-01 17:01:28 +010014166 crt_file=$DATA_FILES_PATH/server2-sha256.crt key_file=$DATA_FILES_PATH/server2.key
Jerry Yuaae28f12022-06-29 16:21:32 +080014167 sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp256r1_sha256 " \
David Horstmann5ab92be2024-07-01 17:01:28 +010014168 "$O_NEXT_CLI_NO_CERT -msg -CAfile $DATA_FILES_PATH/test-ca_cat12.crt \
Jerry Yuaae28f12022-06-29 16:21:32 +080014169 -sigalgs ecdsa_secp521r1_sha512:ecdsa_secp256r1_sha256" \
14170 1 \
14171 -s "ssl_tls13_pick_key_cert:no suitable certificate found"
14172
Jerry Yuaae28f12022-06-29 16:21:32 +080014173requires_config_enabled MBEDTLS_DEBUG_C
14174requires_config_enabled MBEDTLS_SSL_SRV_C
14175requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +020014176requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yuaae28f12022-06-29 16:21:32 +080014177run_test "TLS 1.3: Check server no suitable certificate, m->m" \
Ronald Cron50ae84e2023-03-14 08:59:56 +010014178 "$P_SRV debug_level=4
David Horstmann5ab92be2024-07-01 17:01:28 +010014179 crt_file=$DATA_FILES_PATH/server2-sha256.crt key_file=$DATA_FILES_PATH/server2.key
Jerry Yuaae28f12022-06-29 16:21:32 +080014180 sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp256r1_sha256 " \
14181 "$P_CLI allow_sha1=0 debug_level=4 \
Jerry Yu7ac0d492022-07-01 19:29:30 +080014182 sig_algs=ecdsa_secp521r1_sha512,ecdsa_secp256r1_sha256" \
Jerry Yuaae28f12022-06-29 16:21:32 +080014183 1 \
14184 -s "ssl_tls13_pick_key_cert:no suitable certificate found"
14185
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020014186requires_openssl_tls1_3_with_compatible_ephemeral
Jerry Yuaae28f12022-06-29 16:21:32 +080014187requires_config_enabled MBEDTLS_DEBUG_C
14188requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +020014189requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yuaae28f12022-06-29 16:21:32 +080014190run_test "TLS 1.3: Check client no signature algorithm, m->O" \
David Horstmann5ab92be2024-07-01 17:01:28 +010014191 "$O_NEXT_SRV_NO_CERT -cert $DATA_FILES_PATH/server2-sha256.crt -key $DATA_FILES_PATH/server2.key
Jerry Yuaae28f12022-06-29 16:21:32 +080014192 -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache
14193 -Verify 10 -sigalgs rsa_pkcs1_sha512:rsa_pss_rsae_sha512:rsa_pss_rsae_sha384:ecdsa_secp521r1_sha512" \
David Horstmann5ab92be2024-07-01 17:01:28 +010014194 "$P_CLI debug_level=4 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key \
Jerry Yu7ac0d492022-07-01 19:29:30 +080014195 sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp256r1_sha256" \
Jerry Yuaae28f12022-06-29 16:21:32 +080014196 1 \
Ronald Cron067a1e72022-09-16 13:44:49 +020014197 -c "no suitable signature algorithm"
Jerry Yuaae28f12022-06-29 16:21:32 +080014198
14199requires_gnutls_tls1_3
Jerry Yuaae28f12022-06-29 16:21:32 +080014200requires_config_enabled MBEDTLS_DEBUG_C
14201requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +020014202requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yuaae28f12022-06-29 16:21:32 +080014203run_test "TLS 1.3: Check client no signature algorithm, m->G" \
David Horstmann5ab92be2024-07-01 17:01:28 +010014204 "$G_NEXT_SRV_NO_CERT --x509certfile $DATA_FILES_PATH/server2-sha256.crt --x509keyfile $DATA_FILES_PATH/server2.key
Jerry Yuaae28f12022-06-29 16:21:32 +080014205 -d 4
14206 --priority=NORMAL:-VERS-ALL:-SIGN-ALL:+SIGN-RSA-SHA512:+SIGN-RSA-PSS-RSAE-SHA512:+SIGN-RSA-PSS-RSAE-SHA384:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS " \
David Horstmann5ab92be2024-07-01 17:01:28 +010014207 "$P_CLI debug_level=4 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key \
Jerry Yu7ac0d492022-07-01 19:29:30 +080014208 sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp256r1_sha256" \
Jerry Yuaae28f12022-06-29 16:21:32 +080014209 1 \
Ronald Cron067a1e72022-09-16 13:44:49 +020014210 -c "no suitable signature algorithm"
Jerry Yuaae28f12022-06-29 16:21:32 +080014211
Jerry Yuaae28f12022-06-29 16:21:32 +080014212requires_config_enabled MBEDTLS_DEBUG_C
14213requires_config_enabled MBEDTLS_SSL_SRV_C
14214requires_config_enabled MBEDTLS_SSL_CLI_C
Gilles Peskine365296a2024-09-13 14:15:46 +020014215requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Jerry Yuaae28f12022-06-29 16:21:32 +080014216run_test "TLS 1.3: Check client no signature algorithm, m->m" \
Ronald Cron50ae84e2023-03-14 08:59:56 +010014217 "$P_SRV debug_level=4 auth_mode=required
David Horstmann5ab92be2024-07-01 17:01:28 +010014218 crt_file2=$DATA_FILES_PATH/server2-sha256.crt key_file2=$DATA_FILES_PATH/server2.key
14219 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key
Jerry Yuaae28f12022-06-29 16:21:32 +080014220 sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp521r1_sha512" \
David Horstmann5ab92be2024-07-01 17:01:28 +010014221 "$P_CLI debug_level=4 crt_file=$DATA_FILES_PATH/server5.crt key_file=$DATA_FILES_PATH/server5.key \
Jerry Yu7ac0d492022-07-01 19:29:30 +080014222 sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp256r1_sha256" \
Jerry Yuaae28f12022-06-29 16:21:32 +080014223 1 \
Ronald Cron067a1e72022-09-16 13:44:49 +020014224 -c "no suitable signature algorithm"
Jerry Yuaae28f12022-06-29 16:21:32 +080014225
Przemek Stekiel8bfe8972023-06-26 12:59:45 +020014226requires_openssl_tls1_3_with_compatible_ephemeral
Jerry Yu6455b682022-06-27 14:18:29 +080014227requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
14228requires_config_enabled MBEDTLS_DEBUG_C
14229requires_config_enabled MBEDTLS_SSL_CLI_C
Jerry Yueec4f032022-07-23 11:31:51 +080014230run_test "TLS 1.2: Check rsa_pss_rsae compatibility issue, m->O" \
David Horstmann5ab92be2024-07-01 17:01:28 +010014231 "$O_NEXT_SRV_NO_CERT -cert $DATA_FILES_PATH/server2-sha256.crt -key $DATA_FILES_PATH/server2.key
Jerry Yu6455b682022-06-27 14:18:29 +080014232 -msg -tls1_2
14233 -Verify 10 " \
David Horstmann5ab92be2024-07-01 17:01:28 +010014234 "$P_CLI debug_level=4 crt_file=$DATA_FILES_PATH/server2-sha256.crt key_file=$DATA_FILES_PATH/server2.key
Jerry Yu6455b682022-06-27 14:18:29 +080014235 sig_algs=rsa_pss_rsae_sha512,rsa_pkcs1_sha512
14236 min_version=tls12 max_version=tls13 " \
14237 0 \
14238 -c "Protocol is TLSv1.2" \
14239 -c "HTTP/1.0 200 [Oo][Kk]"
14240
14241
14242requires_gnutls_tls1_3
14243requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
14244requires_config_enabled MBEDTLS_DEBUG_C
14245requires_config_enabled MBEDTLS_SSL_CLI_C
Jerry Yueec4f032022-07-23 11:31:51 +080014246run_test "TLS 1.2: Check rsa_pss_rsae compatibility issue, m->G" \
David Horstmann5ab92be2024-07-01 17:01:28 +010014247 "$G_NEXT_SRV_NO_CERT --x509certfile $DATA_FILES_PATH/server2-sha256.crt --x509keyfile $DATA_FILES_PATH/server2.key
Jerry Yu6455b682022-06-27 14:18:29 +080014248 -d 4
14249 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2" \
David Horstmann5ab92be2024-07-01 17:01:28 +010014250 "$P_CLI debug_level=4 crt_file=$DATA_FILES_PATH/server2-sha256.crt key_file=$DATA_FILES_PATH/server2.key
Jerry Yu6455b682022-06-27 14:18:29 +080014251 sig_algs=rsa_pss_rsae_sha512,rsa_pkcs1_sha512
14252 min_version=tls12 max_version=tls13 " \
14253 0 \
14254 -c "Protocol is TLSv1.2" \
14255 -c "HTTP/1.0 200 [Oo][Kk]"
14256
Przemek Stekiel3484db42023-06-28 13:31:38 +020014257requires_config_enabled MBEDTLS_SSL_SRV_C
14258requires_config_enabled MBEDTLS_DEBUG_C
14259requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Przemek Stekiel3484db42023-06-28 13:31:38 +020014260requires_config_enabled MBEDTLS_X509_RSASSA_PSS_SUPPORT
14261requires_config_enabled PSA_WANT_ALG_FFDH
Valerio Setti05754d82024-01-18 09:47:00 +010014262requires_config_enabled PSA_WANT_DH_RFC7919_3072
Przemek Stekiel3484db42023-06-28 13:31:38 +020014263requires_gnutls_tls1_3
14264requires_gnutls_next_no_ticket
14265requires_gnutls_next_disable_tls13_compat
14266run_test "TLS 1.3 G->m: AES_128_GCM_SHA256,ffdhe3072,rsa_pss_rsae_sha256" \
David Horstmann5ab92be2024-07-01 17:01:28 +010014267 "$P_SRV crt_file=$DATA_FILES_PATH/server2-sha256.crt key_file=$DATA_FILES_PATH/server2.key debug_level=4 force_ciphersuite=TLS1-3-AES-128-GCM-SHA256 sig_algs=rsa_pss_rsae_sha256 groups=ffdhe3072 tls13_kex_modes=ephemeral cookies=0 tickets=0" \
14268 "$G_NEXT_CLI_NO_CERT --debug=4 --single-key-share --x509cafile $DATA_FILES_PATH/test-ca_cat12.crt --priority=NONE:+AES-128-GCM:+SHA256:+AEAD:+SIGN-RSA-PSS-RSAE-SHA256:+GROUP-FFDHE3072:+VERS-TLS1.3:%NO_TICKETS" \
Przemek Stekiel3484db42023-06-28 13:31:38 +020014269 0 \
14270 -s "Protocol is TLSv1.3" \
14271 -s "server hello, chosen ciphersuite: TLS1-3-AES-128-GCM-SHA256 ( id=4865 )" \
14272 -s "received signature algorithm: 0x804" \
14273 -s "got named group: ffdhe3072(0101)" \
14274 -s "Certificate verification was skipped" \
14275 -C "received HelloRetryRequest message"
14276
14277
14278requires_gnutls_tls1_3
14279requires_gnutls_next_no_ticket
14280requires_gnutls_next_disable_tls13_compat
14281requires_config_enabled MBEDTLS_SSL_CLI_C
14282requires_config_enabled MBEDTLS_DEBUG_C
14283requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Przemek Stekiel3484db42023-06-28 13:31:38 +020014284requires_config_enabled MBEDTLS_X509_RSASSA_PSS_SUPPORT
14285requires_config_enabled PSA_WANT_ALG_FFDH
Valerio Setti05754d82024-01-18 09:47:00 +010014286requires_config_enabled PSA_WANT_DH_RFC7919_3072
Przemek Stekiel3484db42023-06-28 13:31:38 +020014287run_test "TLS 1.3 m->G: AES_128_GCM_SHA256,ffdhe3072,rsa_pss_rsae_sha256" \
David Horstmann5ab92be2024-07-01 17:01:28 +010014288 "$G_NEXT_SRV_NO_CERT --http --disable-client-cert --debug=4 --x509certfile $DATA_FILES_PATH/server2-sha256.crt --x509keyfile $DATA_FILES_PATH/server2.key --priority=NONE:+AES-128-GCM:+SHA256:+AEAD:+SIGN-RSA-PSS-RSAE-SHA256:+GROUP-FFDHE3072:+VERS-TLS1.3:%NO_TICKETS" \
14289 "$P_CLI ca_file=$DATA_FILES_PATH/test-ca_cat12.crt debug_level=4 force_ciphersuite=TLS1-3-AES-128-GCM-SHA256 sig_algs=rsa_pss_rsae_sha256 groups=ffdhe3072" \
Przemek Stekiel3484db42023-06-28 13:31:38 +020014290 0 \
14291 -c "HTTP/1.0 200 OK" \
14292 -c "Protocol is TLSv1.3" \
14293 -c "server hello, chosen ciphersuite: ( 1301 ) - TLS1-3-AES-128-GCM-SHA256" \
14294 -c "Certificate Verify: Signature algorithm ( 0804 )" \
14295 -c "NamedGroup: ffdhe3072 ( 101 )" \
14296 -c "Verifying peer X.509 certificate... ok" \
14297 -C "received HelloRetryRequest message"
14298
14299requires_config_enabled MBEDTLS_SSL_SRV_C
14300requires_config_enabled MBEDTLS_DEBUG_C
14301requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Przemek Stekiel3484db42023-06-28 13:31:38 +020014302requires_config_enabled MBEDTLS_X509_RSASSA_PSS_SUPPORT
14303requires_config_enabled PSA_WANT_ALG_FFDH
Valerio Setti05754d82024-01-18 09:47:00 +010014304requires_config_enabled PSA_WANT_DH_RFC7919_4096
Przemek Stekiel3484db42023-06-28 13:31:38 +020014305requires_gnutls_tls1_3
14306requires_gnutls_next_no_ticket
14307requires_gnutls_next_disable_tls13_compat
14308run_test "TLS 1.3 G->m: AES_128_GCM_SHA256,ffdhe4096,rsa_pss_rsae_sha256" \
David Horstmann5ab92be2024-07-01 17:01:28 +010014309 "$P_SRV crt_file=$DATA_FILES_PATH/server2-sha256.crt key_file=$DATA_FILES_PATH/server2.key debug_level=4 force_ciphersuite=TLS1-3-AES-128-GCM-SHA256 sig_algs=rsa_pss_rsae_sha256 groups=ffdhe4096 tls13_kex_modes=ephemeral cookies=0 tickets=0" \
14310 "$G_NEXT_CLI_NO_CERT --debug=4 --single-key-share --x509cafile $DATA_FILES_PATH/test-ca_cat12.crt --priority=NONE:+AES-128-GCM:+SHA256:+AEAD:+SIGN-RSA-PSS-RSAE-SHA256:+GROUP-FFDHE4096:+VERS-TLS1.3:%NO_TICKETS" \
Przemek Stekiel3484db42023-06-28 13:31:38 +020014311 0 \
14312 -s "Protocol is TLSv1.3" \
14313 -s "server hello, chosen ciphersuite: TLS1-3-AES-128-GCM-SHA256 ( id=4865 )" \
14314 -s "received signature algorithm: 0x804" \
14315 -s "got named group: ffdhe4096(0102)" \
14316 -s "Certificate verification was skipped" \
14317 -C "received HelloRetryRequest message"
14318
14319
14320requires_gnutls_tls1_3
14321requires_gnutls_next_no_ticket
14322requires_gnutls_next_disable_tls13_compat
14323requires_config_enabled MBEDTLS_SSL_CLI_C
14324requires_config_enabled MBEDTLS_DEBUG_C
14325requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Przemek Stekiel3484db42023-06-28 13:31:38 +020014326requires_config_enabled MBEDTLS_X509_RSASSA_PSS_SUPPORT
14327requires_config_enabled PSA_WANT_ALG_FFDH
Valerio Setti05754d82024-01-18 09:47:00 +010014328requires_config_enabled PSA_WANT_DH_RFC7919_4096
Przemek Stekiel3484db42023-06-28 13:31:38 +020014329run_test "TLS 1.3 m->G: AES_128_GCM_SHA256,ffdhe4096,rsa_pss_rsae_sha256" \
David Horstmann5ab92be2024-07-01 17:01:28 +010014330 "$G_NEXT_SRV_NO_CERT --http --disable-client-cert --debug=4 --x509certfile $DATA_FILES_PATH/server2-sha256.crt --x509keyfile $DATA_FILES_PATH/server2.key --priority=NONE:+AES-128-GCM:+SHA256:+AEAD:+SIGN-RSA-PSS-RSAE-SHA256:+GROUP-FFDHE4096:+VERS-TLS1.3:%NO_TICKETS" \
14331 "$P_CLI ca_file=$DATA_FILES_PATH/test-ca_cat12.crt debug_level=4 force_ciphersuite=TLS1-3-AES-128-GCM-SHA256 sig_algs=rsa_pss_rsae_sha256 groups=ffdhe4096" \
Przemek Stekiel3484db42023-06-28 13:31:38 +020014332 0 \
14333 -c "HTTP/1.0 200 OK" \
14334 -c "Protocol is TLSv1.3" \
14335 -c "server hello, chosen ciphersuite: ( 1301 ) - TLS1-3-AES-128-GCM-SHA256" \
14336 -c "Certificate Verify: Signature algorithm ( 0804 )" \
14337 -c "NamedGroup: ffdhe4096 ( 102 )" \
14338 -c "Verifying peer X.509 certificate... ok" \
14339 -C "received HelloRetryRequest message"
14340
14341requires_config_enabled MBEDTLS_SSL_SRV_C
14342requires_config_enabled MBEDTLS_DEBUG_C
14343requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Przemek Stekiel3484db42023-06-28 13:31:38 +020014344requires_config_enabled MBEDTLS_X509_RSASSA_PSS_SUPPORT
14345requires_config_enabled PSA_WANT_ALG_FFDH
Valerio Setti05754d82024-01-18 09:47:00 +010014346requires_config_enabled PSA_WANT_DH_RFC7919_6144
Przemek Stekiel3484db42023-06-28 13:31:38 +020014347requires_gnutls_tls1_3
14348requires_gnutls_next_no_ticket
14349requires_gnutls_next_disable_tls13_compat
Gilles Peskine6bdebfe2024-10-31 18:52:40 +010014350# Tests using FFDH with a large prime take a long time to run with a memory
14351# sanitizer. GnuTLS <=3.8.1 has a hard-coded timeout and gives up after
14352# 30s (since 3.8.1, it can be configured with --timeout). We've observed
14353# 8192-bit FFDH test cases failing intermittently on heavily loaded CI
14354# executors (https://github.com/Mbed-TLS/mbedtls/issues/9742),
14355# when using MSan. As a workaround, skip them.
14356# Also skip 6144-bit FFDH to have a bit of safety margin.
14357not_with_msan_or_valgrind
Przemek Stekiel3484db42023-06-28 13:31:38 +020014358run_test "TLS 1.3 G->m: AES_128_GCM_SHA256,ffdhe6144,rsa_pss_rsae_sha256" \
David Horstmann5ab92be2024-07-01 17:01:28 +010014359 "$P_SRV crt_file=$DATA_FILES_PATH/server2-sha256.crt key_file=$DATA_FILES_PATH/server2.key debug_level=4 force_ciphersuite=TLS1-3-AES-128-GCM-SHA256 sig_algs=rsa_pss_rsae_sha256 groups=ffdhe6144 tls13_kex_modes=ephemeral cookies=0 tickets=0" \
14360 "$G_NEXT_CLI_NO_CERT --debug=4 --single-key-share --x509cafile $DATA_FILES_PATH/test-ca_cat12.crt --priority=NONE:+AES-128-GCM:+SHA256:+AEAD:+SIGN-RSA-PSS-RSAE-SHA256:+GROUP-FFDHE6144:+VERS-TLS1.3:%NO_TICKETS" \
Przemek Stekiel3484db42023-06-28 13:31:38 +020014361 0 \
14362 -s "Protocol is TLSv1.3" \
14363 -s "server hello, chosen ciphersuite: TLS1-3-AES-128-GCM-SHA256 ( id=4865 )" \
14364 -s "received signature algorithm: 0x804" \
14365 -s "got named group: ffdhe6144(0103)" \
14366 -s "Certificate verification was skipped" \
14367 -C "received HelloRetryRequest message"
14368
14369requires_gnutls_tls1_3
14370requires_gnutls_next_no_ticket
14371requires_gnutls_next_disable_tls13_compat
14372requires_config_enabled MBEDTLS_SSL_CLI_C
14373requires_config_enabled MBEDTLS_DEBUG_C
14374requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Przemek Stekiel3484db42023-06-28 13:31:38 +020014375requires_config_enabled MBEDTLS_X509_RSASSA_PSS_SUPPORT
14376requires_config_enabled PSA_WANT_ALG_FFDH
Valerio Setti05754d82024-01-18 09:47:00 +010014377requires_config_enabled PSA_WANT_DH_RFC7919_6144
Gilles Peskine6bdebfe2024-10-31 18:52:40 +010014378not_with_msan_or_valgrind
Przemek Stekiel3484db42023-06-28 13:31:38 +020014379run_test "TLS 1.3 m->G: AES_128_GCM_SHA256,ffdhe6144,rsa_pss_rsae_sha256" \
David Horstmann5ab92be2024-07-01 17:01:28 +010014380 "$G_NEXT_SRV_NO_CERT --http --disable-client-cert --debug=4 --x509certfile $DATA_FILES_PATH/server2-sha256.crt --x509keyfile $DATA_FILES_PATH/server2.key --priority=NONE:+AES-128-GCM:+SHA256:+AEAD:+SIGN-RSA-PSS-RSAE-SHA256:+GROUP-FFDHE6144:+VERS-TLS1.3:%NO_TICKETS" \
14381 "$P_CLI ca_file=$DATA_FILES_PATH/test-ca_cat12.crt debug_level=4 force_ciphersuite=TLS1-3-AES-128-GCM-SHA256 sig_algs=rsa_pss_rsae_sha256 groups=ffdhe6144" \
Przemek Stekiel3484db42023-06-28 13:31:38 +020014382 0 \
14383 -c "HTTP/1.0 200 OK" \
14384 -c "Protocol is TLSv1.3" \
14385 -c "server hello, chosen ciphersuite: ( 1301 ) - TLS1-3-AES-128-GCM-SHA256" \
14386 -c "Certificate Verify: Signature algorithm ( 0804 )" \
14387 -c "NamedGroup: ffdhe6144 ( 103 )" \
14388 -c "Verifying peer X.509 certificate... ok" \
14389 -C "received HelloRetryRequest message"
14390
14391requires_config_enabled MBEDTLS_SSL_SRV_C
14392requires_config_enabled MBEDTLS_DEBUG_C
14393requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Przemek Stekiel3484db42023-06-28 13:31:38 +020014394requires_config_enabled MBEDTLS_X509_RSASSA_PSS_SUPPORT
14395requires_config_enabled PSA_WANT_ALG_FFDH
Valerio Setti05754d82024-01-18 09:47:00 +010014396requires_config_enabled PSA_WANT_DH_RFC7919_8192
Przemek Stekiel3484db42023-06-28 13:31:38 +020014397requires_gnutls_tls1_3
14398requires_gnutls_next_no_ticket
14399requires_gnutls_next_disable_tls13_compat
Gilles Peskine6bdebfe2024-10-31 18:52:40 +010014400not_with_msan_or_valgrind
Przemek Stekiel3484db42023-06-28 13:31:38 +020014401client_needs_more_time 4
14402run_test "TLS 1.3 G->m: AES_128_GCM_SHA256,ffdhe8192,rsa_pss_rsae_sha256" \
David Horstmann5ab92be2024-07-01 17:01:28 +010014403 "$P_SRV crt_file=$DATA_FILES_PATH/server2-sha256.crt key_file=$DATA_FILES_PATH/server2.key debug_level=4 force_ciphersuite=TLS1-3-AES-128-GCM-SHA256 sig_algs=rsa_pss_rsae_sha256 groups=ffdhe8192 tls13_kex_modes=ephemeral cookies=0 tickets=0" \
14404 "$G_NEXT_CLI_NO_CERT --debug=4 --single-key-share --x509cafile $DATA_FILES_PATH/test-ca_cat12.crt --priority=NONE:+AES-128-GCM:+SHA256:+AEAD:+SIGN-RSA-PSS-RSAE-SHA256:+GROUP-FFDHE8192:+VERS-TLS1.3:%NO_TICKETS" \
Przemek Stekiel3484db42023-06-28 13:31:38 +020014405 0 \
14406 -s "Protocol is TLSv1.3" \
14407 -s "server hello, chosen ciphersuite: TLS1-3-AES-128-GCM-SHA256 ( id=4865 )" \
14408 -s "received signature algorithm: 0x804" \
14409 -s "got named group: ffdhe8192(0104)" \
14410 -s "Certificate verification was skipped" \
14411 -C "received HelloRetryRequest message"
14412
14413requires_gnutls_tls1_3
14414requires_gnutls_next_no_ticket
14415requires_gnutls_next_disable_tls13_compat
14416requires_config_enabled MBEDTLS_SSL_CLI_C
14417requires_config_enabled MBEDTLS_DEBUG_C
14418requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
Przemek Stekiel3484db42023-06-28 13:31:38 +020014419requires_config_enabled MBEDTLS_X509_RSASSA_PSS_SUPPORT
14420requires_config_enabled PSA_WANT_ALG_FFDH
Valerio Setti05754d82024-01-18 09:47:00 +010014421requires_config_enabled PSA_WANT_DH_RFC7919_8192
Gilles Peskine6bdebfe2024-10-31 18:52:40 +010014422not_with_msan_or_valgrind
Przemek Stekiel3484db42023-06-28 13:31:38 +020014423client_needs_more_time 4
14424run_test "TLS 1.3 m->G: AES_128_GCM_SHA256,ffdhe8192,rsa_pss_rsae_sha256" \
David Horstmann5ab92be2024-07-01 17:01:28 +010014425 "$G_NEXT_SRV_NO_CERT --http --disable-client-cert --debug=4 --x509certfile $DATA_FILES_PATH/server2-sha256.crt --x509keyfile $DATA_FILES_PATH/server2.key --priority=NONE:+AES-128-GCM:+SHA256:+AEAD:+SIGN-RSA-PSS-RSAE-SHA256:+GROUP-FFDHE8192:+VERS-TLS1.3:%NO_TICKETS" \
14426 "$P_CLI ca_file=$DATA_FILES_PATH/test-ca_cat12.crt debug_level=4 force_ciphersuite=TLS1-3-AES-128-GCM-SHA256 sig_algs=rsa_pss_rsae_sha256 groups=ffdhe8192" \
Przemek Stekiel3484db42023-06-28 13:31:38 +020014427 0 \
14428 -c "HTTP/1.0 200 OK" \
14429 -c "Protocol is TLSv1.3" \
14430 -c "server hello, chosen ciphersuite: ( 1301 ) - TLS1-3-AES-128-GCM-SHA256" \
14431 -c "Certificate Verify: Signature algorithm ( 0804 )" \
14432 -c "NamedGroup: ffdhe8192 ( 104 )" \
14433 -c "Verifying peer X.509 certificate... ok" \
14434 -C "received HelloRetryRequest message"
14435
Ronald Cron8a74f072023-06-14 17:59:29 +020014436requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
14437requires_config_enabled MBEDTLS_SSL_SRV_C
14438requires_config_enabled MBEDTLS_SSL_CLI_C
14439requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
14440requires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
14441run_test "TLS 1.3: no HRR in case of PSK key exchange mode" \
Gilles Peskineabb1c222024-05-13 21:06:26 +020014442 "$P_SRV nbio=2 psk=73776f726466697368 psk_identity=0a0b0c tls13_kex_modes=psk groups=none" \
14443 "$P_CLI nbio=2 debug_level=3 psk=73776f726466697368 psk_identity=0a0b0c tls13_kex_modes=all" \
Ronald Cron8a74f072023-06-14 17:59:29 +020014444 0 \
14445 -C "received HelloRetryRequest message" \
14446 -c "Selected key exchange mode: psk$" \
14447 -c "HTTP/1.0 200 OK"
14448
Waleed Elmelegy790f3b12024-07-04 16:38:04 +000014449# Legacy_compression_methods testing
14450
14451requires_gnutls
Waleed Elmelegy38c87572024-07-15 17:25:04 +000014452requires_config_enabled MBEDTLS_SSL_SRV_C
Waleed Elmelegy790f3b12024-07-04 16:38:04 +000014453requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Waleed Elmelegy38c87572024-07-15 17:25:04 +000014454run_test "TLS 1.2 ClientHello indicating support for deflate compression method" \
14455 "$P_SRV debug_level=3" \
14456 "$G_CLI --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2:+COMP-DEFLATE localhost" \
14457 0 \
14458 -c "Handshake was completed" \
14459 -s "dumping .client hello, compression. (2 bytes)"
Waleed Elmelegy790f3b12024-07-04 16:38:04 +000014460
Piotr Nowicki0937ed22019-11-26 16:32:40 +010014461# Test heap memory usage after handshake
Jerry Yuab082902021-12-23 18:02:22 +080014462requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
Piotr Nowicki0937ed22019-11-26 16:32:40 +010014463requires_config_enabled MBEDTLS_MEMORY_DEBUG
14464requires_config_enabled MBEDTLS_MEMORY_BUFFER_ALLOC_C
14465requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
Yuto Takanobc87b1d2021-07-08 15:56:33 +010014466requires_max_content_len 16384
Wenxing Hou848bccf2024-06-19 11:04:13 +080014467run_tests_memory_after_handshake
Piotr Nowicki0937ed22019-11-26 16:32:40 +010014468
Tomás González24552ff2023-08-17 15:10:03 +010014469if [ "$LIST_TESTS" -eq 0 ]; then
Manuel Pégourié-Gonnard8520dac2014-02-21 12:12:23 +010014470
Tomás González24552ff2023-08-17 15:10:03 +010014471 # Final report
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +010014472
Tomás González24552ff2023-08-17 15:10:03 +010014473 echo "------------------------------------------------------------------------"
14474
14475 if [ $FAILS = 0 ]; then
14476 printf "PASSED"
14477 else
14478 printf "FAILED"
14479 fi
14480 PASSES=$(( $TESTS - $FAILS ))
14481 echo " ($PASSES / $TESTS tests ($SKIPS skipped))"
14482
Gilles Peskinec75048c2024-05-17 11:55:15 +020014483 if [ $((TESTS - SKIPS)) -lt $MIN_TESTS ]; then
14484 cat <<EOF
14485Error: Expected to run at least $MIN_TESTS, but only ran $((TESTS - SKIPS)).
14486Maybe a bad filter ('$FILTER') or a bad configuration?
14487EOF
14488 if [ $FAILS -eq 0 ]; then
14489 FAILS=1
14490 fi
14491 fi
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +010014492fi
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +010014493
Tom Cosgrovefc0e79e2023-01-13 12:13:41 +000014494if [ $FAILS -gt 255 ]; then
14495 # Clamp at 255 as caller gets exit code & 0xFF
14496 # (so 256 would be 0, or success, etc)
14497 FAILS=255
14498fi
Manuel Pégourié-Gonnard33a752e2014-02-21 09:47:37 +010014499exit $FAILS