xref: /aosp_15_r20/external/mbedtls/tests/ssl-opt.sh (revision 62c56f9862f102b96d72393aff6076c951fb8148)
1*62c56f98SSadaf Ebrahimi#!/bin/sh
2*62c56f98SSadaf Ebrahimi
3*62c56f98SSadaf Ebrahimi# ssl-opt.sh
4*62c56f98SSadaf Ebrahimi#
5*62c56f98SSadaf Ebrahimi# Copyright The Mbed TLS Contributors
6*62c56f98SSadaf Ebrahimi# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
7*62c56f98SSadaf Ebrahimi#
8*62c56f98SSadaf Ebrahimi# Purpose
9*62c56f98SSadaf Ebrahimi#
10*62c56f98SSadaf Ebrahimi# Executes tests to prove various TLS/SSL options and extensions.
11*62c56f98SSadaf Ebrahimi#
12*62c56f98SSadaf Ebrahimi# The goal is not to cover every ciphersuite/version, but instead to cover
13*62c56f98SSadaf Ebrahimi# specific options (max fragment length, truncated hmac, etc) or procedures
14*62c56f98SSadaf Ebrahimi# (session resumption from cache or ticket, renego, etc).
15*62c56f98SSadaf Ebrahimi#
16*62c56f98SSadaf Ebrahimi# The tests assume a build with default options, with exceptions expressed
17*62c56f98SSadaf Ebrahimi# with a dependency.  The tests focus on functionality and do not consider
18*62c56f98SSadaf Ebrahimi# performance.
19*62c56f98SSadaf Ebrahimi#
20*62c56f98SSadaf Ebrahimi
21*62c56f98SSadaf Ebrahimiset -u
22*62c56f98SSadaf Ebrahimi
23*62c56f98SSadaf Ebrahimi# Limit the size of each log to 10 GiB, in case of failures with this script
24*62c56f98SSadaf Ebrahimi# where it may output seemingly unlimited length error logs.
25*62c56f98SSadaf Ebrahimiulimit -f 20971520
26*62c56f98SSadaf Ebrahimi
27*62c56f98SSadaf EbrahimiORIGINAL_PWD=$PWD
28*62c56f98SSadaf Ebrahimiif ! cd "$(dirname "$0")"; then
29*62c56f98SSadaf Ebrahimi    exit 125
30*62c56f98SSadaf Ebrahimifi
31*62c56f98SSadaf Ebrahimi
32*62c56f98SSadaf Ebrahimi# default values, can be overridden by the environment
33*62c56f98SSadaf Ebrahimi: ${P_SRV:=../programs/ssl/ssl_server2}
34*62c56f98SSadaf Ebrahimi: ${P_CLI:=../programs/ssl/ssl_client2}
35*62c56f98SSadaf Ebrahimi: ${P_PXY:=../programs/test/udp_proxy}
36*62c56f98SSadaf Ebrahimi: ${P_QUERY:=../programs/test/query_compile_time_config}
37*62c56f98SSadaf Ebrahimi: ${OPENSSL:=openssl}
38*62c56f98SSadaf Ebrahimi: ${GNUTLS_CLI:=gnutls-cli}
39*62c56f98SSadaf Ebrahimi: ${GNUTLS_SERV:=gnutls-serv}
40*62c56f98SSadaf Ebrahimi: ${PERL:=perl}
41*62c56f98SSadaf Ebrahimi
42*62c56f98SSadaf Ebrahimi# The OPENSSL variable used to be OPENSSL_CMD for historical reasons.
43*62c56f98SSadaf Ebrahimi# To help the migration, error out if the old variable is set,
44*62c56f98SSadaf Ebrahimi# but only if it has a different value than the new one.
45*62c56f98SSadaf Ebrahimiif [ "${OPENSSL_CMD+set}" = set ]; then
46*62c56f98SSadaf Ebrahimi    # the variable is set, we can now check its value
47*62c56f98SSadaf Ebrahimi    if [ "$OPENSSL_CMD" != "$OPENSSL" ]; then
48*62c56f98SSadaf Ebrahimi        echo "Please use OPENSSL instead of OPENSSL_CMD." >&2
49*62c56f98SSadaf Ebrahimi        exit 125
50*62c56f98SSadaf Ebrahimi    fi
51*62c56f98SSadaf Ebrahimifi
52*62c56f98SSadaf Ebrahimi
53*62c56f98SSadaf Ebrahimiguess_config_name() {
54*62c56f98SSadaf Ebrahimi    if git diff --quiet ../include/mbedtls/mbedtls_config.h 2>/dev/null; then
55*62c56f98SSadaf Ebrahimi        echo "default"
56*62c56f98SSadaf Ebrahimi    else
57*62c56f98SSadaf Ebrahimi        echo "unknown"
58*62c56f98SSadaf Ebrahimi    fi
59*62c56f98SSadaf Ebrahimi}
60*62c56f98SSadaf Ebrahimi: ${MBEDTLS_TEST_OUTCOME_FILE=}
61*62c56f98SSadaf Ebrahimi: ${MBEDTLS_TEST_CONFIGURATION:="$(guess_config_name)"}
62*62c56f98SSadaf Ebrahimi: ${MBEDTLS_TEST_PLATFORM:="$(uname -s | tr -c \\n0-9A-Za-z _)-$(uname -m | tr -c \\n0-9A-Za-z _)"}
63*62c56f98SSadaf Ebrahimi
64*62c56f98SSadaf EbrahimiO_SRV="$OPENSSL s_server -www -cert data_files/server5.crt -key data_files/server5.key"
65*62c56f98SSadaf EbrahimiO_CLI="echo 'GET / HTTP/1.0' | $OPENSSL s_client"
66*62c56f98SSadaf EbrahimiG_SRV="$GNUTLS_SERV --x509certfile data_files/server5.crt --x509keyfile data_files/server5.key"
67*62c56f98SSadaf EbrahimiG_CLI="echo 'GET / HTTP/1.0' | $GNUTLS_CLI --x509cafile data_files/test-ca_cat12.crt"
68*62c56f98SSadaf EbrahimiTCP_CLIENT="$PERL scripts/tcp_client.pl"
69*62c56f98SSadaf Ebrahimi
70*62c56f98SSadaf Ebrahimi# alternative versions of OpenSSL and GnuTLS (no default path)
71*62c56f98SSadaf Ebrahimi
72*62c56f98SSadaf Ebrahimiif [ -n "${OPENSSL_LEGACY:-}" ]; then
73*62c56f98SSadaf Ebrahimi    O_LEGACY_SRV="$OPENSSL_LEGACY s_server -www -cert data_files/server5.crt -key data_files/server5.key"
74*62c56f98SSadaf Ebrahimi    O_LEGACY_CLI="echo 'GET / HTTP/1.0' | $OPENSSL_LEGACY s_client"
75*62c56f98SSadaf Ebrahimielse
76*62c56f98SSadaf Ebrahimi    O_LEGACY_SRV=false
77*62c56f98SSadaf Ebrahimi    O_LEGACY_CLI=false
78*62c56f98SSadaf Ebrahimifi
79*62c56f98SSadaf Ebrahimi
80*62c56f98SSadaf Ebrahimiif [ -n "${OPENSSL_NEXT:-}" ]; then
81*62c56f98SSadaf Ebrahimi    O_NEXT_SRV="$OPENSSL_NEXT s_server -www -cert data_files/server5.crt -key data_files/server5.key"
82*62c56f98SSadaf Ebrahimi    O_NEXT_SRV_EARLY_DATA="$OPENSSL_NEXT s_server -early_data -cert data_files/server5.crt -key data_files/server5.key"
83*62c56f98SSadaf Ebrahimi    O_NEXT_SRV_NO_CERT="$OPENSSL_NEXT s_server -www "
84*62c56f98SSadaf Ebrahimi    O_NEXT_CLI="echo 'GET / HTTP/1.0' | $OPENSSL_NEXT s_client -CAfile data_files/test-ca_cat12.crt"
85*62c56f98SSadaf Ebrahimi    O_NEXT_CLI_NO_CERT="echo 'GET / HTTP/1.0' | $OPENSSL_NEXT s_client"
86*62c56f98SSadaf Ebrahimielse
87*62c56f98SSadaf Ebrahimi    O_NEXT_SRV=false
88*62c56f98SSadaf Ebrahimi    O_NEXT_SRV_NO_CERT=false
89*62c56f98SSadaf Ebrahimi    O_NEXT_SRV_EARLY_DATA=false
90*62c56f98SSadaf Ebrahimi    O_NEXT_CLI_NO_CERT=false
91*62c56f98SSadaf Ebrahimi    O_NEXT_CLI=false
92*62c56f98SSadaf Ebrahimifi
93*62c56f98SSadaf Ebrahimi
94*62c56f98SSadaf Ebrahimiif [ -n "${GNUTLS_NEXT_SERV:-}" ]; then
95*62c56f98SSadaf Ebrahimi    G_NEXT_SRV="$GNUTLS_NEXT_SERV --x509certfile data_files/server5.crt --x509keyfile data_files/server5.key"
96*62c56f98SSadaf Ebrahimi    G_NEXT_SRV_NO_CERT="$GNUTLS_NEXT_SERV"
97*62c56f98SSadaf Ebrahimielse
98*62c56f98SSadaf Ebrahimi    G_NEXT_SRV=false
99*62c56f98SSadaf Ebrahimi    G_NEXT_SRV_NO_CERT=false
100*62c56f98SSadaf Ebrahimifi
101*62c56f98SSadaf Ebrahimi
102*62c56f98SSadaf Ebrahimiif [ -n "${GNUTLS_NEXT_CLI:-}" ]; then
103*62c56f98SSadaf Ebrahimi    G_NEXT_CLI="echo 'GET / HTTP/1.0' | $GNUTLS_NEXT_CLI --x509cafile data_files/test-ca_cat12.crt"
104*62c56f98SSadaf Ebrahimi    G_NEXT_CLI_NO_CERT="echo 'GET / HTTP/1.0' | $GNUTLS_NEXT_CLI"
105*62c56f98SSadaf Ebrahimielse
106*62c56f98SSadaf Ebrahimi    G_NEXT_CLI=false
107*62c56f98SSadaf Ebrahimi    G_NEXT_CLI_NO_CERT=false
108*62c56f98SSadaf Ebrahimifi
109*62c56f98SSadaf Ebrahimi
110*62c56f98SSadaf EbrahimiTESTS=0
111*62c56f98SSadaf EbrahimiFAILS=0
112*62c56f98SSadaf EbrahimiSKIPS=0
113*62c56f98SSadaf Ebrahimi
114*62c56f98SSadaf EbrahimiCONFIG_H='../include/mbedtls/mbedtls_config.h'
115*62c56f98SSadaf Ebrahimi
116*62c56f98SSadaf EbrahimiMEMCHECK=0
117*62c56f98SSadaf EbrahimiFILTER='.*'
118*62c56f98SSadaf EbrahimiEXCLUDE='^$'
119*62c56f98SSadaf Ebrahimi
120*62c56f98SSadaf EbrahimiSHOW_TEST_NUMBER=0
121*62c56f98SSadaf EbrahimiRUN_TEST_NUMBER=''
122*62c56f98SSadaf Ebrahimi
123*62c56f98SSadaf EbrahimiPRESERVE_LOGS=0
124*62c56f98SSadaf Ebrahimi
125*62c56f98SSadaf Ebrahimi# Pick a "unique" server port in the range 10000-19999, and a proxy
126*62c56f98SSadaf Ebrahimi# port which is this plus 10000. Each port number may be independently
127*62c56f98SSadaf Ebrahimi# overridden by a command line option.
128*62c56f98SSadaf EbrahimiSRV_PORT=$(($$ % 10000 + 10000))
129*62c56f98SSadaf EbrahimiPXY_PORT=$((SRV_PORT + 10000))
130*62c56f98SSadaf Ebrahimi
131*62c56f98SSadaf Ebrahimiprint_usage() {
132*62c56f98SSadaf Ebrahimi    echo "Usage: $0 [options]"
133*62c56f98SSadaf Ebrahimi    printf "  -h|--help\tPrint this help.\n"
134*62c56f98SSadaf Ebrahimi    printf "  -m|--memcheck\tCheck memory leaks and errors.\n"
135*62c56f98SSadaf Ebrahimi    printf "  -f|--filter\tOnly matching tests are executed (substring or BRE)\n"
136*62c56f98SSadaf Ebrahimi    printf "  -e|--exclude\tMatching tests are excluded (substring or BRE)\n"
137*62c56f98SSadaf Ebrahimi    printf "  -n|--number\tExecute only numbered test (comma-separated, e.g. '245,256')\n"
138*62c56f98SSadaf Ebrahimi    printf "  -s|--show-numbers\tShow test numbers in front of test names\n"
139*62c56f98SSadaf Ebrahimi    printf "  -p|--preserve-logs\tPreserve logs of successful tests as well\n"
140*62c56f98SSadaf Ebrahimi    printf "     --outcome-file\tFile where test outcomes are written\n"
141*62c56f98SSadaf Ebrahimi    printf "                \t(default: \$MBEDTLS_TEST_OUTCOME_FILE, none if empty)\n"
142*62c56f98SSadaf Ebrahimi    printf "     --port     \tTCP/UDP port (default: randomish 1xxxx)\n"
143*62c56f98SSadaf Ebrahimi    printf "     --proxy-port\tTCP/UDP proxy port (default: randomish 2xxxx)\n"
144*62c56f98SSadaf Ebrahimi    printf "     --seed     \tInteger seed value to use for this test run\n"
145*62c56f98SSadaf Ebrahimi}
146*62c56f98SSadaf Ebrahimi
147*62c56f98SSadaf Ebrahimiget_options() {
148*62c56f98SSadaf Ebrahimi    while [ $# -gt 0 ]; do
149*62c56f98SSadaf Ebrahimi        case "$1" in
150*62c56f98SSadaf Ebrahimi            -f|--filter)
151*62c56f98SSadaf Ebrahimi                shift; FILTER=$1
152*62c56f98SSadaf Ebrahimi                ;;
153*62c56f98SSadaf Ebrahimi            -e|--exclude)
154*62c56f98SSadaf Ebrahimi                shift; EXCLUDE=$1
155*62c56f98SSadaf Ebrahimi                ;;
156*62c56f98SSadaf Ebrahimi            -m|--memcheck)
157*62c56f98SSadaf Ebrahimi                MEMCHECK=1
158*62c56f98SSadaf Ebrahimi                ;;
159*62c56f98SSadaf Ebrahimi            -n|--number)
160*62c56f98SSadaf Ebrahimi                shift; RUN_TEST_NUMBER=$1
161*62c56f98SSadaf Ebrahimi                ;;
162*62c56f98SSadaf Ebrahimi            -s|--show-numbers)
163*62c56f98SSadaf Ebrahimi                SHOW_TEST_NUMBER=1
164*62c56f98SSadaf Ebrahimi                ;;
165*62c56f98SSadaf Ebrahimi            -p|--preserve-logs)
166*62c56f98SSadaf Ebrahimi                PRESERVE_LOGS=1
167*62c56f98SSadaf Ebrahimi                ;;
168*62c56f98SSadaf Ebrahimi            --outcome-file)
169*62c56f98SSadaf Ebrahimi                shift; MBEDTLS_TEST_OUTCOME_FILE=$1
170*62c56f98SSadaf Ebrahimi                ;;
171*62c56f98SSadaf Ebrahimi            --port)
172*62c56f98SSadaf Ebrahimi                shift; SRV_PORT=$1
173*62c56f98SSadaf Ebrahimi                ;;
174*62c56f98SSadaf Ebrahimi            --proxy-port)
175*62c56f98SSadaf Ebrahimi                shift; PXY_PORT=$1
176*62c56f98SSadaf Ebrahimi                ;;
177*62c56f98SSadaf Ebrahimi            --seed)
178*62c56f98SSadaf Ebrahimi                shift; SEED="$1"
179*62c56f98SSadaf Ebrahimi                ;;
180*62c56f98SSadaf Ebrahimi            -h|--help)
181*62c56f98SSadaf Ebrahimi                print_usage
182*62c56f98SSadaf Ebrahimi                exit 0
183*62c56f98SSadaf Ebrahimi                ;;
184*62c56f98SSadaf Ebrahimi            *)
185*62c56f98SSadaf Ebrahimi                echo "Unknown argument: '$1'"
186*62c56f98SSadaf Ebrahimi                print_usage
187*62c56f98SSadaf Ebrahimi                exit 1
188*62c56f98SSadaf Ebrahimi                ;;
189*62c56f98SSadaf Ebrahimi        esac
190*62c56f98SSadaf Ebrahimi        shift
191*62c56f98SSadaf Ebrahimi    done
192*62c56f98SSadaf Ebrahimi}
193*62c56f98SSadaf Ebrahimi
194*62c56f98SSadaf Ebrahimi# Read boolean configuration options from mbedtls_config.h for easy and quick
195*62c56f98SSadaf Ebrahimi# testing. Skip non-boolean options (with something other than spaces
196*62c56f98SSadaf Ebrahimi# and a comment after "#define SYMBOL"). The variable contains a
197*62c56f98SSadaf Ebrahimi# space-separated list of symbols.
198*62c56f98SSadaf EbrahimiCONFIGS_ENABLED=" $(echo `$P_QUERY -l` )"
199*62c56f98SSadaf Ebrahimi# Skip next test; use this macro to skip tests which are legitimate
200*62c56f98SSadaf Ebrahimi# in theory and expected to be re-introduced at some point, but
201*62c56f98SSadaf Ebrahimi# aren't expected to succeed at the moment due to problems outside
202*62c56f98SSadaf Ebrahimi# our control (such as bugs in other TLS implementations).
203*62c56f98SSadaf Ebrahimiskip_next_test() {
204*62c56f98SSadaf Ebrahimi    SKIP_NEXT="YES"
205*62c56f98SSadaf Ebrahimi}
206*62c56f98SSadaf Ebrahimi
207*62c56f98SSadaf Ebrahimi# Check if the required configuration ($1) is enabled
208*62c56f98SSadaf Ebrahimiis_config_enabled()
209*62c56f98SSadaf Ebrahimi{
210*62c56f98SSadaf Ebrahimi    case $CONFIGS_ENABLED in
211*62c56f98SSadaf Ebrahimi        *" $1"[\ =]*) return 0;;
212*62c56f98SSadaf Ebrahimi        *) return 1;;
213*62c56f98SSadaf Ebrahimi    esac
214*62c56f98SSadaf Ebrahimi}
215*62c56f98SSadaf Ebrahimi
216*62c56f98SSadaf Ebrahimi# skip next test if the flag is not enabled in mbedtls_config.h
217*62c56f98SSadaf Ebrahimirequires_config_enabled() {
218*62c56f98SSadaf Ebrahimi    case $CONFIGS_ENABLED in
219*62c56f98SSadaf Ebrahimi        *" $1"[\ =]*) :;;
220*62c56f98SSadaf Ebrahimi        *) SKIP_NEXT="YES";;
221*62c56f98SSadaf Ebrahimi    esac
222*62c56f98SSadaf Ebrahimi}
223*62c56f98SSadaf Ebrahimi
224*62c56f98SSadaf Ebrahimi# skip next test if the flag is enabled in mbedtls_config.h
225*62c56f98SSadaf Ebrahimirequires_config_disabled() {
226*62c56f98SSadaf Ebrahimi    case $CONFIGS_ENABLED in
227*62c56f98SSadaf Ebrahimi        *" $1"[\ =]*) SKIP_NEXT="YES";;
228*62c56f98SSadaf Ebrahimi    esac
229*62c56f98SSadaf Ebrahimi}
230*62c56f98SSadaf Ebrahimi
231*62c56f98SSadaf Ebrahimirequires_all_configs_enabled() {
232*62c56f98SSadaf Ebrahimi    if ! $P_QUERY -all $*
233*62c56f98SSadaf Ebrahimi    then
234*62c56f98SSadaf Ebrahimi        SKIP_NEXT="YES"
235*62c56f98SSadaf Ebrahimi    fi
236*62c56f98SSadaf Ebrahimi}
237*62c56f98SSadaf Ebrahimi
238*62c56f98SSadaf Ebrahimirequires_all_configs_disabled() {
239*62c56f98SSadaf Ebrahimi    if $P_QUERY -any $*
240*62c56f98SSadaf Ebrahimi    then
241*62c56f98SSadaf Ebrahimi        SKIP_NEXT="YES"
242*62c56f98SSadaf Ebrahimi    fi
243*62c56f98SSadaf Ebrahimi}
244*62c56f98SSadaf Ebrahimi
245*62c56f98SSadaf Ebrahimirequires_any_configs_enabled() {
246*62c56f98SSadaf Ebrahimi    if ! $P_QUERY -any $*
247*62c56f98SSadaf Ebrahimi    then
248*62c56f98SSadaf Ebrahimi        SKIP_NEXT="YES"
249*62c56f98SSadaf Ebrahimi    fi
250*62c56f98SSadaf Ebrahimi}
251*62c56f98SSadaf Ebrahimi
252*62c56f98SSadaf Ebrahimirequires_any_configs_disabled() {
253*62c56f98SSadaf Ebrahimi    if $P_QUERY -all $*
254*62c56f98SSadaf Ebrahimi    then
255*62c56f98SSadaf Ebrahimi        SKIP_NEXT="YES"
256*62c56f98SSadaf Ebrahimi    fi
257*62c56f98SSadaf Ebrahimi}
258*62c56f98SSadaf Ebrahimi
259*62c56f98SSadaf EbrahimiTLS1_2_KEY_EXCHANGES_WITH_CERT="MBEDTLS_KEY_EXCHANGE_RSA_ENABLED \
260*62c56f98SSadaf Ebrahimi                                MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED \
261*62c56f98SSadaf Ebrahimi                                MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED \
262*62c56f98SSadaf Ebrahimi                                MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED \
263*62c56f98SSadaf Ebrahimi                                MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED \
264*62c56f98SSadaf Ebrahimi                                MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED \
265*62c56f98SSadaf Ebrahimi                                MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED"
266*62c56f98SSadaf Ebrahimi
267*62c56f98SSadaf EbrahimiTLS1_2_KEY_EXCHANGES_WITH_ECDSA_CERT="MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED \
268*62c56f98SSadaf Ebrahimi                                      MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED"
269*62c56f98SSadaf Ebrahimi
270*62c56f98SSadaf EbrahimiTLS1_2_KEY_EXCHANGES_WITH_CERT_WO_ECDH="MBEDTLS_KEY_EXCHANGE_RSA_ENABLED \
271*62c56f98SSadaf Ebrahimi                                       MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED \
272*62c56f98SSadaf Ebrahimi                                       MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED \
273*62c56f98SSadaf Ebrahimi                                       MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED \
274*62c56f98SSadaf Ebrahimi                                       MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED"
275*62c56f98SSadaf Ebrahimi
276*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled() {
277*62c56f98SSadaf Ebrahimi    if $P_QUERY -all MBEDTLS_SSL_PROTO_TLS1_2
278*62c56f98SSadaf Ebrahimi    then
279*62c56f98SSadaf Ebrahimi        requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
280*62c56f98SSadaf Ebrahimi    elif ! $P_QUERY -all MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
281*62c56f98SSadaf Ebrahimi    then
282*62c56f98SSadaf Ebrahimi        SKIP_NEXT="YES"
283*62c56f98SSadaf Ebrahimi    fi
284*62c56f98SSadaf Ebrahimi}
285*62c56f98SSadaf Ebrahimi
286*62c56f98SSadaf Ebrahimiget_config_value_or_default() {
287*62c56f98SSadaf Ebrahimi    # This function uses the query_config command line option to query the
288*62c56f98SSadaf Ebrahimi    # required Mbed TLS compile time configuration from the ssl_server2
289*62c56f98SSadaf Ebrahimi    # program. The command will always return a success value if the
290*62c56f98SSadaf Ebrahimi    # configuration is defined and the value will be printed to stdout.
291*62c56f98SSadaf Ebrahimi    #
292*62c56f98SSadaf Ebrahimi    # Note that if the configuration is not defined or is defined to nothing,
293*62c56f98SSadaf Ebrahimi    # the output of this function will be an empty string.
294*62c56f98SSadaf Ebrahimi    ${P_SRV} "query_config=${1}"
295*62c56f98SSadaf Ebrahimi}
296*62c56f98SSadaf Ebrahimi
297*62c56f98SSadaf Ebrahimirequires_config_value_at_least() {
298*62c56f98SSadaf Ebrahimi    VAL="$( get_config_value_or_default "$1" )"
299*62c56f98SSadaf Ebrahimi    if [ -z "$VAL" ]; then
300*62c56f98SSadaf Ebrahimi        # Should never happen
301*62c56f98SSadaf Ebrahimi        echo "Mbed TLS configuration $1 is not defined"
302*62c56f98SSadaf Ebrahimi        exit 1
303*62c56f98SSadaf Ebrahimi    elif [ "$VAL" -lt "$2" ]; then
304*62c56f98SSadaf Ebrahimi       SKIP_NEXT="YES"
305*62c56f98SSadaf Ebrahimi    fi
306*62c56f98SSadaf Ebrahimi}
307*62c56f98SSadaf Ebrahimi
308*62c56f98SSadaf Ebrahimirequires_config_value_at_most() {
309*62c56f98SSadaf Ebrahimi    VAL=$( get_config_value_or_default "$1" )
310*62c56f98SSadaf Ebrahimi    if [ -z "$VAL" ]; then
311*62c56f98SSadaf Ebrahimi        # Should never happen
312*62c56f98SSadaf Ebrahimi        echo "Mbed TLS configuration $1 is not defined"
313*62c56f98SSadaf Ebrahimi        exit 1
314*62c56f98SSadaf Ebrahimi    elif [ "$VAL" -gt "$2" ]; then
315*62c56f98SSadaf Ebrahimi       SKIP_NEXT="YES"
316*62c56f98SSadaf Ebrahimi    fi
317*62c56f98SSadaf Ebrahimi}
318*62c56f98SSadaf Ebrahimi
319*62c56f98SSadaf Ebrahimirequires_config_value_equals() {
320*62c56f98SSadaf Ebrahimi    VAL=$( get_config_value_or_default "$1" )
321*62c56f98SSadaf Ebrahimi    if [ -z "$VAL" ]; then
322*62c56f98SSadaf Ebrahimi        # Should never happen
323*62c56f98SSadaf Ebrahimi        echo "Mbed TLS configuration $1 is not defined"
324*62c56f98SSadaf Ebrahimi        exit 1
325*62c56f98SSadaf Ebrahimi    elif [ "$VAL" -ne "$2" ]; then
326*62c56f98SSadaf Ebrahimi       SKIP_NEXT="YES"
327*62c56f98SSadaf Ebrahimi    fi
328*62c56f98SSadaf Ebrahimi}
329*62c56f98SSadaf Ebrahimi
330*62c56f98SSadaf Ebrahimi# Require Mbed TLS to support the given protocol version.
331*62c56f98SSadaf Ebrahimi#
332*62c56f98SSadaf Ebrahimi# Inputs:
333*62c56f98SSadaf Ebrahimi# * $1: protocol version in mbedtls syntax (argument to force_version=)
334*62c56f98SSadaf Ebrahimirequires_protocol_version() {
335*62c56f98SSadaf Ebrahimi    # Support for DTLS is detected separately in detect_dtls().
336*62c56f98SSadaf Ebrahimi    case "$1" in
337*62c56f98SSadaf Ebrahimi        tls12|dtls12) requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2;;
338*62c56f98SSadaf Ebrahimi        tls13|dtls13) requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3;;
339*62c56f98SSadaf Ebrahimi        *) echo "Unknown required protocol version: $1"; exit 1;;
340*62c56f98SSadaf Ebrahimi    esac
341*62c56f98SSadaf Ebrahimi}
342*62c56f98SSadaf Ebrahimi
343*62c56f98SSadaf Ebrahimi# Space-separated list of ciphersuites supported by this build of
344*62c56f98SSadaf Ebrahimi# Mbed TLS.
345*62c56f98SSadaf EbrahimiP_CIPHERSUITES=" $($P_CLI --help 2>/dev/null |
346*62c56f98SSadaf Ebrahimi                   grep 'TLS-\|TLS1-3' |
347*62c56f98SSadaf Ebrahimi                   tr -s ' \n' ' ')"
348*62c56f98SSadaf Ebrahimirequires_ciphersuite_enabled() {
349*62c56f98SSadaf Ebrahimi    case $P_CIPHERSUITES in
350*62c56f98SSadaf Ebrahimi        *" $1 "*) :;;
351*62c56f98SSadaf Ebrahimi        *) SKIP_NEXT="YES";;
352*62c56f98SSadaf Ebrahimi    esac
353*62c56f98SSadaf Ebrahimi}
354*62c56f98SSadaf Ebrahimi
355*62c56f98SSadaf Ebrahimi# Automatically detect required features based on command line parameters.
356*62c56f98SSadaf Ebrahimi# Parameters are:
357*62c56f98SSadaf Ebrahimi# - $1 = command line (call to a TLS client or server program)
358*62c56f98SSadaf Ebrahimi# - $2 = client/server
359*62c56f98SSadaf Ebrahimi# - $3 = TLS version (TLS12 or TLS13)
360*62c56f98SSadaf Ebrahimi# - $4 = Use an external tool without ECDH support
361*62c56f98SSadaf Ebrahimi# - $5 = run test options
362*62c56f98SSadaf Ebrahimidetect_required_features() {
363*62c56f98SSadaf Ebrahimi    CMD_LINE=$1
364*62c56f98SSadaf Ebrahimi    ROLE=$2
365*62c56f98SSadaf Ebrahimi    TLS_VERSION=$3
366*62c56f98SSadaf Ebrahimi    EXT_WO_ECDH=$4
367*62c56f98SSadaf Ebrahimi    TEST_OPTIONS=${5:-}
368*62c56f98SSadaf Ebrahimi
369*62c56f98SSadaf Ebrahimi    case "$CMD_LINE" in
370*62c56f98SSadaf Ebrahimi        *\ force_version=*)
371*62c56f98SSadaf Ebrahimi            tmp="${CMD_LINE##*\ force_version=}"
372*62c56f98SSadaf Ebrahimi            tmp="${tmp%%[!-0-9A-Z_a-z]*}"
373*62c56f98SSadaf Ebrahimi            requires_protocol_version "$tmp";;
374*62c56f98SSadaf Ebrahimi    esac
375*62c56f98SSadaf Ebrahimi
376*62c56f98SSadaf Ebrahimi    case "$CMD_LINE" in
377*62c56f98SSadaf Ebrahimi        *\ force_ciphersuite=*)
378*62c56f98SSadaf Ebrahimi            tmp="${CMD_LINE##*\ force_ciphersuite=}"
379*62c56f98SSadaf Ebrahimi            tmp="${tmp%%[!-0-9A-Z_a-z]*}"
380*62c56f98SSadaf Ebrahimi            requires_ciphersuite_enabled "$tmp";;
381*62c56f98SSadaf Ebrahimi    esac
382*62c56f98SSadaf Ebrahimi
383*62c56f98SSadaf Ebrahimi    case " $CMD_LINE " in
384*62c56f98SSadaf Ebrahimi        *[-_\ =]tickets=[^0]*)
385*62c56f98SSadaf Ebrahimi            requires_config_enabled MBEDTLS_SSL_TICKET_C;;
386*62c56f98SSadaf Ebrahimi    esac
387*62c56f98SSadaf Ebrahimi    case " $CMD_LINE " in
388*62c56f98SSadaf Ebrahimi        *[-_\ =]alpn=*)
389*62c56f98SSadaf Ebrahimi            requires_config_enabled MBEDTLS_SSL_ALPN;;
390*62c56f98SSadaf Ebrahimi    esac
391*62c56f98SSadaf Ebrahimi
392*62c56f98SSadaf Ebrahimi    case "$CMD_LINE" in
393*62c56f98SSadaf Ebrahimi        *server5*|\
394*62c56f98SSadaf Ebrahimi        *server7*|\
395*62c56f98SSadaf Ebrahimi        *dir-maxpath*)
396*62c56f98SSadaf Ebrahimi            if [ "$TLS_VERSION" = "TLS13" ]; then
397*62c56f98SSadaf Ebrahimi                # In case of TLS13 the support for ECDSA is enough
398*62c56f98SSadaf Ebrahimi                requires_pk_alg "ECDSA"
399*62c56f98SSadaf Ebrahimi            else
400*62c56f98SSadaf Ebrahimi                # For TLS12 requirements are different between server and client
401*62c56f98SSadaf Ebrahimi                if [ "$ROLE" = "server" ]; then
402*62c56f98SSadaf Ebrahimi                    # If the server uses "server5*" certificates, then an ECDSA based
403*62c56f98SSadaf Ebrahimi                    # key exchange is required. However gnutls also does not
404*62c56f98SSadaf Ebrahimi                    # support ECDH, so this limit the choice to ECDHE-ECDSA
405*62c56f98SSadaf Ebrahimi                    if [ "$EXT_WO_ECDH" = "yes" ]; then
406*62c56f98SSadaf Ebrahimi                        requires_any_configs_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
407*62c56f98SSadaf Ebrahimi                    else
408*62c56f98SSadaf Ebrahimi                        requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_ECDSA_CERT
409*62c56f98SSadaf Ebrahimi                    fi
410*62c56f98SSadaf Ebrahimi                elif [ "$ROLE" = "client" ]; then
411*62c56f98SSadaf Ebrahimi                    # On the client side it is enough to have any certificate
412*62c56f98SSadaf Ebrahimi                    # based authentication together with support for ECDSA.
413*62c56f98SSadaf Ebrahimi                    # Of course the GnuTLS limitation mentioned above applies
414*62c56f98SSadaf Ebrahimi                    # also here.
415*62c56f98SSadaf Ebrahimi                    if [ "$EXT_WO_ECDH" = "yes" ]; then
416*62c56f98SSadaf Ebrahimi                        requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT_WO_ECDH
417*62c56f98SSadaf Ebrahimi                    else
418*62c56f98SSadaf Ebrahimi                        requires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
419*62c56f98SSadaf Ebrahimi                    fi
420*62c56f98SSadaf Ebrahimi                    requires_pk_alg "ECDSA"
421*62c56f98SSadaf Ebrahimi                fi
422*62c56f98SSadaf Ebrahimi            fi
423*62c56f98SSadaf Ebrahimi            ;;
424*62c56f98SSadaf Ebrahimi    esac
425*62c56f98SSadaf Ebrahimi
426*62c56f98SSadaf Ebrahimi    case "$CMD_LINE" in
427*62c56f98SSadaf Ebrahimi        *server2*|\
428*62c56f98SSadaf Ebrahimi        *server7*)
429*62c56f98SSadaf Ebrahimi            # server2 and server7 certificates use RSA encryption
430*62c56f98SSadaf Ebrahimi            requires_config_enabled "MBEDTLS_RSA_C"
431*62c56f98SSadaf Ebrahimi    esac
432*62c56f98SSadaf Ebrahimi
433*62c56f98SSadaf Ebrahimi    unset tmp
434*62c56f98SSadaf Ebrahimi}
435*62c56f98SSadaf Ebrahimi
436*62c56f98SSadaf Ebrahimirequires_certificate_authentication () {
437*62c56f98SSadaf Ebrahimi    if [ "$PSK_ONLY" = "YES" ]; then
438*62c56f98SSadaf Ebrahimi        SKIP_NEXT="YES"
439*62c56f98SSadaf Ebrahimi    fi
440*62c56f98SSadaf Ebrahimi}
441*62c56f98SSadaf Ebrahimi
442*62c56f98SSadaf Ebrahimiadapt_cmd_for_psk () {
443*62c56f98SSadaf Ebrahimi    case "$2" in
444*62c56f98SSadaf Ebrahimi        *openssl*) s='-psk abc123 -nocert';;
445*62c56f98SSadaf Ebrahimi        *gnutls-*) s='--pskkey=abc123';;
446*62c56f98SSadaf Ebrahimi        *) s='psk=abc123';;
447*62c56f98SSadaf Ebrahimi    esac
448*62c56f98SSadaf Ebrahimi    eval $1='"$2 $s"'
449*62c56f98SSadaf Ebrahimi    unset s
450*62c56f98SSadaf Ebrahimi}
451*62c56f98SSadaf Ebrahimi
452*62c56f98SSadaf Ebrahimi# maybe_adapt_for_psk [RUN_TEST_OPTION...]
453*62c56f98SSadaf Ebrahimi# If running in a PSK-only build, maybe adapt the test to use a pre-shared key.
454*62c56f98SSadaf Ebrahimi#
455*62c56f98SSadaf Ebrahimi# If not running in a PSK-only build, do nothing.
456*62c56f98SSadaf Ebrahimi# If the test looks like it doesn't use a pre-shared key but can run with a
457*62c56f98SSadaf Ebrahimi# pre-shared key, pass a pre-shared key. If the test looks like it can't run
458*62c56f98SSadaf Ebrahimi# with a pre-shared key, skip it. If the test looks like it's already using
459*62c56f98SSadaf Ebrahimi# a pre-shared key, do nothing.
460*62c56f98SSadaf Ebrahimi#
461*62c56f98SSadaf Ebrahimi# This code does not consider builds with ECDHE-PSK or RSA-PSK.
462*62c56f98SSadaf Ebrahimi#
463*62c56f98SSadaf Ebrahimi# Inputs:
464*62c56f98SSadaf Ebrahimi# * $CLI_CMD, $SRV_CMD, $PXY_CMD: client/server/proxy commands.
465*62c56f98SSadaf Ebrahimi# * $PSK_ONLY: YES if running in a PSK-only build (no asymmetric key exchanges).
466*62c56f98SSadaf Ebrahimi# * "$@": options passed to run_test.
467*62c56f98SSadaf Ebrahimi#
468*62c56f98SSadaf Ebrahimi# Outputs:
469*62c56f98SSadaf Ebrahimi# * $CLI_CMD, $SRV_CMD: may be modified to add PSK-relevant arguments.
470*62c56f98SSadaf Ebrahimi# * $SKIP_NEXT: set to YES if the test can't run with PSK.
471*62c56f98SSadaf Ebrahimimaybe_adapt_for_psk() {
472*62c56f98SSadaf Ebrahimi    if [ "$PSK_ONLY" != "YES" ]; then
473*62c56f98SSadaf Ebrahimi        return
474*62c56f98SSadaf Ebrahimi    fi
475*62c56f98SSadaf Ebrahimi    if [ "$SKIP_NEXT" = "YES" ]; then
476*62c56f98SSadaf Ebrahimi        return
477*62c56f98SSadaf Ebrahimi    fi
478*62c56f98SSadaf Ebrahimi    case "$CLI_CMD $SRV_CMD" in
479*62c56f98SSadaf Ebrahimi        *[-_\ =]psk*|*[-_\ =]PSK*)
480*62c56f98SSadaf Ebrahimi            return;;
481*62c56f98SSadaf Ebrahimi        *force_ciphersuite*)
482*62c56f98SSadaf Ebrahimi            # The test case forces a non-PSK cipher suite. In some cases, a
483*62c56f98SSadaf Ebrahimi            # PSK cipher suite could be substituted, but we're not ready for
484*62c56f98SSadaf Ebrahimi            # that yet.
485*62c56f98SSadaf Ebrahimi            SKIP_NEXT="YES"
486*62c56f98SSadaf Ebrahimi            return;;
487*62c56f98SSadaf Ebrahimi        *\ auth_mode=*|*[-_\ =]crt[_=]*)
488*62c56f98SSadaf Ebrahimi            # The test case involves certificates. PSK won't do.
489*62c56f98SSadaf Ebrahimi            SKIP_NEXT="YES"
490*62c56f98SSadaf Ebrahimi            return;;
491*62c56f98SSadaf Ebrahimi    esac
492*62c56f98SSadaf Ebrahimi    adapt_cmd_for_psk CLI_CMD "$CLI_CMD"
493*62c56f98SSadaf Ebrahimi    adapt_cmd_for_psk SRV_CMD "$SRV_CMD"
494*62c56f98SSadaf Ebrahimi}
495*62c56f98SSadaf Ebrahimi
496*62c56f98SSadaf Ebrahimicase " $CONFIGS_ENABLED " in
497*62c56f98SSadaf Ebrahimi    *\ MBEDTLS_KEY_EXCHANGE_[^P]*) PSK_ONLY="NO";;
498*62c56f98SSadaf Ebrahimi    *\ MBEDTLS_KEY_EXCHANGE_P[^S]*) PSK_ONLY="NO";;
499*62c56f98SSadaf Ebrahimi    *\ MBEDTLS_KEY_EXCHANGE_PS[^K]*) PSK_ONLY="NO";;
500*62c56f98SSadaf Ebrahimi    *\ MBEDTLS_KEY_EXCHANGE_PSK[^_]*) PSK_ONLY="NO";;
501*62c56f98SSadaf Ebrahimi    *\ MBEDTLS_KEY_EXCHANGE_PSK_ENABLED\ *) PSK_ONLY="YES";;
502*62c56f98SSadaf Ebrahimi    *) PSK_ONLY="NO";;
503*62c56f98SSadaf Ebrahimiesac
504*62c56f98SSadaf Ebrahimi
505*62c56f98SSadaf EbrahimiHAS_ALG_SHA_1="NO"
506*62c56f98SSadaf EbrahimiHAS_ALG_SHA_224="NO"
507*62c56f98SSadaf EbrahimiHAS_ALG_SHA_256="NO"
508*62c56f98SSadaf EbrahimiHAS_ALG_SHA_384="NO"
509*62c56f98SSadaf EbrahimiHAS_ALG_SHA_512="NO"
510*62c56f98SSadaf Ebrahimi
511*62c56f98SSadaf Ebrahimicheck_for_hash_alg()
512*62c56f98SSadaf Ebrahimi{
513*62c56f98SSadaf Ebrahimi    CURR_ALG="INVALID";
514*62c56f98SSadaf Ebrahimi    USE_PSA="NO"
515*62c56f98SSadaf Ebrahimi    if is_config_enabled "MBEDTLS_USE_PSA_CRYPTO"; then
516*62c56f98SSadaf Ebrahimi        USE_PSA="YES";
517*62c56f98SSadaf Ebrahimi    fi
518*62c56f98SSadaf Ebrahimi    if [ $USE_PSA = "YES" ]; then
519*62c56f98SSadaf Ebrahimi        CURR_ALG=PSA_WANT_ALG_${1}
520*62c56f98SSadaf Ebrahimi    else
521*62c56f98SSadaf Ebrahimi        CURR_ALG=MBEDTLS_${1}_C
522*62c56f98SSadaf Ebrahimi        # Remove the second underscore to match MBEDTLS_* naming convention
523*62c56f98SSadaf Ebrahimi        CURR_ALG=$(echo "$CURR_ALG" | sed 's/_//2')
524*62c56f98SSadaf Ebrahimi    fi
525*62c56f98SSadaf Ebrahimi
526*62c56f98SSadaf Ebrahimi    case $CONFIGS_ENABLED in
527*62c56f98SSadaf Ebrahimi        *" $CURR_ALG"[\ =]*)
528*62c56f98SSadaf Ebrahimi            return 0
529*62c56f98SSadaf Ebrahimi        ;;
530*62c56f98SSadaf Ebrahimi        *) :;;
531*62c56f98SSadaf Ebrahimi    esac
532*62c56f98SSadaf Ebrahimi    return 1
533*62c56f98SSadaf Ebrahimi}
534*62c56f98SSadaf Ebrahimi
535*62c56f98SSadaf Ebrahimipopulate_enabled_hash_algs()
536*62c56f98SSadaf Ebrahimi{
537*62c56f98SSadaf Ebrahimi    for hash_alg in SHA_1 SHA_224 SHA_256 SHA_384 SHA_512; do
538*62c56f98SSadaf Ebrahimi        if check_for_hash_alg "$hash_alg"; then
539*62c56f98SSadaf Ebrahimi            hash_alg_variable=HAS_ALG_${hash_alg}
540*62c56f98SSadaf Ebrahimi            eval ${hash_alg_variable}=YES
541*62c56f98SSadaf Ebrahimi        fi
542*62c56f98SSadaf Ebrahimi    done
543*62c56f98SSadaf Ebrahimi}
544*62c56f98SSadaf Ebrahimi
545*62c56f98SSadaf Ebrahimi# skip next test if the given hash alg is not supported
546*62c56f98SSadaf Ebrahimirequires_hash_alg() {
547*62c56f98SSadaf Ebrahimi    HASH_DEFINE="Invalid"
548*62c56f98SSadaf Ebrahimi    HAS_HASH_ALG="NO"
549*62c56f98SSadaf Ebrahimi    case $1 in
550*62c56f98SSadaf Ebrahimi        SHA_1):;;
551*62c56f98SSadaf Ebrahimi        SHA_224):;;
552*62c56f98SSadaf Ebrahimi        SHA_256):;;
553*62c56f98SSadaf Ebrahimi        SHA_384):;;
554*62c56f98SSadaf Ebrahimi        SHA_512):;;
555*62c56f98SSadaf Ebrahimi      *)
556*62c56f98SSadaf Ebrahimi            echo "Unsupported hash alg - $1"
557*62c56f98SSadaf Ebrahimi            exit 1
558*62c56f98SSadaf Ebrahimi        ;;
559*62c56f98SSadaf Ebrahimi    esac
560*62c56f98SSadaf Ebrahimi
561*62c56f98SSadaf Ebrahimi    HASH_DEFINE=HAS_ALG_${1}
562*62c56f98SSadaf Ebrahimi    eval "HAS_HASH_ALG=\${${HASH_DEFINE}}"
563*62c56f98SSadaf Ebrahimi    if [ "$HAS_HASH_ALG" = "NO" ]
564*62c56f98SSadaf Ebrahimi    then
565*62c56f98SSadaf Ebrahimi        SKIP_NEXT="YES"
566*62c56f98SSadaf Ebrahimi    fi
567*62c56f98SSadaf Ebrahimi}
568*62c56f98SSadaf Ebrahimi
569*62c56f98SSadaf Ebrahimi# Skip next test if the given pk alg is not enabled
570*62c56f98SSadaf Ebrahimirequires_pk_alg() {
571*62c56f98SSadaf Ebrahimi    case $1 in
572*62c56f98SSadaf Ebrahimi        ECDSA)
573*62c56f98SSadaf Ebrahimi            if is_config_enabled MBEDTLS_USE_PSA_CRYPTO; then
574*62c56f98SSadaf Ebrahimi                requires_config_enabled PSA_WANT_ALG_ECDSA
575*62c56f98SSadaf Ebrahimi            else
576*62c56f98SSadaf Ebrahimi                requires_config_enabled MBEDTLS_ECDSA_C
577*62c56f98SSadaf Ebrahimi            fi
578*62c56f98SSadaf Ebrahimi            ;;
579*62c56f98SSadaf Ebrahimi        *)
580*62c56f98SSadaf Ebrahimi            echo "Unknown/unimplemented case $1 in requires_pk_alg"
581*62c56f98SSadaf Ebrahimi            exit 1
582*62c56f98SSadaf Ebrahimi            ;;
583*62c56f98SSadaf Ebrahimi    esac
584*62c56f98SSadaf Ebrahimi}
585*62c56f98SSadaf Ebrahimi
586*62c56f98SSadaf Ebrahimi# skip next test if OpenSSL doesn't support FALLBACK_SCSV
587*62c56f98SSadaf Ebrahimirequires_openssl_with_fallback_scsv() {
588*62c56f98SSadaf Ebrahimi    if [ -z "${OPENSSL_HAS_FBSCSV:-}" ]; then
589*62c56f98SSadaf Ebrahimi        if $OPENSSL s_client -help 2>&1 | grep fallback_scsv >/dev/null
590*62c56f98SSadaf Ebrahimi        then
591*62c56f98SSadaf Ebrahimi            OPENSSL_HAS_FBSCSV="YES"
592*62c56f98SSadaf Ebrahimi        else
593*62c56f98SSadaf Ebrahimi            OPENSSL_HAS_FBSCSV="NO"
594*62c56f98SSadaf Ebrahimi        fi
595*62c56f98SSadaf Ebrahimi    fi
596*62c56f98SSadaf Ebrahimi    if [ "$OPENSSL_HAS_FBSCSV" = "NO" ]; then
597*62c56f98SSadaf Ebrahimi        SKIP_NEXT="YES"
598*62c56f98SSadaf Ebrahimi    fi
599*62c56f98SSadaf Ebrahimi}
600*62c56f98SSadaf Ebrahimi
601*62c56f98SSadaf Ebrahimi# skip next test if either IN_CONTENT_LEN or MAX_CONTENT_LEN are below a value
602*62c56f98SSadaf Ebrahimirequires_max_content_len() {
603*62c56f98SSadaf Ebrahimi    requires_config_value_at_least "MBEDTLS_SSL_IN_CONTENT_LEN" $1
604*62c56f98SSadaf Ebrahimi    requires_config_value_at_least "MBEDTLS_SSL_OUT_CONTENT_LEN" $1
605*62c56f98SSadaf Ebrahimi}
606*62c56f98SSadaf Ebrahimi
607*62c56f98SSadaf Ebrahimi# skip next test if GnuTLS isn't available
608*62c56f98SSadaf Ebrahimirequires_gnutls() {
609*62c56f98SSadaf Ebrahimi    if [ -z "${GNUTLS_AVAILABLE:-}" ]; then
610*62c56f98SSadaf Ebrahimi        if ( which "$GNUTLS_CLI" && which "$GNUTLS_SERV" ) >/dev/null 2>&1; then
611*62c56f98SSadaf Ebrahimi            GNUTLS_AVAILABLE="YES"
612*62c56f98SSadaf Ebrahimi        else
613*62c56f98SSadaf Ebrahimi            GNUTLS_AVAILABLE="NO"
614*62c56f98SSadaf Ebrahimi        fi
615*62c56f98SSadaf Ebrahimi    fi
616*62c56f98SSadaf Ebrahimi    if [ "$GNUTLS_AVAILABLE" = "NO" ]; then
617*62c56f98SSadaf Ebrahimi        SKIP_NEXT="YES"
618*62c56f98SSadaf Ebrahimi    fi
619*62c56f98SSadaf Ebrahimi}
620*62c56f98SSadaf Ebrahimi
621*62c56f98SSadaf Ebrahimi# skip next test if GnuTLS-next isn't available
622*62c56f98SSadaf Ebrahimirequires_gnutls_next() {
623*62c56f98SSadaf Ebrahimi    if [ -z "${GNUTLS_NEXT_AVAILABLE:-}" ]; then
624*62c56f98SSadaf Ebrahimi        if ( which "${GNUTLS_NEXT_CLI:-}" && which "${GNUTLS_NEXT_SERV:-}" ) >/dev/null 2>&1; then
625*62c56f98SSadaf Ebrahimi            GNUTLS_NEXT_AVAILABLE="YES"
626*62c56f98SSadaf Ebrahimi        else
627*62c56f98SSadaf Ebrahimi            GNUTLS_NEXT_AVAILABLE="NO"
628*62c56f98SSadaf Ebrahimi        fi
629*62c56f98SSadaf Ebrahimi    fi
630*62c56f98SSadaf Ebrahimi    if [ "$GNUTLS_NEXT_AVAILABLE" = "NO" ]; then
631*62c56f98SSadaf Ebrahimi        SKIP_NEXT="YES"
632*62c56f98SSadaf Ebrahimi    fi
633*62c56f98SSadaf Ebrahimi}
634*62c56f98SSadaf Ebrahimi
635*62c56f98SSadaf Ebrahimi# skip next test if OpenSSL-legacy isn't available
636*62c56f98SSadaf Ebrahimirequires_openssl_legacy() {
637*62c56f98SSadaf Ebrahimi    if [ -z "${OPENSSL_LEGACY_AVAILABLE:-}" ]; then
638*62c56f98SSadaf Ebrahimi        if which "${OPENSSL_LEGACY:-}" >/dev/null 2>&1; then
639*62c56f98SSadaf Ebrahimi            OPENSSL_LEGACY_AVAILABLE="YES"
640*62c56f98SSadaf Ebrahimi        else
641*62c56f98SSadaf Ebrahimi            OPENSSL_LEGACY_AVAILABLE="NO"
642*62c56f98SSadaf Ebrahimi        fi
643*62c56f98SSadaf Ebrahimi    fi
644*62c56f98SSadaf Ebrahimi    if [ "$OPENSSL_LEGACY_AVAILABLE" = "NO" ]; then
645*62c56f98SSadaf Ebrahimi        SKIP_NEXT="YES"
646*62c56f98SSadaf Ebrahimi    fi
647*62c56f98SSadaf Ebrahimi}
648*62c56f98SSadaf Ebrahimi
649*62c56f98SSadaf Ebrahimirequires_openssl_next() {
650*62c56f98SSadaf Ebrahimi    if [ -z "${OPENSSL_NEXT_AVAILABLE:-}" ]; then
651*62c56f98SSadaf Ebrahimi        if which "${OPENSSL_NEXT:-}" >/dev/null 2>&1; then
652*62c56f98SSadaf Ebrahimi            OPENSSL_NEXT_AVAILABLE="YES"
653*62c56f98SSadaf Ebrahimi        else
654*62c56f98SSadaf Ebrahimi            OPENSSL_NEXT_AVAILABLE="NO"
655*62c56f98SSadaf Ebrahimi        fi
656*62c56f98SSadaf Ebrahimi    fi
657*62c56f98SSadaf Ebrahimi    if [ "$OPENSSL_NEXT_AVAILABLE" = "NO" ]; then
658*62c56f98SSadaf Ebrahimi        SKIP_NEXT="YES"
659*62c56f98SSadaf Ebrahimi    fi
660*62c56f98SSadaf Ebrahimi}
661*62c56f98SSadaf Ebrahimi
662*62c56f98SSadaf Ebrahimi# skip next test if openssl version is lower than 3.0
663*62c56f98SSadaf Ebrahimirequires_openssl_3_x() {
664*62c56f98SSadaf Ebrahimi    requires_openssl_next
665*62c56f98SSadaf Ebrahimi    if [ "$OPENSSL_NEXT_AVAILABLE" = "NO" ]; then
666*62c56f98SSadaf Ebrahimi        OPENSSL_3_X_AVAILABLE="NO"
667*62c56f98SSadaf Ebrahimi    fi
668*62c56f98SSadaf Ebrahimi    if [ -z "${OPENSSL_3_X_AVAILABLE:-}" ]; then
669*62c56f98SSadaf Ebrahimi        if $OPENSSL_NEXT version 2>&1 | grep "OpenSSL 3." >/dev/null
670*62c56f98SSadaf Ebrahimi        then
671*62c56f98SSadaf Ebrahimi            OPENSSL_3_X_AVAILABLE="YES"
672*62c56f98SSadaf Ebrahimi        else
673*62c56f98SSadaf Ebrahimi            OPENSSL_3_X_AVAILABLE="NO"
674*62c56f98SSadaf Ebrahimi        fi
675*62c56f98SSadaf Ebrahimi    fi
676*62c56f98SSadaf Ebrahimi    if [ "$OPENSSL_3_X_AVAILABLE" = "NO" ]; then
677*62c56f98SSadaf Ebrahimi        SKIP_NEXT="YES"
678*62c56f98SSadaf Ebrahimi    fi
679*62c56f98SSadaf Ebrahimi}
680*62c56f98SSadaf Ebrahimi
681*62c56f98SSadaf Ebrahimi# skip next test if openssl does not support ffdh keys
682*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_ffdh() {
683*62c56f98SSadaf Ebrahimi    requires_openssl_3_x
684*62c56f98SSadaf Ebrahimi}
685*62c56f98SSadaf Ebrahimi
686*62c56f98SSadaf Ebrahimi# skip next test if openssl cannot handle ephemeral key exchange
687*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral() {
688*62c56f98SSadaf Ebrahimi    requires_openssl_next
689*62c56f98SSadaf Ebrahimi
690*62c56f98SSadaf Ebrahimi    if !(is_config_enabled "PSA_WANT_ALG_ECDH"); then
691*62c56f98SSadaf Ebrahimi        requires_openssl_tls1_3_with_ffdh
692*62c56f98SSadaf Ebrahimi    fi
693*62c56f98SSadaf Ebrahimi}
694*62c56f98SSadaf Ebrahimi
695*62c56f98SSadaf Ebrahimi# skip next test if tls1_3 is not available
696*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3() {
697*62c56f98SSadaf Ebrahimi    requires_openssl_next
698*62c56f98SSadaf Ebrahimi    if [ "$OPENSSL_NEXT_AVAILABLE" = "NO" ]; then
699*62c56f98SSadaf Ebrahimi        OPENSSL_TLS1_3_AVAILABLE="NO"
700*62c56f98SSadaf Ebrahimi    fi
701*62c56f98SSadaf Ebrahimi    if [ -z "${OPENSSL_TLS1_3_AVAILABLE:-}" ]; then
702*62c56f98SSadaf Ebrahimi        if $OPENSSL_NEXT s_client -help 2>&1 | grep tls1_3 >/dev/null
703*62c56f98SSadaf Ebrahimi        then
704*62c56f98SSadaf Ebrahimi            OPENSSL_TLS1_3_AVAILABLE="YES"
705*62c56f98SSadaf Ebrahimi        else
706*62c56f98SSadaf Ebrahimi            OPENSSL_TLS1_3_AVAILABLE="NO"
707*62c56f98SSadaf Ebrahimi        fi
708*62c56f98SSadaf Ebrahimi    fi
709*62c56f98SSadaf Ebrahimi    if [ "$OPENSSL_TLS1_3_AVAILABLE" = "NO" ]; then
710*62c56f98SSadaf Ebrahimi        SKIP_NEXT="YES"
711*62c56f98SSadaf Ebrahimi    fi
712*62c56f98SSadaf Ebrahimi}
713*62c56f98SSadaf Ebrahimi
714*62c56f98SSadaf Ebrahimi# skip next test if tls1_3 is not available
715*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3() {
716*62c56f98SSadaf Ebrahimi    requires_gnutls_next
717*62c56f98SSadaf Ebrahimi    if [ "$GNUTLS_NEXT_AVAILABLE" = "NO" ]; then
718*62c56f98SSadaf Ebrahimi        GNUTLS_TLS1_3_AVAILABLE="NO"
719*62c56f98SSadaf Ebrahimi    fi
720*62c56f98SSadaf Ebrahimi    if [ -z "${GNUTLS_TLS1_3_AVAILABLE:-}" ]; then
721*62c56f98SSadaf Ebrahimi        if $GNUTLS_NEXT_CLI -l 2>&1 | grep VERS-TLS1.3 >/dev/null
722*62c56f98SSadaf Ebrahimi        then
723*62c56f98SSadaf Ebrahimi            GNUTLS_TLS1_3_AVAILABLE="YES"
724*62c56f98SSadaf Ebrahimi        else
725*62c56f98SSadaf Ebrahimi            GNUTLS_TLS1_3_AVAILABLE="NO"
726*62c56f98SSadaf Ebrahimi        fi
727*62c56f98SSadaf Ebrahimi    fi
728*62c56f98SSadaf Ebrahimi    if [ "$GNUTLS_TLS1_3_AVAILABLE" = "NO" ]; then
729*62c56f98SSadaf Ebrahimi        SKIP_NEXT="YES"
730*62c56f98SSadaf Ebrahimi    fi
731*62c56f98SSadaf Ebrahimi}
732*62c56f98SSadaf Ebrahimi
733*62c56f98SSadaf Ebrahimi# Check %NO_TICKETS option
734*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket() {
735*62c56f98SSadaf Ebrahimi    requires_gnutls_next
736*62c56f98SSadaf Ebrahimi    if [ "$GNUTLS_NEXT_AVAILABLE" = "NO" ]; then
737*62c56f98SSadaf Ebrahimi        GNUTLS_NO_TICKETS_AVAILABLE="NO"
738*62c56f98SSadaf Ebrahimi    fi
739*62c56f98SSadaf Ebrahimi    if [ -z "${GNUTLS_NO_TICKETS_AVAILABLE:-}" ]; then
740*62c56f98SSadaf Ebrahimi        if $GNUTLS_NEXT_CLI --priority-list 2>&1 | grep NO_TICKETS >/dev/null
741*62c56f98SSadaf Ebrahimi        then
742*62c56f98SSadaf Ebrahimi            GNUTLS_NO_TICKETS_AVAILABLE="YES"
743*62c56f98SSadaf Ebrahimi        else
744*62c56f98SSadaf Ebrahimi            GNUTLS_NO_TICKETS_AVAILABLE="NO"
745*62c56f98SSadaf Ebrahimi        fi
746*62c56f98SSadaf Ebrahimi    fi
747*62c56f98SSadaf Ebrahimi    if [ "$GNUTLS_NO_TICKETS_AVAILABLE" = "NO" ]; then
748*62c56f98SSadaf Ebrahimi        SKIP_NEXT="YES"
749*62c56f98SSadaf Ebrahimi    fi
750*62c56f98SSadaf Ebrahimi}
751*62c56f98SSadaf Ebrahimi
752*62c56f98SSadaf Ebrahimi# Check %DISABLE_TLS13_COMPAT_MODE option
753*62c56f98SSadaf Ebrahimirequires_gnutls_next_disable_tls13_compat() {
754*62c56f98SSadaf Ebrahimi    requires_gnutls_next
755*62c56f98SSadaf Ebrahimi    if [ "$GNUTLS_NEXT_AVAILABLE" = "NO" ]; then
756*62c56f98SSadaf Ebrahimi        GNUTLS_DISABLE_TLS13_COMPAT_MODE_AVAILABLE="NO"
757*62c56f98SSadaf Ebrahimi    fi
758*62c56f98SSadaf Ebrahimi    if [ -z "${GNUTLS_DISABLE_TLS13_COMPAT_MODE_AVAILABLE:-}" ]; then
759*62c56f98SSadaf Ebrahimi        if $GNUTLS_NEXT_CLI --priority-list 2>&1 | grep DISABLE_TLS13_COMPAT_MODE >/dev/null
760*62c56f98SSadaf Ebrahimi        then
761*62c56f98SSadaf Ebrahimi            GNUTLS_DISABLE_TLS13_COMPAT_MODE_AVAILABLE="YES"
762*62c56f98SSadaf Ebrahimi        else
763*62c56f98SSadaf Ebrahimi            GNUTLS_DISABLE_TLS13_COMPAT_MODE_AVAILABLE="NO"
764*62c56f98SSadaf Ebrahimi        fi
765*62c56f98SSadaf Ebrahimi    fi
766*62c56f98SSadaf Ebrahimi    if [ "$GNUTLS_DISABLE_TLS13_COMPAT_MODE_AVAILABLE" = "NO" ]; then
767*62c56f98SSadaf Ebrahimi        SKIP_NEXT="YES"
768*62c56f98SSadaf Ebrahimi    fi
769*62c56f98SSadaf Ebrahimi}
770*62c56f98SSadaf Ebrahimi
771*62c56f98SSadaf Ebrahimi# skip next test if GnuTLS does not support the record size limit extension
772*62c56f98SSadaf Ebrahimirequires_gnutls_record_size_limit() {
773*62c56f98SSadaf Ebrahimi    requires_gnutls_next
774*62c56f98SSadaf Ebrahimi    if [ "$GNUTLS_NEXT_AVAILABLE" = "NO" ]; then
775*62c56f98SSadaf Ebrahimi        GNUTLS_RECORD_SIZE_LIMIT_AVAILABLE="NO"
776*62c56f98SSadaf Ebrahimi    else
777*62c56f98SSadaf Ebrahimi        GNUTLS_RECORD_SIZE_LIMIT_AVAILABLE="YES"
778*62c56f98SSadaf Ebrahimi    fi
779*62c56f98SSadaf Ebrahimi    if [ "$GNUTLS_RECORD_SIZE_LIMIT_AVAILABLE" = "NO" ]; then
780*62c56f98SSadaf Ebrahimi        SKIP_NEXT="YES"
781*62c56f98SSadaf Ebrahimi    fi
782*62c56f98SSadaf Ebrahimi}
783*62c56f98SSadaf Ebrahimi
784*62c56f98SSadaf Ebrahimi# skip next test if IPv6 isn't available on this host
785*62c56f98SSadaf Ebrahimirequires_ipv6() {
786*62c56f98SSadaf Ebrahimi    if [ -z "${HAS_IPV6:-}" ]; then
787*62c56f98SSadaf Ebrahimi        $P_SRV server_addr='::1' > $SRV_OUT 2>&1 &
788*62c56f98SSadaf Ebrahimi        SRV_PID=$!
789*62c56f98SSadaf Ebrahimi        sleep 1
790*62c56f98SSadaf Ebrahimi        kill $SRV_PID >/dev/null 2>&1
791*62c56f98SSadaf Ebrahimi        if grep "NET - Binding of the socket failed" $SRV_OUT >/dev/null; then
792*62c56f98SSadaf Ebrahimi            HAS_IPV6="NO"
793*62c56f98SSadaf Ebrahimi        else
794*62c56f98SSadaf Ebrahimi            HAS_IPV6="YES"
795*62c56f98SSadaf Ebrahimi        fi
796*62c56f98SSadaf Ebrahimi        rm -r $SRV_OUT
797*62c56f98SSadaf Ebrahimi    fi
798*62c56f98SSadaf Ebrahimi
799*62c56f98SSadaf Ebrahimi    if [ "$HAS_IPV6" = "NO" ]; then
800*62c56f98SSadaf Ebrahimi        SKIP_NEXT="YES"
801*62c56f98SSadaf Ebrahimi    fi
802*62c56f98SSadaf Ebrahimi}
803*62c56f98SSadaf Ebrahimi
804*62c56f98SSadaf Ebrahimi# skip next test if it's i686 or uname is not available
805*62c56f98SSadaf Ebrahimirequires_not_i686() {
806*62c56f98SSadaf Ebrahimi    if [ -z "${IS_I686:-}" ]; then
807*62c56f98SSadaf Ebrahimi        IS_I686="YES"
808*62c56f98SSadaf Ebrahimi        if which "uname" >/dev/null 2>&1; then
809*62c56f98SSadaf Ebrahimi            if [ -z "$(uname -a | grep i686)" ]; then
810*62c56f98SSadaf Ebrahimi                IS_I686="NO"
811*62c56f98SSadaf Ebrahimi            fi
812*62c56f98SSadaf Ebrahimi        fi
813*62c56f98SSadaf Ebrahimi    fi
814*62c56f98SSadaf Ebrahimi    if [ "$IS_I686" = "YES" ]; then
815*62c56f98SSadaf Ebrahimi        SKIP_NEXT="YES"
816*62c56f98SSadaf Ebrahimi    fi
817*62c56f98SSadaf Ebrahimi}
818*62c56f98SSadaf Ebrahimi
819*62c56f98SSadaf Ebrahimi# Calculate the input & output maximum content lengths set in the config
820*62c56f98SSadaf EbrahimiMAX_CONTENT_LEN=16384
821*62c56f98SSadaf EbrahimiMAX_IN_LEN=$( get_config_value_or_default "MBEDTLS_SSL_IN_CONTENT_LEN" )
822*62c56f98SSadaf EbrahimiMAX_OUT_LEN=$( get_config_value_or_default "MBEDTLS_SSL_OUT_CONTENT_LEN" )
823*62c56f98SSadaf Ebrahimi
824*62c56f98SSadaf Ebrahimi# Calculate the maximum content length that fits both
825*62c56f98SSadaf Ebrahimiif [ "$MAX_IN_LEN" -lt "$MAX_CONTENT_LEN" ]; then
826*62c56f98SSadaf Ebrahimi    MAX_CONTENT_LEN="$MAX_IN_LEN"
827*62c56f98SSadaf Ebrahimifi
828*62c56f98SSadaf Ebrahimiif [ "$MAX_OUT_LEN" -lt "$MAX_CONTENT_LEN" ]; then
829*62c56f98SSadaf Ebrahimi    MAX_CONTENT_LEN="$MAX_OUT_LEN"
830*62c56f98SSadaf Ebrahimifi
831*62c56f98SSadaf Ebrahimi
832*62c56f98SSadaf Ebrahimi# skip the next test if the SSL output buffer is less than 16KB
833*62c56f98SSadaf Ebrahimirequires_full_size_output_buffer() {
834*62c56f98SSadaf Ebrahimi    if [ "$MAX_OUT_LEN" -ne 16384 ]; then
835*62c56f98SSadaf Ebrahimi        SKIP_NEXT="YES"
836*62c56f98SSadaf Ebrahimi    fi
837*62c56f98SSadaf Ebrahimi}
838*62c56f98SSadaf Ebrahimi
839*62c56f98SSadaf Ebrahimi# skip the next test if valgrind is in use
840*62c56f98SSadaf Ebrahiminot_with_valgrind() {
841*62c56f98SSadaf Ebrahimi    if [ "$MEMCHECK" -gt 0 ]; then
842*62c56f98SSadaf Ebrahimi        SKIP_NEXT="YES"
843*62c56f98SSadaf Ebrahimi    fi
844*62c56f98SSadaf Ebrahimi}
845*62c56f98SSadaf Ebrahimi
846*62c56f98SSadaf Ebrahimi# skip the next test if valgrind is NOT in use
847*62c56f98SSadaf Ebrahimionly_with_valgrind() {
848*62c56f98SSadaf Ebrahimi    if [ "$MEMCHECK" -eq 0 ]; then
849*62c56f98SSadaf Ebrahimi        SKIP_NEXT="YES"
850*62c56f98SSadaf Ebrahimi    fi
851*62c56f98SSadaf Ebrahimi}
852*62c56f98SSadaf Ebrahimi
853*62c56f98SSadaf Ebrahimi# multiply the client timeout delay by the given factor for the next test
854*62c56f98SSadaf Ebrahimiclient_needs_more_time() {
855*62c56f98SSadaf Ebrahimi    CLI_DELAY_FACTOR=$1
856*62c56f98SSadaf Ebrahimi}
857*62c56f98SSadaf Ebrahimi
858*62c56f98SSadaf Ebrahimi# wait for the given seconds after the client finished in the next test
859*62c56f98SSadaf Ebrahimiserver_needs_more_time() {
860*62c56f98SSadaf Ebrahimi    SRV_DELAY_SECONDS=$1
861*62c56f98SSadaf Ebrahimi}
862*62c56f98SSadaf Ebrahimi
863*62c56f98SSadaf Ebrahimi# print_name <name>
864*62c56f98SSadaf Ebrahimiprint_name() {
865*62c56f98SSadaf Ebrahimi    TESTS=$(( $TESTS + 1 ))
866*62c56f98SSadaf Ebrahimi    LINE=""
867*62c56f98SSadaf Ebrahimi
868*62c56f98SSadaf Ebrahimi    if [ "$SHOW_TEST_NUMBER" -gt 0 ]; then
869*62c56f98SSadaf Ebrahimi        LINE="$TESTS "
870*62c56f98SSadaf Ebrahimi    fi
871*62c56f98SSadaf Ebrahimi
872*62c56f98SSadaf Ebrahimi    LINE="$LINE$1"
873*62c56f98SSadaf Ebrahimi    printf "%s " "$LINE"
874*62c56f98SSadaf Ebrahimi    LEN=$(( 72 - `echo "$LINE" | wc -c` ))
875*62c56f98SSadaf Ebrahimi    for i in `seq 1 $LEN`; do printf '.'; done
876*62c56f98SSadaf Ebrahimi    printf ' '
877*62c56f98SSadaf Ebrahimi
878*62c56f98SSadaf Ebrahimi}
879*62c56f98SSadaf Ebrahimi
880*62c56f98SSadaf Ebrahimi# record_outcome <outcome> [<failure-reason>]
881*62c56f98SSadaf Ebrahimi# The test name must be in $NAME.
882*62c56f98SSadaf Ebrahimi# Use $TEST_SUITE_NAME as the test suite name if set.
883*62c56f98SSadaf Ebrahimirecord_outcome() {
884*62c56f98SSadaf Ebrahimi    echo "$1"
885*62c56f98SSadaf Ebrahimi    if [ -n "$MBEDTLS_TEST_OUTCOME_FILE" ]; then
886*62c56f98SSadaf Ebrahimi        printf '%s;%s;%s;%s;%s;%s\n' \
887*62c56f98SSadaf Ebrahimi               "$MBEDTLS_TEST_PLATFORM" "$MBEDTLS_TEST_CONFIGURATION" \
888*62c56f98SSadaf Ebrahimi               "${TEST_SUITE_NAME:-ssl-opt}" "$NAME" \
889*62c56f98SSadaf Ebrahimi               "$1" "${2-}" \
890*62c56f98SSadaf Ebrahimi               >>"$MBEDTLS_TEST_OUTCOME_FILE"
891*62c56f98SSadaf Ebrahimi    fi
892*62c56f98SSadaf Ebrahimi}
893*62c56f98SSadaf Ebrahimiunset TEST_SUITE_NAME
894*62c56f98SSadaf Ebrahimi
895*62c56f98SSadaf Ebrahimi# True if the presence of the given pattern in a log definitely indicates
896*62c56f98SSadaf Ebrahimi# that the test has failed. False if the presence is inconclusive.
897*62c56f98SSadaf Ebrahimi#
898*62c56f98SSadaf Ebrahimi# Inputs:
899*62c56f98SSadaf Ebrahimi# * $1: pattern found in the logs
900*62c56f98SSadaf Ebrahimi# * $TIMES_LEFT: >0 if retrying is an option
901*62c56f98SSadaf Ebrahimi#
902*62c56f98SSadaf Ebrahimi# Outputs:
903*62c56f98SSadaf Ebrahimi# * $outcome: set to a retry reason if the pattern is inconclusive,
904*62c56f98SSadaf Ebrahimi#             unchanged otherwise.
905*62c56f98SSadaf Ebrahimi# * Return value: 1 if the pattern is inconclusive,
906*62c56f98SSadaf Ebrahimi#                 0 if the failure is definitive.
907*62c56f98SSadaf Ebrahimilog_pattern_presence_is_conclusive() {
908*62c56f98SSadaf Ebrahimi    # If we've run out of attempts, then don't retry no matter what.
909*62c56f98SSadaf Ebrahimi    if [ $TIMES_LEFT -eq 0 ]; then
910*62c56f98SSadaf Ebrahimi        return 0
911*62c56f98SSadaf Ebrahimi    fi
912*62c56f98SSadaf Ebrahimi    case $1 in
913*62c56f98SSadaf Ebrahimi        "resend")
914*62c56f98SSadaf Ebrahimi            # An undesired resend may have been caused by the OS dropping or
915*62c56f98SSadaf Ebrahimi            # delaying a packet at an inopportune time.
916*62c56f98SSadaf Ebrahimi            outcome="RETRY(resend)"
917*62c56f98SSadaf Ebrahimi            return 1;;
918*62c56f98SSadaf Ebrahimi    esac
919*62c56f98SSadaf Ebrahimi}
920*62c56f98SSadaf Ebrahimi
921*62c56f98SSadaf Ebrahimi# fail <message>
922*62c56f98SSadaf Ebrahimifail() {
923*62c56f98SSadaf Ebrahimi    record_outcome "FAIL" "$1"
924*62c56f98SSadaf Ebrahimi    echo "  ! $1"
925*62c56f98SSadaf Ebrahimi
926*62c56f98SSadaf Ebrahimi    mv $SRV_OUT o-srv-${TESTS}.log
927*62c56f98SSadaf Ebrahimi    mv $CLI_OUT o-cli-${TESTS}.log
928*62c56f98SSadaf Ebrahimi    if [ -n "$PXY_CMD" ]; then
929*62c56f98SSadaf Ebrahimi        mv $PXY_OUT o-pxy-${TESTS}.log
930*62c56f98SSadaf Ebrahimi    fi
931*62c56f98SSadaf Ebrahimi    echo "  ! outputs saved to o-XXX-${TESTS}.log"
932*62c56f98SSadaf Ebrahimi
933*62c56f98SSadaf Ebrahimi    if [ "${LOG_FAILURE_ON_STDOUT:-0}" != 0 ]; then
934*62c56f98SSadaf Ebrahimi        echo "  ! server output:"
935*62c56f98SSadaf Ebrahimi        cat o-srv-${TESTS}.log
936*62c56f98SSadaf Ebrahimi        echo "  ! ========================================================"
937*62c56f98SSadaf Ebrahimi        echo "  ! client output:"
938*62c56f98SSadaf Ebrahimi        cat o-cli-${TESTS}.log
939*62c56f98SSadaf Ebrahimi        if [ -n "$PXY_CMD" ]; then
940*62c56f98SSadaf Ebrahimi            echo "  ! ========================================================"
941*62c56f98SSadaf Ebrahimi            echo "  ! proxy output:"
942*62c56f98SSadaf Ebrahimi            cat o-pxy-${TESTS}.log
943*62c56f98SSadaf Ebrahimi        fi
944*62c56f98SSadaf Ebrahimi        echo ""
945*62c56f98SSadaf Ebrahimi    fi
946*62c56f98SSadaf Ebrahimi
947*62c56f98SSadaf Ebrahimi    FAILS=$(( $FAILS + 1 ))
948*62c56f98SSadaf Ebrahimi}
949*62c56f98SSadaf Ebrahimi
950*62c56f98SSadaf Ebrahimi# is_polar <cmd_line>
951*62c56f98SSadaf Ebrahimiis_polar() {
952*62c56f98SSadaf Ebrahimi    case "$1" in
953*62c56f98SSadaf Ebrahimi        *ssl_client2*) true;;
954*62c56f98SSadaf Ebrahimi        *ssl_server2*) true;;
955*62c56f98SSadaf Ebrahimi        *) false;;
956*62c56f98SSadaf Ebrahimi    esac
957*62c56f98SSadaf Ebrahimi}
958*62c56f98SSadaf Ebrahimi
959*62c56f98SSadaf Ebrahimi# openssl s_server doesn't have -www with DTLS
960*62c56f98SSadaf Ebrahimicheck_osrv_dtls() {
961*62c56f98SSadaf Ebrahimi    case "$SRV_CMD" in
962*62c56f98SSadaf Ebrahimi        *s_server*-dtls*)
963*62c56f98SSadaf Ebrahimi            NEEDS_INPUT=1
964*62c56f98SSadaf Ebrahimi            SRV_CMD="$( echo $SRV_CMD | sed s/-www// )";;
965*62c56f98SSadaf Ebrahimi        *) NEEDS_INPUT=0;;
966*62c56f98SSadaf Ebrahimi    esac
967*62c56f98SSadaf Ebrahimi}
968*62c56f98SSadaf Ebrahimi
969*62c56f98SSadaf Ebrahimi# provide input to commands that need it
970*62c56f98SSadaf Ebrahimiprovide_input() {
971*62c56f98SSadaf Ebrahimi    if [ $NEEDS_INPUT -eq 0 ]; then
972*62c56f98SSadaf Ebrahimi        return
973*62c56f98SSadaf Ebrahimi    fi
974*62c56f98SSadaf Ebrahimi
975*62c56f98SSadaf Ebrahimi    while true; do
976*62c56f98SSadaf Ebrahimi        echo "HTTP/1.0 200 OK"
977*62c56f98SSadaf Ebrahimi        sleep 1
978*62c56f98SSadaf Ebrahimi    done
979*62c56f98SSadaf Ebrahimi}
980*62c56f98SSadaf Ebrahimi
981*62c56f98SSadaf Ebrahimi# has_mem_err <log_file_name>
982*62c56f98SSadaf Ebrahimihas_mem_err() {
983*62c56f98SSadaf Ebrahimi    if ( grep -F 'All heap blocks were freed -- no leaks are possible' "$1" &&
984*62c56f98SSadaf Ebrahimi         grep -F 'ERROR SUMMARY: 0 errors from 0 contexts' "$1" ) > /dev/null
985*62c56f98SSadaf Ebrahimi    then
986*62c56f98SSadaf Ebrahimi        return 1 # false: does not have errors
987*62c56f98SSadaf Ebrahimi    else
988*62c56f98SSadaf Ebrahimi        return 0 # true: has errors
989*62c56f98SSadaf Ebrahimi    fi
990*62c56f98SSadaf Ebrahimi}
991*62c56f98SSadaf Ebrahimi
992*62c56f98SSadaf Ebrahimi# Wait for process $2 named $3 to be listening on port $1. Print error to $4.
993*62c56f98SSadaf Ebrahimiif type lsof >/dev/null 2>/dev/null; then
994*62c56f98SSadaf Ebrahimi    wait_app_start() {
995*62c56f98SSadaf Ebrahimi        newline='
996*62c56f98SSadaf Ebrahimi'
997*62c56f98SSadaf Ebrahimi        START_TIME=$(date +%s)
998*62c56f98SSadaf Ebrahimi        if [ "$DTLS" -eq 1 ]; then
999*62c56f98SSadaf Ebrahimi            proto=UDP
1000*62c56f98SSadaf Ebrahimi        else
1001*62c56f98SSadaf Ebrahimi            proto=TCP
1002*62c56f98SSadaf Ebrahimi        fi
1003*62c56f98SSadaf Ebrahimi        # Make a tight loop, server normally takes less than 1s to start.
1004*62c56f98SSadaf Ebrahimi        while true; do
1005*62c56f98SSadaf Ebrahimi              SERVER_PIDS=$(lsof -a -n -b -i "$proto:$1" -t)
1006*62c56f98SSadaf Ebrahimi              # When we use a proxy, it will be listening on the same port we
1007*62c56f98SSadaf Ebrahimi              # are checking for as well as the server and lsof will list both.
1008*62c56f98SSadaf Ebrahimi             case ${newline}${SERVER_PIDS}${newline} in
1009*62c56f98SSadaf Ebrahimi                  *${newline}${2}${newline}*) break;;
1010*62c56f98SSadaf Ebrahimi              esac
1011*62c56f98SSadaf Ebrahimi              if [ $(( $(date +%s) - $START_TIME )) -gt $DOG_DELAY ]; then
1012*62c56f98SSadaf Ebrahimi                  echo "$3 START TIMEOUT"
1013*62c56f98SSadaf Ebrahimi                  echo "$3 START TIMEOUT" >> $4
1014*62c56f98SSadaf Ebrahimi                  break
1015*62c56f98SSadaf Ebrahimi              fi
1016*62c56f98SSadaf Ebrahimi              # Linux and *BSD support decimal arguments to sleep. On other
1017*62c56f98SSadaf Ebrahimi              # OSes this may be a tight loop.
1018*62c56f98SSadaf Ebrahimi              sleep 0.1 2>/dev/null || true
1019*62c56f98SSadaf Ebrahimi        done
1020*62c56f98SSadaf Ebrahimi    }
1021*62c56f98SSadaf Ebrahimielse
1022*62c56f98SSadaf Ebrahimi    echo "Warning: lsof not available, wait_app_start = sleep"
1023*62c56f98SSadaf Ebrahimi    wait_app_start() {
1024*62c56f98SSadaf Ebrahimi        sleep "$START_DELAY"
1025*62c56f98SSadaf Ebrahimi    }
1026*62c56f98SSadaf Ebrahimifi
1027*62c56f98SSadaf Ebrahimi
1028*62c56f98SSadaf Ebrahimi# Wait for server process $2 to be listening on port $1.
1029*62c56f98SSadaf Ebrahimiwait_server_start() {
1030*62c56f98SSadaf Ebrahimi    wait_app_start $1 $2 "SERVER" $SRV_OUT
1031*62c56f98SSadaf Ebrahimi}
1032*62c56f98SSadaf Ebrahimi
1033*62c56f98SSadaf Ebrahimi# Wait for proxy process $2 to be listening on port $1.
1034*62c56f98SSadaf Ebrahimiwait_proxy_start() {
1035*62c56f98SSadaf Ebrahimi    wait_app_start $1 $2 "PROXY" $PXY_OUT
1036*62c56f98SSadaf Ebrahimi}
1037*62c56f98SSadaf Ebrahimi
1038*62c56f98SSadaf Ebrahimi# Given the client or server debug output, parse the unix timestamp that is
1039*62c56f98SSadaf Ebrahimi# included in the first 4 bytes of the random bytes and check that it's within
1040*62c56f98SSadaf Ebrahimi# acceptable bounds
1041*62c56f98SSadaf Ebrahimicheck_server_hello_time() {
1042*62c56f98SSadaf Ebrahimi    # Extract the time from the debug (lvl 3) output of the client
1043*62c56f98SSadaf Ebrahimi    SERVER_HELLO_TIME="$(sed -n 's/.*server hello, current time: //p' < "$1")"
1044*62c56f98SSadaf Ebrahimi    # Get the Unix timestamp for now
1045*62c56f98SSadaf Ebrahimi    CUR_TIME=$(date +'%s')
1046*62c56f98SSadaf Ebrahimi    THRESHOLD_IN_SECS=300
1047*62c56f98SSadaf Ebrahimi
1048*62c56f98SSadaf Ebrahimi    # Check if the ServerHello time was printed
1049*62c56f98SSadaf Ebrahimi    if [ -z "$SERVER_HELLO_TIME" ]; then
1050*62c56f98SSadaf Ebrahimi        return 1
1051*62c56f98SSadaf Ebrahimi    fi
1052*62c56f98SSadaf Ebrahimi
1053*62c56f98SSadaf Ebrahimi    # Check the time in ServerHello is within acceptable bounds
1054*62c56f98SSadaf Ebrahimi    if [ $SERVER_HELLO_TIME -lt $(( $CUR_TIME - $THRESHOLD_IN_SECS )) ]; then
1055*62c56f98SSadaf Ebrahimi        # The time in ServerHello is at least 5 minutes before now
1056*62c56f98SSadaf Ebrahimi        return 1
1057*62c56f98SSadaf Ebrahimi    elif [ $SERVER_HELLO_TIME -gt $(( $CUR_TIME + $THRESHOLD_IN_SECS )) ]; then
1058*62c56f98SSadaf Ebrahimi        # The time in ServerHello is at least 5 minutes later than now
1059*62c56f98SSadaf Ebrahimi        return 1
1060*62c56f98SSadaf Ebrahimi    else
1061*62c56f98SSadaf Ebrahimi        return 0
1062*62c56f98SSadaf Ebrahimi    fi
1063*62c56f98SSadaf Ebrahimi}
1064*62c56f98SSadaf Ebrahimi
1065*62c56f98SSadaf Ebrahimi# Get handshake memory usage from server or client output and put it into the variable specified by the first argument
1066*62c56f98SSadaf Ebrahimihandshake_memory_get() {
1067*62c56f98SSadaf Ebrahimi    OUTPUT_VARIABLE="$1"
1068*62c56f98SSadaf Ebrahimi    OUTPUT_FILE="$2"
1069*62c56f98SSadaf Ebrahimi
1070*62c56f98SSadaf Ebrahimi    # Get memory usage from a pattern like "Heap memory usage after handshake: 23112 bytes. Peak memory usage was 33112"
1071*62c56f98SSadaf Ebrahimi    MEM_USAGE=$(sed -n 's/.*Heap memory usage after handshake: //p' < "$OUTPUT_FILE" | grep -o "[0-9]*" | head -1)
1072*62c56f98SSadaf Ebrahimi
1073*62c56f98SSadaf Ebrahimi    # Check if memory usage was read
1074*62c56f98SSadaf Ebrahimi    if [ -z "$MEM_USAGE" ]; then
1075*62c56f98SSadaf Ebrahimi        echo "Error: Can not read the value of handshake memory usage"
1076*62c56f98SSadaf Ebrahimi        return 1
1077*62c56f98SSadaf Ebrahimi    else
1078*62c56f98SSadaf Ebrahimi        eval "$OUTPUT_VARIABLE=$MEM_USAGE"
1079*62c56f98SSadaf Ebrahimi        return 0
1080*62c56f98SSadaf Ebrahimi    fi
1081*62c56f98SSadaf Ebrahimi}
1082*62c56f98SSadaf Ebrahimi
1083*62c56f98SSadaf Ebrahimi# Get handshake memory usage from server or client output and check if this value
1084*62c56f98SSadaf Ebrahimi# is not higher than the maximum given by the first argument
1085*62c56f98SSadaf Ebrahimihandshake_memory_check() {
1086*62c56f98SSadaf Ebrahimi    MAX_MEMORY="$1"
1087*62c56f98SSadaf Ebrahimi    OUTPUT_FILE="$2"
1088*62c56f98SSadaf Ebrahimi
1089*62c56f98SSadaf Ebrahimi    # Get memory usage
1090*62c56f98SSadaf Ebrahimi    if ! handshake_memory_get "MEMORY_USAGE" "$OUTPUT_FILE"; then
1091*62c56f98SSadaf Ebrahimi        return 1
1092*62c56f98SSadaf Ebrahimi    fi
1093*62c56f98SSadaf Ebrahimi
1094*62c56f98SSadaf Ebrahimi    # Check if memory usage is below max value
1095*62c56f98SSadaf Ebrahimi    if [ "$MEMORY_USAGE" -gt "$MAX_MEMORY" ]; then
1096*62c56f98SSadaf Ebrahimi        echo "\nFailed: Handshake memory usage was $MEMORY_USAGE bytes," \
1097*62c56f98SSadaf Ebrahimi             "but should be below $MAX_MEMORY bytes"
1098*62c56f98SSadaf Ebrahimi        return 1
1099*62c56f98SSadaf Ebrahimi    else
1100*62c56f98SSadaf Ebrahimi        return 0
1101*62c56f98SSadaf Ebrahimi    fi
1102*62c56f98SSadaf Ebrahimi}
1103*62c56f98SSadaf Ebrahimi
1104*62c56f98SSadaf Ebrahimi# wait for client to terminate and set CLI_EXIT
1105*62c56f98SSadaf Ebrahimi# must be called right after starting the client
1106*62c56f98SSadaf Ebrahimiwait_client_done() {
1107*62c56f98SSadaf Ebrahimi    CLI_PID=$!
1108*62c56f98SSadaf Ebrahimi
1109*62c56f98SSadaf Ebrahimi    CLI_DELAY=$(( $DOG_DELAY * $CLI_DELAY_FACTOR ))
1110*62c56f98SSadaf Ebrahimi    CLI_DELAY_FACTOR=1
1111*62c56f98SSadaf Ebrahimi
1112*62c56f98SSadaf Ebrahimi    ( sleep $CLI_DELAY; echo "===CLIENT_TIMEOUT===" >> $CLI_OUT; kill $CLI_PID ) &
1113*62c56f98SSadaf Ebrahimi    DOG_PID=$!
1114*62c56f98SSadaf Ebrahimi
1115*62c56f98SSadaf Ebrahimi    # For Ubuntu 22.04, `Terminated` message is outputed by wait command.
1116*62c56f98SSadaf Ebrahimi    # To remove it from stdout, redirect stdout/stderr to CLI_OUT
1117*62c56f98SSadaf Ebrahimi    wait $CLI_PID >> $CLI_OUT 2>&1
1118*62c56f98SSadaf Ebrahimi    CLI_EXIT=$?
1119*62c56f98SSadaf Ebrahimi
1120*62c56f98SSadaf Ebrahimi    kill $DOG_PID >/dev/null 2>&1
1121*62c56f98SSadaf Ebrahimi    wait $DOG_PID >> $CLI_OUT 2>&1
1122*62c56f98SSadaf Ebrahimi
1123*62c56f98SSadaf Ebrahimi    echo "EXIT: $CLI_EXIT" >> $CLI_OUT
1124*62c56f98SSadaf Ebrahimi
1125*62c56f98SSadaf Ebrahimi    sleep $SRV_DELAY_SECONDS
1126*62c56f98SSadaf Ebrahimi    SRV_DELAY_SECONDS=0
1127*62c56f98SSadaf Ebrahimi}
1128*62c56f98SSadaf Ebrahimi
1129*62c56f98SSadaf Ebrahimi# check if the given command uses dtls and sets global variable DTLS
1130*62c56f98SSadaf Ebrahimidetect_dtls() {
1131*62c56f98SSadaf Ebrahimi    case "$1" in
1132*62c56f98SSadaf Ebrahimi        *dtls=1*|*-dtls*|*-u*) DTLS=1;;
1133*62c56f98SSadaf Ebrahimi        *) DTLS=0;;
1134*62c56f98SSadaf Ebrahimi    esac
1135*62c56f98SSadaf Ebrahimi}
1136*62c56f98SSadaf Ebrahimi
1137*62c56f98SSadaf Ebrahimi# check if the given command uses gnutls and sets global variable CMD_IS_GNUTLS
1138*62c56f98SSadaf Ebrahimiis_gnutls() {
1139*62c56f98SSadaf Ebrahimi    case "$1" in
1140*62c56f98SSadaf Ebrahimi    *gnutls-cli*)
1141*62c56f98SSadaf Ebrahimi        CMD_IS_GNUTLS=1
1142*62c56f98SSadaf Ebrahimi        ;;
1143*62c56f98SSadaf Ebrahimi    *gnutls-serv*)
1144*62c56f98SSadaf Ebrahimi        CMD_IS_GNUTLS=1
1145*62c56f98SSadaf Ebrahimi        ;;
1146*62c56f98SSadaf Ebrahimi    *)
1147*62c56f98SSadaf Ebrahimi        CMD_IS_GNUTLS=0
1148*62c56f98SSadaf Ebrahimi        ;;
1149*62c56f98SSadaf Ebrahimi    esac
1150*62c56f98SSadaf Ebrahimi}
1151*62c56f98SSadaf Ebrahimi
1152*62c56f98SSadaf Ebrahimi# Some external tools (gnutls or openssl) might not have support for static ECDH
1153*62c56f98SSadaf Ebrahimi# and this limit the tests that can be run with them. This function checks server
1154*62c56f98SSadaf Ebrahimi# and client command lines, given as input, to verify if the current test
1155*62c56f98SSadaf Ebrahimi# is using one of these tools.
1156*62c56f98SSadaf Ebrahimiuse_ext_tool_without_ecdh_support() {
1157*62c56f98SSadaf Ebrahimi    case "$1" in
1158*62c56f98SSadaf Ebrahimi        *$GNUTLS_SERV*|\
1159*62c56f98SSadaf Ebrahimi        *${GNUTLS_NEXT_SERV:-"gnutls-serv-dummy"}*|\
1160*62c56f98SSadaf Ebrahimi        *${OPENSSL_NEXT:-"openssl-dummy"}*)
1161*62c56f98SSadaf Ebrahimi                echo "yes"
1162*62c56f98SSadaf Ebrahimi                return;;
1163*62c56f98SSadaf Ebrahimi    esac
1164*62c56f98SSadaf Ebrahimi    case "$2" in
1165*62c56f98SSadaf Ebrahimi        *$GNUTLS_CLI*|\
1166*62c56f98SSadaf Ebrahimi        *${GNUTLS_NEXT_CLI:-"gnutls-cli-dummy"}*|\
1167*62c56f98SSadaf Ebrahimi        *${OPENSSL_NEXT:-"openssl-dummy"}*)
1168*62c56f98SSadaf Ebrahimi                echo "yes"
1169*62c56f98SSadaf Ebrahimi                return;;
1170*62c56f98SSadaf Ebrahimi    esac
1171*62c56f98SSadaf Ebrahimi    echo "no"
1172*62c56f98SSadaf Ebrahimi}
1173*62c56f98SSadaf Ebrahimi
1174*62c56f98SSadaf Ebrahimi# Generate random psk_list argument for ssl_server2
1175*62c56f98SSadaf Ebrahimiget_srv_psk_list ()
1176*62c56f98SSadaf Ebrahimi{
1177*62c56f98SSadaf Ebrahimi    case $(( TESTS % 3 )) in
1178*62c56f98SSadaf Ebrahimi        0) echo "psk_list=abc,dead,def,beef,Client_identity,6162636465666768696a6b6c6d6e6f70";;
1179*62c56f98SSadaf Ebrahimi        1) echo "psk_list=abc,dead,Client_identity,6162636465666768696a6b6c6d6e6f70,def,beef";;
1180*62c56f98SSadaf Ebrahimi        2) echo "psk_list=Client_identity,6162636465666768696a6b6c6d6e6f70,abc,dead,def,beef";;
1181*62c56f98SSadaf Ebrahimi    esac
1182*62c56f98SSadaf Ebrahimi}
1183*62c56f98SSadaf Ebrahimi
1184*62c56f98SSadaf Ebrahimi# Determine what calc_verify trace is to be expected, if any.
1185*62c56f98SSadaf Ebrahimi#
1186*62c56f98SSadaf Ebrahimi# calc_verify is only called for two things: to calculate the
1187*62c56f98SSadaf Ebrahimi# extended master secret, and to process client authentication.
1188*62c56f98SSadaf Ebrahimi#
1189*62c56f98SSadaf Ebrahimi# Warning: the current implementation assumes that extended_ms is not
1190*62c56f98SSadaf Ebrahimi#          disabled on the client or on the server.
1191*62c56f98SSadaf Ebrahimi#
1192*62c56f98SSadaf Ebrahimi# Inputs:
1193*62c56f98SSadaf Ebrahimi# * $1: the value of the server auth_mode parameter.
1194*62c56f98SSadaf Ebrahimi#       'required' if client authentication is expected,
1195*62c56f98SSadaf Ebrahimi#       'none' or absent if not.
1196*62c56f98SSadaf Ebrahimi# * $CONFIGS_ENABLED
1197*62c56f98SSadaf Ebrahimi#
1198*62c56f98SSadaf Ebrahimi# Outputs:
1199*62c56f98SSadaf Ebrahimi# * $maybe_calc_verify: set to a trace expected in the debug logs
1200*62c56f98SSadaf Ebrahimiset_maybe_calc_verify() {
1201*62c56f98SSadaf Ebrahimi    maybe_calc_verify=
1202*62c56f98SSadaf Ebrahimi    case $CONFIGS_ENABLED in
1203*62c56f98SSadaf Ebrahimi        *\ MBEDTLS_SSL_EXTENDED_MASTER_SECRET\ *) :;;
1204*62c56f98SSadaf Ebrahimi        *)
1205*62c56f98SSadaf Ebrahimi            case ${1-} in
1206*62c56f98SSadaf Ebrahimi                ''|none) return;;
1207*62c56f98SSadaf Ebrahimi                required) :;;
1208*62c56f98SSadaf Ebrahimi                *) echo "Bad parameter 1 to set_maybe_calc_verify: $1"; exit 1;;
1209*62c56f98SSadaf Ebrahimi            esac
1210*62c56f98SSadaf Ebrahimi    esac
1211*62c56f98SSadaf Ebrahimi    case $CONFIGS_ENABLED in
1212*62c56f98SSadaf Ebrahimi        *\ MBEDTLS_USE_PSA_CRYPTO\ *) maybe_calc_verify="PSA calc verify";;
1213*62c56f98SSadaf Ebrahimi        *) maybe_calc_verify="<= calc verify";;
1214*62c56f98SSadaf Ebrahimi    esac
1215*62c56f98SSadaf Ebrahimi}
1216*62c56f98SSadaf Ebrahimi
1217*62c56f98SSadaf Ebrahimi# Compare file content
1218*62c56f98SSadaf Ebrahimi# Usage: find_in_both pattern file1 file2
1219*62c56f98SSadaf Ebrahimi# extract from file1 the first line matching the pattern
1220*62c56f98SSadaf Ebrahimi# check in file2 that the same line can be found
1221*62c56f98SSadaf Ebrahimifind_in_both() {
1222*62c56f98SSadaf Ebrahimi        srv_pattern=$(grep -m 1 "$1" "$2");
1223*62c56f98SSadaf Ebrahimi        if [ -z "$srv_pattern" ]; then
1224*62c56f98SSadaf Ebrahimi                return 1;
1225*62c56f98SSadaf Ebrahimi        fi
1226*62c56f98SSadaf Ebrahimi
1227*62c56f98SSadaf Ebrahimi        if grep "$srv_pattern" $3 >/dev/null; then :
1228*62c56f98SSadaf Ebrahimi                return 0;
1229*62c56f98SSadaf Ebrahimi        else
1230*62c56f98SSadaf Ebrahimi                return 1;
1231*62c56f98SSadaf Ebrahimi        fi
1232*62c56f98SSadaf Ebrahimi}
1233*62c56f98SSadaf Ebrahimi
1234*62c56f98SSadaf EbrahimiSKIP_HANDSHAKE_CHECK="NO"
1235*62c56f98SSadaf Ebrahimiskip_handshake_stage_check() {
1236*62c56f98SSadaf Ebrahimi    SKIP_HANDSHAKE_CHECK="YES"
1237*62c56f98SSadaf Ebrahimi}
1238*62c56f98SSadaf Ebrahimi
1239*62c56f98SSadaf Ebrahimi# Analyze the commands that will be used in a test.
1240*62c56f98SSadaf Ebrahimi#
1241*62c56f98SSadaf Ebrahimi# Analyze and possibly instrument $PXY_CMD, $CLI_CMD, $SRV_CMD to pass
1242*62c56f98SSadaf Ebrahimi# extra arguments or go through wrappers.
1243*62c56f98SSadaf Ebrahimi#
1244*62c56f98SSadaf Ebrahimi# Inputs:
1245*62c56f98SSadaf Ebrahimi# * $@: supplemental options to run_test() (after the mandatory arguments).
1246*62c56f98SSadaf Ebrahimi# * $CLI_CMD, $PXY_CMD, $SRV_CMD: the client, proxy and server commands.
1247*62c56f98SSadaf Ebrahimi# * $DTLS: 1 if DTLS, otherwise 0.
1248*62c56f98SSadaf Ebrahimi#
1249*62c56f98SSadaf Ebrahimi# Outputs:
1250*62c56f98SSadaf Ebrahimi# * $CLI_CMD, $PXY_CMD, $SRV_CMD: may be tweaked.
1251*62c56f98SSadaf Ebrahimianalyze_test_commands() {
1252*62c56f98SSadaf Ebrahimi    # if the test uses DTLS but no custom proxy, add a simple proxy
1253*62c56f98SSadaf Ebrahimi    # as it provides timing info that's useful to debug failures
1254*62c56f98SSadaf Ebrahimi    if [ -z "$PXY_CMD" ] && [ "$DTLS" -eq 1 ]; then
1255*62c56f98SSadaf Ebrahimi        PXY_CMD="$P_PXY"
1256*62c56f98SSadaf Ebrahimi        case " $SRV_CMD " in
1257*62c56f98SSadaf Ebrahimi            *' server_addr=::1 '*)
1258*62c56f98SSadaf Ebrahimi                PXY_CMD="$PXY_CMD server_addr=::1 listen_addr=::1";;
1259*62c56f98SSadaf Ebrahimi        esac
1260*62c56f98SSadaf Ebrahimi    fi
1261*62c56f98SSadaf Ebrahimi
1262*62c56f98SSadaf Ebrahimi    # update CMD_IS_GNUTLS variable
1263*62c56f98SSadaf Ebrahimi    is_gnutls "$SRV_CMD"
1264*62c56f98SSadaf Ebrahimi
1265*62c56f98SSadaf Ebrahimi    # if the server uses gnutls but doesn't set priority, explicitly
1266*62c56f98SSadaf Ebrahimi    # set the default priority
1267*62c56f98SSadaf Ebrahimi    if [ "$CMD_IS_GNUTLS" -eq 1 ]; then
1268*62c56f98SSadaf Ebrahimi        case "$SRV_CMD" in
1269*62c56f98SSadaf Ebrahimi              *--priority*) :;;
1270*62c56f98SSadaf Ebrahimi              *) SRV_CMD="$SRV_CMD --priority=NORMAL";;
1271*62c56f98SSadaf Ebrahimi        esac
1272*62c56f98SSadaf Ebrahimi    fi
1273*62c56f98SSadaf Ebrahimi
1274*62c56f98SSadaf Ebrahimi    # update CMD_IS_GNUTLS variable
1275*62c56f98SSadaf Ebrahimi    is_gnutls "$CLI_CMD"
1276*62c56f98SSadaf Ebrahimi
1277*62c56f98SSadaf Ebrahimi    # if the client uses gnutls but doesn't set priority, explicitly
1278*62c56f98SSadaf Ebrahimi    # set the default priority
1279*62c56f98SSadaf Ebrahimi    if [ "$CMD_IS_GNUTLS" -eq 1 ]; then
1280*62c56f98SSadaf Ebrahimi        case "$CLI_CMD" in
1281*62c56f98SSadaf Ebrahimi              *--priority*) :;;
1282*62c56f98SSadaf Ebrahimi              *) CLI_CMD="$CLI_CMD --priority=NORMAL";;
1283*62c56f98SSadaf Ebrahimi        esac
1284*62c56f98SSadaf Ebrahimi    fi
1285*62c56f98SSadaf Ebrahimi
1286*62c56f98SSadaf Ebrahimi    # fix client port
1287*62c56f98SSadaf Ebrahimi    if [ -n "$PXY_CMD" ]; then
1288*62c56f98SSadaf Ebrahimi        CLI_CMD=$( echo "$CLI_CMD" | sed s/+SRV_PORT/$PXY_PORT/g )
1289*62c56f98SSadaf Ebrahimi    else
1290*62c56f98SSadaf Ebrahimi        CLI_CMD=$( echo "$CLI_CMD" | sed s/+SRV_PORT/$SRV_PORT/g )
1291*62c56f98SSadaf Ebrahimi    fi
1292*62c56f98SSadaf Ebrahimi
1293*62c56f98SSadaf Ebrahimi    # prepend valgrind to our commands if active
1294*62c56f98SSadaf Ebrahimi    if [ "$MEMCHECK" -gt 0 ]; then
1295*62c56f98SSadaf Ebrahimi        if is_polar "$SRV_CMD"; then
1296*62c56f98SSadaf Ebrahimi            SRV_CMD="valgrind --leak-check=full $SRV_CMD"
1297*62c56f98SSadaf Ebrahimi        fi
1298*62c56f98SSadaf Ebrahimi        if is_polar "$CLI_CMD"; then
1299*62c56f98SSadaf Ebrahimi            CLI_CMD="valgrind --leak-check=full $CLI_CMD"
1300*62c56f98SSadaf Ebrahimi        fi
1301*62c56f98SSadaf Ebrahimi    fi
1302*62c56f98SSadaf Ebrahimi}
1303*62c56f98SSadaf Ebrahimi
1304*62c56f98SSadaf Ebrahimi# Check for failure conditions after a test case.
1305*62c56f98SSadaf Ebrahimi#
1306*62c56f98SSadaf Ebrahimi# Inputs from run_test:
1307*62c56f98SSadaf Ebrahimi# * positional parameters: test options (see run_test documentation)
1308*62c56f98SSadaf Ebrahimi# * $CLI_EXIT: client return code
1309*62c56f98SSadaf Ebrahimi# * $CLI_EXPECT: expected client return code
1310*62c56f98SSadaf Ebrahimi# * $SRV_RET: server return code
1311*62c56f98SSadaf Ebrahimi# * $CLI_OUT, $SRV_OUT, $PXY_OUT: files containing client/server/proxy logs
1312*62c56f98SSadaf Ebrahimi# * $TIMES_LEFT: if nonzero, a RETRY outcome is allowed
1313*62c56f98SSadaf Ebrahimi#
1314*62c56f98SSadaf Ebrahimi# Outputs:
1315*62c56f98SSadaf Ebrahimi# * $outcome: one of PASS/RETRY*/FAIL
1316*62c56f98SSadaf Ebrahimicheck_test_failure() {
1317*62c56f98SSadaf Ebrahimi    outcome=FAIL
1318*62c56f98SSadaf Ebrahimi
1319*62c56f98SSadaf Ebrahimi    if [ $TIMES_LEFT -gt 0 ] &&
1320*62c56f98SSadaf Ebrahimi       grep '===CLIENT_TIMEOUT===' $CLI_OUT >/dev/null
1321*62c56f98SSadaf Ebrahimi    then
1322*62c56f98SSadaf Ebrahimi        outcome="RETRY(client-timeout)"
1323*62c56f98SSadaf Ebrahimi        return
1324*62c56f98SSadaf Ebrahimi    fi
1325*62c56f98SSadaf Ebrahimi
1326*62c56f98SSadaf Ebrahimi    # check if the client and server went at least to the handshake stage
1327*62c56f98SSadaf Ebrahimi    # (useful to avoid tests with only negative assertions and non-zero
1328*62c56f98SSadaf Ebrahimi    # expected client exit to incorrectly succeed in case of catastrophic
1329*62c56f98SSadaf Ebrahimi    # failure)
1330*62c56f98SSadaf Ebrahimi    if [ "X$SKIP_HANDSHAKE_CHECK" != "XYES" ]
1331*62c56f98SSadaf Ebrahimi    then
1332*62c56f98SSadaf Ebrahimi        if is_polar "$SRV_CMD"; then
1333*62c56f98SSadaf Ebrahimi            if grep "Performing the SSL/TLS handshake" $SRV_OUT >/dev/null; then :;
1334*62c56f98SSadaf Ebrahimi            else
1335*62c56f98SSadaf Ebrahimi                fail "server or client failed to reach handshake stage"
1336*62c56f98SSadaf Ebrahimi                return
1337*62c56f98SSadaf Ebrahimi            fi
1338*62c56f98SSadaf Ebrahimi        fi
1339*62c56f98SSadaf Ebrahimi        if is_polar "$CLI_CMD"; then
1340*62c56f98SSadaf Ebrahimi            if grep "Performing the SSL/TLS handshake" $CLI_OUT >/dev/null; then :;
1341*62c56f98SSadaf Ebrahimi            else
1342*62c56f98SSadaf Ebrahimi                fail "server or client failed to reach handshake stage"
1343*62c56f98SSadaf Ebrahimi                return
1344*62c56f98SSadaf Ebrahimi            fi
1345*62c56f98SSadaf Ebrahimi        fi
1346*62c56f98SSadaf Ebrahimi    fi
1347*62c56f98SSadaf Ebrahimi
1348*62c56f98SSadaf Ebrahimi    SKIP_HANDSHAKE_CHECK="NO"
1349*62c56f98SSadaf Ebrahimi    # Check server exit code (only for Mbed TLS: GnuTLS and OpenSSL don't
1350*62c56f98SSadaf Ebrahimi    # exit with status 0 when interrupted by a signal, and we don't really
1351*62c56f98SSadaf Ebrahimi    # care anyway), in case e.g. the server reports a memory leak.
1352*62c56f98SSadaf Ebrahimi    if [ $SRV_RET != 0 ] && is_polar "$SRV_CMD"; then
1353*62c56f98SSadaf Ebrahimi        fail "Server exited with status $SRV_RET"
1354*62c56f98SSadaf Ebrahimi        return
1355*62c56f98SSadaf Ebrahimi    fi
1356*62c56f98SSadaf Ebrahimi
1357*62c56f98SSadaf Ebrahimi    # check client exit code
1358*62c56f98SSadaf Ebrahimi    if [ \( "$CLI_EXPECT" = 0 -a "$CLI_EXIT" != 0 \) -o \
1359*62c56f98SSadaf Ebrahimi         \( "$CLI_EXPECT" != 0 -a "$CLI_EXIT" = 0 \) ]
1360*62c56f98SSadaf Ebrahimi    then
1361*62c56f98SSadaf Ebrahimi        fail "bad client exit code (expected $CLI_EXPECT, got $CLI_EXIT)"
1362*62c56f98SSadaf Ebrahimi        return
1363*62c56f98SSadaf Ebrahimi    fi
1364*62c56f98SSadaf Ebrahimi
1365*62c56f98SSadaf Ebrahimi    # check other assertions
1366*62c56f98SSadaf Ebrahimi    # lines beginning with == are added by valgrind, ignore them
1367*62c56f98SSadaf Ebrahimi    # lines with 'Serious error when reading debug info', are valgrind issues as well
1368*62c56f98SSadaf Ebrahimi    while [ $# -gt 0 ]
1369*62c56f98SSadaf Ebrahimi    do
1370*62c56f98SSadaf Ebrahimi        case $1 in
1371*62c56f98SSadaf Ebrahimi            "-s")
1372*62c56f98SSadaf Ebrahimi                if grep -v '^==' $SRV_OUT | grep -v 'Serious error when reading debug info' | grep "$2" >/dev/null; then :; else
1373*62c56f98SSadaf Ebrahimi                    fail "pattern '$2' MUST be present in the Server output"
1374*62c56f98SSadaf Ebrahimi                    return
1375*62c56f98SSadaf Ebrahimi                fi
1376*62c56f98SSadaf Ebrahimi                ;;
1377*62c56f98SSadaf Ebrahimi
1378*62c56f98SSadaf Ebrahimi            "-c")
1379*62c56f98SSadaf Ebrahimi                if grep -v '^==' $CLI_OUT | grep -v 'Serious error when reading debug info' | grep "$2" >/dev/null; then :; else
1380*62c56f98SSadaf Ebrahimi                    fail "pattern '$2' MUST be present in the Client output"
1381*62c56f98SSadaf Ebrahimi                    return
1382*62c56f98SSadaf Ebrahimi                fi
1383*62c56f98SSadaf Ebrahimi                ;;
1384*62c56f98SSadaf Ebrahimi
1385*62c56f98SSadaf Ebrahimi            "-S")
1386*62c56f98SSadaf Ebrahimi                if grep -v '^==' $SRV_OUT | grep -v 'Serious error when reading debug info' | grep "$2" >/dev/null; then
1387*62c56f98SSadaf Ebrahimi                    if log_pattern_presence_is_conclusive "$2"; then
1388*62c56f98SSadaf Ebrahimi                        fail "pattern '$2' MUST NOT be present in the Server output"
1389*62c56f98SSadaf Ebrahimi                    fi
1390*62c56f98SSadaf Ebrahimi                    return
1391*62c56f98SSadaf Ebrahimi                fi
1392*62c56f98SSadaf Ebrahimi                ;;
1393*62c56f98SSadaf Ebrahimi
1394*62c56f98SSadaf Ebrahimi            "-C")
1395*62c56f98SSadaf Ebrahimi                if grep -v '^==' $CLI_OUT | grep -v 'Serious error when reading debug info' | grep "$2" >/dev/null; then
1396*62c56f98SSadaf Ebrahimi                    if log_pattern_presence_is_conclusive "$2"; then
1397*62c56f98SSadaf Ebrahimi                        fail "pattern '$2' MUST NOT be present in the Client output"
1398*62c56f98SSadaf Ebrahimi                    fi
1399*62c56f98SSadaf Ebrahimi                    return
1400*62c56f98SSadaf Ebrahimi                fi
1401*62c56f98SSadaf Ebrahimi                ;;
1402*62c56f98SSadaf Ebrahimi
1403*62c56f98SSadaf Ebrahimi                # The filtering in the following two options (-u and -U) do the following
1404*62c56f98SSadaf Ebrahimi                #   - ignore valgrind output
1405*62c56f98SSadaf Ebrahimi                #   - filter out everything but lines right after the pattern occurrences
1406*62c56f98SSadaf Ebrahimi                #   - keep one of each non-unique line
1407*62c56f98SSadaf Ebrahimi                #   - count how many lines remain
1408*62c56f98SSadaf Ebrahimi                # A line with '--' will remain in the result from previous outputs, so the number of lines in the result will be 1
1409*62c56f98SSadaf Ebrahimi                # if there were no duplicates.
1410*62c56f98SSadaf Ebrahimi            "-U")
1411*62c56f98SSadaf Ebrahimi                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
1412*62c56f98SSadaf Ebrahimi                    fail "lines following pattern '$2' must be unique in Server output"
1413*62c56f98SSadaf Ebrahimi                    return
1414*62c56f98SSadaf Ebrahimi                fi
1415*62c56f98SSadaf Ebrahimi                ;;
1416*62c56f98SSadaf Ebrahimi
1417*62c56f98SSadaf Ebrahimi            "-u")
1418*62c56f98SSadaf Ebrahimi                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
1419*62c56f98SSadaf Ebrahimi                    fail "lines following pattern '$2' must be unique in Client output"
1420*62c56f98SSadaf Ebrahimi                    return
1421*62c56f98SSadaf Ebrahimi                fi
1422*62c56f98SSadaf Ebrahimi                ;;
1423*62c56f98SSadaf Ebrahimi            "-F")
1424*62c56f98SSadaf Ebrahimi                if ! $2 "$SRV_OUT"; then
1425*62c56f98SSadaf Ebrahimi                    fail "function call to '$2' failed on Server output"
1426*62c56f98SSadaf Ebrahimi                    return
1427*62c56f98SSadaf Ebrahimi                fi
1428*62c56f98SSadaf Ebrahimi                ;;
1429*62c56f98SSadaf Ebrahimi            "-f")
1430*62c56f98SSadaf Ebrahimi                if ! $2 "$CLI_OUT"; then
1431*62c56f98SSadaf Ebrahimi                    fail "function call to '$2' failed on Client output"
1432*62c56f98SSadaf Ebrahimi                    return
1433*62c56f98SSadaf Ebrahimi                fi
1434*62c56f98SSadaf Ebrahimi                ;;
1435*62c56f98SSadaf Ebrahimi            "-g")
1436*62c56f98SSadaf Ebrahimi                if ! eval "$2 '$SRV_OUT' '$CLI_OUT'"; then
1437*62c56f98SSadaf Ebrahimi                    fail "function call to '$2' failed on Server and Client output"
1438*62c56f98SSadaf Ebrahimi                    return
1439*62c56f98SSadaf Ebrahimi                fi
1440*62c56f98SSadaf Ebrahimi                ;;
1441*62c56f98SSadaf Ebrahimi
1442*62c56f98SSadaf Ebrahimi            *)
1443*62c56f98SSadaf Ebrahimi                echo "Unknown test: $1" >&2
1444*62c56f98SSadaf Ebrahimi                exit 1
1445*62c56f98SSadaf Ebrahimi        esac
1446*62c56f98SSadaf Ebrahimi        shift 2
1447*62c56f98SSadaf Ebrahimi    done
1448*62c56f98SSadaf Ebrahimi
1449*62c56f98SSadaf Ebrahimi    # check valgrind's results
1450*62c56f98SSadaf Ebrahimi    if [ "$MEMCHECK" -gt 0 ]; then
1451*62c56f98SSadaf Ebrahimi        if is_polar "$SRV_CMD" && has_mem_err $SRV_OUT; then
1452*62c56f98SSadaf Ebrahimi            fail "Server has memory errors"
1453*62c56f98SSadaf Ebrahimi            return
1454*62c56f98SSadaf Ebrahimi        fi
1455*62c56f98SSadaf Ebrahimi        if is_polar "$CLI_CMD" && has_mem_err $CLI_OUT; then
1456*62c56f98SSadaf Ebrahimi            fail "Client has memory errors"
1457*62c56f98SSadaf Ebrahimi            return
1458*62c56f98SSadaf Ebrahimi        fi
1459*62c56f98SSadaf Ebrahimi    fi
1460*62c56f98SSadaf Ebrahimi
1461*62c56f98SSadaf Ebrahimi    # if we're here, everything is ok
1462*62c56f98SSadaf Ebrahimi    outcome=PASS
1463*62c56f98SSadaf Ebrahimi}
1464*62c56f98SSadaf Ebrahimi
1465*62c56f98SSadaf Ebrahimi# Run the current test case: start the server and if applicable the proxy, run
1466*62c56f98SSadaf Ebrahimi# the client, wait for all processes to finish or time out.
1467*62c56f98SSadaf Ebrahimi#
1468*62c56f98SSadaf Ebrahimi# Inputs:
1469*62c56f98SSadaf Ebrahimi# * $NAME: test case name
1470*62c56f98SSadaf Ebrahimi# * $CLI_CMD, $SRV_CMD, $PXY_CMD: commands to run
1471*62c56f98SSadaf Ebrahimi# * $CLI_OUT, $SRV_OUT, $PXY_OUT: files to contain client/server/proxy logs
1472*62c56f98SSadaf Ebrahimi#
1473*62c56f98SSadaf Ebrahimi# Outputs:
1474*62c56f98SSadaf Ebrahimi# * $CLI_EXIT: client return code
1475*62c56f98SSadaf Ebrahimi# * $SRV_RET: server return code
1476*62c56f98SSadaf Ebrahimido_run_test_once() {
1477*62c56f98SSadaf Ebrahimi    # run the commands
1478*62c56f98SSadaf Ebrahimi    if [ -n "$PXY_CMD" ]; then
1479*62c56f98SSadaf Ebrahimi        printf "# %s\n%s\n" "$NAME" "$PXY_CMD" > $PXY_OUT
1480*62c56f98SSadaf Ebrahimi        $PXY_CMD >> $PXY_OUT 2>&1 &
1481*62c56f98SSadaf Ebrahimi        PXY_PID=$!
1482*62c56f98SSadaf Ebrahimi        wait_proxy_start "$PXY_PORT" "$PXY_PID"
1483*62c56f98SSadaf Ebrahimi    fi
1484*62c56f98SSadaf Ebrahimi
1485*62c56f98SSadaf Ebrahimi    check_osrv_dtls
1486*62c56f98SSadaf Ebrahimi    printf '# %s\n%s\n' "$NAME" "$SRV_CMD" > $SRV_OUT
1487*62c56f98SSadaf Ebrahimi    provide_input | $SRV_CMD >> $SRV_OUT 2>&1 &
1488*62c56f98SSadaf Ebrahimi    SRV_PID=$!
1489*62c56f98SSadaf Ebrahimi    wait_server_start "$SRV_PORT" "$SRV_PID"
1490*62c56f98SSadaf Ebrahimi
1491*62c56f98SSadaf Ebrahimi    printf '# %s\n%s\n' "$NAME" "$CLI_CMD" > $CLI_OUT
1492*62c56f98SSadaf Ebrahimi    # The client must be a subprocess of the script in order for killing it to
1493*62c56f98SSadaf Ebrahimi    # work properly, that's why the ampersand is placed inside the eval command,
1494*62c56f98SSadaf Ebrahimi    # not at the end of the line: the latter approach will spawn eval as a
1495*62c56f98SSadaf Ebrahimi    # subprocess, and the $CLI_CMD as a grandchild.
1496*62c56f98SSadaf Ebrahimi    eval "$CLI_CMD &" >> $CLI_OUT 2>&1
1497*62c56f98SSadaf Ebrahimi    wait_client_done
1498*62c56f98SSadaf Ebrahimi
1499*62c56f98SSadaf Ebrahimi    sleep 0.05
1500*62c56f98SSadaf Ebrahimi
1501*62c56f98SSadaf Ebrahimi    # terminate the server (and the proxy)
1502*62c56f98SSadaf Ebrahimi    kill $SRV_PID
1503*62c56f98SSadaf Ebrahimi    # For Ubuntu 22.04, `Terminated` message is outputed by wait command.
1504*62c56f98SSadaf Ebrahimi    # To remove it from stdout, redirect stdout/stderr to SRV_OUT
1505*62c56f98SSadaf Ebrahimi    wait $SRV_PID >> $SRV_OUT 2>&1
1506*62c56f98SSadaf Ebrahimi    SRV_RET=$?
1507*62c56f98SSadaf Ebrahimi
1508*62c56f98SSadaf Ebrahimi    if [ -n "$PXY_CMD" ]; then
1509*62c56f98SSadaf Ebrahimi        kill $PXY_PID >/dev/null 2>&1
1510*62c56f98SSadaf Ebrahimi        wait $PXY_PID >> $PXY_OUT 2>&1
1511*62c56f98SSadaf Ebrahimi    fi
1512*62c56f98SSadaf Ebrahimi}
1513*62c56f98SSadaf Ebrahimi
1514*62c56f98SSadaf Ebrahimi# Detect if the current test is going to use TLS 1.3 or TLS 1.2.
1515*62c56f98SSadaf Ebrahimi# $1 and $2 contain the server and client command lines, respectively.
1516*62c56f98SSadaf Ebrahimi#
1517*62c56f98SSadaf Ebrahimi# Note: this function only provides some guess about TLS version by simply
1518*62c56f98SSadaf Ebrahimi#       looking at the server/client command lines. Even thought this works
1519*62c56f98SSadaf Ebrahimi#       for the sake of tests' filtering (especially in conjunction with the
1520*62c56f98SSadaf Ebrahimi#       detect_required_features() function), it does NOT guarantee that the
1521*62c56f98SSadaf Ebrahimi#       result is accurate. It does not check other conditions, such as:
1522*62c56f98SSadaf Ebrahimi#       - we can force a ciphersuite which contains "WITH" in its name, meaning
1523*62c56f98SSadaf Ebrahimi#         that we are going to use TLS 1.2
1524*62c56f98SSadaf Ebrahimi#       - etc etc
1525*62c56f98SSadaf Ebrahimiget_tls_version() {
1526*62c56f98SSadaf Ebrahimi    # First check if the version is forced on an Mbed TLS peer
1527*62c56f98SSadaf Ebrahimi    case $1 in
1528*62c56f98SSadaf Ebrahimi        *tls12*)
1529*62c56f98SSadaf Ebrahimi            echo "TLS12"
1530*62c56f98SSadaf Ebrahimi            return;;
1531*62c56f98SSadaf Ebrahimi        *tls13*)
1532*62c56f98SSadaf Ebrahimi            echo "TLS13"
1533*62c56f98SSadaf Ebrahimi            return;;
1534*62c56f98SSadaf Ebrahimi    esac
1535*62c56f98SSadaf Ebrahimi    case $2 in
1536*62c56f98SSadaf Ebrahimi        *tls12*)
1537*62c56f98SSadaf Ebrahimi            echo "TLS12"
1538*62c56f98SSadaf Ebrahimi            return;;
1539*62c56f98SSadaf Ebrahimi        *tls13*)
1540*62c56f98SSadaf Ebrahimi            echo "TLS13"
1541*62c56f98SSadaf Ebrahimi            return;;
1542*62c56f98SSadaf Ebrahimi    esac
1543*62c56f98SSadaf Ebrahimi    # Second check if the version is forced on an OpenSSL or GnuTLS peer
1544*62c56f98SSadaf Ebrahimi    case $1 in
1545*62c56f98SSadaf Ebrahimi        tls1_2*)
1546*62c56f98SSadaf Ebrahimi            echo "TLS12"
1547*62c56f98SSadaf Ebrahimi            return;;
1548*62c56f98SSadaf Ebrahimi        *tls1_3)
1549*62c56f98SSadaf Ebrahimi            echo "TLS13"
1550*62c56f98SSadaf Ebrahimi            return;;
1551*62c56f98SSadaf Ebrahimi    esac
1552*62c56f98SSadaf Ebrahimi    case $2 in
1553*62c56f98SSadaf Ebrahimi        *tls1_2)
1554*62c56f98SSadaf Ebrahimi            echo "TLS12"
1555*62c56f98SSadaf Ebrahimi            return;;
1556*62c56f98SSadaf Ebrahimi        *tls1_3)
1557*62c56f98SSadaf Ebrahimi            echo "TLS13"
1558*62c56f98SSadaf Ebrahimi            return;;
1559*62c56f98SSadaf Ebrahimi    esac
1560*62c56f98SSadaf Ebrahimi    # Third if the version is not forced, if TLS 1.3 is enabled then the test
1561*62c56f98SSadaf Ebrahimi    # is aimed to run a TLS 1.3 handshake.
1562*62c56f98SSadaf Ebrahimi    if $P_QUERY -all MBEDTLS_SSL_PROTO_TLS1_3
1563*62c56f98SSadaf Ebrahimi    then
1564*62c56f98SSadaf Ebrahimi        echo "TLS13"
1565*62c56f98SSadaf Ebrahimi    else
1566*62c56f98SSadaf Ebrahimi        echo "TLS12"
1567*62c56f98SSadaf Ebrahimi    fi
1568*62c56f98SSadaf Ebrahimi}
1569*62c56f98SSadaf Ebrahimi
1570*62c56f98SSadaf Ebrahimi# Usage: run_test name [-p proxy_cmd] srv_cmd cli_cmd cli_exit [option [...]]
1571*62c56f98SSadaf Ebrahimi# Options:  -s pattern  pattern that must be present in server output
1572*62c56f98SSadaf Ebrahimi#           -c pattern  pattern that must be present in client output
1573*62c56f98SSadaf Ebrahimi#           -u pattern  lines after pattern must be unique in client output
1574*62c56f98SSadaf Ebrahimi#           -f call shell function on client output
1575*62c56f98SSadaf Ebrahimi#           -S pattern  pattern that must be absent in server output
1576*62c56f98SSadaf Ebrahimi#           -C pattern  pattern that must be absent in client output
1577*62c56f98SSadaf Ebrahimi#           -U pattern  lines after pattern must be unique in server output
1578*62c56f98SSadaf Ebrahimi#           -F call shell function on server output
1579*62c56f98SSadaf Ebrahimi#           -g call shell function on server and client output
1580*62c56f98SSadaf Ebrahimirun_test() {
1581*62c56f98SSadaf Ebrahimi    NAME="$1"
1582*62c56f98SSadaf Ebrahimi    shift 1
1583*62c56f98SSadaf Ebrahimi
1584*62c56f98SSadaf Ebrahimi    if is_excluded "$NAME"; then
1585*62c56f98SSadaf Ebrahimi        SKIP_NEXT="NO"
1586*62c56f98SSadaf Ebrahimi        # There was no request to run the test, so don't record its outcome.
1587*62c56f98SSadaf Ebrahimi        return
1588*62c56f98SSadaf Ebrahimi    fi
1589*62c56f98SSadaf Ebrahimi
1590*62c56f98SSadaf Ebrahimi    print_name "$NAME"
1591*62c56f98SSadaf Ebrahimi
1592*62c56f98SSadaf Ebrahimi    # Do we only run numbered tests?
1593*62c56f98SSadaf Ebrahimi    if [ -n "$RUN_TEST_NUMBER" ]; then
1594*62c56f98SSadaf Ebrahimi        case ",$RUN_TEST_NUMBER," in
1595*62c56f98SSadaf Ebrahimi            *",$TESTS,"*) :;;
1596*62c56f98SSadaf Ebrahimi            *) SKIP_NEXT="YES";;
1597*62c56f98SSadaf Ebrahimi        esac
1598*62c56f98SSadaf Ebrahimi    fi
1599*62c56f98SSadaf Ebrahimi
1600*62c56f98SSadaf Ebrahimi    # does this test use a proxy?
1601*62c56f98SSadaf Ebrahimi    if [ "X$1" = "X-p" ]; then
1602*62c56f98SSadaf Ebrahimi        PXY_CMD="$2"
1603*62c56f98SSadaf Ebrahimi        shift 2
1604*62c56f98SSadaf Ebrahimi    else
1605*62c56f98SSadaf Ebrahimi        PXY_CMD=""
1606*62c56f98SSadaf Ebrahimi    fi
1607*62c56f98SSadaf Ebrahimi
1608*62c56f98SSadaf Ebrahimi    # get commands and client output
1609*62c56f98SSadaf Ebrahimi    SRV_CMD="$1"
1610*62c56f98SSadaf Ebrahimi    CLI_CMD="$2"
1611*62c56f98SSadaf Ebrahimi    CLI_EXPECT="$3"
1612*62c56f98SSadaf Ebrahimi    shift 3
1613*62c56f98SSadaf Ebrahimi
1614*62c56f98SSadaf Ebrahimi    # Check if test uses files
1615*62c56f98SSadaf Ebrahimi    case "$SRV_CMD $CLI_CMD" in
1616*62c56f98SSadaf Ebrahimi        *data_files/*)
1617*62c56f98SSadaf Ebrahimi            requires_config_enabled MBEDTLS_FS_IO;;
1618*62c56f98SSadaf Ebrahimi    esac
1619*62c56f98SSadaf Ebrahimi
1620*62c56f98SSadaf Ebrahimi    # Check if the test uses DTLS.
1621*62c56f98SSadaf Ebrahimi    detect_dtls "$SRV_CMD"
1622*62c56f98SSadaf Ebrahimi    if [ "$DTLS" -eq 1 ]; then
1623*62c56f98SSadaf Ebrahimi        requires_config_enabled MBEDTLS_SSL_PROTO_DTLS
1624*62c56f98SSadaf Ebrahimi    fi
1625*62c56f98SSadaf Ebrahimi
1626*62c56f98SSadaf Ebrahimi    # Check if we are trying to use an external tool wich does not support ECDH
1627*62c56f98SSadaf Ebrahimi    EXT_WO_ECDH=$(use_ext_tool_without_ecdh_support "$SRV_CMD" "$CLI_CMD")
1628*62c56f98SSadaf Ebrahimi
1629*62c56f98SSadaf Ebrahimi    # Guess the TLS version which is going to be used
1630*62c56f98SSadaf Ebrahimi    if [ "$EXT_WO_ECDH" = "no" ]; then
1631*62c56f98SSadaf Ebrahimi        TLS_VERSION=$(get_tls_version "$SRV_CMD" "$CLI_CMD")
1632*62c56f98SSadaf Ebrahimi    else
1633*62c56f98SSadaf Ebrahimi        TLS_VERSION="TLS12"
1634*62c56f98SSadaf Ebrahimi    fi
1635*62c56f98SSadaf Ebrahimi
1636*62c56f98SSadaf Ebrahimi    # If the client or server requires certain features that can be detected
1637*62c56f98SSadaf Ebrahimi    # from their command-line arguments, check whether they're enabled.
1638*62c56f98SSadaf Ebrahimi    detect_required_features "$SRV_CMD" "server" "$TLS_VERSION" "$EXT_WO_ECDH" "$@"
1639*62c56f98SSadaf Ebrahimi    detect_required_features "$CLI_CMD" "client" "$TLS_VERSION" "$EXT_WO_ECDH" "$@"
1640*62c56f98SSadaf Ebrahimi
1641*62c56f98SSadaf Ebrahimi    # If we're in a PSK-only build and the test can be adapted to PSK, do that.
1642*62c56f98SSadaf Ebrahimi    maybe_adapt_for_psk "$@"
1643*62c56f98SSadaf Ebrahimi
1644*62c56f98SSadaf Ebrahimi    # should we skip?
1645*62c56f98SSadaf Ebrahimi    if [ "X$SKIP_NEXT" = "XYES" ]; then
1646*62c56f98SSadaf Ebrahimi        SKIP_NEXT="NO"
1647*62c56f98SSadaf Ebrahimi        record_outcome "SKIP"
1648*62c56f98SSadaf Ebrahimi        SKIPS=$(( $SKIPS + 1 ))
1649*62c56f98SSadaf Ebrahimi        return
1650*62c56f98SSadaf Ebrahimi    fi
1651*62c56f98SSadaf Ebrahimi
1652*62c56f98SSadaf Ebrahimi    analyze_test_commands "$@"
1653*62c56f98SSadaf Ebrahimi
1654*62c56f98SSadaf Ebrahimi    # One regular run and two retries
1655*62c56f98SSadaf Ebrahimi    TIMES_LEFT=3
1656*62c56f98SSadaf Ebrahimi    while [ $TIMES_LEFT -gt 0 ]; do
1657*62c56f98SSadaf Ebrahimi        TIMES_LEFT=$(( $TIMES_LEFT - 1 ))
1658*62c56f98SSadaf Ebrahimi
1659*62c56f98SSadaf Ebrahimi        do_run_test_once
1660*62c56f98SSadaf Ebrahimi
1661*62c56f98SSadaf Ebrahimi        check_test_failure "$@"
1662*62c56f98SSadaf Ebrahimi        case $outcome in
1663*62c56f98SSadaf Ebrahimi            PASS) break;;
1664*62c56f98SSadaf Ebrahimi            RETRY*) printf "$outcome ";;
1665*62c56f98SSadaf Ebrahimi            FAIL) return;;
1666*62c56f98SSadaf Ebrahimi        esac
1667*62c56f98SSadaf Ebrahimi    done
1668*62c56f98SSadaf Ebrahimi
1669*62c56f98SSadaf Ebrahimi    # If we get this far, the test case passed.
1670*62c56f98SSadaf Ebrahimi    record_outcome "PASS"
1671*62c56f98SSadaf Ebrahimi    if [ "$PRESERVE_LOGS" -gt 0 ]; then
1672*62c56f98SSadaf Ebrahimi        mv $SRV_OUT o-srv-${TESTS}.log
1673*62c56f98SSadaf Ebrahimi        mv $CLI_OUT o-cli-${TESTS}.log
1674*62c56f98SSadaf Ebrahimi        if [ -n "$PXY_CMD" ]; then
1675*62c56f98SSadaf Ebrahimi            mv $PXY_OUT o-pxy-${TESTS}.log
1676*62c56f98SSadaf Ebrahimi        fi
1677*62c56f98SSadaf Ebrahimi    fi
1678*62c56f98SSadaf Ebrahimi
1679*62c56f98SSadaf Ebrahimi    rm -f $SRV_OUT $CLI_OUT $PXY_OUT
1680*62c56f98SSadaf Ebrahimi}
1681*62c56f98SSadaf Ebrahimi
1682*62c56f98SSadaf Ebrahimirun_test_psa() {
1683*62c56f98SSadaf Ebrahimi    requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
1684*62c56f98SSadaf Ebrahimi    set_maybe_calc_verify none
1685*62c56f98SSadaf Ebrahimi    run_test    "PSA-supported ciphersuite: $1" \
1686*62c56f98SSadaf Ebrahimi                "$P_SRV debug_level=3 force_version=tls12" \
1687*62c56f98SSadaf Ebrahimi                "$P_CLI debug_level=3 force_ciphersuite=$1" \
1688*62c56f98SSadaf Ebrahimi                0 \
1689*62c56f98SSadaf Ebrahimi                -c "$maybe_calc_verify" \
1690*62c56f98SSadaf Ebrahimi                -c "calc PSA finished" \
1691*62c56f98SSadaf Ebrahimi                -s "$maybe_calc_verify" \
1692*62c56f98SSadaf Ebrahimi                -s "calc PSA finished" \
1693*62c56f98SSadaf Ebrahimi                -s "Protocol is TLSv1.2" \
1694*62c56f98SSadaf Ebrahimi                -c "Perform PSA-based ECDH computation."\
1695*62c56f98SSadaf Ebrahimi                -c "Perform PSA-based computation of digest of ServerKeyExchange" \
1696*62c56f98SSadaf Ebrahimi                -S "error" \
1697*62c56f98SSadaf Ebrahimi                -C "error"
1698*62c56f98SSadaf Ebrahimi    unset maybe_calc_verify
1699*62c56f98SSadaf Ebrahimi}
1700*62c56f98SSadaf Ebrahimi
1701*62c56f98SSadaf Ebrahimirun_test_psa_force_curve() {
1702*62c56f98SSadaf Ebrahimi    requires_config_enabled MBEDTLS_USE_PSA_CRYPTO
1703*62c56f98SSadaf Ebrahimi    set_maybe_calc_verify none
1704*62c56f98SSadaf Ebrahimi    run_test    "PSA - ECDH with $1" \
1705*62c56f98SSadaf Ebrahimi                "$P_SRV debug_level=4 force_version=tls12 groups=$1" \
1706*62c56f98SSadaf Ebrahimi                "$P_CLI debug_level=4 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 groups=$1" \
1707*62c56f98SSadaf Ebrahimi                0 \
1708*62c56f98SSadaf Ebrahimi                -c "$maybe_calc_verify" \
1709*62c56f98SSadaf Ebrahimi                -c "calc PSA finished" \
1710*62c56f98SSadaf Ebrahimi                -s "$maybe_calc_verify" \
1711*62c56f98SSadaf Ebrahimi                -s "calc PSA finished" \
1712*62c56f98SSadaf Ebrahimi                -s "Protocol is TLSv1.2" \
1713*62c56f98SSadaf Ebrahimi                -c "Perform PSA-based ECDH computation."\
1714*62c56f98SSadaf Ebrahimi                -c "Perform PSA-based computation of digest of ServerKeyExchange" \
1715*62c56f98SSadaf Ebrahimi                -S "error" \
1716*62c56f98SSadaf Ebrahimi                -C "error"
1717*62c56f98SSadaf Ebrahimi    unset maybe_calc_verify
1718*62c56f98SSadaf Ebrahimi}
1719*62c56f98SSadaf Ebrahimi
1720*62c56f98SSadaf Ebrahimi# Test that the server's memory usage after a handshake is reduced when a client specifies
1721*62c56f98SSadaf Ebrahimi# a maximum fragment length.
1722*62c56f98SSadaf Ebrahimi#  first argument ($1) is MFL for SSL client
1723*62c56f98SSadaf Ebrahimi#  second argument ($2) is memory usage for SSL client with default MFL (16k)
1724*62c56f98SSadaf Ebrahimirun_test_memory_after_hanshake_with_mfl()
1725*62c56f98SSadaf Ebrahimi{
1726*62c56f98SSadaf Ebrahimi    # The test passes if the difference is around 2*(16k-MFL)
1727*62c56f98SSadaf Ebrahimi    MEMORY_USAGE_LIMIT="$(( $2 - ( 2 * ( 16384 - $1 )) ))"
1728*62c56f98SSadaf Ebrahimi
1729*62c56f98SSadaf Ebrahimi    # Leave some margin for robustness
1730*62c56f98SSadaf Ebrahimi    MEMORY_USAGE_LIMIT="$(( ( MEMORY_USAGE_LIMIT * 110 ) / 100 ))"
1731*62c56f98SSadaf Ebrahimi
1732*62c56f98SSadaf Ebrahimi    run_test    "Handshake memory usage (MFL $1)" \
1733*62c56f98SSadaf Ebrahimi                "$P_SRV debug_level=3 auth_mode=required force_version=tls12" \
1734*62c56f98SSadaf Ebrahimi                "$P_CLI debug_level=3 \
1735*62c56f98SSadaf Ebrahimi                    crt_file=data_files/server5.crt key_file=data_files/server5.key \
1736*62c56f98SSadaf Ebrahimi                    force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM max_frag_len=$1" \
1737*62c56f98SSadaf Ebrahimi                0 \
1738*62c56f98SSadaf Ebrahimi                -F "handshake_memory_check $MEMORY_USAGE_LIMIT"
1739*62c56f98SSadaf Ebrahimi}
1740*62c56f98SSadaf Ebrahimi
1741*62c56f98SSadaf Ebrahimi
1742*62c56f98SSadaf Ebrahimi# Test that the server's memory usage after a handshake is reduced when a client specifies
1743*62c56f98SSadaf Ebrahimi# different values of Maximum Fragment Length: default (16k), 4k, 2k, 1k and 512 bytes
1744*62c56f98SSadaf Ebrahimirun_tests_memory_after_hanshake()
1745*62c56f98SSadaf Ebrahimi{
1746*62c56f98SSadaf Ebrahimi    # all tests in this sequence requires the same configuration (see requires_config_enabled())
1747*62c56f98SSadaf Ebrahimi    SKIP_THIS_TESTS="$SKIP_NEXT"
1748*62c56f98SSadaf Ebrahimi
1749*62c56f98SSadaf Ebrahimi    # first test with default MFU is to get reference memory usage
1750*62c56f98SSadaf Ebrahimi    MEMORY_USAGE_MFL_16K=0
1751*62c56f98SSadaf Ebrahimi    run_test    "Handshake memory usage initial (MFL 16384 - default)" \
1752*62c56f98SSadaf Ebrahimi                "$P_SRV debug_level=3 auth_mode=required force_version=tls12" \
1753*62c56f98SSadaf Ebrahimi                "$P_CLI debug_level=3 \
1754*62c56f98SSadaf Ebrahimi                    crt_file=data_files/server5.crt key_file=data_files/server5.key \
1755*62c56f98SSadaf Ebrahimi                    force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM" \
1756*62c56f98SSadaf Ebrahimi                0 \
1757*62c56f98SSadaf Ebrahimi                -F "handshake_memory_get MEMORY_USAGE_MFL_16K"
1758*62c56f98SSadaf Ebrahimi
1759*62c56f98SSadaf Ebrahimi    SKIP_NEXT="$SKIP_THIS_TESTS"
1760*62c56f98SSadaf Ebrahimi    run_test_memory_after_hanshake_with_mfl 4096 "$MEMORY_USAGE_MFL_16K"
1761*62c56f98SSadaf Ebrahimi
1762*62c56f98SSadaf Ebrahimi    SKIP_NEXT="$SKIP_THIS_TESTS"
1763*62c56f98SSadaf Ebrahimi    run_test_memory_after_hanshake_with_mfl 2048 "$MEMORY_USAGE_MFL_16K"
1764*62c56f98SSadaf Ebrahimi
1765*62c56f98SSadaf Ebrahimi    SKIP_NEXT="$SKIP_THIS_TESTS"
1766*62c56f98SSadaf Ebrahimi    run_test_memory_after_hanshake_with_mfl 1024 "$MEMORY_USAGE_MFL_16K"
1767*62c56f98SSadaf Ebrahimi
1768*62c56f98SSadaf Ebrahimi    SKIP_NEXT="$SKIP_THIS_TESTS"
1769*62c56f98SSadaf Ebrahimi    run_test_memory_after_hanshake_with_mfl 512 "$MEMORY_USAGE_MFL_16K"
1770*62c56f98SSadaf Ebrahimi}
1771*62c56f98SSadaf Ebrahimi
1772*62c56f98SSadaf Ebrahimicleanup() {
1773*62c56f98SSadaf Ebrahimi    rm -f $CLI_OUT $SRV_OUT $PXY_OUT $SESSION
1774*62c56f98SSadaf Ebrahimi    rm -f context_srv.txt
1775*62c56f98SSadaf Ebrahimi    rm -f context_cli.txt
1776*62c56f98SSadaf Ebrahimi    test -n "${SRV_PID:-}" && kill $SRV_PID >/dev/null 2>&1
1777*62c56f98SSadaf Ebrahimi    test -n "${PXY_PID:-}" && kill $PXY_PID >/dev/null 2>&1
1778*62c56f98SSadaf Ebrahimi    test -n "${CLI_PID:-}" && kill $CLI_PID >/dev/null 2>&1
1779*62c56f98SSadaf Ebrahimi    test -n "${DOG_PID:-}" && kill $DOG_PID >/dev/null 2>&1
1780*62c56f98SSadaf Ebrahimi    exit 1
1781*62c56f98SSadaf Ebrahimi}
1782*62c56f98SSadaf Ebrahimi
1783*62c56f98SSadaf Ebrahimi#
1784*62c56f98SSadaf Ebrahimi# MAIN
1785*62c56f98SSadaf Ebrahimi#
1786*62c56f98SSadaf Ebrahimi
1787*62c56f98SSadaf Ebrahimiget_options "$@"
1788*62c56f98SSadaf Ebrahimi
1789*62c56f98SSadaf Ebrahimi# Make the outcome file path relative to the original directory, not
1790*62c56f98SSadaf Ebrahimi# to .../tests
1791*62c56f98SSadaf Ebrahimicase "$MBEDTLS_TEST_OUTCOME_FILE" in
1792*62c56f98SSadaf Ebrahimi    [!/]*)
1793*62c56f98SSadaf Ebrahimi        MBEDTLS_TEST_OUTCOME_FILE="$ORIGINAL_PWD/$MBEDTLS_TEST_OUTCOME_FILE"
1794*62c56f98SSadaf Ebrahimi        ;;
1795*62c56f98SSadaf Ebrahimiesac
1796*62c56f98SSadaf Ebrahimi
1797*62c56f98SSadaf Ebrahimipopulate_enabled_hash_algs
1798*62c56f98SSadaf Ebrahimi
1799*62c56f98SSadaf Ebrahimi# Optimize filters: if $FILTER and $EXCLUDE can be expressed as shell
1800*62c56f98SSadaf Ebrahimi# patterns rather than regular expressions, use a case statement instead
1801*62c56f98SSadaf Ebrahimi# of calling grep. To keep the optimizer simple, it is incomplete and only
1802*62c56f98SSadaf Ebrahimi# detects simple cases: plain substring, everything, nothing.
1803*62c56f98SSadaf Ebrahimi#
1804*62c56f98SSadaf Ebrahimi# As an exception, the character '.' is treated as an ordinary character
1805*62c56f98SSadaf Ebrahimi# if it is the only special character in the string. This is because it's
1806*62c56f98SSadaf Ebrahimi# rare to need "any one character", but needing a literal '.' is common
1807*62c56f98SSadaf Ebrahimi# (e.g. '-f "DTLS 1.2"').
1808*62c56f98SSadaf Ebrahimineed_grep=
1809*62c56f98SSadaf Ebrahimicase "$FILTER" in
1810*62c56f98SSadaf Ebrahimi    '^$') simple_filter=;;
1811*62c56f98SSadaf Ebrahimi    '.*') simple_filter='*';;
1812*62c56f98SSadaf Ebrahimi    *[][$+*?\\^{\|}]*) # Regexp special characters (other than .), we need grep
1813*62c56f98SSadaf Ebrahimi        need_grep=1;;
1814*62c56f98SSadaf Ebrahimi    *) # No regexp or shell-pattern special character
1815*62c56f98SSadaf Ebrahimi        simple_filter="*$FILTER*";;
1816*62c56f98SSadaf Ebrahimiesac
1817*62c56f98SSadaf Ebrahimicase "$EXCLUDE" in
1818*62c56f98SSadaf Ebrahimi    '^$') simple_exclude=;;
1819*62c56f98SSadaf Ebrahimi    '.*') simple_exclude='*';;
1820*62c56f98SSadaf Ebrahimi    *[][$+*?\\^{\|}]*) # Regexp special characters (other than .), we need grep
1821*62c56f98SSadaf Ebrahimi        need_grep=1;;
1822*62c56f98SSadaf Ebrahimi    *) # No regexp or shell-pattern special character
1823*62c56f98SSadaf Ebrahimi        simple_exclude="*$EXCLUDE*";;
1824*62c56f98SSadaf Ebrahimiesac
1825*62c56f98SSadaf Ebrahimiif [ -n "$need_grep" ]; then
1826*62c56f98SSadaf Ebrahimi    is_excluded () {
1827*62c56f98SSadaf Ebrahimi        ! echo "$1" | grep "$FILTER" | grep -q -v "$EXCLUDE"
1828*62c56f98SSadaf Ebrahimi    }
1829*62c56f98SSadaf Ebrahimielse
1830*62c56f98SSadaf Ebrahimi    is_excluded () {
1831*62c56f98SSadaf Ebrahimi        case "$1" in
1832*62c56f98SSadaf Ebrahimi            $simple_exclude) true;;
1833*62c56f98SSadaf Ebrahimi            $simple_filter) false;;
1834*62c56f98SSadaf Ebrahimi            *) true;;
1835*62c56f98SSadaf Ebrahimi        esac
1836*62c56f98SSadaf Ebrahimi    }
1837*62c56f98SSadaf Ebrahimifi
1838*62c56f98SSadaf Ebrahimi
1839*62c56f98SSadaf Ebrahimi# sanity checks, avoid an avalanche of errors
1840*62c56f98SSadaf EbrahimiP_SRV_BIN="${P_SRV%%[  ]*}"
1841*62c56f98SSadaf EbrahimiP_CLI_BIN="${P_CLI%%[  ]*}"
1842*62c56f98SSadaf EbrahimiP_PXY_BIN="${P_PXY%%[  ]*}"
1843*62c56f98SSadaf Ebrahimiif [ ! -x "$P_SRV_BIN" ]; then
1844*62c56f98SSadaf Ebrahimi    echo "Command '$P_SRV_BIN' is not an executable file"
1845*62c56f98SSadaf Ebrahimi    exit 1
1846*62c56f98SSadaf Ebrahimifi
1847*62c56f98SSadaf Ebrahimiif [ ! -x "$P_CLI_BIN" ]; then
1848*62c56f98SSadaf Ebrahimi    echo "Command '$P_CLI_BIN' is not an executable file"
1849*62c56f98SSadaf Ebrahimi    exit 1
1850*62c56f98SSadaf Ebrahimifi
1851*62c56f98SSadaf Ebrahimiif [ ! -x "$P_PXY_BIN" ]; then
1852*62c56f98SSadaf Ebrahimi    echo "Command '$P_PXY_BIN' is not an executable file"
1853*62c56f98SSadaf Ebrahimi    exit 1
1854*62c56f98SSadaf Ebrahimifi
1855*62c56f98SSadaf Ebrahimiif [ "$MEMCHECK" -gt 0 ]; then
1856*62c56f98SSadaf Ebrahimi    if which valgrind >/dev/null 2>&1; then :; else
1857*62c56f98SSadaf Ebrahimi        echo "Memcheck not possible. Valgrind not found"
1858*62c56f98SSadaf Ebrahimi        exit 1
1859*62c56f98SSadaf Ebrahimi    fi
1860*62c56f98SSadaf Ebrahimifi
1861*62c56f98SSadaf Ebrahimiif which $OPENSSL >/dev/null 2>&1; then :; else
1862*62c56f98SSadaf Ebrahimi    echo "Command '$OPENSSL' not found"
1863*62c56f98SSadaf Ebrahimi    exit 1
1864*62c56f98SSadaf Ebrahimifi
1865*62c56f98SSadaf Ebrahimi
1866*62c56f98SSadaf Ebrahimi# used by watchdog
1867*62c56f98SSadaf EbrahimiMAIN_PID="$$"
1868*62c56f98SSadaf Ebrahimi
1869*62c56f98SSadaf Ebrahimi# We use somewhat arbitrary delays for tests:
1870*62c56f98SSadaf Ebrahimi# - how long do we wait for the server to start (when lsof not available)?
1871*62c56f98SSadaf Ebrahimi# - how long do we allow for the client to finish?
1872*62c56f98SSadaf Ebrahimi#   (not to check performance, just to avoid waiting indefinitely)
1873*62c56f98SSadaf Ebrahimi# Things are slower with valgrind, so give extra time here.
1874*62c56f98SSadaf Ebrahimi#
1875*62c56f98SSadaf Ebrahimi# Note: without lsof, there is a trade-off between the running time of this
1876*62c56f98SSadaf Ebrahimi# script and the risk of spurious errors because we didn't wait long enough.
1877*62c56f98SSadaf Ebrahimi# The watchdog delay on the other hand doesn't affect normal running time of
1878*62c56f98SSadaf Ebrahimi# the script, only the case where a client or server gets stuck.
1879*62c56f98SSadaf Ebrahimiif [ "$MEMCHECK" -gt 0 ]; then
1880*62c56f98SSadaf Ebrahimi    START_DELAY=6
1881*62c56f98SSadaf Ebrahimi    DOG_DELAY=60
1882*62c56f98SSadaf Ebrahimielse
1883*62c56f98SSadaf Ebrahimi    START_DELAY=2
1884*62c56f98SSadaf Ebrahimi    DOG_DELAY=20
1885*62c56f98SSadaf Ebrahimifi
1886*62c56f98SSadaf Ebrahimi
1887*62c56f98SSadaf Ebrahimi# some particular tests need more time:
1888*62c56f98SSadaf Ebrahimi# - for the client, we multiply the usual watchdog limit by a factor
1889*62c56f98SSadaf Ebrahimi# - for the server, we sleep for a number of seconds after the client exits
1890*62c56f98SSadaf Ebrahimi# see client_need_more_time() and server_needs_more_time()
1891*62c56f98SSadaf EbrahimiCLI_DELAY_FACTOR=1
1892*62c56f98SSadaf EbrahimiSRV_DELAY_SECONDS=0
1893*62c56f98SSadaf Ebrahimi
1894*62c56f98SSadaf Ebrahimi# fix commands to use this port, force IPv4 while at it
1895*62c56f98SSadaf Ebrahimi# +SRV_PORT will be replaced by either $SRV_PORT or $PXY_PORT later
1896*62c56f98SSadaf Ebrahimi# Note: Using 'localhost' rather than 127.0.0.1 here is unwise, as on many
1897*62c56f98SSadaf Ebrahimi# machines that will resolve to ::1, and we don't want ipv6 here.
1898*62c56f98SSadaf EbrahimiP_SRV="$P_SRV server_addr=127.0.0.1 server_port=$SRV_PORT"
1899*62c56f98SSadaf EbrahimiP_CLI="$P_CLI server_addr=127.0.0.1 server_port=+SRV_PORT"
1900*62c56f98SSadaf EbrahimiP_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"}"
1901*62c56f98SSadaf EbrahimiO_SRV="$O_SRV -accept $SRV_PORT"
1902*62c56f98SSadaf EbrahimiO_CLI="$O_CLI -connect 127.0.0.1:+SRV_PORT"
1903*62c56f98SSadaf EbrahimiG_SRV="$G_SRV -p $SRV_PORT"
1904*62c56f98SSadaf EbrahimiG_CLI="$G_CLI -p +SRV_PORT"
1905*62c56f98SSadaf Ebrahimi
1906*62c56f98SSadaf Ebrahimiif [ -n "${OPENSSL_LEGACY:-}" ]; then
1907*62c56f98SSadaf Ebrahimi    O_LEGACY_SRV="$O_LEGACY_SRV -accept $SRV_PORT -dhparam data_files/dhparams.pem"
1908*62c56f98SSadaf Ebrahimi    O_LEGACY_CLI="$O_LEGACY_CLI -connect 127.0.0.1:+SRV_PORT"
1909*62c56f98SSadaf Ebrahimifi
1910*62c56f98SSadaf Ebrahimi
1911*62c56f98SSadaf Ebrahimi# Newer versions of OpenSSL have a syntax to enable all "ciphers", even
1912*62c56f98SSadaf Ebrahimi# low-security ones. This covers not just cipher suites but also protocol
1913*62c56f98SSadaf Ebrahimi# versions. It is necessary, for example, to use (D)TLS 1.0/1.1 on
1914*62c56f98SSadaf Ebrahimi# OpenSSL 1.1.1f from Ubuntu 20.04. The syntax was only introduced in
1915*62c56f98SSadaf Ebrahimi# OpenSSL 1.1.0 (21e0c1d23afff48601eb93135defddae51f7e2e3) and I can't find
1916*62c56f98SSadaf Ebrahimi# a way to discover it from -help, so check the openssl version.
1917*62c56f98SSadaf Ebrahimicase $($OPENSSL version) in
1918*62c56f98SSadaf Ebrahimi    "OpenSSL 0"*|"OpenSSL 1.0"*) :;;
1919*62c56f98SSadaf Ebrahimi    *)
1920*62c56f98SSadaf Ebrahimi        O_CLI="$O_CLI -cipher ALL@SECLEVEL=0"
1921*62c56f98SSadaf Ebrahimi        O_SRV="$O_SRV -cipher ALL@SECLEVEL=0"
1922*62c56f98SSadaf Ebrahimi        ;;
1923*62c56f98SSadaf Ebrahimiesac
1924*62c56f98SSadaf Ebrahimi
1925*62c56f98SSadaf Ebrahimiif [ -n "${OPENSSL_NEXT:-}" ]; then
1926*62c56f98SSadaf Ebrahimi    O_NEXT_SRV="$O_NEXT_SRV -accept $SRV_PORT"
1927*62c56f98SSadaf Ebrahimi    O_NEXT_SRV_NO_CERT="$O_NEXT_SRV_NO_CERT -accept $SRV_PORT"
1928*62c56f98SSadaf Ebrahimi    O_NEXT_SRV_EARLY_DATA="$O_NEXT_SRV_EARLY_DATA -accept $SRV_PORT"
1929*62c56f98SSadaf Ebrahimi    O_NEXT_CLI="$O_NEXT_CLI -connect 127.0.0.1:+SRV_PORT"
1930*62c56f98SSadaf Ebrahimi    O_NEXT_CLI_NO_CERT="$O_NEXT_CLI_NO_CERT -connect 127.0.0.1:+SRV_PORT"
1931*62c56f98SSadaf Ebrahimifi
1932*62c56f98SSadaf Ebrahimi
1933*62c56f98SSadaf Ebrahimiif [ -n "${GNUTLS_NEXT_SERV:-}" ]; then
1934*62c56f98SSadaf Ebrahimi    G_NEXT_SRV="$G_NEXT_SRV -p $SRV_PORT"
1935*62c56f98SSadaf Ebrahimi    G_NEXT_SRV_NO_CERT="$G_NEXT_SRV_NO_CERT -p $SRV_PORT"
1936*62c56f98SSadaf Ebrahimifi
1937*62c56f98SSadaf Ebrahimi
1938*62c56f98SSadaf Ebrahimiif [ -n "${GNUTLS_NEXT_CLI:-}" ]; then
1939*62c56f98SSadaf Ebrahimi    G_NEXT_CLI="$G_NEXT_CLI -p +SRV_PORT"
1940*62c56f98SSadaf Ebrahimi    G_NEXT_CLI_NO_CERT="$G_NEXT_CLI_NO_CERT -p +SRV_PORT localhost"
1941*62c56f98SSadaf Ebrahimifi
1942*62c56f98SSadaf Ebrahimi
1943*62c56f98SSadaf Ebrahimi# Allow SHA-1, because many of our test certificates use it
1944*62c56f98SSadaf EbrahimiP_SRV="$P_SRV allow_sha1=1"
1945*62c56f98SSadaf EbrahimiP_CLI="$P_CLI allow_sha1=1"
1946*62c56f98SSadaf Ebrahimi
1947*62c56f98SSadaf Ebrahimi# Also pick a unique name for intermediate files
1948*62c56f98SSadaf EbrahimiSRV_OUT="srv_out.$$"
1949*62c56f98SSadaf EbrahimiCLI_OUT="cli_out.$$"
1950*62c56f98SSadaf EbrahimiPXY_OUT="pxy_out.$$"
1951*62c56f98SSadaf EbrahimiSESSION="session.$$"
1952*62c56f98SSadaf Ebrahimi
1953*62c56f98SSadaf EbrahimiSKIP_NEXT="NO"
1954*62c56f98SSadaf Ebrahimi
1955*62c56f98SSadaf Ebrahimitrap cleanup INT TERM HUP
1956*62c56f98SSadaf Ebrahimi
1957*62c56f98SSadaf Ebrahimi# Basic test
1958*62c56f98SSadaf Ebrahimi
1959*62c56f98SSadaf Ebrahimi# Checks that:
1960*62c56f98SSadaf Ebrahimi# - things work with all ciphersuites active (used with config-full in all.sh)
1961*62c56f98SSadaf Ebrahimi# - the expected parameters are selected
1962*62c56f98SSadaf Ebrahimirequires_ciphersuite_enabled TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256
1963*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_512 # "signature_algorithm ext: 6"
1964*62c56f98SSadaf Ebrahimirequires_any_configs_enabled "MBEDTLS_ECP_DP_CURVE25519_ENABLED \
1965*62c56f98SSadaf Ebrahimi                              PSA_WANT_ECC_MONTGOMERY_255"
1966*62c56f98SSadaf Ebrahimirun_test    "Default, TLS 1.2" \
1967*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3" \
1968*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12" \
1969*62c56f98SSadaf Ebrahimi            0 \
1970*62c56f98SSadaf Ebrahimi            -s "Protocol is TLSv1.2" \
1971*62c56f98SSadaf Ebrahimi            -s "Ciphersuite is TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256" \
1972*62c56f98SSadaf Ebrahimi            -s "client hello v3, signature_algorithm ext: 6" \
1973*62c56f98SSadaf Ebrahimi            -s "ECDHE curve: x25519" \
1974*62c56f98SSadaf Ebrahimi            -S "error" \
1975*62c56f98SSadaf Ebrahimi            -C "error"
1976*62c56f98SSadaf Ebrahimi
1977*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
1978*62c56f98SSadaf Ebrahimirequires_ciphersuite_enabled TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256
1979*62c56f98SSadaf Ebrahimirun_test    "Default, DTLS" \
1980*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1" \
1981*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1" \
1982*62c56f98SSadaf Ebrahimi            0 \
1983*62c56f98SSadaf Ebrahimi            -s "Protocol is DTLSv1.2" \
1984*62c56f98SSadaf Ebrahimi            -s "Ciphersuite is TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256"
1985*62c56f98SSadaf Ebrahimi
1986*62c56f98SSadaf Ebrahimi# GnuTLS can be setup to send a ClientHello containing a supported versions
1987*62c56f98SSadaf Ebrahimi# extension proposing TLS 1.2 (preferred) and then TLS 1.3. In that case,
1988*62c56f98SSadaf Ebrahimi# a TLS 1.3 and TLS 1.2 capable server is supposed to negotiate TLS 1.2 and
1989*62c56f98SSadaf Ebrahimi# to indicate in the ServerHello that it downgrades from TLS 1.3. The GnuTLS
1990*62c56f98SSadaf Ebrahimi# client then detects the downgrade indication and aborts the handshake even
1991*62c56f98SSadaf Ebrahimi# if TLS 1.2 was its preferred version. Keeping the test even if the
1992*62c56f98SSadaf Ebrahimi# handshake fails eventually as it exercices parts of the Mbed TLS
1993*62c56f98SSadaf Ebrahimi# implementation that are otherwise not exercised.
1994*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
1995*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
1996*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
1997*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
1998*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
1999*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
2000*62c56f98SSadaf Ebrahimirun_test    "Server selecting TLS 1.2 over TLS 1.3" \
2001*62c56f98SSadaf Ebrahimi            "$P_SRV crt_file=data_files/server5.crt key_file=data_files/server5.key" \
2002*62c56f98SSadaf Ebrahimi            "$G_NEXT_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2:+VERS-TLS1.3" \
2003*62c56f98SSadaf Ebrahimi            1 \
2004*62c56f98SSadaf Ebrahimi            -c "Detected downgrade to TLS 1.2 from TLS 1.3"
2005*62c56f98SSadaf Ebrahimi
2006*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
2007*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
2008*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
2009*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
2010*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_SSL_PROTO_TLS1_3
2011*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
2012*62c56f98SSadaf Ebrahimirun_test    "Server selecting TLS 1.2" \
2013*62c56f98SSadaf Ebrahimi            "$P_SRV crt_file=data_files/server5.crt key_file=data_files/server5.key" \
2014*62c56f98SSadaf Ebrahimi            "$G_NEXT_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2:+VERS-TLS1.3" \
2015*62c56f98SSadaf Ebrahimi            0 \
2016*62c56f98SSadaf Ebrahimi            -s "Protocol is TLSv1.2" \
2017*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
2018*62c56f98SSadaf Ebrahimi
2019*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
2020*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
2021*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
2022*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
2023*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
2024*62c56f98SSadaf Ebrahimirun_test    "Server selecting TLS 1.3, over TLS 1.2 if supported" \
2025*62c56f98SSadaf Ebrahimi            "$P_SRV crt_file=data_files/server5.crt key_file=data_files/server5.key" \
2026*62c56f98SSadaf Ebrahimi            "$G_NEXT_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2:%DISABLE_TLS13_COMPAT_MODE" \
2027*62c56f98SSadaf Ebrahimi            0 \
2028*62c56f98SSadaf Ebrahimi            -s "Protocol is TLSv1.3" \
2029*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
2030*62c56f98SSadaf Ebrahimi
2031*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
2032*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
2033*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
2034*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
2035*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
2036*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
2037*62c56f98SSadaf Ebrahimirun_test    "Server selecting TLS 1.3, over TLS 1.2 if supported - compat mode enabled" \
2038*62c56f98SSadaf Ebrahimi            "$P_SRV crt_file=data_files/server5.crt key_file=data_files/server5.key" \
2039*62c56f98SSadaf Ebrahimi            "$G_NEXT_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+VERS-TLS1.2" \
2040*62c56f98SSadaf Ebrahimi            0 \
2041*62c56f98SSadaf Ebrahimi            -s "Protocol is TLSv1.3" \
2042*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
2043*62c56f98SSadaf Ebrahimi
2044*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
2045*62c56f98SSadaf Ebrahimirun_test    "TLS client auth: required" \
2046*62c56f98SSadaf Ebrahimi            "$P_SRV auth_mode=required" \
2047*62c56f98SSadaf Ebrahimi            "$P_CLI" \
2048*62c56f98SSadaf Ebrahimi            0 \
2049*62c56f98SSadaf Ebrahimi            -s "Verifying peer X.509 certificate... ok"
2050*62c56f98SSadaf Ebrahimi
2051*62c56f98SSadaf Ebrahimirun_test    "key size: TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2052*62c56f98SSadaf Ebrahimi            "$P_SRV" \
2053*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2054*62c56f98SSadaf Ebrahimi            0 \
2055*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2056*62c56f98SSadaf Ebrahimi            -c "Key size is 256"
2057*62c56f98SSadaf Ebrahimi
2058*62c56f98SSadaf Ebrahimirun_test    "key size: TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2059*62c56f98SSadaf Ebrahimi            "$P_SRV" \
2060*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2061*62c56f98SSadaf Ebrahimi            0 \
2062*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2063*62c56f98SSadaf Ebrahimi            -c "Key size is 128"
2064*62c56f98SSadaf Ebrahimi
2065*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2066*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2067*62c56f98SSadaf Ebrahimirun_test    "TLS: password protected client key" \
2068*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 auth_mode=required" \
2069*62c56f98SSadaf Ebrahimi            "$P_CLI crt_file=data_files/server5.crt key_file=data_files/server5.key.enc key_pwd=PolarSSLTest" \
2070*62c56f98SSadaf Ebrahimi            0
2071*62c56f98SSadaf Ebrahimi
2072*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2073*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2074*62c56f98SSadaf Ebrahimirun_test    "TLS: password protected server key" \
2075*62c56f98SSadaf Ebrahimi            "$P_SRV crt_file=data_files/server5.crt key_file=data_files/server5.key.enc key_pwd=PolarSSLTest" \
2076*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12" \
2077*62c56f98SSadaf Ebrahimi            0
2078*62c56f98SSadaf Ebrahimi
2079*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2080*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
2081*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2082*62c56f98SSadaf Ebrahimirun_test    "TLS: password protected server key, two certificates" \
2083*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12\
2084*62c56f98SSadaf Ebrahimi              key_file=data_files/server5.key.enc key_pwd=PolarSSLTest crt_file=data_files/server5.crt \
2085*62c56f98SSadaf Ebrahimi              key_file2=data_files/server2.key.enc key_pwd2=PolarSSLTest crt_file2=data_files/server2.crt" \
2086*62c56f98SSadaf Ebrahimi            "$P_CLI" \
2087*62c56f98SSadaf Ebrahimi            0
2088*62c56f98SSadaf Ebrahimi
2089*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
2090*62c56f98SSadaf Ebrahimirun_test    "CA callback on client" \
2091*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3" \
2092*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 ca_callback=1 debug_level=3 " \
2093*62c56f98SSadaf Ebrahimi            0 \
2094*62c56f98SSadaf Ebrahimi            -c "use CA callback for X.509 CRT verification" \
2095*62c56f98SSadaf Ebrahimi            -S "error" \
2096*62c56f98SSadaf Ebrahimi            -C "error"
2097*62c56f98SSadaf Ebrahimi
2098*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
2099*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2100*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2101*62c56f98SSadaf Ebrahimirun_test    "CA callback on server" \
2102*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 auth_mode=required" \
2103*62c56f98SSadaf Ebrahimi            "$P_CLI ca_callback=1 debug_level=3 crt_file=data_files/server5.crt \
2104*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
2105*62c56f98SSadaf Ebrahimi            0 \
2106*62c56f98SSadaf Ebrahimi            -c "use CA callback for X.509 CRT verification" \
2107*62c56f98SSadaf Ebrahimi            -s "Verifying peer X.509 certificate... ok" \
2108*62c56f98SSadaf Ebrahimi            -S "error" \
2109*62c56f98SSadaf Ebrahimi            -C "error"
2110*62c56f98SSadaf Ebrahimi
2111*62c56f98SSadaf Ebrahimi# Test using an EC opaque private key for client authentication
2112*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2113*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2114*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
2115*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2116*62c56f98SSadaf Ebrahimirun_test    "Opaque key for client authentication: ECDHE-ECDSA" \
2117*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 auth_mode=required crt_file=data_files/server5.crt \
2118*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
2119*62c56f98SSadaf Ebrahimi            "$P_CLI key_opaque=1 crt_file=data_files/server5.crt \
2120*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key key_opaque_algs=ecdsa-sign,none" \
2121*62c56f98SSadaf Ebrahimi            0 \
2122*62c56f98SSadaf Ebrahimi            -c "key type: Opaque" \
2123*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-ECDHE-ECDSA" \
2124*62c56f98SSadaf Ebrahimi            -s "Verifying peer X.509 certificate... ok" \
2125*62c56f98SSadaf Ebrahimi            -s "Ciphersuite is TLS-ECDHE-ECDSA" \
2126*62c56f98SSadaf Ebrahimi            -S "error" \
2127*62c56f98SSadaf Ebrahimi            -C "error"
2128*62c56f98SSadaf Ebrahimi
2129*62c56f98SSadaf Ebrahimi# Test using a RSA opaque private key for client authentication
2130*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2131*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2132*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
2133*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
2134*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2135*62c56f98SSadaf Ebrahimirun_test    "Opaque key for client authentication: ECDHE-RSA" \
2136*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 auth_mode=required crt_file=data_files/server2-sha256.crt \
2137*62c56f98SSadaf Ebrahimi             key_file=data_files/server2.key" \
2138*62c56f98SSadaf Ebrahimi            "$P_CLI key_opaque=1 crt_file=data_files/server2-sha256.crt \
2139*62c56f98SSadaf Ebrahimi             key_file=data_files/server2.key key_opaque_algs=rsa-sign-pkcs1,none" \
2140*62c56f98SSadaf Ebrahimi            0 \
2141*62c56f98SSadaf Ebrahimi            -c "key type: Opaque" \
2142*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-ECDHE-RSA" \
2143*62c56f98SSadaf Ebrahimi            -s "Verifying peer X.509 certificate... ok" \
2144*62c56f98SSadaf Ebrahimi            -s "Ciphersuite is TLS-ECDHE-RSA" \
2145*62c56f98SSadaf Ebrahimi            -S "error" \
2146*62c56f98SSadaf Ebrahimi            -C "error"
2147*62c56f98SSadaf Ebrahimi
2148*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2149*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2150*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
2151*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2152*62c56f98SSadaf Ebrahimirun_test    "Opaque key for client authentication: DHE-RSA" \
2153*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 auth_mode=required crt_file=data_files/server2-sha256.crt \
2154*62c56f98SSadaf Ebrahimi             key_file=data_files/server2.key" \
2155*62c56f98SSadaf Ebrahimi            "$P_CLI key_opaque=1 crt_file=data_files/server2-sha256.crt \
2156*62c56f98SSadaf Ebrahimi             key_file=data_files/server2.key force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
2157*62c56f98SSadaf Ebrahimi             key_opaque_algs=rsa-sign-pkcs1,none" \
2158*62c56f98SSadaf Ebrahimi            0 \
2159*62c56f98SSadaf Ebrahimi            -c "key type: Opaque" \
2160*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-DHE-RSA" \
2161*62c56f98SSadaf Ebrahimi            -s "Verifying peer X.509 certificate... ok" \
2162*62c56f98SSadaf Ebrahimi            -s "Ciphersuite is TLS-DHE-RSA" \
2163*62c56f98SSadaf Ebrahimi            -S "error" \
2164*62c56f98SSadaf Ebrahimi            -C "error"
2165*62c56f98SSadaf Ebrahimi
2166*62c56f98SSadaf Ebrahimi# Test using an EC opaque private key for server authentication
2167*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2168*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2169*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
2170*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2171*62c56f98SSadaf Ebrahimirun_test    "Opaque key for server authentication: ECDHE-ECDSA" \
2172*62c56f98SSadaf Ebrahimi            "$P_SRV key_opaque=1 crt_file=data_files/server5.crt \
2173*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key  key_opaque_algs=ecdsa-sign,none" \
2174*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12" \
2175*62c56f98SSadaf Ebrahimi            0 \
2176*62c56f98SSadaf Ebrahimi            -c "Verifying peer X.509 certificate... ok" \
2177*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-ECDHE-ECDSA" \
2178*62c56f98SSadaf Ebrahimi            -s "key types: Opaque, none" \
2179*62c56f98SSadaf Ebrahimi            -s "Ciphersuite is TLS-ECDHE-ECDSA" \
2180*62c56f98SSadaf Ebrahimi            -S "error" \
2181*62c56f98SSadaf Ebrahimi            -C "error"
2182*62c56f98SSadaf Ebrahimi
2183*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2184*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2185*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2186*62c56f98SSadaf Ebrahimirun_test    "Opaque key for server authentication: ECDH-" \
2187*62c56f98SSadaf Ebrahimi            "$P_SRV auth_mode=required key_opaque=1\
2188*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.ku-ka.crt\
2189*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key key_opaque_algs=ecdh,none" \
2190*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12" \
2191*62c56f98SSadaf Ebrahimi            0 \
2192*62c56f98SSadaf Ebrahimi            -c "Verifying peer X.509 certificate... ok" \
2193*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-ECDH-" \
2194*62c56f98SSadaf Ebrahimi            -s "key types: Opaque, none" \
2195*62c56f98SSadaf Ebrahimi            -s "Ciphersuite is TLS-ECDH-" \
2196*62c56f98SSadaf Ebrahimi            -S "error" \
2197*62c56f98SSadaf Ebrahimi            -C "error"
2198*62c56f98SSadaf Ebrahimi
2199*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2200*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2201*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_SSL_ASYNC_PRIVATE
2202*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2203*62c56f98SSadaf Ebrahimirun_test    "Opaque key for server authentication: invalid key: decrypt with ECC key, no async" \
2204*62c56f98SSadaf Ebrahimi            "$P_SRV key_opaque=1 crt_file=data_files/server5.crt \
2205*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key key_opaque_algs=rsa-decrypt,none \
2206*62c56f98SSadaf Ebrahimi             debug_level=1" \
2207*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12" \
2208*62c56f98SSadaf Ebrahimi            1 \
2209*62c56f98SSadaf Ebrahimi            -s "key types: Opaque, none" \
2210*62c56f98SSadaf Ebrahimi            -s "error" \
2211*62c56f98SSadaf Ebrahimi            -c "error" \
2212*62c56f98SSadaf Ebrahimi            -c "Public key type mismatch"
2213*62c56f98SSadaf Ebrahimi
2214*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2215*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2216*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECDSA_C
2217*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
2218*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_SSL_ASYNC_PRIVATE
2219*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2220*62c56f98SSadaf Ebrahimirun_test    "Opaque key for server authentication: invalid key: ecdh with RSA key, no async" \
2221*62c56f98SSadaf Ebrahimi            "$P_SRV key_opaque=1 crt_file=data_files/server2-sha256.crt \
2222*62c56f98SSadaf Ebrahimi             key_file=data_files/server2.key key_opaque_algs=ecdh,none \
2223*62c56f98SSadaf Ebrahimi             debug_level=1" \
2224*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12" \
2225*62c56f98SSadaf Ebrahimi            1 \
2226*62c56f98SSadaf Ebrahimi            -s "key types: Opaque, none" \
2227*62c56f98SSadaf Ebrahimi            -s "error" \
2228*62c56f98SSadaf Ebrahimi            -c "error" \
2229*62c56f98SSadaf Ebrahimi            -c "Public key type mismatch"
2230*62c56f98SSadaf Ebrahimi
2231*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2232*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2233*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
2234*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2235*62c56f98SSadaf Ebrahimirun_test    "Opaque key for server authentication: invalid alg: decrypt with ECC key, async" \
2236*62c56f98SSadaf Ebrahimi            "$P_SRV key_opaque=1 crt_file=data_files/server5.crt \
2237*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key key_opaque_algs=rsa-decrypt,none \
2238*62c56f98SSadaf Ebrahimi             debug_level=1" \
2239*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12" \
2240*62c56f98SSadaf Ebrahimi            1 \
2241*62c56f98SSadaf Ebrahimi            -s "key types: Opaque, none" \
2242*62c56f98SSadaf Ebrahimi            -s "got ciphersuites in common, but none of them usable" \
2243*62c56f98SSadaf Ebrahimi            -s "error" \
2244*62c56f98SSadaf Ebrahimi            -c "error"
2245*62c56f98SSadaf Ebrahimi
2246*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2247*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2248*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
2249*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
2250*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2251*62c56f98SSadaf Ebrahimirun_test    "Opaque key for server authentication: invalid alg: ecdh with RSA key, async" \
2252*62c56f98SSadaf Ebrahimi            "$P_SRV key_opaque=1 crt_file=data_files/server2-sha256.crt \
2253*62c56f98SSadaf Ebrahimi             key_file=data_files/server2.key key_opaque_algs=ecdh,none \
2254*62c56f98SSadaf Ebrahimi             debug_level=1" \
2255*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12" \
2256*62c56f98SSadaf Ebrahimi            1 \
2257*62c56f98SSadaf Ebrahimi            -s "key types: Opaque, none" \
2258*62c56f98SSadaf Ebrahimi            -s "got ciphersuites in common, but none of them usable" \
2259*62c56f98SSadaf Ebrahimi            -s "error" \
2260*62c56f98SSadaf Ebrahimi            -c "error"
2261*62c56f98SSadaf Ebrahimi
2262*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2263*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2264*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2265*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_CCM_C
2266*62c56f98SSadaf Ebrahimirun_test    "Opaque key for server authentication: invalid alg: ECDHE-ECDSA with ecdh" \
2267*62c56f98SSadaf Ebrahimi            "$P_SRV key_opaque=1 crt_file=data_files/server5.crt \
2268*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key key_opaque_algs=ecdh,none \
2269*62c56f98SSadaf Ebrahimi             debug_level=1" \
2270*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-256-CCM" \
2271*62c56f98SSadaf Ebrahimi            1 \
2272*62c56f98SSadaf Ebrahimi            -s "key types: Opaque, none" \
2273*62c56f98SSadaf Ebrahimi            -s "got ciphersuites in common, but none of them usable" \
2274*62c56f98SSadaf Ebrahimi            -s "error" \
2275*62c56f98SSadaf Ebrahimi            -c "error"
2276*62c56f98SSadaf Ebrahimi
2277*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2278*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2279*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
2280*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2281*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_X509_REMOVE_INFO
2282*62c56f98SSadaf Ebrahimirun_test    "Opaque keys for server authentication: EC keys with different algs, force ECDHE-ECDSA" \
2283*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 key_opaque=1 crt_file=data_files/server7.crt \
2284*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key key_opaque_algs=ecdh,none \
2285*62c56f98SSadaf Ebrahimi             crt_file2=data_files/server5.crt key_file2=data_files/server5.key \
2286*62c56f98SSadaf Ebrahimi             key_opaque_algs2=ecdsa-sign,none" \
2287*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12" \
2288*62c56f98SSadaf Ebrahimi            0 \
2289*62c56f98SSadaf Ebrahimi            -c "Verifying peer X.509 certificate... ok" \
2290*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-ECDHE-ECDSA" \
2291*62c56f98SSadaf Ebrahimi            -c "CN=Polarssl Test EC CA" \
2292*62c56f98SSadaf Ebrahimi            -s "key types: Opaque, Opaque" \
2293*62c56f98SSadaf Ebrahimi            -s "Ciphersuite is TLS-ECDHE-ECDSA" \
2294*62c56f98SSadaf Ebrahimi            -S "error" \
2295*62c56f98SSadaf Ebrahimi            -C "error"
2296*62c56f98SSadaf Ebrahimi
2297*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2298*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2299*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_384
2300*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_X509_REMOVE_INFO
2301*62c56f98SSadaf Ebrahimirun_test    "Opaque keys for server authentication: EC keys with different algs, force ECDH-ECDSA" \
2302*62c56f98SSadaf Ebrahimi            "$P_SRV key_opaque=1 crt_file=data_files/server7.crt \
2303*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key key_opaque_algs=ecdsa-sign,none \
2304*62c56f98SSadaf Ebrahimi             crt_file2=data_files/server5.crt key_file2=data_files/server5.key \
2305*62c56f98SSadaf Ebrahimi             key_opaque_algs2=ecdh,none debug_level=3" \
2306*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 force_ciphersuite=TLS-ECDH-ECDSA-WITH-CAMELLIA-256-CBC-SHA384" \
2307*62c56f98SSadaf Ebrahimi            0 \
2308*62c56f98SSadaf Ebrahimi            -c "Verifying peer X.509 certificate... ok" \
2309*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-ECDH-ECDSA" \
2310*62c56f98SSadaf Ebrahimi            -c "CN=Polarssl Test EC CA" \
2311*62c56f98SSadaf Ebrahimi            -s "key types: Opaque, Opaque" \
2312*62c56f98SSadaf Ebrahimi            -s "Ciphersuite is TLS-ECDH-ECDSA" \
2313*62c56f98SSadaf Ebrahimi            -S "error" \
2314*62c56f98SSadaf Ebrahimi            -C "error"
2315*62c56f98SSadaf Ebrahimi
2316*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2317*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2318*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_384
2319*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_CCM_C
2320*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_X509_REMOVE_INFO
2321*62c56f98SSadaf Ebrahimirun_test    "Opaque keys for server authentication: EC + RSA, force ECDHE-ECDSA" \
2322*62c56f98SSadaf Ebrahimi            "$P_SRV key_opaque=1 crt_file=data_files/server5.crt \
2323*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key key_opaque_algs=ecdsa-sign,none \
2324*62c56f98SSadaf Ebrahimi             crt_file2=data_files/server2-sha256.crt \
2325*62c56f98SSadaf Ebrahimi             key_file2=data_files/server2.key key_opaque_algs2=rsa-sign-pkcs1,none" \
2326*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-256-CCM" \
2327*62c56f98SSadaf Ebrahimi            0 \
2328*62c56f98SSadaf Ebrahimi            -c "Verifying peer X.509 certificate... ok" \
2329*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-ECDHE-ECDSA" \
2330*62c56f98SSadaf Ebrahimi            -c "CN=Polarssl Test EC CA" \
2331*62c56f98SSadaf Ebrahimi            -s "key types: Opaque, Opaque" \
2332*62c56f98SSadaf Ebrahimi            -s "Ciphersuite is TLS-ECDHE-ECDSA" \
2333*62c56f98SSadaf Ebrahimi            -S "error" \
2334*62c56f98SSadaf Ebrahimi            -C "error"
2335*62c56f98SSadaf Ebrahimi
2336*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
2337*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2338*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
2339*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
2340*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
2341*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 opaque key: no suitable algorithm found" \
2342*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 auth_mode=required key_opaque=1 key_opaque_algs=rsa-decrypt,none" \
2343*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 key_opaque=1 key_opaque_algs=rsa-decrypt,rsa-sign-pss" \
2344*62c56f98SSadaf Ebrahimi            1 \
2345*62c56f98SSadaf Ebrahimi            -c "key type: Opaque" \
2346*62c56f98SSadaf Ebrahimi            -s "key types: Opaque, Opaque" \
2347*62c56f98SSadaf Ebrahimi            -c "error" \
2348*62c56f98SSadaf Ebrahimi            -s "no suitable signature algorithm"
2349*62c56f98SSadaf Ebrahimi
2350*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
2351*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2352*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
2353*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
2354*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
2355*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 opaque key: suitable algorithm found" \
2356*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 auth_mode=required key_opaque=1 key_opaque_algs=rsa-decrypt,rsa-sign-pss" \
2357*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 key_opaque=1 key_opaque_algs=rsa-decrypt,rsa-sign-pss" \
2358*62c56f98SSadaf Ebrahimi            0 \
2359*62c56f98SSadaf Ebrahimi            -c "key type: Opaque" \
2360*62c56f98SSadaf Ebrahimi            -s "key types: Opaque, Opaque" \
2361*62c56f98SSadaf Ebrahimi            -C "error" \
2362*62c56f98SSadaf Ebrahimi            -S "error"
2363*62c56f98SSadaf Ebrahimi
2364*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
2365*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2366*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
2367*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
2368*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
2369*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 opaque key: first client sig alg not suitable" \
2370*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 auth_mode=required key_opaque=1 key_opaque_algs=rsa-sign-pss-sha512,none" \
2371*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 sig_algs=rsa_pss_rsae_sha256,rsa_pss_rsae_sha512" \
2372*62c56f98SSadaf Ebrahimi            0 \
2373*62c56f98SSadaf Ebrahimi            -s "key types: Opaque, Opaque" \
2374*62c56f98SSadaf Ebrahimi            -s "CertificateVerify signature failed with rsa_pss_rsae_sha256" \
2375*62c56f98SSadaf Ebrahimi            -s "CertificateVerify signature with rsa_pss_rsae_sha512" \
2376*62c56f98SSadaf Ebrahimi            -C "error" \
2377*62c56f98SSadaf Ebrahimi            -S "error" \
2378*62c56f98SSadaf Ebrahimi
2379*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
2380*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2381*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
2382*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
2383*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
2384*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 opaque key: 2 keys on server, suitable algorithm found" \
2385*62c56f98SSadaf Ebrahimi            "$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" \
2386*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 key_opaque=1 key_opaque_algs=rsa-decrypt,rsa-sign-pss" \
2387*62c56f98SSadaf Ebrahimi            0 \
2388*62c56f98SSadaf Ebrahimi            -c "key type: Opaque" \
2389*62c56f98SSadaf Ebrahimi            -s "key types: Opaque, Opaque" \
2390*62c56f98SSadaf Ebrahimi            -C "error" \
2391*62c56f98SSadaf Ebrahimi            -S "error" \
2392*62c56f98SSadaf Ebrahimi
2393*62c56f98SSadaf Ebrahimi# Test using a RSA opaque private key for server authentication
2394*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2395*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2396*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
2397*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
2398*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2399*62c56f98SSadaf Ebrahimirun_test    "Opaque key for server authentication: ECDHE-RSA" \
2400*62c56f98SSadaf Ebrahimi            "$P_SRV key_opaque=1 crt_file=data_files/server2-sha256.crt \
2401*62c56f98SSadaf Ebrahimi             key_file=data_files/server2.key key_opaque_algs=rsa-sign-pkcs1,none" \
2402*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12" \
2403*62c56f98SSadaf Ebrahimi            0 \
2404*62c56f98SSadaf Ebrahimi            -c "Verifying peer X.509 certificate... ok" \
2405*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-ECDHE-RSA" \
2406*62c56f98SSadaf Ebrahimi            -s "key types: Opaque, none" \
2407*62c56f98SSadaf Ebrahimi            -s "Ciphersuite is TLS-ECDHE-RSA" \
2408*62c56f98SSadaf Ebrahimi            -S "error" \
2409*62c56f98SSadaf Ebrahimi            -C "error"
2410*62c56f98SSadaf Ebrahimi
2411*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2412*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2413*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
2414*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2415*62c56f98SSadaf Ebrahimirun_test    "Opaque key for server authentication: DHE-RSA" \
2416*62c56f98SSadaf Ebrahimi            "$P_SRV key_opaque=1 crt_file=data_files/server2-sha256.crt \
2417*62c56f98SSadaf Ebrahimi             key_file=data_files/server2.key key_opaque_algs=rsa-sign-pkcs1,none" \
2418*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
2419*62c56f98SSadaf Ebrahimi            0 \
2420*62c56f98SSadaf Ebrahimi            -c "Verifying peer X.509 certificate... ok" \
2421*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-DHE-RSA" \
2422*62c56f98SSadaf Ebrahimi            -s "key types: Opaque, none" \
2423*62c56f98SSadaf Ebrahimi            -s "Ciphersuite is TLS-DHE-RSA" \
2424*62c56f98SSadaf Ebrahimi            -S "error" \
2425*62c56f98SSadaf Ebrahimi            -C "error"
2426*62c56f98SSadaf Ebrahimi
2427*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2428*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2429*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
2430*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2431*62c56f98SSadaf Ebrahimirun_test    "Opaque key for server authentication: RSA-PSK" \
2432*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=1 key_opaque=1 key_opaque_algs=rsa-decrypt,none \
2433*62c56f98SSadaf Ebrahimi             psk=abc123 psk_identity=foo" \
2434*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA256 \
2435*62c56f98SSadaf Ebrahimi             psk=abc123 psk_identity=foo" \
2436*62c56f98SSadaf Ebrahimi            0 \
2437*62c56f98SSadaf Ebrahimi            -c "Verifying peer X.509 certificate... ok" \
2438*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-RSA-PSK-" \
2439*62c56f98SSadaf Ebrahimi            -s "key types: Opaque, Opaque" \
2440*62c56f98SSadaf Ebrahimi            -s "Ciphersuite is TLS-RSA-PSK-" \
2441*62c56f98SSadaf Ebrahimi            -S "error" \
2442*62c56f98SSadaf Ebrahimi            -C "error"
2443*62c56f98SSadaf Ebrahimi
2444*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2445*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2446*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
2447*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2448*62c56f98SSadaf Ebrahimirun_test    "Opaque key for server authentication: RSA-" \
2449*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 key_opaque=1 key_opaque_algs=rsa-decrypt,none " \
2450*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA256" \
2451*62c56f98SSadaf Ebrahimi            0 \
2452*62c56f98SSadaf Ebrahimi            -c "Verifying peer X.509 certificate... ok" \
2453*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-RSA-" \
2454*62c56f98SSadaf Ebrahimi            -s "key types: Opaque, Opaque" \
2455*62c56f98SSadaf Ebrahimi            -s "Ciphersuite is TLS-RSA-" \
2456*62c56f98SSadaf Ebrahimi            -S "error" \
2457*62c56f98SSadaf Ebrahimi            -C "error"
2458*62c56f98SSadaf Ebrahimi
2459*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2460*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2461*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
2462*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2463*62c56f98SSadaf Ebrahimirun_test    "Opaque key for server authentication: DHE-RSA, PSS instead of PKCS1" \
2464*62c56f98SSadaf Ebrahimi            "$P_SRV auth_mode=required key_opaque=1 crt_file=data_files/server2-sha256.crt \
2465*62c56f98SSadaf Ebrahimi             key_file=data_files/server2.key key_opaque_algs=rsa-sign-pss,none debug_level=1" \
2466*62c56f98SSadaf Ebrahimi            "$P_CLI crt_file=data_files/server2-sha256.crt \
2467*62c56f98SSadaf Ebrahimi             key_file=data_files/server2.key force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
2468*62c56f98SSadaf Ebrahimi            1 \
2469*62c56f98SSadaf Ebrahimi            -s "key types: Opaque, none" \
2470*62c56f98SSadaf Ebrahimi            -s "got ciphersuites in common, but none of them usable" \
2471*62c56f98SSadaf Ebrahimi            -s "error" \
2472*62c56f98SSadaf Ebrahimi            -c "error"
2473*62c56f98SSadaf Ebrahimi
2474*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2475*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2476*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
2477*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2478*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_X509_REMOVE_INFO
2479*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
2480*62c56f98SSadaf Ebrahimirun_test    "Opaque keys for server authentication: RSA keys with different algs" \
2481*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 auth_mode=required key_opaque=1 crt_file=data_files/server2-sha256.crt \
2482*62c56f98SSadaf Ebrahimi             key_file=data_files/server2.key key_opaque_algs=rsa-sign-pss,none \
2483*62c56f98SSadaf Ebrahimi             crt_file2=data_files/server4.crt \
2484*62c56f98SSadaf Ebrahimi             key_file2=data_files/server4.key key_opaque_algs2=rsa-sign-pkcs1,none" \
2485*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12" \
2486*62c56f98SSadaf Ebrahimi            0 \
2487*62c56f98SSadaf Ebrahimi            -c "Verifying peer X.509 certificate... ok" \
2488*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-ECDHE-RSA" \
2489*62c56f98SSadaf Ebrahimi            -c "CN=Polarssl Test EC CA" \
2490*62c56f98SSadaf Ebrahimi            -s "key types: Opaque, Opaque" \
2491*62c56f98SSadaf Ebrahimi            -s "Ciphersuite is TLS-ECDHE-RSA" \
2492*62c56f98SSadaf Ebrahimi            -S "error" \
2493*62c56f98SSadaf Ebrahimi            -C "error"
2494*62c56f98SSadaf Ebrahimi
2495*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2496*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2497*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
2498*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_384
2499*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_GCM_C
2500*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_X509_REMOVE_INFO
2501*62c56f98SSadaf Ebrahimirun_test    "Opaque keys for server authentication: EC + RSA, force DHE-RSA" \
2502*62c56f98SSadaf Ebrahimi            "$P_SRV auth_mode=required key_opaque=1 crt_file=data_files/server5.crt \
2503*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key key_opaque_algs=ecdsa-sign,none \
2504*62c56f98SSadaf Ebrahimi             crt_file2=data_files/server4.crt \
2505*62c56f98SSadaf Ebrahimi             key_file2=data_files/server4.key key_opaque_algs2=rsa-sign-pkcs1,none" \
2506*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
2507*62c56f98SSadaf Ebrahimi            0 \
2508*62c56f98SSadaf Ebrahimi            -c "Verifying peer X.509 certificate... ok" \
2509*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-DHE-RSA" \
2510*62c56f98SSadaf Ebrahimi            -c "CN=Polarssl Test EC CA" \
2511*62c56f98SSadaf Ebrahimi            -s "key types: Opaque, Opaque" \
2512*62c56f98SSadaf Ebrahimi            -s "Ciphersuite is TLS-DHE-RSA" \
2513*62c56f98SSadaf Ebrahimi            -S "error" \
2514*62c56f98SSadaf Ebrahimi            -C "error"
2515*62c56f98SSadaf Ebrahimi
2516*62c56f98SSadaf Ebrahimi# Test using an EC opaque private key for client/server authentication
2517*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2518*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2519*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
2520*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2521*62c56f98SSadaf Ebrahimirun_test    "Opaque key for client/server authentication: ECDHE-ECDSA" \
2522*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 auth_mode=required key_opaque=1 crt_file=data_files/server5.crt \
2523*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key key_opaque_algs=ecdsa-sign,none" \
2524*62c56f98SSadaf Ebrahimi            "$P_CLI key_opaque=1 crt_file=data_files/server5.crt \
2525*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key key_opaque_algs=ecdsa-sign,none" \
2526*62c56f98SSadaf Ebrahimi            0 \
2527*62c56f98SSadaf Ebrahimi            -c "key type: Opaque" \
2528*62c56f98SSadaf Ebrahimi            -c "Verifying peer X.509 certificate... ok" \
2529*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-ECDHE-ECDSA" \
2530*62c56f98SSadaf Ebrahimi            -s "key types: Opaque, none" \
2531*62c56f98SSadaf Ebrahimi            -s "Verifying peer X.509 certificate... ok" \
2532*62c56f98SSadaf Ebrahimi            -s "Ciphersuite is TLS-ECDHE-ECDSA" \
2533*62c56f98SSadaf Ebrahimi            -S "error" \
2534*62c56f98SSadaf Ebrahimi            -C "error"
2535*62c56f98SSadaf Ebrahimi
2536*62c56f98SSadaf Ebrahimi# Test using a RSA opaque private key for client/server authentication
2537*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2538*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2539*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
2540*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2541*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
2542*62c56f98SSadaf Ebrahimirun_test    "Opaque key for client/server authentication: ECDHE-RSA" \
2543*62c56f98SSadaf Ebrahimi            "$P_SRV auth_mode=required key_opaque=1 crt_file=data_files/server2-sha256.crt \
2544*62c56f98SSadaf Ebrahimi             key_file=data_files/server2.key  key_opaque_algs=rsa-sign-pkcs1,none" \
2545*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 key_opaque=1 crt_file=data_files/server2-sha256.crt \
2546*62c56f98SSadaf Ebrahimi             key_file=data_files/server2.key  key_opaque_algs=rsa-sign-pkcs1,none" \
2547*62c56f98SSadaf Ebrahimi            0 \
2548*62c56f98SSadaf Ebrahimi            -c "key type: Opaque" \
2549*62c56f98SSadaf Ebrahimi            -c "Verifying peer X.509 certificate... ok" \
2550*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-ECDHE-RSA" \
2551*62c56f98SSadaf Ebrahimi            -s "key types: Opaque, none" \
2552*62c56f98SSadaf Ebrahimi            -s "Verifying peer X.509 certificate... ok" \
2553*62c56f98SSadaf Ebrahimi            -s "Ciphersuite is TLS-ECDHE-RSA" \
2554*62c56f98SSadaf Ebrahimi            -S "error" \
2555*62c56f98SSadaf Ebrahimi            -C "error"
2556*62c56f98SSadaf Ebrahimi
2557*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
2558*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_CRT_PARSE_C
2559*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
2560*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2561*62c56f98SSadaf Ebrahimirun_test    "Opaque key for client/server authentication: DHE-RSA" \
2562*62c56f98SSadaf Ebrahimi            "$P_SRV auth_mode=required key_opaque=1 crt_file=data_files/server2-sha256.crt \
2563*62c56f98SSadaf Ebrahimi             key_file=data_files/server2.key  key_opaque_algs=rsa-sign-pkcs1,none" \
2564*62c56f98SSadaf Ebrahimi            "$P_CLI key_opaque=1 crt_file=data_files/server2-sha256.crt \
2565*62c56f98SSadaf Ebrahimi             key_file=data_files/server2.key  key_opaque_algs=rsa-sign-pkcs1,none \
2566*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
2567*62c56f98SSadaf Ebrahimi            0 \
2568*62c56f98SSadaf Ebrahimi            -c "key type: Opaque" \
2569*62c56f98SSadaf Ebrahimi            -c "Verifying peer X.509 certificate... ok" \
2570*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-DHE-RSA" \
2571*62c56f98SSadaf Ebrahimi            -s "key types: Opaque, none" \
2572*62c56f98SSadaf Ebrahimi            -s "Verifying peer X.509 certificate... ok" \
2573*62c56f98SSadaf Ebrahimi            -s "Ciphersuite is TLS-DHE-RSA" \
2574*62c56f98SSadaf Ebrahimi            -S "error" \
2575*62c56f98SSadaf Ebrahimi            -C "error"
2576*62c56f98SSadaf Ebrahimi
2577*62c56f98SSadaf Ebrahimi
2578*62c56f98SSadaf Ebrahimi# Test ciphersuites which we expect to be fully supported by PSA Crypto
2579*62c56f98SSadaf Ebrahimi# and check that we don't fall back to Mbed TLS' internal crypto primitives.
2580*62c56f98SSadaf Ebrahimirun_test_psa TLS-ECDHE-ECDSA-WITH-AES-128-CCM
2581*62c56f98SSadaf Ebrahimirun_test_psa TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8
2582*62c56f98SSadaf Ebrahimirun_test_psa TLS-ECDHE-ECDSA-WITH-AES-256-CCM
2583*62c56f98SSadaf Ebrahimirun_test_psa TLS-ECDHE-ECDSA-WITH-AES-256-CCM-8
2584*62c56f98SSadaf Ebrahimirun_test_psa TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
2585*62c56f98SSadaf Ebrahimirun_test_psa TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384
2586*62c56f98SSadaf Ebrahimirun_test_psa TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA
2587*62c56f98SSadaf Ebrahimirun_test_psa TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256
2588*62c56f98SSadaf Ebrahimirun_test_psa TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384
2589*62c56f98SSadaf Ebrahimi
2590*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_DP_SECP521R1_ENABLED
2591*62c56f98SSadaf Ebrahimirun_test_psa_force_curve "secp521r1"
2592*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_DP_BP512R1_ENABLED
2593*62c56f98SSadaf Ebrahimirun_test_psa_force_curve "brainpoolP512r1"
2594*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_DP_SECP384R1_ENABLED
2595*62c56f98SSadaf Ebrahimirun_test_psa_force_curve "secp384r1"
2596*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_DP_BP384R1_ENABLED
2597*62c56f98SSadaf Ebrahimirun_test_psa_force_curve "brainpoolP384r1"
2598*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
2599*62c56f98SSadaf Ebrahimirun_test_psa_force_curve "secp256r1"
2600*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_DP_SECP256K1_ENABLED
2601*62c56f98SSadaf Ebrahimirun_test_psa_force_curve "secp256k1"
2602*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_DP_BP256R1_ENABLED
2603*62c56f98SSadaf Ebrahimirun_test_psa_force_curve "brainpoolP256r1"
2604*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_DP_SECP224R1_ENABLED
2605*62c56f98SSadaf Ebrahimirun_test_psa_force_curve "secp224r1"
2606*62c56f98SSadaf Ebrahimi## SECP224K1 is buggy via the PSA API
2607*62c56f98SSadaf Ebrahimi## (https://github.com/Mbed-TLS/mbedtls/issues/3541),
2608*62c56f98SSadaf Ebrahimi## so it is disabled in PSA even when it's enabled in Mbed TLS.
2609*62c56f98SSadaf Ebrahimi## The proper dependency would be on PSA_WANT_ECC_SECP_K1_224 but
2610*62c56f98SSadaf Ebrahimi## dependencies on PSA symbols in ssl-opt.sh are not implemented yet.
2611*62c56f98SSadaf Ebrahimi#requires_config_enabled MBEDTLS_ECP_DP_SECP224K1_ENABLED
2612*62c56f98SSadaf Ebrahimi#run_test_psa_force_curve "secp224k1"
2613*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_DP_SECP192R1_ENABLED
2614*62c56f98SSadaf Ebrahimirun_test_psa_force_curve "secp192r1"
2615*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_DP_SECP192K1_ENABLED
2616*62c56f98SSadaf Ebrahimirun_test_psa_force_curve "secp192k1"
2617*62c56f98SSadaf Ebrahimi
2618*62c56f98SSadaf Ebrahimi# Test current time in ServerHello
2619*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_HAVE_TIME
2620*62c56f98SSadaf Ebrahimirun_test    "ServerHello contains gmt_unix_time" \
2621*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3" \
2622*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3" \
2623*62c56f98SSadaf Ebrahimi            0 \
2624*62c56f98SSadaf Ebrahimi            -f "check_server_hello_time" \
2625*62c56f98SSadaf Ebrahimi            -F "check_server_hello_time"
2626*62c56f98SSadaf Ebrahimi
2627*62c56f98SSadaf Ebrahimi# Test for uniqueness of IVs in AEAD ciphersuites
2628*62c56f98SSadaf Ebrahimirun_test    "Unique IV in GCM" \
2629*62c56f98SSadaf Ebrahimi            "$P_SRV exchanges=20 debug_level=4" \
2630*62c56f98SSadaf Ebrahimi            "$P_CLI exchanges=20 debug_level=4 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384" \
2631*62c56f98SSadaf Ebrahimi            0 \
2632*62c56f98SSadaf Ebrahimi            -u "IV used" \
2633*62c56f98SSadaf Ebrahimi            -U "IV used"
2634*62c56f98SSadaf Ebrahimi
2635*62c56f98SSadaf Ebrahimi# Test for correctness of sent single supported algorithm
2636*62c56f98SSadaf Ebrahimirequires_any_configs_enabled "MBEDTLS_ECP_DP_SECP256R1_ENABLED \
2637*62c56f98SSadaf Ebrahimi                              PSA_WANT_ECC_SECP_R1_256"
2638*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
2639*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
2640*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
2641*62c56f98SSadaf Ebrahimirequires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
2642*62c56f98SSadaf Ebrahimirequires_pk_alg "ECDSA"
2643*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2644*62c56f98SSadaf Ebrahimirun_test    "Single supported algorithm sending: mbedtls client" \
2645*62c56f98SSadaf Ebrahimi            "$P_SRV sig_algs=ecdsa_secp256r1_sha256 auth_mode=required" \
2646*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 sig_algs=ecdsa_secp256r1_sha256 debug_level=3" \
2647*62c56f98SSadaf Ebrahimi            0 \
2648*62c56f98SSadaf Ebrahimi            -c "Supported Signature Algorithm found: 04 03"
2649*62c56f98SSadaf Ebrahimi
2650*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
2651*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
2652*62c56f98SSadaf Ebrahimirequires_any_configs_enabled "MBEDTLS_ECP_DP_SECP256R1_ENABLED \
2653*62c56f98SSadaf Ebrahimi                              PSA_WANT_ECC_SECP_R1_256"
2654*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
2655*62c56f98SSadaf Ebrahimirun_test    "Single supported algorithm sending: openssl client" \
2656*62c56f98SSadaf Ebrahimi            "$P_SRV sig_algs=ecdsa_secp256r1_sha256 auth_mode=required" \
2657*62c56f98SSadaf Ebrahimi            "$O_CLI -cert data_files/server6.crt \
2658*62c56f98SSadaf Ebrahimi                    -key data_files/server6.key" \
2659*62c56f98SSadaf Ebrahimi            0
2660*62c56f98SSadaf Ebrahimi
2661*62c56f98SSadaf Ebrahimi# Tests for certificate verification callback
2662*62c56f98SSadaf Ebrahimirun_test    "Configuration-specific CRT verification callback" \
2663*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3" \
2664*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 context_crt_cb=0 debug_level=3" \
2665*62c56f98SSadaf Ebrahimi            0 \
2666*62c56f98SSadaf Ebrahimi            -S "error" \
2667*62c56f98SSadaf Ebrahimi            -c "Verify requested for " \
2668*62c56f98SSadaf Ebrahimi            -c "Use configuration-specific verification callback" \
2669*62c56f98SSadaf Ebrahimi            -C "Use context-specific verification callback" \
2670*62c56f98SSadaf Ebrahimi            -C "error"
2671*62c56f98SSadaf Ebrahimi
2672*62c56f98SSadaf Ebrahimirun_test    "Context-specific CRT verification callback" \
2673*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3" \
2674*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 context_crt_cb=1 debug_level=3" \
2675*62c56f98SSadaf Ebrahimi            0 \
2676*62c56f98SSadaf Ebrahimi            -S "error" \
2677*62c56f98SSadaf Ebrahimi            -c "Verify requested for " \
2678*62c56f98SSadaf Ebrahimi            -c "Use context-specific verification callback" \
2679*62c56f98SSadaf Ebrahimi            -C "Use configuration-specific verification callback" \
2680*62c56f98SSadaf Ebrahimi            -C "error"
2681*62c56f98SSadaf Ebrahimi
2682*62c56f98SSadaf Ebrahimi# Tests for SHA-1 support
2683*62c56f98SSadaf Ebrahimirun_test    "SHA-1 forbidden by default in server certificate" \
2684*62c56f98SSadaf Ebrahimi            "$P_SRV key_file=data_files/server2.key crt_file=data_files/server2.crt" \
2685*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=2 force_version=tls12 allow_sha1=0" \
2686*62c56f98SSadaf Ebrahimi            1 \
2687*62c56f98SSadaf Ebrahimi            -c "The certificate is signed with an unacceptable hash"
2688*62c56f98SSadaf Ebrahimi
2689*62c56f98SSadaf Ebrahimirun_test    "SHA-1 explicitly allowed in server certificate" \
2690*62c56f98SSadaf Ebrahimi            "$P_SRV key_file=data_files/server2.key crt_file=data_files/server2.crt" \
2691*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 allow_sha1=1" \
2692*62c56f98SSadaf Ebrahimi            0
2693*62c56f98SSadaf Ebrahimi
2694*62c56f98SSadaf Ebrahimirun_test    "SHA-256 allowed by default in server certificate" \
2695*62c56f98SSadaf Ebrahimi            "$P_SRV key_file=data_files/server2.key crt_file=data_files/server2-sha256.crt" \
2696*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 allow_sha1=0" \
2697*62c56f98SSadaf Ebrahimi            0
2698*62c56f98SSadaf Ebrahimi
2699*62c56f98SSadaf Ebrahimirun_test    "SHA-1 forbidden by default in client certificate" \
2700*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 auth_mode=required allow_sha1=0" \
2701*62c56f98SSadaf Ebrahimi            "$P_CLI key_file=data_files/cli-rsa.key crt_file=data_files/cli-rsa-sha1.crt" \
2702*62c56f98SSadaf Ebrahimi            1 \
2703*62c56f98SSadaf Ebrahimi            -s "The certificate is signed with an unacceptable hash"
2704*62c56f98SSadaf Ebrahimi
2705*62c56f98SSadaf Ebrahimirun_test    "SHA-1 explicitly allowed in client certificate" \
2706*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 auth_mode=required allow_sha1=1" \
2707*62c56f98SSadaf Ebrahimi            "$P_CLI key_file=data_files/cli-rsa.key crt_file=data_files/cli-rsa-sha1.crt" \
2708*62c56f98SSadaf Ebrahimi            0
2709*62c56f98SSadaf Ebrahimi
2710*62c56f98SSadaf Ebrahimirun_test    "SHA-256 allowed by default in client certificate" \
2711*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 auth_mode=required allow_sha1=0" \
2712*62c56f98SSadaf Ebrahimi            "$P_CLI key_file=data_files/cli-rsa.key crt_file=data_files/cli-rsa-sha256.crt" \
2713*62c56f98SSadaf Ebrahimi            0
2714*62c56f98SSadaf Ebrahimi
2715*62c56f98SSadaf Ebrahimi# Tests for datagram packing
2716*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
2717*62c56f98SSadaf Ebrahimirun_test    "DTLS: multiple records in same datagram, client and server" \
2718*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 dgram_packing=1 debug_level=2" \
2719*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 dgram_packing=1 debug_level=2" \
2720*62c56f98SSadaf Ebrahimi            0 \
2721*62c56f98SSadaf Ebrahimi            -c "next record in same datagram" \
2722*62c56f98SSadaf Ebrahimi            -s "next record in same datagram"
2723*62c56f98SSadaf Ebrahimi
2724*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
2725*62c56f98SSadaf Ebrahimirun_test    "DTLS: multiple records in same datagram, client only" \
2726*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \
2727*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 dgram_packing=1 debug_level=2" \
2728*62c56f98SSadaf Ebrahimi            0 \
2729*62c56f98SSadaf Ebrahimi            -s "next record in same datagram" \
2730*62c56f98SSadaf Ebrahimi            -C "next record in same datagram"
2731*62c56f98SSadaf Ebrahimi
2732*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
2733*62c56f98SSadaf Ebrahimirun_test    "DTLS: multiple records in same datagram, server only" \
2734*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 dgram_packing=1 debug_level=2" \
2735*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \
2736*62c56f98SSadaf Ebrahimi            0 \
2737*62c56f98SSadaf Ebrahimi            -S "next record in same datagram" \
2738*62c56f98SSadaf Ebrahimi            -c "next record in same datagram"
2739*62c56f98SSadaf Ebrahimi
2740*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
2741*62c56f98SSadaf Ebrahimirun_test    "DTLS: multiple records in same datagram, neither client nor server" \
2742*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \
2743*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \
2744*62c56f98SSadaf Ebrahimi            0 \
2745*62c56f98SSadaf Ebrahimi            -S "next record in same datagram" \
2746*62c56f98SSadaf Ebrahimi            -C "next record in same datagram"
2747*62c56f98SSadaf Ebrahimi
2748*62c56f98SSadaf Ebrahimi# Tests for Context serialization
2749*62c56f98SSadaf Ebrahimi
2750*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2751*62c56f98SSadaf Ebrahimirun_test    "Context serialization, client serializes, CCM" \
2752*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 serialize=0 exchanges=2" \
2753*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2754*62c56f98SSadaf Ebrahimi            0 \
2755*62c56f98SSadaf Ebrahimi            -c "Deserializing connection..." \
2756*62c56f98SSadaf Ebrahimi            -S "Deserializing connection..."
2757*62c56f98SSadaf Ebrahimi
2758*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2759*62c56f98SSadaf Ebrahimirun_test    "Context serialization, client serializes, ChaChaPoly" \
2760*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 serialize=0 exchanges=2" \
2761*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2762*62c56f98SSadaf Ebrahimi            0 \
2763*62c56f98SSadaf Ebrahimi            -c "Deserializing connection..." \
2764*62c56f98SSadaf Ebrahimi            -S "Deserializing connection..."
2765*62c56f98SSadaf Ebrahimi
2766*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2767*62c56f98SSadaf Ebrahimirun_test    "Context serialization, client serializes, GCM" \
2768*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 serialize=0 exchanges=2" \
2769*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256" \
2770*62c56f98SSadaf Ebrahimi            0 \
2771*62c56f98SSadaf Ebrahimi            -c "Deserializing connection..." \
2772*62c56f98SSadaf Ebrahimi            -S "Deserializing connection..."
2773*62c56f98SSadaf Ebrahimi
2774*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
2775*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2776*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2777*62c56f98SSadaf Ebrahimirun_test    "Context serialization, client serializes, with CID" \
2778*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 serialize=0 exchanges=2 cid=1 cid_val=dead" \
2779*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 serialize=1 exchanges=2 cid=1 cid_val=beef" \
2780*62c56f98SSadaf Ebrahimi            0 \
2781*62c56f98SSadaf Ebrahimi            -c "Deserializing connection..." \
2782*62c56f98SSadaf Ebrahimi            -S "Deserializing connection..."
2783*62c56f98SSadaf Ebrahimi
2784*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2785*62c56f98SSadaf Ebrahimirun_test    "Context serialization, server serializes, CCM" \
2786*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 serialize=1 exchanges=2" \
2787*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2788*62c56f98SSadaf Ebrahimi            0 \
2789*62c56f98SSadaf Ebrahimi            -C "Deserializing connection..." \
2790*62c56f98SSadaf Ebrahimi            -s "Deserializing connection..."
2791*62c56f98SSadaf Ebrahimi
2792*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2793*62c56f98SSadaf Ebrahimirun_test    "Context serialization, server serializes, ChaChaPoly" \
2794*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 serialize=1 exchanges=2" \
2795*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2796*62c56f98SSadaf Ebrahimi            0 \
2797*62c56f98SSadaf Ebrahimi            -C "Deserializing connection..." \
2798*62c56f98SSadaf Ebrahimi            -s "Deserializing connection..."
2799*62c56f98SSadaf Ebrahimi
2800*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2801*62c56f98SSadaf Ebrahimirun_test    "Context serialization, server serializes, GCM" \
2802*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 serialize=1 exchanges=2" \
2803*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256" \
2804*62c56f98SSadaf Ebrahimi            0 \
2805*62c56f98SSadaf Ebrahimi            -C "Deserializing connection..." \
2806*62c56f98SSadaf Ebrahimi            -s "Deserializing connection..."
2807*62c56f98SSadaf Ebrahimi
2808*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
2809*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2810*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2811*62c56f98SSadaf Ebrahimirun_test    "Context serialization, server serializes, with CID" \
2812*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 serialize=1 exchanges=2 cid=1 cid_val=dead" \
2813*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 serialize=0 exchanges=2 cid=1 cid_val=beef" \
2814*62c56f98SSadaf Ebrahimi            0 \
2815*62c56f98SSadaf Ebrahimi            -C "Deserializing connection..." \
2816*62c56f98SSadaf Ebrahimi            -s "Deserializing connection..."
2817*62c56f98SSadaf Ebrahimi
2818*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2819*62c56f98SSadaf Ebrahimirun_test    "Context serialization, both serialize, CCM" \
2820*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 serialize=1 exchanges=2" \
2821*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2822*62c56f98SSadaf Ebrahimi            0 \
2823*62c56f98SSadaf Ebrahimi            -c "Deserializing connection..." \
2824*62c56f98SSadaf Ebrahimi            -s "Deserializing connection..."
2825*62c56f98SSadaf Ebrahimi
2826*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2827*62c56f98SSadaf Ebrahimirun_test    "Context serialization, both serialize, ChaChaPoly" \
2828*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 serialize=1 exchanges=2" \
2829*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2830*62c56f98SSadaf Ebrahimi            0 \
2831*62c56f98SSadaf Ebrahimi            -c "Deserializing connection..." \
2832*62c56f98SSadaf Ebrahimi            -s "Deserializing connection..."
2833*62c56f98SSadaf Ebrahimi
2834*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2835*62c56f98SSadaf Ebrahimirun_test    "Context serialization, both serialize, GCM" \
2836*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 serialize=1 exchanges=2" \
2837*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 serialize=1 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256" \
2838*62c56f98SSadaf Ebrahimi            0 \
2839*62c56f98SSadaf Ebrahimi            -c "Deserializing connection..." \
2840*62c56f98SSadaf Ebrahimi            -s "Deserializing connection..."
2841*62c56f98SSadaf Ebrahimi
2842*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
2843*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2844*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2845*62c56f98SSadaf Ebrahimirun_test    "Context serialization, both serialize, with CID" \
2846*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 serialize=1 exchanges=2 cid=1 cid_val=dead" \
2847*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 serialize=1 exchanges=2 cid=1 cid_val=beef" \
2848*62c56f98SSadaf Ebrahimi            0 \
2849*62c56f98SSadaf Ebrahimi            -c "Deserializing connection..." \
2850*62c56f98SSadaf Ebrahimi            -s "Deserializing connection..."
2851*62c56f98SSadaf Ebrahimi
2852*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2853*62c56f98SSadaf Ebrahimirun_test    "Context serialization, re-init, client serializes, CCM" \
2854*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 serialize=0 exchanges=2" \
2855*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2856*62c56f98SSadaf Ebrahimi            0 \
2857*62c56f98SSadaf Ebrahimi            -c "Deserializing connection..." \
2858*62c56f98SSadaf Ebrahimi            -S "Deserializing connection..."
2859*62c56f98SSadaf Ebrahimi
2860*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
2861*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2862*62c56f98SSadaf Ebrahimirun_test    "Context serialization, re-init, client serializes, ChaChaPoly" \
2863*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 serialize=0 exchanges=2" \
2864*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2865*62c56f98SSadaf Ebrahimi            0 \
2866*62c56f98SSadaf Ebrahimi            -c "Deserializing connection..." \
2867*62c56f98SSadaf Ebrahimi            -S "Deserializing connection..."
2868*62c56f98SSadaf Ebrahimi
2869*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2870*62c56f98SSadaf Ebrahimirun_test    "Context serialization, re-init, client serializes, GCM" \
2871*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 serialize=0 exchanges=2" \
2872*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256" \
2873*62c56f98SSadaf Ebrahimi            0 \
2874*62c56f98SSadaf Ebrahimi            -c "Deserializing connection..." \
2875*62c56f98SSadaf Ebrahimi            -S "Deserializing connection..."
2876*62c56f98SSadaf Ebrahimi
2877*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
2878*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2879*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2880*62c56f98SSadaf Ebrahimirun_test    "Context serialization, re-init, client serializes, with CID" \
2881*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 serialize=0 exchanges=2 cid=1 cid_val=dead" \
2882*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 serialize=2 exchanges=2 cid=1 cid_val=beef" \
2883*62c56f98SSadaf Ebrahimi            0 \
2884*62c56f98SSadaf Ebrahimi            -c "Deserializing connection..." \
2885*62c56f98SSadaf Ebrahimi            -S "Deserializing connection..."
2886*62c56f98SSadaf Ebrahimi
2887*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2888*62c56f98SSadaf Ebrahimirun_test    "Context serialization, re-init, server serializes, CCM" \
2889*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 serialize=2 exchanges=2" \
2890*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2891*62c56f98SSadaf Ebrahimi            0 \
2892*62c56f98SSadaf Ebrahimi            -C "Deserializing connection..." \
2893*62c56f98SSadaf Ebrahimi            -s "Deserializing connection..."
2894*62c56f98SSadaf Ebrahimi
2895*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2896*62c56f98SSadaf Ebrahimirun_test    "Context serialization, re-init, server serializes, ChaChaPoly" \
2897*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 serialize=2 exchanges=2" \
2898*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2899*62c56f98SSadaf Ebrahimi            0 \
2900*62c56f98SSadaf Ebrahimi            -C "Deserializing connection..." \
2901*62c56f98SSadaf Ebrahimi            -s "Deserializing connection..."
2902*62c56f98SSadaf Ebrahimi
2903*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2904*62c56f98SSadaf Ebrahimirun_test    "Context serialization, re-init, server serializes, GCM" \
2905*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 serialize=2 exchanges=2" \
2906*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 serialize=0 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2907*62c56f98SSadaf Ebrahimi            0 \
2908*62c56f98SSadaf Ebrahimi            -C "Deserializing connection..." \
2909*62c56f98SSadaf Ebrahimi            -s "Deserializing connection..."
2910*62c56f98SSadaf Ebrahimi
2911*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
2912*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2913*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2914*62c56f98SSadaf Ebrahimirun_test    "Context serialization, re-init, server serializes, with CID" \
2915*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 serialize=2 exchanges=2 cid=1 cid_val=dead" \
2916*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 serialize=0 exchanges=2 cid=1 cid_val=beef" \
2917*62c56f98SSadaf Ebrahimi            0 \
2918*62c56f98SSadaf Ebrahimi            -C "Deserializing connection..." \
2919*62c56f98SSadaf Ebrahimi            -s "Deserializing connection..."
2920*62c56f98SSadaf Ebrahimi
2921*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2922*62c56f98SSadaf Ebrahimirun_test    "Context serialization, re-init, both serialize, CCM" \
2923*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 serialize=2 exchanges=2" \
2924*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
2925*62c56f98SSadaf Ebrahimi            0 \
2926*62c56f98SSadaf Ebrahimi            -c "Deserializing connection..." \
2927*62c56f98SSadaf Ebrahimi            -s "Deserializing connection..."
2928*62c56f98SSadaf Ebrahimi
2929*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2930*62c56f98SSadaf Ebrahimirun_test    "Context serialization, re-init, both serialize, ChaChaPoly" \
2931*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 serialize=2 exchanges=2" \
2932*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2933*62c56f98SSadaf Ebrahimi            0 \
2934*62c56f98SSadaf Ebrahimi            -c "Deserializing connection..." \
2935*62c56f98SSadaf Ebrahimi            -s "Deserializing connection..."
2936*62c56f98SSadaf Ebrahimi
2937*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2938*62c56f98SSadaf Ebrahimirun_test    "Context serialization, re-init, both serialize, GCM" \
2939*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 serialize=2 exchanges=2" \
2940*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 serialize=2 exchanges=2 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256" \
2941*62c56f98SSadaf Ebrahimi            0 \
2942*62c56f98SSadaf Ebrahimi            -c "Deserializing connection..." \
2943*62c56f98SSadaf Ebrahimi            -s "Deserializing connection..."
2944*62c56f98SSadaf Ebrahimi
2945*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
2946*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2947*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2948*62c56f98SSadaf Ebrahimirun_test    "Context serialization, re-init, both serialize, with CID" \
2949*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 serialize=2 exchanges=2 cid=1 cid_val=dead" \
2950*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 serialize=2 exchanges=2 cid=1 cid_val=beef" \
2951*62c56f98SSadaf Ebrahimi            0 \
2952*62c56f98SSadaf Ebrahimi            -c "Deserializing connection..." \
2953*62c56f98SSadaf Ebrahimi            -s "Deserializing connection..."
2954*62c56f98SSadaf Ebrahimi
2955*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
2956*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CONTEXT_SERIALIZATION
2957*62c56f98SSadaf Ebrahimirun_test    "Saving the serialized context to a file" \
2958*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 serialize=1 context_file=context_srv.txt" \
2959*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 serialize=1 context_file=context_cli.txt" \
2960*62c56f98SSadaf Ebrahimi            0 \
2961*62c56f98SSadaf Ebrahimi            -s "Save serialized context to a file... ok" \
2962*62c56f98SSadaf Ebrahimi            -c "Save serialized context to a file... ok"
2963*62c56f98SSadaf Ebrahimirm -f context_srv.txt
2964*62c56f98SSadaf Ebrahimirm -f context_cli.txt
2965*62c56f98SSadaf Ebrahimi
2966*62c56f98SSadaf Ebrahimi# Tests for DTLS Connection ID extension
2967*62c56f98SSadaf Ebrahimi
2968*62c56f98SSadaf Ebrahimi# So far, the CID API isn't implemented, so we can't
2969*62c56f98SSadaf Ebrahimi# grep for output witnessing its use. This needs to be
2970*62c56f98SSadaf Ebrahimi# changed once the CID extension is implemented.
2971*62c56f98SSadaf Ebrahimi
2972*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
2973*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2974*62c56f98SSadaf Ebrahimirun_test    "Connection ID: Cli enabled, Srv disabled" \
2975*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 cid=0" \
2976*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
2977*62c56f98SSadaf Ebrahimi            0 \
2978*62c56f98SSadaf Ebrahimi            -s "Disable use of CID extension." \
2979*62c56f98SSadaf Ebrahimi            -s "found CID extension"           \
2980*62c56f98SSadaf Ebrahimi            -s "Client sent CID extension, but CID disabled" \
2981*62c56f98SSadaf Ebrahimi            -c "Enable use of CID extension."  \
2982*62c56f98SSadaf Ebrahimi            -c "client hello, adding CID extension" \
2983*62c56f98SSadaf Ebrahimi            -S "server hello, adding CID extension" \
2984*62c56f98SSadaf Ebrahimi            -C "found CID extension" \
2985*62c56f98SSadaf Ebrahimi            -S "Copy CIDs into SSL transform" \
2986*62c56f98SSadaf Ebrahimi            -C "Copy CIDs into SSL transform" \
2987*62c56f98SSadaf Ebrahimi            -c "Use of Connection ID was rejected by the server"
2988*62c56f98SSadaf Ebrahimi
2989*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
2990*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
2991*62c56f98SSadaf Ebrahimirun_test    "Connection ID: Cli disabled, Srv enabled" \
2992*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
2993*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 cid=0" \
2994*62c56f98SSadaf Ebrahimi            0 \
2995*62c56f98SSadaf Ebrahimi            -c "Disable use of CID extension." \
2996*62c56f98SSadaf Ebrahimi            -C "client hello, adding CID extension"           \
2997*62c56f98SSadaf Ebrahimi            -S "found CID extension"           \
2998*62c56f98SSadaf Ebrahimi            -s "Enable use of CID extension." \
2999*62c56f98SSadaf Ebrahimi            -S "server hello, adding CID extension" \
3000*62c56f98SSadaf Ebrahimi            -C "found CID extension" \
3001*62c56f98SSadaf Ebrahimi            -S "Copy CIDs into SSL transform" \
3002*62c56f98SSadaf Ebrahimi            -C "Copy CIDs into SSL transform"  \
3003*62c56f98SSadaf Ebrahimi            -s "Use of Connection ID was not offered by client"
3004*62c56f98SSadaf Ebrahimi
3005*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3006*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3007*62c56f98SSadaf Ebrahimirun_test    "Connection ID: Cli+Srv enabled, Cli+Srv CID nonempty" \
3008*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead" \
3009*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef" \
3010*62c56f98SSadaf Ebrahimi            0 \
3011*62c56f98SSadaf Ebrahimi            -c "Enable use of CID extension." \
3012*62c56f98SSadaf Ebrahimi            -s "Enable use of CID extension." \
3013*62c56f98SSadaf Ebrahimi            -c "client hello, adding CID extension" \
3014*62c56f98SSadaf Ebrahimi            -s "found CID extension"           \
3015*62c56f98SSadaf Ebrahimi            -s "Use of CID extension negotiated" \
3016*62c56f98SSadaf Ebrahimi            -s "server hello, adding CID extension" \
3017*62c56f98SSadaf Ebrahimi            -c "found CID extension" \
3018*62c56f98SSadaf Ebrahimi            -c "Use of CID extension negotiated" \
3019*62c56f98SSadaf Ebrahimi            -s "Copy CIDs into SSL transform" \
3020*62c56f98SSadaf Ebrahimi            -c "Copy CIDs into SSL transform" \
3021*62c56f98SSadaf Ebrahimi            -c "Peer CID (length 2 Bytes): de ad" \
3022*62c56f98SSadaf Ebrahimi            -s "Peer CID (length 2 Bytes): be ef" \
3023*62c56f98SSadaf Ebrahimi            -s "Use of Connection ID has been negotiated" \
3024*62c56f98SSadaf Ebrahimi            -c "Use of Connection ID has been negotiated"
3025*62c56f98SSadaf Ebrahimi
3026*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3027*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3028*62c56f98SSadaf Ebrahimirun_test    "Connection ID, 3D: Cli+Srv enabled, Cli+Srv CID nonempty" \
3029*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=5 delay=5 duplicate=5 bad_cid=1" \
3030*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 cid=1 dgram_packing=0 cid_val=dead" \
3031*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 cid=1 dgram_packing=0 cid_val=beef" \
3032*62c56f98SSadaf Ebrahimi            0 \
3033*62c56f98SSadaf Ebrahimi            -c "Enable use of CID extension." \
3034*62c56f98SSadaf Ebrahimi            -s "Enable use of CID extension." \
3035*62c56f98SSadaf Ebrahimi            -c "client hello, adding CID extension" \
3036*62c56f98SSadaf Ebrahimi            -s "found CID extension"           \
3037*62c56f98SSadaf Ebrahimi            -s "Use of CID extension negotiated" \
3038*62c56f98SSadaf Ebrahimi            -s "server hello, adding CID extension" \
3039*62c56f98SSadaf Ebrahimi            -c "found CID extension" \
3040*62c56f98SSadaf Ebrahimi            -c "Use of CID extension negotiated" \
3041*62c56f98SSadaf Ebrahimi            -s "Copy CIDs into SSL transform" \
3042*62c56f98SSadaf Ebrahimi            -c "Copy CIDs into SSL transform" \
3043*62c56f98SSadaf Ebrahimi            -c "Peer CID (length 2 Bytes): de ad" \
3044*62c56f98SSadaf Ebrahimi            -s "Peer CID (length 2 Bytes): be ef" \
3045*62c56f98SSadaf Ebrahimi            -s "Use of Connection ID has been negotiated" \
3046*62c56f98SSadaf Ebrahimi            -c "Use of Connection ID has been negotiated" \
3047*62c56f98SSadaf Ebrahimi            -c "ignoring unexpected CID" \
3048*62c56f98SSadaf Ebrahimi            -s "ignoring unexpected CID"
3049*62c56f98SSadaf Ebrahimi
3050*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3051*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3052*62c56f98SSadaf Ebrahimirun_test    "Connection ID, MTU: Cli+Srv enabled, Cli+Srv CID nonempty" \
3053*62c56f98SSadaf Ebrahimi            -p "$P_PXY mtu=800" \
3054*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 mtu=800 dtls=1 cid=1 cid_val=dead" \
3055*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 mtu=800 dtls=1 cid=1 cid_val=beef" \
3056*62c56f98SSadaf Ebrahimi            0 \
3057*62c56f98SSadaf Ebrahimi            -c "Enable use of CID extension." \
3058*62c56f98SSadaf Ebrahimi            -s "Enable use of CID extension." \
3059*62c56f98SSadaf Ebrahimi            -c "client hello, adding CID extension" \
3060*62c56f98SSadaf Ebrahimi            -s "found CID extension"           \
3061*62c56f98SSadaf Ebrahimi            -s "Use of CID extension negotiated" \
3062*62c56f98SSadaf Ebrahimi            -s "server hello, adding CID extension" \
3063*62c56f98SSadaf Ebrahimi            -c "found CID extension" \
3064*62c56f98SSadaf Ebrahimi            -c "Use of CID extension negotiated" \
3065*62c56f98SSadaf Ebrahimi            -s "Copy CIDs into SSL transform" \
3066*62c56f98SSadaf Ebrahimi            -c "Copy CIDs into SSL transform" \
3067*62c56f98SSadaf Ebrahimi            -c "Peer CID (length 2 Bytes): de ad" \
3068*62c56f98SSadaf Ebrahimi            -s "Peer CID (length 2 Bytes): be ef" \
3069*62c56f98SSadaf Ebrahimi            -s "Use of Connection ID has been negotiated" \
3070*62c56f98SSadaf Ebrahimi            -c "Use of Connection ID has been negotiated"
3071*62c56f98SSadaf Ebrahimi
3072*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3073*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3074*62c56f98SSadaf Ebrahimirun_test    "Connection ID, 3D+MTU: Cli+Srv enabled, Cli+Srv CID nonempty" \
3075*62c56f98SSadaf Ebrahimi            -p "$P_PXY mtu=800 drop=5 delay=5 duplicate=5 bad_cid=1" \
3076*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 mtu=800 dtls=1 cid=1 cid_val=dead" \
3077*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 mtu=800 dtls=1 cid=1 cid_val=beef" \
3078*62c56f98SSadaf Ebrahimi            0 \
3079*62c56f98SSadaf Ebrahimi            -c "Enable use of CID extension." \
3080*62c56f98SSadaf Ebrahimi            -s "Enable use of CID extension." \
3081*62c56f98SSadaf Ebrahimi            -c "client hello, adding CID extension" \
3082*62c56f98SSadaf Ebrahimi            -s "found CID extension"           \
3083*62c56f98SSadaf Ebrahimi            -s "Use of CID extension negotiated" \
3084*62c56f98SSadaf Ebrahimi            -s "server hello, adding CID extension" \
3085*62c56f98SSadaf Ebrahimi            -c "found CID extension" \
3086*62c56f98SSadaf Ebrahimi            -c "Use of CID extension negotiated" \
3087*62c56f98SSadaf Ebrahimi            -s "Copy CIDs into SSL transform" \
3088*62c56f98SSadaf Ebrahimi            -c "Copy CIDs into SSL transform" \
3089*62c56f98SSadaf Ebrahimi            -c "Peer CID (length 2 Bytes): de ad" \
3090*62c56f98SSadaf Ebrahimi            -s "Peer CID (length 2 Bytes): be ef" \
3091*62c56f98SSadaf Ebrahimi            -s "Use of Connection ID has been negotiated" \
3092*62c56f98SSadaf Ebrahimi            -c "Use of Connection ID has been negotiated" \
3093*62c56f98SSadaf Ebrahimi            -c "ignoring unexpected CID" \
3094*62c56f98SSadaf Ebrahimi            -s "ignoring unexpected CID"
3095*62c56f98SSadaf Ebrahimi
3096*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3097*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3098*62c56f98SSadaf Ebrahimirun_test    "Connection ID: Cli+Srv enabled, Cli CID empty" \
3099*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
3100*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 cid=1" \
3101*62c56f98SSadaf Ebrahimi            0 \
3102*62c56f98SSadaf Ebrahimi            -c "Enable use of CID extension." \
3103*62c56f98SSadaf Ebrahimi            -s "Enable use of CID extension." \
3104*62c56f98SSadaf Ebrahimi            -c "client hello, adding CID extension" \
3105*62c56f98SSadaf Ebrahimi            -s "found CID extension"           \
3106*62c56f98SSadaf Ebrahimi            -s "Use of CID extension negotiated" \
3107*62c56f98SSadaf Ebrahimi            -s "server hello, adding CID extension" \
3108*62c56f98SSadaf Ebrahimi            -c "found CID extension" \
3109*62c56f98SSadaf Ebrahimi            -c "Use of CID extension negotiated" \
3110*62c56f98SSadaf Ebrahimi            -s "Copy CIDs into SSL transform" \
3111*62c56f98SSadaf Ebrahimi            -c "Copy CIDs into SSL transform" \
3112*62c56f98SSadaf Ebrahimi            -c "Peer CID (length 4 Bytes): de ad be ef" \
3113*62c56f98SSadaf Ebrahimi            -s "Peer CID (length 0 Bytes):" \
3114*62c56f98SSadaf Ebrahimi            -s "Use of Connection ID has been negotiated" \
3115*62c56f98SSadaf Ebrahimi            -c "Use of Connection ID has been negotiated"
3116*62c56f98SSadaf Ebrahimi
3117*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3118*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3119*62c56f98SSadaf Ebrahimirun_test    "Connection ID: Cli+Srv enabled, Srv CID empty" \
3120*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 cid=1" \
3121*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
3122*62c56f98SSadaf Ebrahimi            0 \
3123*62c56f98SSadaf Ebrahimi            -c "Enable use of CID extension." \
3124*62c56f98SSadaf Ebrahimi            -s "Enable use of CID extension." \
3125*62c56f98SSadaf Ebrahimi            -c "client hello, adding CID extension" \
3126*62c56f98SSadaf Ebrahimi            -s "found CID extension"           \
3127*62c56f98SSadaf Ebrahimi            -s "Use of CID extension negotiated" \
3128*62c56f98SSadaf Ebrahimi            -s "server hello, adding CID extension" \
3129*62c56f98SSadaf Ebrahimi            -c "found CID extension" \
3130*62c56f98SSadaf Ebrahimi            -c "Use of CID extension negotiated" \
3131*62c56f98SSadaf Ebrahimi            -s "Copy CIDs into SSL transform" \
3132*62c56f98SSadaf Ebrahimi            -c "Copy CIDs into SSL transform" \
3133*62c56f98SSadaf Ebrahimi            -s "Peer CID (length 4 Bytes): de ad be ef" \
3134*62c56f98SSadaf Ebrahimi            -c "Peer CID (length 0 Bytes):" \
3135*62c56f98SSadaf Ebrahimi            -s "Use of Connection ID has been negotiated" \
3136*62c56f98SSadaf Ebrahimi            -c "Use of Connection ID has been negotiated"
3137*62c56f98SSadaf Ebrahimi
3138*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3139*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3140*62c56f98SSadaf Ebrahimirun_test    "Connection ID: Cli+Srv enabled, Cli+Srv CID empty" \
3141*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 cid=1" \
3142*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 cid=1" \
3143*62c56f98SSadaf Ebrahimi            0 \
3144*62c56f98SSadaf Ebrahimi            -c "Enable use of CID extension." \
3145*62c56f98SSadaf Ebrahimi            -s "Enable use of CID extension." \
3146*62c56f98SSadaf Ebrahimi            -c "client hello, adding CID extension" \
3147*62c56f98SSadaf Ebrahimi            -s "found CID extension"           \
3148*62c56f98SSadaf Ebrahimi            -s "Use of CID extension negotiated" \
3149*62c56f98SSadaf Ebrahimi            -s "server hello, adding CID extension" \
3150*62c56f98SSadaf Ebrahimi            -c "found CID extension" \
3151*62c56f98SSadaf Ebrahimi            -c "Use of CID extension negotiated" \
3152*62c56f98SSadaf Ebrahimi            -s "Copy CIDs into SSL transform" \
3153*62c56f98SSadaf Ebrahimi            -c "Copy CIDs into SSL transform" \
3154*62c56f98SSadaf Ebrahimi            -S "Use of Connection ID has been negotiated" \
3155*62c56f98SSadaf Ebrahimi            -C "Use of Connection ID has been negotiated"
3156*62c56f98SSadaf Ebrahimi
3157*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3158*62c56f98SSadaf Ebrahimirun_test    "Connection ID: Cli+Srv enabled, Cli+Srv CID nonempty, AES-128-CCM-8" \
3159*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead" \
3160*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
3161*62c56f98SSadaf Ebrahimi            0 \
3162*62c56f98SSadaf Ebrahimi            -c "Enable use of CID extension." \
3163*62c56f98SSadaf Ebrahimi            -s "Enable use of CID extension." \
3164*62c56f98SSadaf Ebrahimi            -c "client hello, adding CID extension" \
3165*62c56f98SSadaf Ebrahimi            -s "found CID extension"           \
3166*62c56f98SSadaf Ebrahimi            -s "Use of CID extension negotiated" \
3167*62c56f98SSadaf Ebrahimi            -s "server hello, adding CID extension" \
3168*62c56f98SSadaf Ebrahimi            -c "found CID extension" \
3169*62c56f98SSadaf Ebrahimi            -c "Use of CID extension negotiated" \
3170*62c56f98SSadaf Ebrahimi            -s "Copy CIDs into SSL transform" \
3171*62c56f98SSadaf Ebrahimi            -c "Copy CIDs into SSL transform" \
3172*62c56f98SSadaf Ebrahimi            -c "Peer CID (length 2 Bytes): de ad" \
3173*62c56f98SSadaf Ebrahimi            -s "Peer CID (length 2 Bytes): be ef" \
3174*62c56f98SSadaf Ebrahimi            -s "Use of Connection ID has been negotiated" \
3175*62c56f98SSadaf Ebrahimi            -c "Use of Connection ID has been negotiated"
3176*62c56f98SSadaf Ebrahimi
3177*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3178*62c56f98SSadaf Ebrahimirun_test    "Connection ID: Cli+Srv enabled, Cli CID empty, AES-128-CCM-8" \
3179*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
3180*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 cid=1 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
3181*62c56f98SSadaf Ebrahimi            0 \
3182*62c56f98SSadaf Ebrahimi            -c "Enable use of CID extension." \
3183*62c56f98SSadaf Ebrahimi            -s "Enable use of CID extension." \
3184*62c56f98SSadaf Ebrahimi            -c "client hello, adding CID extension" \
3185*62c56f98SSadaf Ebrahimi            -s "found CID extension"           \
3186*62c56f98SSadaf Ebrahimi            -s "Use of CID extension negotiated" \
3187*62c56f98SSadaf Ebrahimi            -s "server hello, adding CID extension" \
3188*62c56f98SSadaf Ebrahimi            -c "found CID extension" \
3189*62c56f98SSadaf Ebrahimi            -c "Use of CID extension negotiated" \
3190*62c56f98SSadaf Ebrahimi            -s "Copy CIDs into SSL transform" \
3191*62c56f98SSadaf Ebrahimi            -c "Copy CIDs into SSL transform" \
3192*62c56f98SSadaf Ebrahimi            -c "Peer CID (length 4 Bytes): de ad be ef" \
3193*62c56f98SSadaf Ebrahimi            -s "Peer CID (length 0 Bytes):" \
3194*62c56f98SSadaf Ebrahimi            -s "Use of Connection ID has been negotiated" \
3195*62c56f98SSadaf Ebrahimi            -c "Use of Connection ID has been negotiated"
3196*62c56f98SSadaf Ebrahimi
3197*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3198*62c56f98SSadaf Ebrahimirun_test    "Connection ID: Cli+Srv enabled, Srv CID empty, AES-128-CCM-8" \
3199*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 cid=1" \
3200*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=deadbeef force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
3201*62c56f98SSadaf Ebrahimi            0 \
3202*62c56f98SSadaf Ebrahimi            -c "Enable use of CID extension." \
3203*62c56f98SSadaf Ebrahimi            -s "Enable use of CID extension." \
3204*62c56f98SSadaf Ebrahimi            -c "client hello, adding CID extension" \
3205*62c56f98SSadaf Ebrahimi            -s "found CID extension"           \
3206*62c56f98SSadaf Ebrahimi            -s "Use of CID extension negotiated" \
3207*62c56f98SSadaf Ebrahimi            -s "server hello, adding CID extension" \
3208*62c56f98SSadaf Ebrahimi            -c "found CID extension" \
3209*62c56f98SSadaf Ebrahimi            -c "Use of CID extension negotiated" \
3210*62c56f98SSadaf Ebrahimi            -s "Copy CIDs into SSL transform" \
3211*62c56f98SSadaf Ebrahimi            -c "Copy CIDs into SSL transform" \
3212*62c56f98SSadaf Ebrahimi            -s "Peer CID (length 4 Bytes): de ad be ef" \
3213*62c56f98SSadaf Ebrahimi            -c "Peer CID (length 0 Bytes):" \
3214*62c56f98SSadaf Ebrahimi            -s "Use of Connection ID has been negotiated" \
3215*62c56f98SSadaf Ebrahimi            -c "Use of Connection ID has been negotiated"
3216*62c56f98SSadaf Ebrahimi
3217*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3218*62c56f98SSadaf Ebrahimirun_test    "Connection ID: Cli+Srv enabled, Cli+Srv CID empty, AES-128-CCM-8" \
3219*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 cid=1" \
3220*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 cid=1 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" \
3221*62c56f98SSadaf Ebrahimi            0 \
3222*62c56f98SSadaf Ebrahimi            -c "Enable use of CID extension." \
3223*62c56f98SSadaf Ebrahimi            -s "Enable use of CID extension." \
3224*62c56f98SSadaf Ebrahimi            -c "client hello, adding CID extension" \
3225*62c56f98SSadaf Ebrahimi            -s "found CID extension"           \
3226*62c56f98SSadaf Ebrahimi            -s "Use of CID extension negotiated" \
3227*62c56f98SSadaf Ebrahimi            -s "server hello, adding CID extension" \
3228*62c56f98SSadaf Ebrahimi            -c "found CID extension" \
3229*62c56f98SSadaf Ebrahimi            -c "Use of CID extension negotiated" \
3230*62c56f98SSadaf Ebrahimi            -s "Copy CIDs into SSL transform" \
3231*62c56f98SSadaf Ebrahimi            -c "Copy CIDs into SSL transform" \
3232*62c56f98SSadaf Ebrahimi            -S "Use of Connection ID has been negotiated" \
3233*62c56f98SSadaf Ebrahimi            -C "Use of Connection ID has been negotiated"
3234*62c56f98SSadaf Ebrahimi
3235*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3236*62c56f98SSadaf Ebrahimirun_test    "Connection ID: Cli+Srv enabled, Cli+Srv CID nonempty, AES-128-CBC" \
3237*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead" \
3238*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
3239*62c56f98SSadaf Ebrahimi            0 \
3240*62c56f98SSadaf Ebrahimi            -c "Enable use of CID extension." \
3241*62c56f98SSadaf Ebrahimi            -s "Enable use of CID extension." \
3242*62c56f98SSadaf Ebrahimi            -c "client hello, adding CID extension" \
3243*62c56f98SSadaf Ebrahimi            -s "found CID extension"           \
3244*62c56f98SSadaf Ebrahimi            -s "Use of CID extension negotiated" \
3245*62c56f98SSadaf Ebrahimi            -s "server hello, adding CID extension" \
3246*62c56f98SSadaf Ebrahimi            -c "found CID extension" \
3247*62c56f98SSadaf Ebrahimi            -c "Use of CID extension negotiated" \
3248*62c56f98SSadaf Ebrahimi            -s "Copy CIDs into SSL transform" \
3249*62c56f98SSadaf Ebrahimi            -c "Copy CIDs into SSL transform" \
3250*62c56f98SSadaf Ebrahimi            -c "Peer CID (length 2 Bytes): de ad" \
3251*62c56f98SSadaf Ebrahimi            -s "Peer CID (length 2 Bytes): be ef" \
3252*62c56f98SSadaf Ebrahimi            -s "Use of Connection ID has been negotiated" \
3253*62c56f98SSadaf Ebrahimi            -c "Use of Connection ID has been negotiated"
3254*62c56f98SSadaf Ebrahimi
3255*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3256*62c56f98SSadaf Ebrahimirun_test    "Connection ID: Cli+Srv enabled, Cli CID empty, AES-128-CBC" \
3257*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=deadbeef" \
3258*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 cid=1 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
3259*62c56f98SSadaf Ebrahimi            0 \
3260*62c56f98SSadaf Ebrahimi            -c "Enable use of CID extension." \
3261*62c56f98SSadaf Ebrahimi            -s "Enable use of CID extension." \
3262*62c56f98SSadaf Ebrahimi            -c "client hello, adding CID extension" \
3263*62c56f98SSadaf Ebrahimi            -s "found CID extension"           \
3264*62c56f98SSadaf Ebrahimi            -s "Use of CID extension negotiated" \
3265*62c56f98SSadaf Ebrahimi            -s "server hello, adding CID extension" \
3266*62c56f98SSadaf Ebrahimi            -c "found CID extension" \
3267*62c56f98SSadaf Ebrahimi            -c "Use of CID extension negotiated" \
3268*62c56f98SSadaf Ebrahimi            -s "Copy CIDs into SSL transform" \
3269*62c56f98SSadaf Ebrahimi            -c "Copy CIDs into SSL transform" \
3270*62c56f98SSadaf Ebrahimi            -c "Peer CID (length 4 Bytes): de ad be ef" \
3271*62c56f98SSadaf Ebrahimi            -s "Peer CID (length 0 Bytes):" \
3272*62c56f98SSadaf Ebrahimi            -s "Use of Connection ID has been negotiated" \
3273*62c56f98SSadaf Ebrahimi            -c "Use of Connection ID has been negotiated"
3274*62c56f98SSadaf Ebrahimi
3275*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3276*62c56f98SSadaf Ebrahimirun_test    "Connection ID: Cli+Srv enabled, Srv CID empty, AES-128-CBC" \
3277*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 cid=1" \
3278*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=deadbeef force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
3279*62c56f98SSadaf Ebrahimi            0 \
3280*62c56f98SSadaf Ebrahimi            -c "Enable use of CID extension." \
3281*62c56f98SSadaf Ebrahimi            -s "Enable use of CID extension." \
3282*62c56f98SSadaf Ebrahimi            -c "client hello, adding CID extension" \
3283*62c56f98SSadaf Ebrahimi            -s "found CID extension"           \
3284*62c56f98SSadaf Ebrahimi            -s "Use of CID extension negotiated" \
3285*62c56f98SSadaf Ebrahimi            -s "server hello, adding CID extension" \
3286*62c56f98SSadaf Ebrahimi            -c "found CID extension" \
3287*62c56f98SSadaf Ebrahimi            -c "Use of CID extension negotiated" \
3288*62c56f98SSadaf Ebrahimi            -s "Copy CIDs into SSL transform" \
3289*62c56f98SSadaf Ebrahimi            -c "Copy CIDs into SSL transform" \
3290*62c56f98SSadaf Ebrahimi            -s "Peer CID (length 4 Bytes): de ad be ef" \
3291*62c56f98SSadaf Ebrahimi            -c "Peer CID (length 0 Bytes):" \
3292*62c56f98SSadaf Ebrahimi            -s "Use of Connection ID has been negotiated" \
3293*62c56f98SSadaf Ebrahimi            -c "Use of Connection ID has been negotiated"
3294*62c56f98SSadaf Ebrahimi
3295*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3296*62c56f98SSadaf Ebrahimirun_test    "Connection ID: Cli+Srv enabled, Cli+Srv CID empty, AES-128-CBC" \
3297*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 cid=1" \
3298*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 cid=1 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
3299*62c56f98SSadaf Ebrahimi            0 \
3300*62c56f98SSadaf Ebrahimi            -c "Enable use of CID extension." \
3301*62c56f98SSadaf Ebrahimi            -s "Enable use of CID extension." \
3302*62c56f98SSadaf Ebrahimi            -c "client hello, adding CID extension" \
3303*62c56f98SSadaf Ebrahimi            -s "found CID extension"           \
3304*62c56f98SSadaf Ebrahimi            -s "Use of CID extension negotiated" \
3305*62c56f98SSadaf Ebrahimi            -s "server hello, adding CID extension" \
3306*62c56f98SSadaf Ebrahimi            -c "found CID extension" \
3307*62c56f98SSadaf Ebrahimi            -c "Use of CID extension negotiated" \
3308*62c56f98SSadaf Ebrahimi            -s "Copy CIDs into SSL transform" \
3309*62c56f98SSadaf Ebrahimi            -c "Copy CIDs into SSL transform" \
3310*62c56f98SSadaf Ebrahimi            -S "Use of Connection ID has been negotiated" \
3311*62c56f98SSadaf Ebrahimi            -C "Use of Connection ID has been negotiated"
3312*62c56f98SSadaf Ebrahimi
3313*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3314*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3315*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
3316*62c56f98SSadaf Ebrahimirun_test    "Connection ID: Cli+Srv enabled, renegotiate without change of CID" \
3317*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead renegotiation=1" \
3318*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef renegotiation=1 renegotiate=1" \
3319*62c56f98SSadaf Ebrahimi            0 \
3320*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3321*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3322*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Use of Connection ID has been negotiated" \
3323*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Use of Connection ID has been negotiated" \
3324*62c56f98SSadaf Ebrahimi            -c "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3325*62c56f98SSadaf Ebrahimi            -s "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3326*62c56f98SSadaf Ebrahimi            -s "(after renegotiation) Use of Connection ID has been negotiated" \
3327*62c56f98SSadaf Ebrahimi            -c "(after renegotiation) Use of Connection ID has been negotiated"
3328*62c56f98SSadaf Ebrahimi
3329*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3330*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3331*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
3332*62c56f98SSadaf Ebrahimirun_test    "Connection ID: Cli+Srv enabled, renegotiate with different CID" \
3333*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead cid_val_renego=beef renegotiation=1" \
3334*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef cid_val_renego=dead renegotiation=1 renegotiate=1" \
3335*62c56f98SSadaf Ebrahimi            0 \
3336*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3337*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3338*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Use of Connection ID has been negotiated" \
3339*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Use of Connection ID has been negotiated" \
3340*62c56f98SSadaf Ebrahimi            -c "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3341*62c56f98SSadaf Ebrahimi            -s "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3342*62c56f98SSadaf Ebrahimi            -s "(after renegotiation) Use of Connection ID has been negotiated" \
3343*62c56f98SSadaf Ebrahimi            -c "(after renegotiation) Use of Connection ID has been negotiated"
3344*62c56f98SSadaf Ebrahimi
3345*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3346*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3347*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
3348*62c56f98SSadaf Ebrahimirun_test    "Connection ID, no packing: Cli+Srv enabled, renegotiate with different CID" \
3349*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 cid=1 dgram_packing=0 cid_val=dead cid_val_renego=beef renegotiation=1" \
3350*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 cid=1 dgram_packing=0 cid_val=beef cid_val_renego=dead renegotiation=1 renegotiate=1" \
3351*62c56f98SSadaf Ebrahimi            0 \
3352*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3353*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3354*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Use of Connection ID has been negotiated" \
3355*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Use of Connection ID has been negotiated" \
3356*62c56f98SSadaf Ebrahimi            -c "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3357*62c56f98SSadaf Ebrahimi            -s "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3358*62c56f98SSadaf Ebrahimi            -s "(after renegotiation) Use of Connection ID has been negotiated" \
3359*62c56f98SSadaf Ebrahimi            -c "(after renegotiation) Use of Connection ID has been negotiated"
3360*62c56f98SSadaf Ebrahimi
3361*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3362*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3363*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
3364*62c56f98SSadaf Ebrahimirun_test    "Connection ID, 3D+MTU: Cli+Srv enabled, renegotiate with different CID" \
3365*62c56f98SSadaf Ebrahimi            -p "$P_PXY mtu=800 drop=5 delay=5 duplicate=5 bad_cid=1" \
3366*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 mtu=800 dtls=1 cid=1 cid_val=dead cid_val_renego=beef renegotiation=1" \
3367*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 mtu=800 dtls=1 cid=1 cid_val=beef cid_val_renego=dead renegotiation=1 renegotiate=1" \
3368*62c56f98SSadaf Ebrahimi            0 \
3369*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3370*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3371*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Use of Connection ID has been negotiated" \
3372*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Use of Connection ID has been negotiated" \
3373*62c56f98SSadaf Ebrahimi            -c "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3374*62c56f98SSadaf Ebrahimi            -s "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3375*62c56f98SSadaf Ebrahimi            -s "(after renegotiation) Use of Connection ID has been negotiated" \
3376*62c56f98SSadaf Ebrahimi            -c "(after renegotiation) Use of Connection ID has been negotiated" \
3377*62c56f98SSadaf Ebrahimi            -c "ignoring unexpected CID" \
3378*62c56f98SSadaf Ebrahimi            -s "ignoring unexpected CID"
3379*62c56f98SSadaf Ebrahimi
3380*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3381*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3382*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
3383*62c56f98SSadaf Ebrahimirun_test    "Connection ID: Cli+Srv enabled, renegotiate without CID" \
3384*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead cid_renego=0 renegotiation=1" \
3385*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef cid_renego=0 renegotiation=1 renegotiate=1" \
3386*62c56f98SSadaf Ebrahimi            0 \
3387*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3388*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3389*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Use of Connection ID has been negotiated" \
3390*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Use of Connection ID has been negotiated" \
3391*62c56f98SSadaf Ebrahimi            -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3392*62c56f98SSadaf Ebrahimi            -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3393*62c56f98SSadaf Ebrahimi            -C "(after renegotiation) Use of Connection ID has been negotiated" \
3394*62c56f98SSadaf Ebrahimi            -S "(after renegotiation) Use of Connection ID has been negotiated"
3395*62c56f98SSadaf Ebrahimi
3396*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3397*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3398*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
3399*62c56f98SSadaf Ebrahimirun_test    "Connection ID, no packing: Cli+Srv enabled, renegotiate without CID" \
3400*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 dgram_packing=0 cid=1 cid_val=dead cid_renego=0 renegotiation=1" \
3401*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 dgram_packing=0 cid=1 cid_val=beef cid_renego=0 renegotiation=1 renegotiate=1" \
3402*62c56f98SSadaf Ebrahimi            0 \
3403*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3404*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3405*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Use of Connection ID has been negotiated" \
3406*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Use of Connection ID has been negotiated" \
3407*62c56f98SSadaf Ebrahimi            -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3408*62c56f98SSadaf Ebrahimi            -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3409*62c56f98SSadaf Ebrahimi            -C "(after renegotiation) Use of Connection ID has been negotiated" \
3410*62c56f98SSadaf Ebrahimi            -S "(after renegotiation) Use of Connection ID has been negotiated"
3411*62c56f98SSadaf Ebrahimi
3412*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3413*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3414*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
3415*62c56f98SSadaf Ebrahimirun_test    "Connection ID, 3D+MTU: Cli+Srv enabled, renegotiate without CID" \
3416*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=5 delay=5 duplicate=5 bad_cid=1" \
3417*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 mtu=800 dtls=1 cid=1 cid_val=dead cid_renego=0 renegotiation=1" \
3418*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 mtu=800 dtls=1 cid=1 cid_val=beef cid_renego=0 renegotiation=1 renegotiate=1" \
3419*62c56f98SSadaf Ebrahimi            0 \
3420*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3421*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3422*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Use of Connection ID has been negotiated" \
3423*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Use of Connection ID has been negotiated" \
3424*62c56f98SSadaf Ebrahimi            -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3425*62c56f98SSadaf Ebrahimi            -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3426*62c56f98SSadaf Ebrahimi            -C "(after renegotiation) Use of Connection ID has been negotiated" \
3427*62c56f98SSadaf Ebrahimi            -S "(after renegotiation) Use of Connection ID has been negotiated" \
3428*62c56f98SSadaf Ebrahimi            -c "ignoring unexpected CID" \
3429*62c56f98SSadaf Ebrahimi            -s "ignoring unexpected CID"
3430*62c56f98SSadaf Ebrahimi
3431*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3432*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3433*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
3434*62c56f98SSadaf Ebrahimirun_test    "Connection ID: Cli+Srv enabled, CID on renegotiation" \
3435*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 cid=0 cid_renego=1 cid_val_renego=dead renegotiation=1" \
3436*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 cid=0 cid_renego=1 cid_val_renego=beef renegotiation=1 renegotiate=1" \
3437*62c56f98SSadaf Ebrahimi            0 \
3438*62c56f98SSadaf Ebrahimi            -S "(initial handshake) Use of Connection ID has been negotiated" \
3439*62c56f98SSadaf Ebrahimi            -C "(initial handshake) Use of Connection ID has been negotiated" \
3440*62c56f98SSadaf Ebrahimi            -c "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3441*62c56f98SSadaf Ebrahimi            -s "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3442*62c56f98SSadaf Ebrahimi            -c "(after renegotiation) Use of Connection ID has been negotiated" \
3443*62c56f98SSadaf Ebrahimi            -s "(after renegotiation) Use of Connection ID has been negotiated"
3444*62c56f98SSadaf Ebrahimi
3445*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3446*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3447*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
3448*62c56f98SSadaf Ebrahimirun_test    "Connection ID, no packing: Cli+Srv enabled, CID on renegotiation" \
3449*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 dgram_packing=0 cid=0 cid_renego=1 cid_val_renego=dead renegotiation=1" \
3450*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 dgram_packing=0 cid=0 cid_renego=1 cid_val_renego=beef renegotiation=1 renegotiate=1" \
3451*62c56f98SSadaf Ebrahimi            0 \
3452*62c56f98SSadaf Ebrahimi            -S "(initial handshake) Use of Connection ID has been negotiated" \
3453*62c56f98SSadaf Ebrahimi            -C "(initial handshake) Use of Connection ID has been negotiated" \
3454*62c56f98SSadaf Ebrahimi            -c "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3455*62c56f98SSadaf Ebrahimi            -s "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3456*62c56f98SSadaf Ebrahimi            -c "(after renegotiation) Use of Connection ID has been negotiated" \
3457*62c56f98SSadaf Ebrahimi            -s "(after renegotiation) Use of Connection ID has been negotiated"
3458*62c56f98SSadaf Ebrahimi
3459*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3460*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3461*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
3462*62c56f98SSadaf Ebrahimirun_test    "Connection ID, 3D+MTU: Cli+Srv enabled, CID on renegotiation" \
3463*62c56f98SSadaf Ebrahimi            -p "$P_PXY mtu=800 drop=5 delay=5 duplicate=5 bad_cid=1" \
3464*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 mtu=800 dtls=1 dgram_packing=1 cid=0 cid_renego=1 cid_val_renego=dead renegotiation=1" \
3465*62c56f98SSadaf Ebrahimi            "$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" \
3466*62c56f98SSadaf Ebrahimi            0 \
3467*62c56f98SSadaf Ebrahimi            -S "(initial handshake) Use of Connection ID has been negotiated" \
3468*62c56f98SSadaf Ebrahimi            -C "(initial handshake) Use of Connection ID has been negotiated" \
3469*62c56f98SSadaf Ebrahimi            -c "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3470*62c56f98SSadaf Ebrahimi            -s "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3471*62c56f98SSadaf Ebrahimi            -c "(after renegotiation) Use of Connection ID has been negotiated" \
3472*62c56f98SSadaf Ebrahimi            -s "(after renegotiation) Use of Connection ID has been negotiated" \
3473*62c56f98SSadaf Ebrahimi            -c "ignoring unexpected CID" \
3474*62c56f98SSadaf Ebrahimi            -s "ignoring unexpected CID"
3475*62c56f98SSadaf Ebrahimi
3476*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3477*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3478*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
3479*62c56f98SSadaf Ebrahimirun_test    "Connection ID: Cli+Srv enabled, Cli disables on renegotiation" \
3480*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead renegotiation=1" \
3481*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef cid_renego=0 renegotiation=1 renegotiate=1" \
3482*62c56f98SSadaf Ebrahimi            0 \
3483*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3484*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3485*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Use of Connection ID has been negotiated" \
3486*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Use of Connection ID has been negotiated" \
3487*62c56f98SSadaf Ebrahimi            -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3488*62c56f98SSadaf Ebrahimi            -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3489*62c56f98SSadaf Ebrahimi            -C "(after renegotiation) Use of Connection ID has been negotiated" \
3490*62c56f98SSadaf Ebrahimi            -S "(after renegotiation) Use of Connection ID has been negotiated" \
3491*62c56f98SSadaf Ebrahimi            -s "(after renegotiation) Use of Connection ID was not offered by client"
3492*62c56f98SSadaf Ebrahimi
3493*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3494*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3495*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
3496*62c56f98SSadaf Ebrahimirun_test    "Connection ID, 3D: Cli+Srv enabled, Cli disables on renegotiation" \
3497*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=5 delay=5 duplicate=5 bad_cid=1" \
3498*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead renegotiation=1" \
3499*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef cid_renego=0 renegotiation=1 renegotiate=1" \
3500*62c56f98SSadaf Ebrahimi            0 \
3501*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3502*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3503*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Use of Connection ID has been negotiated" \
3504*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Use of Connection ID has been negotiated" \
3505*62c56f98SSadaf Ebrahimi            -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3506*62c56f98SSadaf Ebrahimi            -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3507*62c56f98SSadaf Ebrahimi            -C "(after renegotiation) Use of Connection ID has been negotiated" \
3508*62c56f98SSadaf Ebrahimi            -S "(after renegotiation) Use of Connection ID has been negotiated" \
3509*62c56f98SSadaf Ebrahimi            -s "(after renegotiation) Use of Connection ID was not offered by client" \
3510*62c56f98SSadaf Ebrahimi            -c "ignoring unexpected CID" \
3511*62c56f98SSadaf Ebrahimi            -s "ignoring unexpected CID"
3512*62c56f98SSadaf Ebrahimi
3513*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3514*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3515*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
3516*62c56f98SSadaf Ebrahimirun_test    "Connection ID: Cli+Srv enabled, Srv disables on renegotiation" \
3517*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead cid_renego=0 renegotiation=1" \
3518*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef renegotiation=1 renegotiate=1" \
3519*62c56f98SSadaf Ebrahimi            0 \
3520*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3521*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3522*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Use of Connection ID has been negotiated" \
3523*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Use of Connection ID has been negotiated" \
3524*62c56f98SSadaf Ebrahimi            -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3525*62c56f98SSadaf Ebrahimi            -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3526*62c56f98SSadaf Ebrahimi            -C "(after renegotiation) Use of Connection ID has been negotiated" \
3527*62c56f98SSadaf Ebrahimi            -S "(after renegotiation) Use of Connection ID has been negotiated" \
3528*62c56f98SSadaf Ebrahimi            -c "(after renegotiation) Use of Connection ID was rejected by the server"
3529*62c56f98SSadaf Ebrahimi
3530*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3531*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3532*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
3533*62c56f98SSadaf Ebrahimirun_test    "Connection ID, 3D: Cli+Srv enabled, Srv disables on renegotiation" \
3534*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=5 delay=5 duplicate=5 bad_cid=1" \
3535*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 cid=1 cid_val=dead cid_renego=0 renegotiation=1" \
3536*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 cid=1 cid_val=beef renegotiation=1 renegotiate=1" \
3537*62c56f98SSadaf Ebrahimi            0 \
3538*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3539*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3540*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Use of Connection ID has been negotiated" \
3541*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Use of Connection ID has been negotiated" \
3542*62c56f98SSadaf Ebrahimi            -C "(after renegotiation) Peer CID (length 2 Bytes): de ad" \
3543*62c56f98SSadaf Ebrahimi            -S "(after renegotiation) Peer CID (length 2 Bytes): be ef" \
3544*62c56f98SSadaf Ebrahimi            -C "(after renegotiation) Use of Connection ID has been negotiated" \
3545*62c56f98SSadaf Ebrahimi            -S "(after renegotiation) Use of Connection ID has been negotiated" \
3546*62c56f98SSadaf Ebrahimi            -c "(after renegotiation) Use of Connection ID was rejected by the server" \
3547*62c56f98SSadaf Ebrahimi            -c "ignoring unexpected CID" \
3548*62c56f98SSadaf Ebrahimi            -s "ignoring unexpected CID"
3549*62c56f98SSadaf Ebrahimi
3550*62c56f98SSadaf Ebrahimi# This and the test below it require MAX_CONTENT_LEN to be at least MFL+1, because the
3551*62c56f98SSadaf Ebrahimi# tests check that the buffer contents are reallocated when the message is
3552*62c56f98SSadaf Ebrahimi# larger than the buffer.
3553*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3554*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
3555*62c56f98SSadaf Ebrahimirequires_max_content_len 513
3556*62c56f98SSadaf Ebrahimirun_test    "Connection ID: Cli+Srv enabled, variable buffer lengths, MFL=512" \
3557*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 cid=1 cid_val=dead debug_level=2" \
3558*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite="TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" max_frag_len=512 dtls=1 cid=1 cid_val=beef" \
3559*62c56f98SSadaf Ebrahimi            0 \
3560*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3561*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3562*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Use of Connection ID has been negotiated" \
3563*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Use of Connection ID has been negotiated" \
3564*62c56f98SSadaf Ebrahimi            -s "Reallocating in_buf" \
3565*62c56f98SSadaf Ebrahimi            -s "Reallocating out_buf"
3566*62c56f98SSadaf Ebrahimi
3567*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
3568*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
3569*62c56f98SSadaf Ebrahimirequires_max_content_len 1025
3570*62c56f98SSadaf Ebrahimirun_test    "Connection ID: Cli+Srv enabled, variable buffer lengths, MFL=1024" \
3571*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 cid=1 cid_val=dead debug_level=2" \
3572*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite="TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8" max_frag_len=1024 dtls=1 cid=1 cid_val=beef" \
3573*62c56f98SSadaf Ebrahimi            0 \
3574*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Peer CID (length 2 Bytes): de ad" \
3575*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Peer CID (length 2 Bytes): be ef" \
3576*62c56f98SSadaf Ebrahimi            -s "(initial handshake) Use of Connection ID has been negotiated" \
3577*62c56f98SSadaf Ebrahimi            -c "(initial handshake) Use of Connection ID has been negotiated" \
3578*62c56f98SSadaf Ebrahimi            -s "Reallocating in_buf" \
3579*62c56f98SSadaf Ebrahimi            -s "Reallocating out_buf"
3580*62c56f98SSadaf Ebrahimi
3581*62c56f98SSadaf Ebrahimi# Tests for Encrypt-then-MAC extension
3582*62c56f98SSadaf Ebrahimi
3583*62c56f98SSadaf Ebrahimirun_test    "Encrypt then MAC: default" \
3584*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 \
3585*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
3586*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3" \
3587*62c56f98SSadaf Ebrahimi            0 \
3588*62c56f98SSadaf Ebrahimi            -c "client hello, adding encrypt_then_mac extension" \
3589*62c56f98SSadaf Ebrahimi            -s "found encrypt then mac extension" \
3590*62c56f98SSadaf Ebrahimi            -s "server hello, adding encrypt then mac extension" \
3591*62c56f98SSadaf Ebrahimi            -c "found encrypt_then_mac extension" \
3592*62c56f98SSadaf Ebrahimi            -c "using encrypt then mac" \
3593*62c56f98SSadaf Ebrahimi            -s "using encrypt then mac"
3594*62c56f98SSadaf Ebrahimi
3595*62c56f98SSadaf Ebrahimirun_test    "Encrypt then MAC: client enabled, server disabled" \
3596*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 etm=0 \
3597*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
3598*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 etm=1" \
3599*62c56f98SSadaf Ebrahimi            0 \
3600*62c56f98SSadaf Ebrahimi            -c "client hello, adding encrypt_then_mac extension" \
3601*62c56f98SSadaf Ebrahimi            -s "found encrypt then mac extension" \
3602*62c56f98SSadaf Ebrahimi            -S "server hello, adding encrypt then mac extension" \
3603*62c56f98SSadaf Ebrahimi            -C "found encrypt_then_mac extension" \
3604*62c56f98SSadaf Ebrahimi            -C "using encrypt then mac" \
3605*62c56f98SSadaf Ebrahimi            -S "using encrypt then mac"
3606*62c56f98SSadaf Ebrahimi
3607*62c56f98SSadaf Ebrahimirun_test    "Encrypt then MAC: client enabled, aead cipher" \
3608*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 etm=1 \
3609*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-RSA-WITH-AES-128-GCM-SHA256" \
3610*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 etm=1" \
3611*62c56f98SSadaf Ebrahimi            0 \
3612*62c56f98SSadaf Ebrahimi            -c "client hello, adding encrypt_then_mac extension" \
3613*62c56f98SSadaf Ebrahimi            -s "found encrypt then mac extension" \
3614*62c56f98SSadaf Ebrahimi            -S "server hello, adding encrypt then mac extension" \
3615*62c56f98SSadaf Ebrahimi            -C "found encrypt_then_mac extension" \
3616*62c56f98SSadaf Ebrahimi            -C "using encrypt then mac" \
3617*62c56f98SSadaf Ebrahimi            -S "using encrypt then mac"
3618*62c56f98SSadaf Ebrahimi
3619*62c56f98SSadaf Ebrahimirun_test    "Encrypt then MAC: client disabled, server enabled" \
3620*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 etm=1 \
3621*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
3622*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 etm=0" \
3623*62c56f98SSadaf Ebrahimi            0 \
3624*62c56f98SSadaf Ebrahimi            -C "client hello, adding encrypt_then_mac extension" \
3625*62c56f98SSadaf Ebrahimi            -S "found encrypt then mac extension" \
3626*62c56f98SSadaf Ebrahimi            -S "server hello, adding encrypt then mac extension" \
3627*62c56f98SSadaf Ebrahimi            -C "found encrypt_then_mac extension" \
3628*62c56f98SSadaf Ebrahimi            -C "using encrypt then mac" \
3629*62c56f98SSadaf Ebrahimi            -S "using encrypt then mac"
3630*62c56f98SSadaf Ebrahimi
3631*62c56f98SSadaf Ebrahimi# Tests for Extended Master Secret extension
3632*62c56f98SSadaf Ebrahimi
3633*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_EXTENDED_MASTER_SECRET
3634*62c56f98SSadaf Ebrahimirun_test    "Extended Master Secret: default" \
3635*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3" \
3636*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3" \
3637*62c56f98SSadaf Ebrahimi            0 \
3638*62c56f98SSadaf Ebrahimi            -c "client hello, adding extended_master_secret extension" \
3639*62c56f98SSadaf Ebrahimi            -s "found extended master secret extension" \
3640*62c56f98SSadaf Ebrahimi            -s "server hello, adding extended master secret extension" \
3641*62c56f98SSadaf Ebrahimi            -c "found extended_master_secret extension" \
3642*62c56f98SSadaf Ebrahimi            -c "session hash for extended master secret" \
3643*62c56f98SSadaf Ebrahimi            -s "session hash for extended master secret"
3644*62c56f98SSadaf Ebrahimi
3645*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_EXTENDED_MASTER_SECRET
3646*62c56f98SSadaf Ebrahimirun_test    "Extended Master Secret: client enabled, server disabled" \
3647*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 extended_ms=0" \
3648*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 extended_ms=1" \
3649*62c56f98SSadaf Ebrahimi            0 \
3650*62c56f98SSadaf Ebrahimi            -c "client hello, adding extended_master_secret extension" \
3651*62c56f98SSadaf Ebrahimi            -s "found extended master secret extension" \
3652*62c56f98SSadaf Ebrahimi            -S "server hello, adding extended master secret extension" \
3653*62c56f98SSadaf Ebrahimi            -C "found extended_master_secret extension" \
3654*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret" \
3655*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"
3656*62c56f98SSadaf Ebrahimi
3657*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_EXTENDED_MASTER_SECRET
3658*62c56f98SSadaf Ebrahimirun_test    "Extended Master Secret: client disabled, server enabled" \
3659*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 debug_level=3 extended_ms=1" \
3660*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 extended_ms=0" \
3661*62c56f98SSadaf Ebrahimi            0 \
3662*62c56f98SSadaf Ebrahimi            -C "client hello, adding extended_master_secret extension" \
3663*62c56f98SSadaf Ebrahimi            -S "found extended master secret extension" \
3664*62c56f98SSadaf Ebrahimi            -S "server hello, adding extended master secret extension" \
3665*62c56f98SSadaf Ebrahimi            -C "found extended_master_secret extension" \
3666*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret" \
3667*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"
3668*62c56f98SSadaf Ebrahimi
3669*62c56f98SSadaf Ebrahimi# Test sending and receiving empty application data records
3670*62c56f98SSadaf Ebrahimi
3671*62c56f98SSadaf Ebrahimirun_test    "Encrypt then MAC: empty application data record" \
3672*62c56f98SSadaf Ebrahimi            "$P_SRV auth_mode=none debug_level=4 etm=1" \
3673*62c56f98SSadaf Ebrahimi            "$P_CLI auth_mode=none etm=1 request_size=0 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA" \
3674*62c56f98SSadaf Ebrahimi            0 \
3675*62c56f98SSadaf Ebrahimi            -S "0000:  0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f" \
3676*62c56f98SSadaf Ebrahimi            -s "dumping 'input payload after decrypt' (0 bytes)" \
3677*62c56f98SSadaf Ebrahimi            -c "0 bytes written in 1 fragments"
3678*62c56f98SSadaf Ebrahimi
3679*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3680*62c56f98SSadaf Ebrahimirun_test    "Encrypt then MAC: disabled, empty application data record" \
3681*62c56f98SSadaf Ebrahimi            "$P_SRV auth_mode=none debug_level=4 etm=0" \
3682*62c56f98SSadaf Ebrahimi            "$P_CLI auth_mode=none etm=0 request_size=0" \
3683*62c56f98SSadaf Ebrahimi            0 \
3684*62c56f98SSadaf Ebrahimi            -s "dumping 'input payload after decrypt' (0 bytes)" \
3685*62c56f98SSadaf Ebrahimi            -c "0 bytes written in 1 fragments"
3686*62c56f98SSadaf Ebrahimi
3687*62c56f98SSadaf Ebrahimirun_test    "Encrypt then MAC, DTLS: empty application data record" \
3688*62c56f98SSadaf Ebrahimi            "$P_SRV auth_mode=none debug_level=4 etm=1 dtls=1" \
3689*62c56f98SSadaf Ebrahimi            "$P_CLI auth_mode=none etm=1 request_size=0 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA dtls=1" \
3690*62c56f98SSadaf Ebrahimi            0 \
3691*62c56f98SSadaf Ebrahimi            -S "0000:  0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f" \
3692*62c56f98SSadaf Ebrahimi            -s "dumping 'input payload after decrypt' (0 bytes)" \
3693*62c56f98SSadaf Ebrahimi            -c "0 bytes written in 1 fragments"
3694*62c56f98SSadaf Ebrahimi
3695*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3696*62c56f98SSadaf Ebrahimirun_test    "Encrypt then MAC, DTLS: disabled, empty application data record" \
3697*62c56f98SSadaf Ebrahimi            "$P_SRV auth_mode=none debug_level=4 etm=0 dtls=1" \
3698*62c56f98SSadaf Ebrahimi            "$P_CLI auth_mode=none etm=0 request_size=0 dtls=1" \
3699*62c56f98SSadaf Ebrahimi            0 \
3700*62c56f98SSadaf Ebrahimi            -s "dumping 'input payload after decrypt' (0 bytes)" \
3701*62c56f98SSadaf Ebrahimi            -c "0 bytes written in 1 fragments"
3702*62c56f98SSadaf Ebrahimi
3703*62c56f98SSadaf Ebrahimi# Tests for CBC 1/n-1 record splitting
3704*62c56f98SSadaf Ebrahimi
3705*62c56f98SSadaf Ebrahimirun_test    "CBC Record splitting: TLS 1.2, no splitting" \
3706*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12" \
3707*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA \
3708*62c56f98SSadaf Ebrahimi             request_size=123" \
3709*62c56f98SSadaf Ebrahimi            0 \
3710*62c56f98SSadaf Ebrahimi            -s "Read from client: 123 bytes read" \
3711*62c56f98SSadaf Ebrahimi            -S "Read from client: 1 bytes read" \
3712*62c56f98SSadaf Ebrahimi            -S "122 bytes read"
3713*62c56f98SSadaf Ebrahimi
3714*62c56f98SSadaf Ebrahimi# Tests for Session Tickets
3715*62c56f98SSadaf Ebrahimi
3716*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets: basic" \
3717*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=1" \
3718*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
3719*62c56f98SSadaf Ebrahimi            0 \
3720*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
3721*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
3722*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
3723*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
3724*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
3725*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
3726*62c56f98SSadaf Ebrahimi            -s "session successfully restored from ticket" \
3727*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
3728*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
3729*62c56f98SSadaf Ebrahimi
3730*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets: manual rotation" \
3731*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=1 ticket_rotate=1" \
3732*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
3733*62c56f98SSadaf Ebrahimi            0 \
3734*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
3735*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
3736*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
3737*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
3738*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
3739*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
3740*62c56f98SSadaf Ebrahimi            -s "session successfully restored from ticket" \
3741*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
3742*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
3743*62c56f98SSadaf Ebrahimi
3744*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets: cache disabled" \
3745*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=1 cache_max=0" \
3746*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
3747*62c56f98SSadaf Ebrahimi            0 \
3748*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
3749*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
3750*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
3751*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
3752*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
3753*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
3754*62c56f98SSadaf Ebrahimi            -s "session successfully restored from ticket" \
3755*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
3756*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
3757*62c56f98SSadaf Ebrahimi
3758*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets: timeout" \
3759*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=1 cache_max=0 ticket_timeout=1" \
3760*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1 reco_delay=2000" \
3761*62c56f98SSadaf Ebrahimi            0 \
3762*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
3763*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
3764*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
3765*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
3766*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
3767*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
3768*62c56f98SSadaf Ebrahimi            -S "session successfully restored from ticket" \
3769*62c56f98SSadaf Ebrahimi            -S "a session has been resumed" \
3770*62c56f98SSadaf Ebrahimi            -C "a session has been resumed"
3771*62c56f98SSadaf Ebrahimi
3772*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets: session copy" \
3773*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=1 cache_max=0" \
3774*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1 reco_mode=0" \
3775*62c56f98SSadaf Ebrahimi            0 \
3776*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
3777*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
3778*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
3779*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
3780*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
3781*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
3782*62c56f98SSadaf Ebrahimi            -s "session successfully restored from ticket" \
3783*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
3784*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
3785*62c56f98SSadaf Ebrahimi
3786*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3787*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets: openssl server" \
3788*62c56f98SSadaf Ebrahimi            "$O_SRV -tls1_2" \
3789*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 tickets=1 reconnect=1" \
3790*62c56f98SSadaf Ebrahimi            0 \
3791*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
3792*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
3793*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
3794*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
3795*62c56f98SSadaf Ebrahimi
3796*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
3797*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets: openssl client" \
3798*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=1" \
3799*62c56f98SSadaf Ebrahimi            "( $O_CLI -sess_out $SESSION; \
3800*62c56f98SSadaf Ebrahimi               $O_CLI -sess_in $SESSION; \
3801*62c56f98SSadaf Ebrahimi               rm -f $SESSION )" \
3802*62c56f98SSadaf Ebrahimi            0 \
3803*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
3804*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
3805*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
3806*62c56f98SSadaf Ebrahimi            -s "session successfully restored from ticket" \
3807*62c56f98SSadaf Ebrahimi            -s "a session has been resumed"
3808*62c56f98SSadaf Ebrahimi
3809*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets: AES-128-GCM" \
3810*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=1 ticket_aead=AES-128-GCM" \
3811*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
3812*62c56f98SSadaf Ebrahimi            0 \
3813*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
3814*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
3815*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
3816*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
3817*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
3818*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
3819*62c56f98SSadaf Ebrahimi            -s "session successfully restored from ticket" \
3820*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
3821*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
3822*62c56f98SSadaf Ebrahimi
3823*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets: AES-192-GCM" \
3824*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=1 ticket_aead=AES-192-GCM" \
3825*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
3826*62c56f98SSadaf Ebrahimi            0 \
3827*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
3828*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
3829*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
3830*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
3831*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
3832*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
3833*62c56f98SSadaf Ebrahimi            -s "session successfully restored from ticket" \
3834*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
3835*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
3836*62c56f98SSadaf Ebrahimi
3837*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets: AES-128-CCM" \
3838*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=1 ticket_aead=AES-128-CCM" \
3839*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
3840*62c56f98SSadaf Ebrahimi            0 \
3841*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
3842*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
3843*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
3844*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
3845*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
3846*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
3847*62c56f98SSadaf Ebrahimi            -s "session successfully restored from ticket" \
3848*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
3849*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
3850*62c56f98SSadaf Ebrahimi
3851*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets: AES-192-CCM" \
3852*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=1 ticket_aead=AES-192-CCM" \
3853*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
3854*62c56f98SSadaf Ebrahimi            0 \
3855*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
3856*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
3857*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
3858*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
3859*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
3860*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
3861*62c56f98SSadaf Ebrahimi            -s "session successfully restored from ticket" \
3862*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
3863*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
3864*62c56f98SSadaf Ebrahimi
3865*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets: AES-256-CCM" \
3866*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=1 ticket_aead=AES-256-CCM" \
3867*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
3868*62c56f98SSadaf Ebrahimi            0 \
3869*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
3870*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
3871*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
3872*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
3873*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
3874*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
3875*62c56f98SSadaf Ebrahimi            -s "session successfully restored from ticket" \
3876*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
3877*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
3878*62c56f98SSadaf Ebrahimi
3879*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets: CAMELLIA-128-CCM" \
3880*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=1 ticket_aead=CAMELLIA-128-CCM" \
3881*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
3882*62c56f98SSadaf Ebrahimi            0 \
3883*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
3884*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
3885*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
3886*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
3887*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
3888*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
3889*62c56f98SSadaf Ebrahimi            -s "session successfully restored from ticket" \
3890*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
3891*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
3892*62c56f98SSadaf Ebrahimi
3893*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets: CAMELLIA-192-CCM" \
3894*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=1 ticket_aead=CAMELLIA-192-CCM" \
3895*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
3896*62c56f98SSadaf Ebrahimi            0 \
3897*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
3898*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
3899*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
3900*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
3901*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
3902*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
3903*62c56f98SSadaf Ebrahimi            -s "session successfully restored from ticket" \
3904*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
3905*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
3906*62c56f98SSadaf Ebrahimi
3907*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets: CAMELLIA-256-CCM" \
3908*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=1 ticket_aead=CAMELLIA-256-CCM" \
3909*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
3910*62c56f98SSadaf Ebrahimi            0 \
3911*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
3912*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
3913*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
3914*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
3915*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
3916*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
3917*62c56f98SSadaf Ebrahimi            -s "session successfully restored from ticket" \
3918*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
3919*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
3920*62c56f98SSadaf Ebrahimi
3921*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets: ARIA-128-GCM" \
3922*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=1 ticket_aead=ARIA-128-GCM" \
3923*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
3924*62c56f98SSadaf Ebrahimi            0 \
3925*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
3926*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
3927*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
3928*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
3929*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
3930*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
3931*62c56f98SSadaf Ebrahimi            -s "session successfully restored from ticket" \
3932*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
3933*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
3934*62c56f98SSadaf Ebrahimi
3935*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets: ARIA-192-GCM" \
3936*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=1 ticket_aead=ARIA-192-GCM" \
3937*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
3938*62c56f98SSadaf Ebrahimi            0 \
3939*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
3940*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
3941*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
3942*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
3943*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
3944*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
3945*62c56f98SSadaf Ebrahimi            -s "session successfully restored from ticket" \
3946*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
3947*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
3948*62c56f98SSadaf Ebrahimi
3949*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets: ARIA-256-GCM" \
3950*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=1 ticket_aead=ARIA-256-GCM" \
3951*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
3952*62c56f98SSadaf Ebrahimi            0 \
3953*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
3954*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
3955*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
3956*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
3957*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
3958*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
3959*62c56f98SSadaf Ebrahimi            -s "session successfully restored from ticket" \
3960*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
3961*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
3962*62c56f98SSadaf Ebrahimi
3963*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets: ARIA-128-CCM" \
3964*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=1 ticket_aead=ARIA-128-CCM" \
3965*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
3966*62c56f98SSadaf Ebrahimi            0 \
3967*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
3968*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
3969*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
3970*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
3971*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
3972*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
3973*62c56f98SSadaf Ebrahimi            -s "session successfully restored from ticket" \
3974*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
3975*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
3976*62c56f98SSadaf Ebrahimi
3977*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets: ARIA-192-CCM" \
3978*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=1 ticket_aead=ARIA-192-CCM" \
3979*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
3980*62c56f98SSadaf Ebrahimi            0 \
3981*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
3982*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
3983*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
3984*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
3985*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
3986*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
3987*62c56f98SSadaf Ebrahimi            -s "session successfully restored from ticket" \
3988*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
3989*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
3990*62c56f98SSadaf Ebrahimi
3991*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets: ARIA-256-CCM" \
3992*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=1 ticket_aead=ARIA-256-CCM" \
3993*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
3994*62c56f98SSadaf Ebrahimi            0 \
3995*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
3996*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
3997*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
3998*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
3999*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
4000*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
4001*62c56f98SSadaf Ebrahimi            -s "session successfully restored from ticket" \
4002*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
4003*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
4004*62c56f98SSadaf Ebrahimi
4005*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets: CHACHA20-POLY1305" \
4006*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=1 ticket_aead=CHACHA20-POLY1305" \
4007*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
4008*62c56f98SSadaf Ebrahimi            0 \
4009*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
4010*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
4011*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
4012*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
4013*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
4014*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
4015*62c56f98SSadaf Ebrahimi            -s "session successfully restored from ticket" \
4016*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
4017*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
4018*62c56f98SSadaf Ebrahimi
4019*62c56f98SSadaf Ebrahimi# Tests for Session Tickets with DTLS
4020*62c56f98SSadaf Ebrahimi
4021*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4022*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets, DTLS: basic" \
4023*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 tickets=1" \
4024*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 tickets=1 reconnect=1 skip_close_notify=1" \
4025*62c56f98SSadaf Ebrahimi            0 \
4026*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
4027*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
4028*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
4029*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
4030*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
4031*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
4032*62c56f98SSadaf Ebrahimi            -s "session successfully restored from ticket" \
4033*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
4034*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
4035*62c56f98SSadaf Ebrahimi
4036*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4037*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets, DTLS: cache disabled" \
4038*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 tickets=1 cache_max=0" \
4039*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 tickets=1 reconnect=1 skip_close_notify=1" \
4040*62c56f98SSadaf Ebrahimi            0 \
4041*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
4042*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
4043*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
4044*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
4045*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
4046*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
4047*62c56f98SSadaf Ebrahimi            -s "session successfully restored from ticket" \
4048*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
4049*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
4050*62c56f98SSadaf Ebrahimi
4051*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4052*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets, DTLS: timeout" \
4053*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 tickets=1 cache_max=0 ticket_timeout=1" \
4054*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 tickets=1 reconnect=1 skip_close_notify=1 reco_delay=2000" \
4055*62c56f98SSadaf Ebrahimi            0 \
4056*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
4057*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
4058*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
4059*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
4060*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
4061*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
4062*62c56f98SSadaf Ebrahimi            -S "session successfully restored from ticket" \
4063*62c56f98SSadaf Ebrahimi            -S "a session has been resumed" \
4064*62c56f98SSadaf Ebrahimi            -C "a session has been resumed"
4065*62c56f98SSadaf Ebrahimi
4066*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4067*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets, DTLS: session copy" \
4068*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 tickets=1 cache_max=0" \
4069*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 tickets=1 reconnect=1 skip_close_notify=1 reco_mode=0" \
4070*62c56f98SSadaf Ebrahimi            0 \
4071*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
4072*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
4073*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
4074*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
4075*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
4076*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
4077*62c56f98SSadaf Ebrahimi            -s "session successfully restored from ticket" \
4078*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
4079*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
4080*62c56f98SSadaf Ebrahimi
4081*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4082*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets, DTLS: openssl server" \
4083*62c56f98SSadaf Ebrahimi            "$O_SRV -dtls" \
4084*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=3 tickets=1 reconnect=1" \
4085*62c56f98SSadaf Ebrahimi            0 \
4086*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
4087*62c56f98SSadaf Ebrahimi            -c "found session_ticket extension" \
4088*62c56f98SSadaf Ebrahimi            -c "parse new session ticket" \
4089*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
4090*62c56f98SSadaf Ebrahimi
4091*62c56f98SSadaf Ebrahimi# For reasons that aren't fully understood, this test randomly fails with high
4092*62c56f98SSadaf Ebrahimi# probability with OpenSSL 1.0.2g on the CI, see #5012.
4093*62c56f98SSadaf Ebrahimirequires_openssl_next
4094*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4095*62c56f98SSadaf Ebrahimirun_test    "Session resume using tickets, DTLS: openssl client" \
4096*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=3 tickets=1" \
4097*62c56f98SSadaf Ebrahimi            "( $O_NEXT_CLI -dtls -sess_out $SESSION; \
4098*62c56f98SSadaf Ebrahimi               $O_NEXT_CLI -dtls -sess_in $SESSION; \
4099*62c56f98SSadaf Ebrahimi               rm -f $SESSION )" \
4100*62c56f98SSadaf Ebrahimi            0 \
4101*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
4102*62c56f98SSadaf Ebrahimi            -s "server hello, adding session ticket extension" \
4103*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
4104*62c56f98SSadaf Ebrahimi            -s "session successfully restored from ticket" \
4105*62c56f98SSadaf Ebrahimi            -s "a session has been resumed"
4106*62c56f98SSadaf Ebrahimi
4107*62c56f98SSadaf Ebrahimi# Tests for Session Resume based on session-ID and cache
4108*62c56f98SSadaf Ebrahimi
4109*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CACHE_C
4110*62c56f98SSadaf Ebrahimirun_test    "Session resume using cache: tickets enabled on client" \
4111*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=0" \
4112*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=1 reconnect=1" \
4113*62c56f98SSadaf Ebrahimi            0 \
4114*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
4115*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
4116*62c56f98SSadaf Ebrahimi            -S "server hello, adding session ticket extension" \
4117*62c56f98SSadaf Ebrahimi            -C "found session_ticket extension" \
4118*62c56f98SSadaf Ebrahimi            -C "parse new session ticket" \
4119*62c56f98SSadaf Ebrahimi            -s "session successfully restored from cache" \
4120*62c56f98SSadaf Ebrahimi            -S "session successfully restored from ticket" \
4121*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
4122*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
4123*62c56f98SSadaf Ebrahimi
4124*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CACHE_C
4125*62c56f98SSadaf Ebrahimirun_test    "Session resume using cache: tickets enabled on server" \
4126*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=1" \
4127*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=0 reconnect=1" \
4128*62c56f98SSadaf Ebrahimi            0 \
4129*62c56f98SSadaf Ebrahimi            -C "client hello, adding session ticket extension" \
4130*62c56f98SSadaf Ebrahimi            -S "found session ticket extension" \
4131*62c56f98SSadaf Ebrahimi            -S "server hello, adding session ticket extension" \
4132*62c56f98SSadaf Ebrahimi            -C "found session_ticket extension" \
4133*62c56f98SSadaf Ebrahimi            -C "parse new session ticket" \
4134*62c56f98SSadaf Ebrahimi            -s "session successfully restored from cache" \
4135*62c56f98SSadaf Ebrahimi            -S "session successfully restored from ticket" \
4136*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
4137*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
4138*62c56f98SSadaf Ebrahimi
4139*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CACHE_C
4140*62c56f98SSadaf Ebrahimirun_test    "Session resume using cache: cache_max=0" \
4141*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=0 cache_max=0" \
4142*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=0 reconnect=1" \
4143*62c56f98SSadaf Ebrahimi            0 \
4144*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
4145*62c56f98SSadaf Ebrahimi            -S "session successfully restored from ticket" \
4146*62c56f98SSadaf Ebrahimi            -S "a session has been resumed" \
4147*62c56f98SSadaf Ebrahimi            -C "a session has been resumed"
4148*62c56f98SSadaf Ebrahimi
4149*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CACHE_C
4150*62c56f98SSadaf Ebrahimirun_test    "Session resume using cache: cache_max=1" \
4151*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=0 cache_max=1" \
4152*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=0 reconnect=1" \
4153*62c56f98SSadaf Ebrahimi            0 \
4154*62c56f98SSadaf Ebrahimi            -s "session successfully restored from cache" \
4155*62c56f98SSadaf Ebrahimi            -S "session successfully restored from ticket" \
4156*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
4157*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
4158*62c56f98SSadaf Ebrahimi
4159*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CACHE_C
4160*62c56f98SSadaf Ebrahimirun_test    "Session resume using cache: cache removed" \
4161*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=0 cache_remove=1" \
4162*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=0 reconnect=1" \
4163*62c56f98SSadaf Ebrahimi            0 \
4164*62c56f98SSadaf Ebrahimi            -C "client hello, adding session ticket extension" \
4165*62c56f98SSadaf Ebrahimi            -S "found session ticket extension" \
4166*62c56f98SSadaf Ebrahimi            -S "server hello, adding session ticket extension" \
4167*62c56f98SSadaf Ebrahimi            -C "found session_ticket extension" \
4168*62c56f98SSadaf Ebrahimi            -C "parse new session ticket" \
4169*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
4170*62c56f98SSadaf Ebrahimi            -S "session successfully restored from ticket" \
4171*62c56f98SSadaf Ebrahimi            -S "a session has been resumed" \
4172*62c56f98SSadaf Ebrahimi            -C "a session has been resumed"
4173*62c56f98SSadaf Ebrahimi
4174*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4175*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CACHE_C
4176*62c56f98SSadaf Ebrahimirun_test    "Session resume using cache: timeout > delay" \
4177*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=0" \
4178*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=0 reconnect=1 reco_delay=0" \
4179*62c56f98SSadaf Ebrahimi            0 \
4180*62c56f98SSadaf Ebrahimi            -s "session successfully restored from cache" \
4181*62c56f98SSadaf Ebrahimi            -S "session successfully restored from ticket" \
4182*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
4183*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
4184*62c56f98SSadaf Ebrahimi
4185*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CACHE_C
4186*62c56f98SSadaf Ebrahimirun_test    "Session resume using cache: timeout < delay" \
4187*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=0 cache_timeout=1" \
4188*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=0 reconnect=1 reco_delay=2000" \
4189*62c56f98SSadaf Ebrahimi            0 \
4190*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
4191*62c56f98SSadaf Ebrahimi            -S "session successfully restored from ticket" \
4192*62c56f98SSadaf Ebrahimi            -S "a session has been resumed" \
4193*62c56f98SSadaf Ebrahimi            -C "a session has been resumed"
4194*62c56f98SSadaf Ebrahimi
4195*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CACHE_C
4196*62c56f98SSadaf Ebrahimirun_test    "Session resume using cache: no timeout" \
4197*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=0 cache_timeout=0" \
4198*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=0 reconnect=1 reco_delay=2000" \
4199*62c56f98SSadaf Ebrahimi            0 \
4200*62c56f98SSadaf Ebrahimi            -s "session successfully restored from cache" \
4201*62c56f98SSadaf Ebrahimi            -S "session successfully restored from ticket" \
4202*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
4203*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
4204*62c56f98SSadaf Ebrahimi
4205*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CACHE_C
4206*62c56f98SSadaf Ebrahimirun_test    "Session resume using cache: session copy" \
4207*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=0" \
4208*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 tickets=0 reconnect=1 reco_mode=0" \
4209*62c56f98SSadaf Ebrahimi            0 \
4210*62c56f98SSadaf Ebrahimi            -s "session successfully restored from cache" \
4211*62c56f98SSadaf Ebrahimi            -S "session successfully restored from ticket" \
4212*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
4213*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
4214*62c56f98SSadaf Ebrahimi
4215*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CACHE_C
4216*62c56f98SSadaf Ebrahimirun_test    "Session resume using cache: openssl client" \
4217*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 debug_level=3 tickets=0" \
4218*62c56f98SSadaf Ebrahimi            "( $O_CLI -sess_out $SESSION; \
4219*62c56f98SSadaf Ebrahimi               $O_CLI -sess_in $SESSION; \
4220*62c56f98SSadaf Ebrahimi               rm -f $SESSION )" \
4221*62c56f98SSadaf Ebrahimi            0 \
4222*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
4223*62c56f98SSadaf Ebrahimi            -S "server hello, adding session ticket extension" \
4224*62c56f98SSadaf Ebrahimi            -s "session successfully restored from cache" \
4225*62c56f98SSadaf Ebrahimi            -S "session successfully restored from ticket" \
4226*62c56f98SSadaf Ebrahimi            -s "a session has been resumed"
4227*62c56f98SSadaf Ebrahimi
4228*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4229*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CACHE_C
4230*62c56f98SSadaf Ebrahimirun_test    "Session resume using cache: openssl server" \
4231*62c56f98SSadaf Ebrahimi            "$O_SRV -tls1_2" \
4232*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 tickets=0 reconnect=1" \
4233*62c56f98SSadaf Ebrahimi            0 \
4234*62c56f98SSadaf Ebrahimi            -C "found session_ticket extension" \
4235*62c56f98SSadaf Ebrahimi            -C "parse new session ticket" \
4236*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
4237*62c56f98SSadaf Ebrahimi
4238*62c56f98SSadaf Ebrahimi# Tests for Session resume and extensions
4239*62c56f98SSadaf Ebrahimi
4240*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4241*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_CONNECTION_ID
4242*62c56f98SSadaf Ebrahimirun_test    "Session resume and connection ID" \
4243*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 cid=1 cid_val=dead dtls=1 tickets=0" \
4244*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 cid=1 cid_val=beef dtls=1 tickets=0 reconnect=1" \
4245*62c56f98SSadaf Ebrahimi            0 \
4246*62c56f98SSadaf Ebrahimi            -c "Enable use of CID extension." \
4247*62c56f98SSadaf Ebrahimi            -s "Enable use of CID extension." \
4248*62c56f98SSadaf Ebrahimi            -c "client hello, adding CID extension" \
4249*62c56f98SSadaf Ebrahimi            -s "found CID extension"           \
4250*62c56f98SSadaf Ebrahimi            -s "Use of CID extension negotiated" \
4251*62c56f98SSadaf Ebrahimi            -s "server hello, adding CID extension" \
4252*62c56f98SSadaf Ebrahimi            -c "found CID extension" \
4253*62c56f98SSadaf Ebrahimi            -c "Use of CID extension negotiated" \
4254*62c56f98SSadaf Ebrahimi            -s "Copy CIDs into SSL transform" \
4255*62c56f98SSadaf Ebrahimi            -c "Copy CIDs into SSL transform" \
4256*62c56f98SSadaf Ebrahimi            -c "Peer CID (length 2 Bytes): de ad" \
4257*62c56f98SSadaf Ebrahimi            -s "Peer CID (length 2 Bytes): be ef" \
4258*62c56f98SSadaf Ebrahimi            -s "Use of Connection ID has been negotiated" \
4259*62c56f98SSadaf Ebrahimi            -c "Use of Connection ID has been negotiated"
4260*62c56f98SSadaf Ebrahimi
4261*62c56f98SSadaf Ebrahimi# Tests for Session Resume based on session-ID and cache, DTLS
4262*62c56f98SSadaf Ebrahimi
4263*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4264*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CACHE_C
4265*62c56f98SSadaf Ebrahimirun_test    "Session resume using cache, DTLS: tickets enabled on client" \
4266*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=3 tickets=0" \
4267*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=3 tickets=1 reconnect=1 skip_close_notify=1" \
4268*62c56f98SSadaf Ebrahimi            0 \
4269*62c56f98SSadaf Ebrahimi            -c "client hello, adding session ticket extension" \
4270*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
4271*62c56f98SSadaf Ebrahimi            -S "server hello, adding session ticket extension" \
4272*62c56f98SSadaf Ebrahimi            -C "found session_ticket extension" \
4273*62c56f98SSadaf Ebrahimi            -C "parse new session ticket" \
4274*62c56f98SSadaf Ebrahimi            -s "session successfully restored from cache" \
4275*62c56f98SSadaf Ebrahimi            -S "session successfully restored from ticket" \
4276*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
4277*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
4278*62c56f98SSadaf Ebrahimi
4279*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4280*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CACHE_C
4281*62c56f98SSadaf Ebrahimirun_test    "Session resume using cache, DTLS: tickets enabled on server" \
4282*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=3 tickets=1" \
4283*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1" \
4284*62c56f98SSadaf Ebrahimi            0 \
4285*62c56f98SSadaf Ebrahimi            -C "client hello, adding session ticket extension" \
4286*62c56f98SSadaf Ebrahimi            -S "found session ticket extension" \
4287*62c56f98SSadaf Ebrahimi            -S "server hello, adding session ticket extension" \
4288*62c56f98SSadaf Ebrahimi            -C "found session_ticket extension" \
4289*62c56f98SSadaf Ebrahimi            -C "parse new session ticket" \
4290*62c56f98SSadaf Ebrahimi            -s "session successfully restored from cache" \
4291*62c56f98SSadaf Ebrahimi            -S "session successfully restored from ticket" \
4292*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
4293*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
4294*62c56f98SSadaf Ebrahimi
4295*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4296*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CACHE_C
4297*62c56f98SSadaf Ebrahimirun_test    "Session resume using cache, DTLS: cache_max=0" \
4298*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=3 tickets=0 cache_max=0" \
4299*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1" \
4300*62c56f98SSadaf Ebrahimi            0 \
4301*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
4302*62c56f98SSadaf Ebrahimi            -S "session successfully restored from ticket" \
4303*62c56f98SSadaf Ebrahimi            -S "a session has been resumed" \
4304*62c56f98SSadaf Ebrahimi            -C "a session has been resumed"
4305*62c56f98SSadaf Ebrahimi
4306*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4307*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CACHE_C
4308*62c56f98SSadaf Ebrahimirun_test    "Session resume using cache, DTLS: cache_max=1" \
4309*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=3 tickets=0 cache_max=1" \
4310*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1" \
4311*62c56f98SSadaf Ebrahimi            0 \
4312*62c56f98SSadaf Ebrahimi            -s "session successfully restored from cache" \
4313*62c56f98SSadaf Ebrahimi            -S "session successfully restored from ticket" \
4314*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
4315*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
4316*62c56f98SSadaf Ebrahimi
4317*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4318*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CACHE_C
4319*62c56f98SSadaf Ebrahimirun_test    "Session resume using cache, DTLS: timeout > delay" \
4320*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=3 tickets=0" \
4321*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1 reco_delay=0" \
4322*62c56f98SSadaf Ebrahimi            0 \
4323*62c56f98SSadaf Ebrahimi            -s "session successfully restored from cache" \
4324*62c56f98SSadaf Ebrahimi            -S "session successfully restored from ticket" \
4325*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
4326*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
4327*62c56f98SSadaf Ebrahimi
4328*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4329*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CACHE_C
4330*62c56f98SSadaf Ebrahimirun_test    "Session resume using cache, DTLS: timeout < delay" \
4331*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=3 tickets=0 cache_timeout=1" \
4332*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1 reco_delay=2000" \
4333*62c56f98SSadaf Ebrahimi            0 \
4334*62c56f98SSadaf Ebrahimi            -S "session successfully restored from cache" \
4335*62c56f98SSadaf Ebrahimi            -S "session successfully restored from ticket" \
4336*62c56f98SSadaf Ebrahimi            -S "a session has been resumed" \
4337*62c56f98SSadaf Ebrahimi            -C "a session has been resumed"
4338*62c56f98SSadaf Ebrahimi
4339*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4340*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CACHE_C
4341*62c56f98SSadaf Ebrahimirun_test    "Session resume using cache, DTLS: no timeout" \
4342*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=3 tickets=0 cache_timeout=0" \
4343*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1 reco_delay=2000" \
4344*62c56f98SSadaf Ebrahimi            0 \
4345*62c56f98SSadaf Ebrahimi            -s "session successfully restored from cache" \
4346*62c56f98SSadaf Ebrahimi            -S "session successfully restored from ticket" \
4347*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
4348*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
4349*62c56f98SSadaf Ebrahimi
4350*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4351*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CACHE_C
4352*62c56f98SSadaf Ebrahimirun_test    "Session resume using cache, DTLS: session copy" \
4353*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=3 tickets=0" \
4354*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 skip_close_notify=1 reco_mode=0" \
4355*62c56f98SSadaf Ebrahimi            0 \
4356*62c56f98SSadaf Ebrahimi            -s "session successfully restored from cache" \
4357*62c56f98SSadaf Ebrahimi            -S "session successfully restored from ticket" \
4358*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
4359*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
4360*62c56f98SSadaf Ebrahimi
4361*62c56f98SSadaf Ebrahimi# For reasons that aren't fully understood, this test randomly fails with high
4362*62c56f98SSadaf Ebrahimi# probability with OpenSSL 1.0.2g on the CI, see #5012.
4363*62c56f98SSadaf Ebrahimirequires_openssl_next
4364*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4365*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CACHE_C
4366*62c56f98SSadaf Ebrahimirun_test    "Session resume using cache, DTLS: openssl client" \
4367*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=3 tickets=0" \
4368*62c56f98SSadaf Ebrahimi            "( $O_NEXT_CLI -dtls -sess_out $SESSION; \
4369*62c56f98SSadaf Ebrahimi               $O_NEXT_CLI -dtls -sess_in $SESSION; \
4370*62c56f98SSadaf Ebrahimi               rm -f $SESSION )" \
4371*62c56f98SSadaf Ebrahimi            0 \
4372*62c56f98SSadaf Ebrahimi            -s "found session ticket extension" \
4373*62c56f98SSadaf Ebrahimi            -S "server hello, adding session ticket extension" \
4374*62c56f98SSadaf Ebrahimi            -s "session successfully restored from cache" \
4375*62c56f98SSadaf Ebrahimi            -S "session successfully restored from ticket" \
4376*62c56f98SSadaf Ebrahimi            -s "a session has been resumed"
4377*62c56f98SSadaf Ebrahimi
4378*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4379*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CACHE_C
4380*62c56f98SSadaf Ebrahimirun_test    "Session resume using cache, DTLS: openssl server" \
4381*62c56f98SSadaf Ebrahimi            "$O_SRV -dtls" \
4382*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1" \
4383*62c56f98SSadaf Ebrahimi            0 \
4384*62c56f98SSadaf Ebrahimi            -C "found session_ticket extension" \
4385*62c56f98SSadaf Ebrahimi            -C "parse new session ticket" \
4386*62c56f98SSadaf Ebrahimi            -c "a session has been resumed"
4387*62c56f98SSadaf Ebrahimi
4388*62c56f98SSadaf Ebrahimi# Tests for Max Fragment Length extension
4389*62c56f98SSadaf Ebrahimi
4390*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4391*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4392*62c56f98SSadaf Ebrahimirun_test    "Max fragment length: enabled, default" \
4393*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3" \
4394*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3" \
4395*62c56f98SSadaf Ebrahimi            0 \
4396*62c56f98SSadaf Ebrahimi            -c "Maximum incoming record payload length is $MAX_CONTENT_LEN" \
4397*62c56f98SSadaf Ebrahimi            -c "Maximum outgoing record payload length is $MAX_CONTENT_LEN" \
4398*62c56f98SSadaf Ebrahimi            -s "Maximum incoming record payload length is $MAX_CONTENT_LEN" \
4399*62c56f98SSadaf Ebrahimi            -s "Maximum outgoing record payload length is $MAX_CONTENT_LEN" \
4400*62c56f98SSadaf Ebrahimi            -C "client hello, adding max_fragment_length extension" \
4401*62c56f98SSadaf Ebrahimi            -S "found max fragment length extension" \
4402*62c56f98SSadaf Ebrahimi            -S "server hello, max_fragment_length extension" \
4403*62c56f98SSadaf Ebrahimi            -C "found max_fragment_length extension"
4404*62c56f98SSadaf Ebrahimi
4405*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4406*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4407*62c56f98SSadaf Ebrahimirun_test    "Max fragment length: enabled, default, larger message" \
4408*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3" \
4409*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 request_size=$(( $MAX_CONTENT_LEN + 1))" \
4410*62c56f98SSadaf Ebrahimi            0 \
4411*62c56f98SSadaf Ebrahimi            -c "Maximum incoming record payload length is $MAX_CONTENT_LEN" \
4412*62c56f98SSadaf Ebrahimi            -c "Maximum outgoing record payload length is $MAX_CONTENT_LEN" \
4413*62c56f98SSadaf Ebrahimi            -s "Maximum incoming record payload length is $MAX_CONTENT_LEN" \
4414*62c56f98SSadaf Ebrahimi            -s "Maximum outgoing record payload length is $MAX_CONTENT_LEN" \
4415*62c56f98SSadaf Ebrahimi            -C "client hello, adding max_fragment_length extension" \
4416*62c56f98SSadaf Ebrahimi            -S "found max fragment length extension" \
4417*62c56f98SSadaf Ebrahimi            -S "server hello, max_fragment_length extension" \
4418*62c56f98SSadaf Ebrahimi            -C "found max_fragment_length extension" \
4419*62c56f98SSadaf Ebrahimi            -c "$(( $MAX_CONTENT_LEN + 1)) bytes written in 2 fragments" \
4420*62c56f98SSadaf Ebrahimi            -s "$MAX_CONTENT_LEN bytes read" \
4421*62c56f98SSadaf Ebrahimi            -s "1 bytes read"
4422*62c56f98SSadaf Ebrahimi
4423*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4424*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4425*62c56f98SSadaf Ebrahimirun_test    "Max fragment length, DTLS: enabled, default, larger message" \
4426*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1" \
4427*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 request_size=$(( $MAX_CONTENT_LEN + 1))" \
4428*62c56f98SSadaf Ebrahimi            1 \
4429*62c56f98SSadaf Ebrahimi            -c "Maximum incoming record payload length is $MAX_CONTENT_LEN" \
4430*62c56f98SSadaf Ebrahimi            -c "Maximum outgoing record payload length is $MAX_CONTENT_LEN" \
4431*62c56f98SSadaf Ebrahimi            -s "Maximum incoming record payload length is $MAX_CONTENT_LEN" \
4432*62c56f98SSadaf Ebrahimi            -s "Maximum outgoing record payload length is $MAX_CONTENT_LEN" \
4433*62c56f98SSadaf Ebrahimi            -C "client hello, adding max_fragment_length extension" \
4434*62c56f98SSadaf Ebrahimi            -S "found max fragment length extension" \
4435*62c56f98SSadaf Ebrahimi            -S "server hello, max_fragment_length extension" \
4436*62c56f98SSadaf Ebrahimi            -C "found max_fragment_length extension" \
4437*62c56f98SSadaf Ebrahimi            -c "fragment larger than.*maximum "
4438*62c56f98SSadaf Ebrahimi
4439*62c56f98SSadaf Ebrahimi# Run some tests with MBEDTLS_SSL_MAX_FRAGMENT_LENGTH disabled
4440*62c56f98SSadaf Ebrahimi# (session fragment length will be 16384 regardless of mbedtls
4441*62c56f98SSadaf Ebrahimi# content length configuration.)
4442*62c56f98SSadaf Ebrahimi
4443*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4444*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4445*62c56f98SSadaf Ebrahimirun_test    "Max fragment length: disabled, larger message" \
4446*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3" \
4447*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 request_size=$(( $MAX_CONTENT_LEN + 1))" \
4448*62c56f98SSadaf Ebrahimi            0 \
4449*62c56f98SSadaf Ebrahimi            -C "Maximum incoming record payload length is 16384" \
4450*62c56f98SSadaf Ebrahimi            -C "Maximum outgoing record payload length is 16384" \
4451*62c56f98SSadaf Ebrahimi            -S "Maximum incoming record payload length is 16384" \
4452*62c56f98SSadaf Ebrahimi            -S "Maximum outgoing record payload length is 16384" \
4453*62c56f98SSadaf Ebrahimi            -c "$(( $MAX_CONTENT_LEN + 1)) bytes written in 2 fragments" \
4454*62c56f98SSadaf Ebrahimi            -s "$MAX_CONTENT_LEN bytes read" \
4455*62c56f98SSadaf Ebrahimi            -s "1 bytes read"
4456*62c56f98SSadaf Ebrahimi
4457*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4458*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4459*62c56f98SSadaf Ebrahimirun_test    "Max fragment length, DTLS: disabled, larger message" \
4460*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1" \
4461*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 request_size=$(( $MAX_CONTENT_LEN + 1))" \
4462*62c56f98SSadaf Ebrahimi            1 \
4463*62c56f98SSadaf Ebrahimi            -C "Maximum incoming record payload length is 16384" \
4464*62c56f98SSadaf Ebrahimi            -C "Maximum outgoing record payload length is 16384" \
4465*62c56f98SSadaf Ebrahimi            -S "Maximum incoming record payload length is 16384" \
4466*62c56f98SSadaf Ebrahimi            -S "Maximum outgoing record payload length is 16384" \
4467*62c56f98SSadaf Ebrahimi            -c "fragment larger than.*maximum "
4468*62c56f98SSadaf Ebrahimi
4469*62c56f98SSadaf Ebrahimirequires_max_content_len 4096
4470*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4471*62c56f98SSadaf Ebrahimirun_test    "Max fragment length: used by client" \
4472*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3" \
4473*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 max_frag_len=4096" \
4474*62c56f98SSadaf Ebrahimi            0 \
4475*62c56f98SSadaf Ebrahimi            -c "Maximum incoming record payload length is 4096" \
4476*62c56f98SSadaf Ebrahimi            -c "Maximum outgoing record payload length is 4096" \
4477*62c56f98SSadaf Ebrahimi            -s "Maximum incoming record payload length is 4096" \
4478*62c56f98SSadaf Ebrahimi            -s "Maximum outgoing record payload length is 4096" \
4479*62c56f98SSadaf Ebrahimi            -c "client hello, adding max_fragment_length extension" \
4480*62c56f98SSadaf Ebrahimi            -s "found max fragment length extension" \
4481*62c56f98SSadaf Ebrahimi            -s "server hello, max_fragment_length extension" \
4482*62c56f98SSadaf Ebrahimi            -c "found max_fragment_length extension"
4483*62c56f98SSadaf Ebrahimi
4484*62c56f98SSadaf Ebrahimirequires_max_content_len 1024
4485*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4486*62c56f98SSadaf Ebrahimirun_test    "Max fragment length: client 512, server 1024" \
4487*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 max_frag_len=1024" \
4488*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 max_frag_len=512" \
4489*62c56f98SSadaf Ebrahimi            0 \
4490*62c56f98SSadaf Ebrahimi            -c "Maximum incoming record payload length is 512" \
4491*62c56f98SSadaf Ebrahimi            -c "Maximum outgoing record payload length is 512" \
4492*62c56f98SSadaf Ebrahimi            -s "Maximum incoming record payload length is 512" \
4493*62c56f98SSadaf Ebrahimi            -s "Maximum outgoing record payload length is 512" \
4494*62c56f98SSadaf Ebrahimi            -c "client hello, adding max_fragment_length extension" \
4495*62c56f98SSadaf Ebrahimi            -s "found max fragment length extension" \
4496*62c56f98SSadaf Ebrahimi            -s "server hello, max_fragment_length extension" \
4497*62c56f98SSadaf Ebrahimi            -c "found max_fragment_length extension"
4498*62c56f98SSadaf Ebrahimi
4499*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
4500*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4501*62c56f98SSadaf Ebrahimirun_test    "Max fragment length: client 512, server 2048" \
4502*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 max_frag_len=2048" \
4503*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 max_frag_len=512" \
4504*62c56f98SSadaf Ebrahimi            0 \
4505*62c56f98SSadaf Ebrahimi            -c "Maximum incoming record payload length is 512" \
4506*62c56f98SSadaf Ebrahimi            -c "Maximum outgoing record payload length is 512" \
4507*62c56f98SSadaf Ebrahimi            -s "Maximum incoming record payload length is 512" \
4508*62c56f98SSadaf Ebrahimi            -s "Maximum outgoing record payload length is 512" \
4509*62c56f98SSadaf Ebrahimi            -c "client hello, adding max_fragment_length extension" \
4510*62c56f98SSadaf Ebrahimi            -s "found max fragment length extension" \
4511*62c56f98SSadaf Ebrahimi            -s "server hello, max_fragment_length extension" \
4512*62c56f98SSadaf Ebrahimi            -c "found max_fragment_length extension"
4513*62c56f98SSadaf Ebrahimi
4514*62c56f98SSadaf Ebrahimirequires_max_content_len 4096
4515*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4516*62c56f98SSadaf Ebrahimirun_test    "Max fragment length: client 512, server 4096" \
4517*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 max_frag_len=4096" \
4518*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 max_frag_len=512" \
4519*62c56f98SSadaf Ebrahimi            0 \
4520*62c56f98SSadaf Ebrahimi            -c "Maximum incoming record payload length is 512" \
4521*62c56f98SSadaf Ebrahimi            -c "Maximum outgoing record payload length is 512" \
4522*62c56f98SSadaf Ebrahimi            -s "Maximum incoming record payload length is 512" \
4523*62c56f98SSadaf Ebrahimi            -s "Maximum outgoing record payload length is 512" \
4524*62c56f98SSadaf Ebrahimi            -c "client hello, adding max_fragment_length extension" \
4525*62c56f98SSadaf Ebrahimi            -s "found max fragment length extension" \
4526*62c56f98SSadaf Ebrahimi            -s "server hello, max_fragment_length extension" \
4527*62c56f98SSadaf Ebrahimi            -c "found max_fragment_length extension"
4528*62c56f98SSadaf Ebrahimi
4529*62c56f98SSadaf Ebrahimirequires_max_content_len 1024
4530*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4531*62c56f98SSadaf Ebrahimirun_test    "Max fragment length: client 1024, server 512" \
4532*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 debug_level=3 max_frag_len=512" \
4533*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 max_frag_len=1024" \
4534*62c56f98SSadaf Ebrahimi            0 \
4535*62c56f98SSadaf Ebrahimi            -c "Maximum incoming record payload length is 1024" \
4536*62c56f98SSadaf Ebrahimi            -c "Maximum outgoing record payload length is 1024" \
4537*62c56f98SSadaf Ebrahimi            -s "Maximum incoming record payload length is 1024" \
4538*62c56f98SSadaf Ebrahimi            -s "Maximum outgoing record payload length is 512" \
4539*62c56f98SSadaf Ebrahimi            -c "client hello, adding max_fragment_length extension" \
4540*62c56f98SSadaf Ebrahimi            -s "found max fragment length extension" \
4541*62c56f98SSadaf Ebrahimi            -s "server hello, max_fragment_length extension" \
4542*62c56f98SSadaf Ebrahimi            -c "found max_fragment_length extension"
4543*62c56f98SSadaf Ebrahimi
4544*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
4545*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4546*62c56f98SSadaf Ebrahimirun_test    "Max fragment length: client 1024, server 2048" \
4547*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 max_frag_len=2048" \
4548*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 max_frag_len=1024" \
4549*62c56f98SSadaf Ebrahimi            0 \
4550*62c56f98SSadaf Ebrahimi            -c "Maximum incoming record payload length is 1024" \
4551*62c56f98SSadaf Ebrahimi            -c "Maximum outgoing record payload length is 1024" \
4552*62c56f98SSadaf Ebrahimi            -s "Maximum incoming record payload length is 1024" \
4553*62c56f98SSadaf Ebrahimi            -s "Maximum outgoing record payload length is 1024" \
4554*62c56f98SSadaf Ebrahimi            -c "client hello, adding max_fragment_length extension" \
4555*62c56f98SSadaf Ebrahimi            -s "found max fragment length extension" \
4556*62c56f98SSadaf Ebrahimi            -s "server hello, max_fragment_length extension" \
4557*62c56f98SSadaf Ebrahimi            -c "found max_fragment_length extension"
4558*62c56f98SSadaf Ebrahimi
4559*62c56f98SSadaf Ebrahimirequires_max_content_len 4096
4560*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4561*62c56f98SSadaf Ebrahimirun_test    "Max fragment length: client 1024, server 4096" \
4562*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 max_frag_len=4096" \
4563*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 max_frag_len=1024" \
4564*62c56f98SSadaf Ebrahimi            0 \
4565*62c56f98SSadaf Ebrahimi            -c "Maximum incoming record payload length is 1024" \
4566*62c56f98SSadaf Ebrahimi            -c "Maximum outgoing record payload length is 1024" \
4567*62c56f98SSadaf Ebrahimi            -s "Maximum incoming record payload length is 1024" \
4568*62c56f98SSadaf Ebrahimi            -s "Maximum outgoing record payload length is 1024" \
4569*62c56f98SSadaf Ebrahimi            -c "client hello, adding max_fragment_length extension" \
4570*62c56f98SSadaf Ebrahimi            -s "found max fragment length extension" \
4571*62c56f98SSadaf Ebrahimi            -s "server hello, max_fragment_length extension" \
4572*62c56f98SSadaf Ebrahimi            -c "found max_fragment_length extension"
4573*62c56f98SSadaf Ebrahimi
4574*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
4575*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4576*62c56f98SSadaf Ebrahimirun_test    "Max fragment length: client 2048, server 512" \
4577*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 debug_level=3 max_frag_len=512" \
4578*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 max_frag_len=2048" \
4579*62c56f98SSadaf Ebrahimi            0 \
4580*62c56f98SSadaf Ebrahimi            -c "Maximum incoming record payload length is 2048" \
4581*62c56f98SSadaf Ebrahimi            -c "Maximum outgoing record payload length is 2048" \
4582*62c56f98SSadaf Ebrahimi            -s "Maximum incoming record payload length is 2048" \
4583*62c56f98SSadaf Ebrahimi            -s "Maximum outgoing record payload length is 512" \
4584*62c56f98SSadaf Ebrahimi            -c "client hello, adding max_fragment_length extension" \
4585*62c56f98SSadaf Ebrahimi            -s "found max fragment length extension" \
4586*62c56f98SSadaf Ebrahimi            -s "server hello, max_fragment_length extension" \
4587*62c56f98SSadaf Ebrahimi            -c "found max_fragment_length extension"
4588*62c56f98SSadaf Ebrahimi
4589*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
4590*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4591*62c56f98SSadaf Ebrahimirun_test    "Max fragment length: client 2048, server 1024" \
4592*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 debug_level=3 max_frag_len=1024" \
4593*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 max_frag_len=2048" \
4594*62c56f98SSadaf Ebrahimi            0 \
4595*62c56f98SSadaf Ebrahimi            -c "Maximum incoming record payload length is 2048" \
4596*62c56f98SSadaf Ebrahimi            -c "Maximum outgoing record payload length is 2048" \
4597*62c56f98SSadaf Ebrahimi            -s "Maximum incoming record payload length is 2048" \
4598*62c56f98SSadaf Ebrahimi            -s "Maximum outgoing record payload length is 1024" \
4599*62c56f98SSadaf Ebrahimi            -c "client hello, adding max_fragment_length extension" \
4600*62c56f98SSadaf Ebrahimi            -s "found max fragment length extension" \
4601*62c56f98SSadaf Ebrahimi            -s "server hello, max_fragment_length extension" \
4602*62c56f98SSadaf Ebrahimi            -c "found max_fragment_length extension"
4603*62c56f98SSadaf Ebrahimi
4604*62c56f98SSadaf Ebrahimirequires_max_content_len 4096
4605*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4606*62c56f98SSadaf Ebrahimirun_test    "Max fragment length: client 2048, server 4096" \
4607*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 max_frag_len=4096" \
4608*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 max_frag_len=2048" \
4609*62c56f98SSadaf Ebrahimi            0 \
4610*62c56f98SSadaf Ebrahimi            -c "Maximum incoming record payload length is 2048" \
4611*62c56f98SSadaf Ebrahimi            -c "Maximum outgoing record payload length is 2048" \
4612*62c56f98SSadaf Ebrahimi            -s "Maximum incoming record payload length is 2048" \
4613*62c56f98SSadaf Ebrahimi            -s "Maximum outgoing record payload length is 2048" \
4614*62c56f98SSadaf Ebrahimi            -c "client hello, adding max_fragment_length extension" \
4615*62c56f98SSadaf Ebrahimi            -s "found max fragment length extension" \
4616*62c56f98SSadaf Ebrahimi            -s "server hello, max_fragment_length extension" \
4617*62c56f98SSadaf Ebrahimi            -c "found max_fragment_length extension"
4618*62c56f98SSadaf Ebrahimi
4619*62c56f98SSadaf Ebrahimirequires_max_content_len 4096
4620*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4621*62c56f98SSadaf Ebrahimirun_test    "Max fragment length: client 4096, server 512" \
4622*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 debug_level=3 max_frag_len=512" \
4623*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 max_frag_len=4096" \
4624*62c56f98SSadaf Ebrahimi            0 \
4625*62c56f98SSadaf Ebrahimi            -c "Maximum incoming record payload length is 4096" \
4626*62c56f98SSadaf Ebrahimi            -c "Maximum outgoing record payload length is 4096" \
4627*62c56f98SSadaf Ebrahimi            -s "Maximum incoming record payload length is 4096" \
4628*62c56f98SSadaf Ebrahimi            -s "Maximum outgoing record payload length is 512" \
4629*62c56f98SSadaf Ebrahimi            -c "client hello, adding max_fragment_length extension" \
4630*62c56f98SSadaf Ebrahimi            -s "found max fragment length extension" \
4631*62c56f98SSadaf Ebrahimi            -s "server hello, max_fragment_length extension" \
4632*62c56f98SSadaf Ebrahimi            -c "found max_fragment_length extension"
4633*62c56f98SSadaf Ebrahimi
4634*62c56f98SSadaf Ebrahimirequires_max_content_len 4096
4635*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4636*62c56f98SSadaf Ebrahimirun_test    "Max fragment length: client 4096, server 1024" \
4637*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 debug_level=3 max_frag_len=1024" \
4638*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 max_frag_len=4096" \
4639*62c56f98SSadaf Ebrahimi            0 \
4640*62c56f98SSadaf Ebrahimi            -c "Maximum incoming record payload length is 4096" \
4641*62c56f98SSadaf Ebrahimi            -c "Maximum outgoing record payload length is 4096" \
4642*62c56f98SSadaf Ebrahimi            -s "Maximum incoming record payload length is 4096" \
4643*62c56f98SSadaf Ebrahimi            -s "Maximum outgoing record payload length is 1024" \
4644*62c56f98SSadaf Ebrahimi            -c "client hello, adding max_fragment_length extension" \
4645*62c56f98SSadaf Ebrahimi            -s "found max fragment length extension" \
4646*62c56f98SSadaf Ebrahimi            -s "server hello, max_fragment_length extension" \
4647*62c56f98SSadaf Ebrahimi            -c "found max_fragment_length extension"
4648*62c56f98SSadaf Ebrahimi
4649*62c56f98SSadaf Ebrahimirequires_max_content_len 4096
4650*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4651*62c56f98SSadaf Ebrahimirun_test    "Max fragment length: client 4096, server 2048" \
4652*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 debug_level=3 max_frag_len=2048" \
4653*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 max_frag_len=4096" \
4654*62c56f98SSadaf Ebrahimi            0 \
4655*62c56f98SSadaf Ebrahimi            -c "Maximum incoming record payload length is 4096" \
4656*62c56f98SSadaf Ebrahimi            -c "Maximum outgoing record payload length is 4096" \
4657*62c56f98SSadaf Ebrahimi            -s "Maximum incoming record payload length is 4096" \
4658*62c56f98SSadaf Ebrahimi            -s "Maximum outgoing record payload length is 2048" \
4659*62c56f98SSadaf Ebrahimi            -c "client hello, adding max_fragment_length extension" \
4660*62c56f98SSadaf Ebrahimi            -s "found max fragment length extension" \
4661*62c56f98SSadaf Ebrahimi            -s "server hello, max_fragment_length extension" \
4662*62c56f98SSadaf Ebrahimi            -c "found max_fragment_length extension"
4663*62c56f98SSadaf Ebrahimi
4664*62c56f98SSadaf Ebrahimirequires_max_content_len 4096
4665*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4666*62c56f98SSadaf Ebrahimirun_test    "Max fragment length: used by server" \
4667*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 debug_level=3 max_frag_len=4096" \
4668*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3" \
4669*62c56f98SSadaf Ebrahimi            0 \
4670*62c56f98SSadaf Ebrahimi            -c "Maximum incoming record payload length is $MAX_CONTENT_LEN" \
4671*62c56f98SSadaf Ebrahimi            -c "Maximum outgoing record payload length is $MAX_CONTENT_LEN" \
4672*62c56f98SSadaf Ebrahimi            -s "Maximum incoming record payload length is $MAX_CONTENT_LEN" \
4673*62c56f98SSadaf Ebrahimi            -s "Maximum outgoing record payload length is 4096" \
4674*62c56f98SSadaf Ebrahimi            -C "client hello, adding max_fragment_length extension" \
4675*62c56f98SSadaf Ebrahimi            -S "found max fragment length extension" \
4676*62c56f98SSadaf Ebrahimi            -S "server hello, max_fragment_length extension" \
4677*62c56f98SSadaf Ebrahimi            -C "found max_fragment_length extension"
4678*62c56f98SSadaf Ebrahimi
4679*62c56f98SSadaf Ebrahimirequires_max_content_len 4096
4680*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4681*62c56f98SSadaf Ebrahimirequires_gnutls
4682*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4683*62c56f98SSadaf Ebrahimirun_test    "Max fragment length: gnutls server" \
4684*62c56f98SSadaf Ebrahimi            "$G_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2" \
4685*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 max_frag_len=4096" \
4686*62c56f98SSadaf Ebrahimi            0 \
4687*62c56f98SSadaf Ebrahimi            -c "Maximum incoming record payload length is 4096" \
4688*62c56f98SSadaf Ebrahimi            -c "Maximum outgoing record payload length is 4096" \
4689*62c56f98SSadaf Ebrahimi            -c "client hello, adding max_fragment_length extension" \
4690*62c56f98SSadaf Ebrahimi            -c "found max_fragment_length extension"
4691*62c56f98SSadaf Ebrahimi
4692*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
4693*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4694*62c56f98SSadaf Ebrahimirun_test    "Max fragment length: client, message just fits" \
4695*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3" \
4696*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 max_frag_len=2048 request_size=2048" \
4697*62c56f98SSadaf Ebrahimi            0 \
4698*62c56f98SSadaf Ebrahimi            -c "Maximum incoming record payload length is 2048" \
4699*62c56f98SSadaf Ebrahimi            -c "Maximum outgoing record payload length is 2048" \
4700*62c56f98SSadaf Ebrahimi            -s "Maximum incoming record payload length is 2048" \
4701*62c56f98SSadaf Ebrahimi            -s "Maximum outgoing record payload length is 2048" \
4702*62c56f98SSadaf Ebrahimi            -c "client hello, adding max_fragment_length extension" \
4703*62c56f98SSadaf Ebrahimi            -s "found max fragment length extension" \
4704*62c56f98SSadaf Ebrahimi            -s "server hello, max_fragment_length extension" \
4705*62c56f98SSadaf Ebrahimi            -c "found max_fragment_length extension" \
4706*62c56f98SSadaf Ebrahimi            -c "2048 bytes written in 1 fragments" \
4707*62c56f98SSadaf Ebrahimi            -s "2048 bytes read"
4708*62c56f98SSadaf Ebrahimi
4709*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
4710*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4711*62c56f98SSadaf Ebrahimirun_test    "Max fragment length: client, larger message" \
4712*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3" \
4713*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 max_frag_len=2048 request_size=2345" \
4714*62c56f98SSadaf Ebrahimi            0 \
4715*62c56f98SSadaf Ebrahimi            -c "Maximum incoming record payload length is 2048" \
4716*62c56f98SSadaf Ebrahimi            -c "Maximum outgoing record payload length is 2048" \
4717*62c56f98SSadaf Ebrahimi            -s "Maximum incoming record payload length is 2048" \
4718*62c56f98SSadaf Ebrahimi            -s "Maximum outgoing record payload length is 2048" \
4719*62c56f98SSadaf Ebrahimi            -c "client hello, adding max_fragment_length extension" \
4720*62c56f98SSadaf Ebrahimi            -s "found max fragment length extension" \
4721*62c56f98SSadaf Ebrahimi            -s "server hello, max_fragment_length extension" \
4722*62c56f98SSadaf Ebrahimi            -c "found max_fragment_length extension" \
4723*62c56f98SSadaf Ebrahimi            -c "2345 bytes written in 2 fragments" \
4724*62c56f98SSadaf Ebrahimi            -s "2048 bytes read" \
4725*62c56f98SSadaf Ebrahimi            -s "297 bytes read"
4726*62c56f98SSadaf Ebrahimi
4727*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
4728*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4729*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
4730*62c56f98SSadaf Ebrahimirun_test    "Max fragment length: DTLS client, larger message" \
4731*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1" \
4732*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 max_frag_len=2048 request_size=2345" \
4733*62c56f98SSadaf Ebrahimi            1 \
4734*62c56f98SSadaf Ebrahimi            -c "Maximum incoming record payload length is 2048" \
4735*62c56f98SSadaf Ebrahimi            -c "Maximum outgoing record payload length is 2048" \
4736*62c56f98SSadaf Ebrahimi            -s "Maximum incoming record payload length is 2048" \
4737*62c56f98SSadaf Ebrahimi            -s "Maximum outgoing record payload length is 2048" \
4738*62c56f98SSadaf Ebrahimi            -c "client hello, adding max_fragment_length extension" \
4739*62c56f98SSadaf Ebrahimi            -s "found max fragment length extension" \
4740*62c56f98SSadaf Ebrahimi            -s "server hello, max_fragment_length extension" \
4741*62c56f98SSadaf Ebrahimi            -c "found max_fragment_length extension" \
4742*62c56f98SSadaf Ebrahimi            -c "fragment larger than.*maximum"
4743*62c56f98SSadaf Ebrahimi
4744*62c56f98SSadaf Ebrahimi# Tests for Record Size Limit extension
4745*62c56f98SSadaf Ebrahimi
4746*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
4747*62c56f98SSadaf Ebrahimirequires_gnutls_record_size_limit
4748*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RECORD_SIZE_LIMIT
4749*62c56f98SSadaf Ebrahimirun_test    "Record Size Limit: TLS 1.3: Server-side parsing, debug output and fatal alert" \
4750*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 force_version=tls13" \
4751*62c56f98SSadaf Ebrahimi            "$G_NEXT_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 -V -d 4" \
4752*62c56f98SSadaf Ebrahimi            1 \
4753*62c56f98SSadaf Ebrahimi            -c "Preparing extension (Record Size Limit/28) for 'client hello'" \
4754*62c56f98SSadaf Ebrahimi            -c "Sending extension Record Size Limit/28 (2 bytes)" \
4755*62c56f98SSadaf Ebrahimi            -s "ClientHello: record_size_limit(28) extension received."\
4756*62c56f98SSadaf Ebrahimi            -s "found record_size_limit extension" \
4757*62c56f98SSadaf Ebrahimi            -s "RecordSizeLimit: 16385 Bytes" \
4758*62c56f98SSadaf Ebrahimi            -c "Received alert \[110]: An unsupported extension was sent"
4759*62c56f98SSadaf Ebrahimi
4760*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
4761*62c56f98SSadaf Ebrahimirequires_gnutls_record_size_limit
4762*62c56f98SSadaf Ebrahimirequires_gnutls_next_disable_tls13_compat
4763*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RECORD_SIZE_LIMIT
4764*62c56f98SSadaf Ebrahimirun_test    "Record Size Limit: TLS 1.3: Client-side parsing, debug output and fatal alert" \
4765*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%DISABLE_TLS13_COMPAT_MODE --disable-client-cert -d 4" \
4766*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 force_version=tls13" \
4767*62c56f98SSadaf Ebrahimi            0 \
4768*62c56f98SSadaf Ebrahimi            -s "Preparing extension (Record Size Limit/28) for 'encrypted extensions'"
4769*62c56f98SSadaf Ebrahimi# The P_CLI can not yet send the Record Size Limit extension. Thus, the G_NEXT_SRV does not send
4770*62c56f98SSadaf Ebrahimi# a response in its EncryptedExtensions record.
4771*62c56f98SSadaf Ebrahimi#            -s "Parsing extension 'Record Size Limit/28 (2 bytes)" \
4772*62c56f98SSadaf Ebrahimi#            -s "Sending extension Record Size Limit/28 (2 bytes)" \
4773*62c56f98SSadaf Ebrahimi#            -c "EncryptedExtensions: record_size_limit(28) extension received."\
4774*62c56f98SSadaf Ebrahimi#            -c "found record_size_limit extension" \
4775*62c56f98SSadaf Ebrahimi#            -c "RecordSizeLimit: 16385 Bytes" \
4776*62c56f98SSadaf Ebrahimi#            -s "Received alert \[110]: An unsupported extension was sent"
4777*62c56f98SSadaf Ebrahimi
4778*62c56f98SSadaf Ebrahimi# Tests for renegotiation
4779*62c56f98SSadaf Ebrahimi
4780*62c56f98SSadaf Ebrahimi# Renegotiation SCSV always added, regardless of SSL_RENEGOTIATION
4781*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: none, for reference" \
4782*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 exchanges=2 auth_mode=optional" \
4783*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 exchanges=2" \
4784*62c56f98SSadaf Ebrahimi            0 \
4785*62c56f98SSadaf Ebrahimi            -C "client hello, adding renegotiation extension" \
4786*62c56f98SSadaf Ebrahimi            -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4787*62c56f98SSadaf Ebrahimi            -S "found renegotiation extension" \
4788*62c56f98SSadaf Ebrahimi            -s "server hello, secure renegotiation extension" \
4789*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
4790*62c56f98SSadaf Ebrahimi            -C "=> renegotiate" \
4791*62c56f98SSadaf Ebrahimi            -S "=> renegotiate" \
4792*62c56f98SSadaf Ebrahimi            -S "write hello request"
4793*62c56f98SSadaf Ebrahimi
4794*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
4795*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: client-initiated" \
4796*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional" \
4797*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 exchanges=2 renegotiation=1 renegotiate=1" \
4798*62c56f98SSadaf Ebrahimi            0 \
4799*62c56f98SSadaf Ebrahimi            -c "client hello, adding renegotiation extension" \
4800*62c56f98SSadaf Ebrahimi            -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4801*62c56f98SSadaf Ebrahimi            -s "found renegotiation extension" \
4802*62c56f98SSadaf Ebrahimi            -s "server hello, secure renegotiation extension" \
4803*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
4804*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
4805*62c56f98SSadaf Ebrahimi            -s "=> renegotiate" \
4806*62c56f98SSadaf Ebrahimi            -S "write hello request"
4807*62c56f98SSadaf Ebrahimi
4808*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
4809*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: server-initiated" \
4810*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional renegotiate=1" \
4811*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 exchanges=2 renegotiation=1" \
4812*62c56f98SSadaf Ebrahimi            0 \
4813*62c56f98SSadaf Ebrahimi            -c "client hello, adding renegotiation extension" \
4814*62c56f98SSadaf Ebrahimi            -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4815*62c56f98SSadaf Ebrahimi            -s "found renegotiation extension" \
4816*62c56f98SSadaf Ebrahimi            -s "server hello, secure renegotiation extension" \
4817*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
4818*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
4819*62c56f98SSadaf Ebrahimi            -s "=> renegotiate" \
4820*62c56f98SSadaf Ebrahimi            -s "write hello request"
4821*62c56f98SSadaf Ebrahimi
4822*62c56f98SSadaf Ebrahimi# Checks that no Signature Algorithm with SHA-1 gets negotiated. Negotiating SHA-1 would mean that
4823*62c56f98SSadaf Ebrahimi# the server did not parse the Signature Algorithm extension. This test is valid only if an MD
4824*62c56f98SSadaf Ebrahimi# algorithm stronger than SHA-1 is enabled in mbedtls_config.h
4825*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
4826*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: Signature Algorithms parsing, client-initiated" \
4827*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional" \
4828*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 exchanges=2 renegotiation=1 renegotiate=1" \
4829*62c56f98SSadaf Ebrahimi            0 \
4830*62c56f98SSadaf Ebrahimi            -c "client hello, adding renegotiation extension" \
4831*62c56f98SSadaf Ebrahimi            -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4832*62c56f98SSadaf Ebrahimi            -s "found renegotiation extension" \
4833*62c56f98SSadaf Ebrahimi            -s "server hello, secure renegotiation extension" \
4834*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
4835*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
4836*62c56f98SSadaf Ebrahimi            -s "=> renegotiate" \
4837*62c56f98SSadaf Ebrahimi            -S "write hello request" \
4838*62c56f98SSadaf Ebrahimi            -S "client hello v3, signature_algorithm ext: 2" # Is SHA-1 negotiated?
4839*62c56f98SSadaf Ebrahimi
4840*62c56f98SSadaf Ebrahimi# Checks that no Signature Algorithm with SHA-1 gets negotiated. Negotiating SHA-1 would mean that
4841*62c56f98SSadaf Ebrahimi# the server did not parse the Signature Algorithm extension. This test is valid only if an MD
4842*62c56f98SSadaf Ebrahimi# algorithm stronger than SHA-1 is enabled in mbedtls_config.h
4843*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
4844*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: Signature Algorithms parsing, server-initiated" \
4845*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional renegotiate=1" \
4846*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 exchanges=2 renegotiation=1" \
4847*62c56f98SSadaf Ebrahimi            0 \
4848*62c56f98SSadaf Ebrahimi            -c "client hello, adding renegotiation extension" \
4849*62c56f98SSadaf Ebrahimi            -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4850*62c56f98SSadaf Ebrahimi            -s "found renegotiation extension" \
4851*62c56f98SSadaf Ebrahimi            -s "server hello, secure renegotiation extension" \
4852*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
4853*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
4854*62c56f98SSadaf Ebrahimi            -s "=> renegotiate" \
4855*62c56f98SSadaf Ebrahimi            -s "write hello request" \
4856*62c56f98SSadaf Ebrahimi            -S "client hello v3, signature_algorithm ext: 2" # Is SHA-1 negotiated?
4857*62c56f98SSadaf Ebrahimi
4858*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
4859*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: double" \
4860*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional renegotiate=1" \
4861*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 exchanges=2 renegotiation=1 renegotiate=1" \
4862*62c56f98SSadaf Ebrahimi            0 \
4863*62c56f98SSadaf Ebrahimi            -c "client hello, adding renegotiation extension" \
4864*62c56f98SSadaf Ebrahimi            -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4865*62c56f98SSadaf Ebrahimi            -s "found renegotiation extension" \
4866*62c56f98SSadaf Ebrahimi            -s "server hello, secure renegotiation extension" \
4867*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
4868*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
4869*62c56f98SSadaf Ebrahimi            -s "=> renegotiate" \
4870*62c56f98SSadaf Ebrahimi            -s "write hello request"
4871*62c56f98SSadaf Ebrahimi
4872*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
4873*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
4874*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
4875*62c56f98SSadaf Ebrahimirun_test    "Renegotiation with max fragment length: client 2048, server 512" \
4876*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 debug_level=3 exchanges=2 renegotiation=1 auth_mode=optional renegotiate=1 max_frag_len=512" \
4877*62c56f98SSadaf Ebrahimi            "$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" \
4878*62c56f98SSadaf Ebrahimi            0 \
4879*62c56f98SSadaf Ebrahimi            -c "Maximum incoming record payload length is 2048" \
4880*62c56f98SSadaf Ebrahimi            -c "Maximum outgoing record payload length is 2048" \
4881*62c56f98SSadaf Ebrahimi            -s "Maximum incoming record payload length is 2048" \
4882*62c56f98SSadaf Ebrahimi            -s "Maximum outgoing record payload length is 512" \
4883*62c56f98SSadaf Ebrahimi            -c "client hello, adding max_fragment_length extension" \
4884*62c56f98SSadaf Ebrahimi            -s "found max fragment length extension" \
4885*62c56f98SSadaf Ebrahimi            -s "server hello, max_fragment_length extension" \
4886*62c56f98SSadaf Ebrahimi            -c "found max_fragment_length extension" \
4887*62c56f98SSadaf Ebrahimi            -c "client hello, adding renegotiation extension" \
4888*62c56f98SSadaf Ebrahimi            -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4889*62c56f98SSadaf Ebrahimi            -s "found renegotiation extension" \
4890*62c56f98SSadaf Ebrahimi            -s "server hello, secure renegotiation extension" \
4891*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
4892*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
4893*62c56f98SSadaf Ebrahimi            -s "=> renegotiate" \
4894*62c56f98SSadaf Ebrahimi            -s "write hello request"
4895*62c56f98SSadaf Ebrahimi
4896*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
4897*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: client-initiated, server-rejected" \
4898*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 exchanges=2 renegotiation=0 auth_mode=optional" \
4899*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 exchanges=2 renegotiation=1 renegotiate=1" \
4900*62c56f98SSadaf Ebrahimi            1 \
4901*62c56f98SSadaf Ebrahimi            -c "client hello, adding renegotiation extension" \
4902*62c56f98SSadaf Ebrahimi            -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4903*62c56f98SSadaf Ebrahimi            -S "found renegotiation extension" \
4904*62c56f98SSadaf Ebrahimi            -s "server hello, secure renegotiation extension" \
4905*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
4906*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
4907*62c56f98SSadaf Ebrahimi            -S "=> renegotiate" \
4908*62c56f98SSadaf Ebrahimi            -S "write hello request" \
4909*62c56f98SSadaf Ebrahimi            -c "SSL - Unexpected message at ServerHello in renegotiation" \
4910*62c56f98SSadaf Ebrahimi            -c "failed"
4911*62c56f98SSadaf Ebrahimi
4912*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
4913*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: server-initiated, client-rejected, default" \
4914*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 auth_mode=optional" \
4915*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 exchanges=2 renegotiation=0" \
4916*62c56f98SSadaf Ebrahimi            0 \
4917*62c56f98SSadaf Ebrahimi            -C "client hello, adding renegotiation extension" \
4918*62c56f98SSadaf Ebrahimi            -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4919*62c56f98SSadaf Ebrahimi            -S "found renegotiation extension" \
4920*62c56f98SSadaf Ebrahimi            -s "server hello, secure renegotiation extension" \
4921*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
4922*62c56f98SSadaf Ebrahimi            -C "=> renegotiate" \
4923*62c56f98SSadaf Ebrahimi            -S "=> renegotiate" \
4924*62c56f98SSadaf Ebrahimi            -s "write hello request" \
4925*62c56f98SSadaf Ebrahimi            -S "SSL - An unexpected message was received from our peer" \
4926*62c56f98SSadaf Ebrahimi            -S "failed"
4927*62c56f98SSadaf Ebrahimi
4928*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
4929*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: server-initiated, client-rejected, not enforced" \
4930*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 \
4931*62c56f98SSadaf Ebrahimi             renego_delay=-1 auth_mode=optional" \
4932*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 exchanges=2 renegotiation=0" \
4933*62c56f98SSadaf Ebrahimi            0 \
4934*62c56f98SSadaf Ebrahimi            -C "client hello, adding renegotiation extension" \
4935*62c56f98SSadaf Ebrahimi            -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4936*62c56f98SSadaf Ebrahimi            -S "found renegotiation extension" \
4937*62c56f98SSadaf Ebrahimi            -s "server hello, secure renegotiation extension" \
4938*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
4939*62c56f98SSadaf Ebrahimi            -C "=> renegotiate" \
4940*62c56f98SSadaf Ebrahimi            -S "=> renegotiate" \
4941*62c56f98SSadaf Ebrahimi            -s "write hello request" \
4942*62c56f98SSadaf Ebrahimi            -S "SSL - An unexpected message was received from our peer" \
4943*62c56f98SSadaf Ebrahimi            -S "failed"
4944*62c56f98SSadaf Ebrahimi
4945*62c56f98SSadaf Ebrahimi# delay 2 for 1 alert record + 1 application data record
4946*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
4947*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: server-initiated, client-rejected, delay 2" \
4948*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 \
4949*62c56f98SSadaf Ebrahimi             renego_delay=2 auth_mode=optional" \
4950*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 exchanges=2 renegotiation=0" \
4951*62c56f98SSadaf Ebrahimi            0 \
4952*62c56f98SSadaf Ebrahimi            -C "client hello, adding renegotiation extension" \
4953*62c56f98SSadaf Ebrahimi            -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4954*62c56f98SSadaf Ebrahimi            -S "found renegotiation extension" \
4955*62c56f98SSadaf Ebrahimi            -s "server hello, secure renegotiation extension" \
4956*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
4957*62c56f98SSadaf Ebrahimi            -C "=> renegotiate" \
4958*62c56f98SSadaf Ebrahimi            -S "=> renegotiate" \
4959*62c56f98SSadaf Ebrahimi            -s "write hello request" \
4960*62c56f98SSadaf Ebrahimi            -S "SSL - An unexpected message was received from our peer" \
4961*62c56f98SSadaf Ebrahimi            -S "failed"
4962*62c56f98SSadaf Ebrahimi
4963*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
4964*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: server-initiated, client-rejected, delay 0" \
4965*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 \
4966*62c56f98SSadaf Ebrahimi             renego_delay=0 auth_mode=optional" \
4967*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 exchanges=2 renegotiation=0" \
4968*62c56f98SSadaf Ebrahimi            0 \
4969*62c56f98SSadaf Ebrahimi            -C "client hello, adding renegotiation extension" \
4970*62c56f98SSadaf Ebrahimi            -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4971*62c56f98SSadaf Ebrahimi            -S "found renegotiation extension" \
4972*62c56f98SSadaf Ebrahimi            -s "server hello, secure renegotiation extension" \
4973*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
4974*62c56f98SSadaf Ebrahimi            -C "=> renegotiate" \
4975*62c56f98SSadaf Ebrahimi            -S "=> renegotiate" \
4976*62c56f98SSadaf Ebrahimi            -s "write hello request" \
4977*62c56f98SSadaf Ebrahimi            -s "SSL - An unexpected message was received from our peer"
4978*62c56f98SSadaf Ebrahimi
4979*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
4980*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: server-initiated, client-accepted, delay 0" \
4981*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 debug_level=3 exchanges=2 renegotiation=1 renegotiate=1 \
4982*62c56f98SSadaf Ebrahimi             renego_delay=0 auth_mode=optional" \
4983*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 exchanges=2 renegotiation=1" \
4984*62c56f98SSadaf Ebrahimi            0 \
4985*62c56f98SSadaf Ebrahimi            -c "client hello, adding renegotiation extension" \
4986*62c56f98SSadaf Ebrahimi            -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
4987*62c56f98SSadaf Ebrahimi            -s "found renegotiation extension" \
4988*62c56f98SSadaf Ebrahimi            -s "server hello, secure renegotiation extension" \
4989*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
4990*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
4991*62c56f98SSadaf Ebrahimi            -s "=> renegotiate" \
4992*62c56f98SSadaf Ebrahimi            -s "write hello request" \
4993*62c56f98SSadaf Ebrahimi            -S "SSL - An unexpected message was received from our peer" \
4994*62c56f98SSadaf Ebrahimi            -S "failed"
4995*62c56f98SSadaf Ebrahimi
4996*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
4997*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: periodic, just below period" \
4998*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 exchanges=9 renegotiation=1 renego_period=3 auth_mode=optional" \
4999*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 exchanges=2 renegotiation=1" \
5000*62c56f98SSadaf Ebrahimi            0 \
5001*62c56f98SSadaf Ebrahimi            -C "client hello, adding renegotiation extension" \
5002*62c56f98SSadaf Ebrahimi            -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5003*62c56f98SSadaf Ebrahimi            -S "found renegotiation extension" \
5004*62c56f98SSadaf Ebrahimi            -s "server hello, secure renegotiation extension" \
5005*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
5006*62c56f98SSadaf Ebrahimi            -S "record counter limit reached: renegotiate" \
5007*62c56f98SSadaf Ebrahimi            -C "=> renegotiate" \
5008*62c56f98SSadaf Ebrahimi            -S "=> renegotiate" \
5009*62c56f98SSadaf Ebrahimi            -S "write hello request" \
5010*62c56f98SSadaf Ebrahimi            -S "SSL - An unexpected message was received from our peer" \
5011*62c56f98SSadaf Ebrahimi            -S "failed"
5012*62c56f98SSadaf Ebrahimi
5013*62c56f98SSadaf Ebrahimi# one extra exchange to be able to complete renego
5014*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
5015*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: periodic, just above period" \
5016*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 debug_level=3 exchanges=9 renegotiation=1 renego_period=3 auth_mode=optional" \
5017*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 exchanges=4 renegotiation=1" \
5018*62c56f98SSadaf Ebrahimi            0 \
5019*62c56f98SSadaf Ebrahimi            -c "client hello, adding renegotiation extension" \
5020*62c56f98SSadaf Ebrahimi            -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5021*62c56f98SSadaf Ebrahimi            -s "found renegotiation extension" \
5022*62c56f98SSadaf Ebrahimi            -s "server hello, secure renegotiation extension" \
5023*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
5024*62c56f98SSadaf Ebrahimi            -s "record counter limit reached: renegotiate" \
5025*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
5026*62c56f98SSadaf Ebrahimi            -s "=> renegotiate" \
5027*62c56f98SSadaf Ebrahimi            -s "write hello request" \
5028*62c56f98SSadaf Ebrahimi            -S "SSL - An unexpected message was received from our peer" \
5029*62c56f98SSadaf Ebrahimi            -S "failed"
5030*62c56f98SSadaf Ebrahimi
5031*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
5032*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: periodic, two times period" \
5033*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 exchanges=9 renegotiation=1 renego_period=3 auth_mode=optional" \
5034*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 exchanges=7 renegotiation=1" \
5035*62c56f98SSadaf Ebrahimi            0 \
5036*62c56f98SSadaf Ebrahimi            -c "client hello, adding renegotiation extension" \
5037*62c56f98SSadaf Ebrahimi            -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5038*62c56f98SSadaf Ebrahimi            -s "found renegotiation extension" \
5039*62c56f98SSadaf Ebrahimi            -s "server hello, secure renegotiation extension" \
5040*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
5041*62c56f98SSadaf Ebrahimi            -s "record counter limit reached: renegotiate" \
5042*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
5043*62c56f98SSadaf Ebrahimi            -s "=> renegotiate" \
5044*62c56f98SSadaf Ebrahimi            -s "write hello request" \
5045*62c56f98SSadaf Ebrahimi            -S "SSL - An unexpected message was received from our peer" \
5046*62c56f98SSadaf Ebrahimi            -S "failed"
5047*62c56f98SSadaf Ebrahimi
5048*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
5049*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: periodic, above period, disabled" \
5050*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 debug_level=3 exchanges=9 renegotiation=0 renego_period=3 auth_mode=optional" \
5051*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 exchanges=4 renegotiation=1" \
5052*62c56f98SSadaf Ebrahimi            0 \
5053*62c56f98SSadaf Ebrahimi            -C "client hello, adding renegotiation extension" \
5054*62c56f98SSadaf Ebrahimi            -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5055*62c56f98SSadaf Ebrahimi            -S "found renegotiation extension" \
5056*62c56f98SSadaf Ebrahimi            -s "server hello, secure renegotiation extension" \
5057*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
5058*62c56f98SSadaf Ebrahimi            -S "record counter limit reached: renegotiate" \
5059*62c56f98SSadaf Ebrahimi            -C "=> renegotiate" \
5060*62c56f98SSadaf Ebrahimi            -S "=> renegotiate" \
5061*62c56f98SSadaf Ebrahimi            -S "write hello request" \
5062*62c56f98SSadaf Ebrahimi            -S "SSL - An unexpected message was received from our peer" \
5063*62c56f98SSadaf Ebrahimi            -S "failed"
5064*62c56f98SSadaf Ebrahimi
5065*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
5066*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: nbio, client-initiated" \
5067*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 nbio=2 exchanges=2 renegotiation=1 auth_mode=optional" \
5068*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 nbio=2 exchanges=2 renegotiation=1 renegotiate=1" \
5069*62c56f98SSadaf Ebrahimi            0 \
5070*62c56f98SSadaf Ebrahimi            -c "client hello, adding renegotiation extension" \
5071*62c56f98SSadaf Ebrahimi            -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5072*62c56f98SSadaf Ebrahimi            -s "found renegotiation extension" \
5073*62c56f98SSadaf Ebrahimi            -s "server hello, secure renegotiation extension" \
5074*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
5075*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
5076*62c56f98SSadaf Ebrahimi            -s "=> renegotiate" \
5077*62c56f98SSadaf Ebrahimi            -S "write hello request"
5078*62c56f98SSadaf Ebrahimi
5079*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
5080*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: nbio, server-initiated" \
5081*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 debug_level=3 nbio=2 exchanges=2 renegotiation=1 renegotiate=1 auth_mode=optional" \
5082*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 nbio=2 exchanges=2 renegotiation=1" \
5083*62c56f98SSadaf Ebrahimi            0 \
5084*62c56f98SSadaf Ebrahimi            -c "client hello, adding renegotiation extension" \
5085*62c56f98SSadaf Ebrahimi            -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5086*62c56f98SSadaf Ebrahimi            -s "found renegotiation extension" \
5087*62c56f98SSadaf Ebrahimi            -s "server hello, secure renegotiation extension" \
5088*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
5089*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
5090*62c56f98SSadaf Ebrahimi            -s "=> renegotiate" \
5091*62c56f98SSadaf Ebrahimi            -s "write hello request"
5092*62c56f98SSadaf Ebrahimi
5093*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
5094*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
5095*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: openssl server, client-initiated" \
5096*62c56f98SSadaf Ebrahimi            "$O_SRV -www -tls1_2" \
5097*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1" \
5098*62c56f98SSadaf Ebrahimi            0 \
5099*62c56f98SSadaf Ebrahimi            -c "client hello, adding renegotiation extension" \
5100*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
5101*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
5102*62c56f98SSadaf Ebrahimi            -C "ssl_hanshake() returned" \
5103*62c56f98SSadaf Ebrahimi            -C "error" \
5104*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 [Oo][Kk]"
5105*62c56f98SSadaf Ebrahimi
5106*62c56f98SSadaf Ebrahimirequires_gnutls
5107*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
5108*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
5109*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: gnutls server strict, client-initiated" \
5110*62c56f98SSadaf Ebrahimi            "$G_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2:%SAFE_RENEGOTIATION" \
5111*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1" \
5112*62c56f98SSadaf Ebrahimi            0 \
5113*62c56f98SSadaf Ebrahimi            -c "client hello, adding renegotiation extension" \
5114*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
5115*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
5116*62c56f98SSadaf Ebrahimi            -C "ssl_hanshake() returned" \
5117*62c56f98SSadaf Ebrahimi            -C "error" \
5118*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 [Oo][Kk]"
5119*62c56f98SSadaf Ebrahimi
5120*62c56f98SSadaf Ebrahimirequires_gnutls
5121*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
5122*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
5123*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: gnutls server unsafe, client-initiated default" \
5124*62c56f98SSadaf Ebrahimi            "$G_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2:%DISABLE_SAFE_RENEGOTIATION" \
5125*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1" \
5126*62c56f98SSadaf Ebrahimi            1 \
5127*62c56f98SSadaf Ebrahimi            -c "client hello, adding renegotiation extension" \
5128*62c56f98SSadaf Ebrahimi            -C "found renegotiation extension" \
5129*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
5130*62c56f98SSadaf Ebrahimi            -c "mbedtls_ssl_handshake() returned" \
5131*62c56f98SSadaf Ebrahimi            -c "error" \
5132*62c56f98SSadaf Ebrahimi            -C "HTTP/1.0 200 [Oo][Kk]"
5133*62c56f98SSadaf Ebrahimi
5134*62c56f98SSadaf Ebrahimirequires_gnutls
5135*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
5136*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
5137*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: gnutls server unsafe, client-inititated no legacy" \
5138*62c56f98SSadaf Ebrahimi            "$G_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2:%DISABLE_SAFE_RENEGOTIATION" \
5139*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1 \
5140*62c56f98SSadaf Ebrahimi             allow_legacy=0" \
5141*62c56f98SSadaf Ebrahimi            1 \
5142*62c56f98SSadaf Ebrahimi            -c "client hello, adding renegotiation extension" \
5143*62c56f98SSadaf Ebrahimi            -C "found renegotiation extension" \
5144*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
5145*62c56f98SSadaf Ebrahimi            -c "mbedtls_ssl_handshake() returned" \
5146*62c56f98SSadaf Ebrahimi            -c "error" \
5147*62c56f98SSadaf Ebrahimi            -C "HTTP/1.0 200 [Oo][Kk]"
5148*62c56f98SSadaf Ebrahimi
5149*62c56f98SSadaf Ebrahimirequires_gnutls
5150*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
5151*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
5152*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: gnutls server unsafe, client-inititated legacy" \
5153*62c56f98SSadaf Ebrahimi            "$G_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2:%DISABLE_SAFE_RENEGOTIATION" \
5154*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 exchanges=1 renegotiation=1 renegotiate=1 \
5155*62c56f98SSadaf Ebrahimi             allow_legacy=1" \
5156*62c56f98SSadaf Ebrahimi            0 \
5157*62c56f98SSadaf Ebrahimi            -c "client hello, adding renegotiation extension" \
5158*62c56f98SSadaf Ebrahimi            -C "found renegotiation extension" \
5159*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
5160*62c56f98SSadaf Ebrahimi            -C "ssl_hanshake() returned" \
5161*62c56f98SSadaf Ebrahimi            -C "error" \
5162*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 [Oo][Kk]"
5163*62c56f98SSadaf Ebrahimi
5164*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
5165*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
5166*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: DTLS, client-initiated" \
5167*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 exchanges=2 renegotiation=1" \
5168*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 exchanges=2 renegotiation=1 renegotiate=1" \
5169*62c56f98SSadaf Ebrahimi            0 \
5170*62c56f98SSadaf Ebrahimi            -c "client hello, adding renegotiation extension" \
5171*62c56f98SSadaf Ebrahimi            -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5172*62c56f98SSadaf Ebrahimi            -s "found renegotiation extension" \
5173*62c56f98SSadaf Ebrahimi            -s "server hello, secure renegotiation extension" \
5174*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
5175*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
5176*62c56f98SSadaf Ebrahimi            -s "=> renegotiate" \
5177*62c56f98SSadaf Ebrahimi            -S "write hello request"
5178*62c56f98SSadaf Ebrahimi
5179*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
5180*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
5181*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: DTLS, server-initiated" \
5182*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 exchanges=2 renegotiation=1 renegotiate=1" \
5183*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 exchanges=2 renegotiation=1 \
5184*62c56f98SSadaf Ebrahimi             read_timeout=1000 max_resend=2" \
5185*62c56f98SSadaf Ebrahimi            0 \
5186*62c56f98SSadaf Ebrahimi            -c "client hello, adding renegotiation extension" \
5187*62c56f98SSadaf Ebrahimi            -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5188*62c56f98SSadaf Ebrahimi            -s "found renegotiation extension" \
5189*62c56f98SSadaf Ebrahimi            -s "server hello, secure renegotiation extension" \
5190*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
5191*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
5192*62c56f98SSadaf Ebrahimi            -s "=> renegotiate" \
5193*62c56f98SSadaf Ebrahimi            -s "write hello request"
5194*62c56f98SSadaf Ebrahimi
5195*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
5196*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
5197*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: DTLS, renego_period overflow" \
5198*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 exchanges=4 renegotiation=1 renego_period=18446462598732840962 auth_mode=optional" \
5199*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 exchanges=4 renegotiation=1" \
5200*62c56f98SSadaf Ebrahimi            0 \
5201*62c56f98SSadaf Ebrahimi            -c "client hello, adding renegotiation extension" \
5202*62c56f98SSadaf Ebrahimi            -s "received TLS_EMPTY_RENEGOTIATION_INFO" \
5203*62c56f98SSadaf Ebrahimi            -s "found renegotiation extension" \
5204*62c56f98SSadaf Ebrahimi            -s "server hello, secure renegotiation extension" \
5205*62c56f98SSadaf Ebrahimi            -s "record counter limit reached: renegotiate" \
5206*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
5207*62c56f98SSadaf Ebrahimi            -s "=> renegotiate" \
5208*62c56f98SSadaf Ebrahimi            -s "write hello request"
5209*62c56f98SSadaf Ebrahimi
5210*62c56f98SSadaf Ebrahimirequires_gnutls
5211*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
5212*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
5213*62c56f98SSadaf Ebrahimirun_test    "Renegotiation: DTLS, gnutls server, client-initiated" \
5214*62c56f98SSadaf Ebrahimi            "$G_SRV -u --mtu 4096" \
5215*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 exchanges=1 renegotiation=1 renegotiate=1" \
5216*62c56f98SSadaf Ebrahimi            0 \
5217*62c56f98SSadaf Ebrahimi            -c "client hello, adding renegotiation extension" \
5218*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
5219*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
5220*62c56f98SSadaf Ebrahimi            -C "mbedtls_ssl_handshake returned" \
5221*62c56f98SSadaf Ebrahimi            -C "error" \
5222*62c56f98SSadaf Ebrahimi            -s "Extra-header:"
5223*62c56f98SSadaf Ebrahimi
5224*62c56f98SSadaf Ebrahimi# Test for the "secure renegotiation" extension only (no actual renegotiation)
5225*62c56f98SSadaf Ebrahimi
5226*62c56f98SSadaf Ebrahimirequires_gnutls
5227*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
5228*62c56f98SSadaf Ebrahimirun_test    "Renego ext: gnutls server strict, client default" \
5229*62c56f98SSadaf Ebrahimi            "$G_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2:%SAFE_RENEGOTIATION" \
5230*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3" \
5231*62c56f98SSadaf Ebrahimi            0 \
5232*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
5233*62c56f98SSadaf Ebrahimi            -C "error" \
5234*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 [Oo][Kk]"
5235*62c56f98SSadaf Ebrahimi
5236*62c56f98SSadaf Ebrahimirequires_gnutls
5237*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
5238*62c56f98SSadaf Ebrahimirun_test    "Renego ext: gnutls server unsafe, client default" \
5239*62c56f98SSadaf Ebrahimi            "$G_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2:%DISABLE_SAFE_RENEGOTIATION" \
5240*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3" \
5241*62c56f98SSadaf Ebrahimi            0 \
5242*62c56f98SSadaf Ebrahimi            -C "found renegotiation extension" \
5243*62c56f98SSadaf Ebrahimi            -C "error" \
5244*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 [Oo][Kk]"
5245*62c56f98SSadaf Ebrahimi
5246*62c56f98SSadaf Ebrahimirequires_gnutls
5247*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
5248*62c56f98SSadaf Ebrahimirun_test    "Renego ext: gnutls server unsafe, client break legacy" \
5249*62c56f98SSadaf Ebrahimi            "$G_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2:%DISABLE_SAFE_RENEGOTIATION" \
5250*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 allow_legacy=-1" \
5251*62c56f98SSadaf Ebrahimi            1 \
5252*62c56f98SSadaf Ebrahimi            -C "found renegotiation extension" \
5253*62c56f98SSadaf Ebrahimi            -c "error" \
5254*62c56f98SSadaf Ebrahimi            -C "HTTP/1.0 200 [Oo][Kk]"
5255*62c56f98SSadaf Ebrahimi
5256*62c56f98SSadaf Ebrahimirequires_gnutls
5257*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
5258*62c56f98SSadaf Ebrahimirun_test    "Renego ext: gnutls client strict, server default" \
5259*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3" \
5260*62c56f98SSadaf Ebrahimi            "$G_CLI --priority=NORMAL:%SAFE_RENEGOTIATION localhost" \
5261*62c56f98SSadaf Ebrahimi            0 \
5262*62c56f98SSadaf Ebrahimi            -s "received TLS_EMPTY_RENEGOTIATION_INFO\|found renegotiation extension" \
5263*62c56f98SSadaf Ebrahimi            -s "server hello, secure renegotiation extension"
5264*62c56f98SSadaf Ebrahimi
5265*62c56f98SSadaf Ebrahimirequires_gnutls
5266*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
5267*62c56f98SSadaf Ebrahimirun_test    "Renego ext: gnutls client unsafe, server default" \
5268*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3" \
5269*62c56f98SSadaf Ebrahimi            "$G_CLI --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION localhost" \
5270*62c56f98SSadaf Ebrahimi            0 \
5271*62c56f98SSadaf Ebrahimi            -S "received TLS_EMPTY_RENEGOTIATION_INFO\|found renegotiation extension" \
5272*62c56f98SSadaf Ebrahimi            -S "server hello, secure renegotiation extension"
5273*62c56f98SSadaf Ebrahimi
5274*62c56f98SSadaf Ebrahimirequires_gnutls
5275*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
5276*62c56f98SSadaf Ebrahimirun_test    "Renego ext: gnutls client unsafe, server break legacy" \
5277*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 allow_legacy=-1" \
5278*62c56f98SSadaf Ebrahimi            "$G_CLI --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION localhost" \
5279*62c56f98SSadaf Ebrahimi            1 \
5280*62c56f98SSadaf Ebrahimi            -S "received TLS_EMPTY_RENEGOTIATION_INFO\|found renegotiation extension" \
5281*62c56f98SSadaf Ebrahimi            -S "server hello, secure renegotiation extension"
5282*62c56f98SSadaf Ebrahimi
5283*62c56f98SSadaf Ebrahimi# Tests for silently dropping trailing extra bytes in .der certificates
5284*62c56f98SSadaf Ebrahimi
5285*62c56f98SSadaf Ebrahimirequires_gnutls
5286*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
5287*62c56f98SSadaf Ebrahimirun_test    "DER format: no trailing bytes" \
5288*62c56f98SSadaf Ebrahimi            "$P_SRV crt_file=data_files/server5-der0.crt \
5289*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
5290*62c56f98SSadaf Ebrahimi            "$G_CLI localhost" \
5291*62c56f98SSadaf Ebrahimi            0 \
5292*62c56f98SSadaf Ebrahimi            -c "Handshake was completed" \
5293*62c56f98SSadaf Ebrahimi
5294*62c56f98SSadaf Ebrahimirequires_gnutls
5295*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
5296*62c56f98SSadaf Ebrahimirun_test    "DER format: with a trailing zero byte" \
5297*62c56f98SSadaf Ebrahimi            "$P_SRV crt_file=data_files/server5-der1a.crt \
5298*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
5299*62c56f98SSadaf Ebrahimi            "$G_CLI localhost" \
5300*62c56f98SSadaf Ebrahimi            0 \
5301*62c56f98SSadaf Ebrahimi            -c "Handshake was completed" \
5302*62c56f98SSadaf Ebrahimi
5303*62c56f98SSadaf Ebrahimirequires_gnutls
5304*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
5305*62c56f98SSadaf Ebrahimirun_test    "DER format: with a trailing random byte" \
5306*62c56f98SSadaf Ebrahimi            "$P_SRV crt_file=data_files/server5-der1b.crt \
5307*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
5308*62c56f98SSadaf Ebrahimi            "$G_CLI localhost" \
5309*62c56f98SSadaf Ebrahimi            0 \
5310*62c56f98SSadaf Ebrahimi            -c "Handshake was completed" \
5311*62c56f98SSadaf Ebrahimi
5312*62c56f98SSadaf Ebrahimirequires_gnutls
5313*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
5314*62c56f98SSadaf Ebrahimirun_test    "DER format: with 2 trailing random bytes" \
5315*62c56f98SSadaf Ebrahimi            "$P_SRV crt_file=data_files/server5-der2.crt \
5316*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
5317*62c56f98SSadaf Ebrahimi            "$G_CLI localhost" \
5318*62c56f98SSadaf Ebrahimi            0 \
5319*62c56f98SSadaf Ebrahimi            -c "Handshake was completed" \
5320*62c56f98SSadaf Ebrahimi
5321*62c56f98SSadaf Ebrahimirequires_gnutls
5322*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
5323*62c56f98SSadaf Ebrahimirun_test    "DER format: with 4 trailing random bytes" \
5324*62c56f98SSadaf Ebrahimi            "$P_SRV crt_file=data_files/server5-der4.crt \
5325*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
5326*62c56f98SSadaf Ebrahimi            "$G_CLI localhost" \
5327*62c56f98SSadaf Ebrahimi            0 \
5328*62c56f98SSadaf Ebrahimi            -c "Handshake was completed" \
5329*62c56f98SSadaf Ebrahimi
5330*62c56f98SSadaf Ebrahimirequires_gnutls
5331*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
5332*62c56f98SSadaf Ebrahimirun_test    "DER format: with 8 trailing random bytes" \
5333*62c56f98SSadaf Ebrahimi            "$P_SRV crt_file=data_files/server5-der8.crt \
5334*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
5335*62c56f98SSadaf Ebrahimi            "$G_CLI localhost" \
5336*62c56f98SSadaf Ebrahimi            0 \
5337*62c56f98SSadaf Ebrahimi            -c "Handshake was completed" \
5338*62c56f98SSadaf Ebrahimi
5339*62c56f98SSadaf Ebrahimirequires_gnutls
5340*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
5341*62c56f98SSadaf Ebrahimirun_test    "DER format: with 9 trailing random bytes" \
5342*62c56f98SSadaf Ebrahimi            "$P_SRV crt_file=data_files/server5-der9.crt \
5343*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
5344*62c56f98SSadaf Ebrahimi            "$G_CLI localhost" \
5345*62c56f98SSadaf Ebrahimi            0 \
5346*62c56f98SSadaf Ebrahimi            -c "Handshake was completed" \
5347*62c56f98SSadaf Ebrahimi
5348*62c56f98SSadaf Ebrahimi# Tests for auth_mode, there are duplicated tests using ca callback for authentication
5349*62c56f98SSadaf Ebrahimi# When updating these tests, modify the matching authentication tests accordingly
5350*62c56f98SSadaf Ebrahimi
5351*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
5352*62c56f98SSadaf Ebrahimirun_test    "Authentication: server badcert, client required" \
5353*62c56f98SSadaf Ebrahimi            "$P_SRV crt_file=data_files/server5-badsign.crt \
5354*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
5355*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=1 auth_mode=required" \
5356*62c56f98SSadaf Ebrahimi            1 \
5357*62c56f98SSadaf Ebrahimi            -c "x509_verify_cert() returned" \
5358*62c56f98SSadaf Ebrahimi            -c "! The certificate is not correctly signed by the trusted CA" \
5359*62c56f98SSadaf Ebrahimi            -c "! mbedtls_ssl_handshake returned" \
5360*62c56f98SSadaf Ebrahimi            -c "X509 - Certificate verification failed"
5361*62c56f98SSadaf Ebrahimi
5362*62c56f98SSadaf Ebrahimirun_test    "Authentication: server badcert, client optional" \
5363*62c56f98SSadaf Ebrahimi            "$P_SRV crt_file=data_files/server5-badsign.crt \
5364*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
5365*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=1 auth_mode=optional" \
5366*62c56f98SSadaf Ebrahimi            0 \
5367*62c56f98SSadaf Ebrahimi            -c "x509_verify_cert() returned" \
5368*62c56f98SSadaf Ebrahimi            -c "! The certificate is not correctly signed by the trusted CA" \
5369*62c56f98SSadaf Ebrahimi            -C "! mbedtls_ssl_handshake returned" \
5370*62c56f98SSadaf Ebrahimi            -C "X509 - Certificate verification failed"
5371*62c56f98SSadaf Ebrahimi
5372*62c56f98SSadaf Ebrahimirequires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
5373*62c56f98SSadaf Ebrahimirun_test    "Authentication: server goodcert, client optional, no trusted CA" \
5374*62c56f98SSadaf Ebrahimi            "$P_SRV" \
5375*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 auth_mode=optional ca_file=none ca_path=none" \
5376*62c56f98SSadaf Ebrahimi            0 \
5377*62c56f98SSadaf Ebrahimi            -c "x509_verify_cert() returned" \
5378*62c56f98SSadaf Ebrahimi            -c "! The certificate is not correctly signed by the trusted CA" \
5379*62c56f98SSadaf Ebrahimi            -c "! Certificate verification flags"\
5380*62c56f98SSadaf Ebrahimi            -C "! mbedtls_ssl_handshake returned" \
5381*62c56f98SSadaf Ebrahimi            -C "X509 - Certificate verification failed" \
5382*62c56f98SSadaf Ebrahimi            -C "SSL - No CA Chain is set, but required to operate"
5383*62c56f98SSadaf Ebrahimi
5384*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
5385*62c56f98SSadaf Ebrahimirun_test    "Authentication: server goodcert, client required, no trusted CA" \
5386*62c56f98SSadaf Ebrahimi            "$P_SRV" \
5387*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 auth_mode=required ca_file=none ca_path=none" \
5388*62c56f98SSadaf Ebrahimi            1 \
5389*62c56f98SSadaf Ebrahimi            -c "x509_verify_cert() returned" \
5390*62c56f98SSadaf Ebrahimi            -c "! The certificate is not correctly signed by the trusted CA" \
5391*62c56f98SSadaf Ebrahimi            -c "! Certificate verification flags"\
5392*62c56f98SSadaf Ebrahimi            -c "! mbedtls_ssl_handshake returned" \
5393*62c56f98SSadaf Ebrahimi            -c "SSL - No CA Chain is set, but required to operate"
5394*62c56f98SSadaf Ebrahimi
5395*62c56f98SSadaf Ebrahimi# The purpose of the next two tests is to test the client's behaviour when receiving a server
5396*62c56f98SSadaf Ebrahimi# certificate with an unsupported elliptic curve. This should usually not happen because
5397*62c56f98SSadaf Ebrahimi# the client informs the server about the supported curves - it does, though, in the
5398*62c56f98SSadaf Ebrahimi# corner case of a static ECDH suite, because the server doesn't check the curve on that
5399*62c56f98SSadaf Ebrahimi# occasion (to be fixed). If that bug's fixed, the test needs to be altered to use a
5400*62c56f98SSadaf Ebrahimi# different means to have the server ignoring the client's supported curve list.
5401*62c56f98SSadaf Ebrahimi
5402*62c56f98SSadaf Ebrahimirun_test    "Authentication: server ECDH p256v1, client required, p256v1 unsupported" \
5403*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=1 key_file=data_files/server5.key \
5404*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.ku-ka.crt" \
5405*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 auth_mode=required groups=secp521r1" \
5406*62c56f98SSadaf Ebrahimi            1 \
5407*62c56f98SSadaf Ebrahimi            -c "bad certificate (EC key curve)"\
5408*62c56f98SSadaf Ebrahimi            -c "! Certificate verification flags"\
5409*62c56f98SSadaf Ebrahimi            -C "bad server certificate (ECDH curve)" # Expect failure at earlier verification stage
5410*62c56f98SSadaf Ebrahimi
5411*62c56f98SSadaf Ebrahimirun_test    "Authentication: server ECDH p256v1, client optional, p256v1 unsupported" \
5412*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=1 key_file=data_files/server5.key \
5413*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.ku-ka.crt" \
5414*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 auth_mode=optional groups=secp521r1" \
5415*62c56f98SSadaf Ebrahimi            1 \
5416*62c56f98SSadaf Ebrahimi            -c "bad certificate (EC key curve)"\
5417*62c56f98SSadaf Ebrahimi            -c "! Certificate verification flags"\
5418*62c56f98SSadaf Ebrahimi            -c "bad server certificate (ECDH curve)" # Expect failure only at ECDH params check
5419*62c56f98SSadaf Ebrahimi
5420*62c56f98SSadaf Ebrahimirun_test    "Authentication: server badcert, client none" \
5421*62c56f98SSadaf Ebrahimi            "$P_SRV crt_file=data_files/server5-badsign.crt \
5422*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
5423*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=1 auth_mode=none" \
5424*62c56f98SSadaf Ebrahimi            0 \
5425*62c56f98SSadaf Ebrahimi            -C "x509_verify_cert() returned" \
5426*62c56f98SSadaf Ebrahimi            -C "! The certificate is not correctly signed by the trusted CA" \
5427*62c56f98SSadaf Ebrahimi            -C "! mbedtls_ssl_handshake returned" \
5428*62c56f98SSadaf Ebrahimi            -C "X509 - Certificate verification failed"
5429*62c56f98SSadaf Ebrahimi
5430*62c56f98SSadaf Ebrahimirequires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
5431*62c56f98SSadaf Ebrahimirun_test    "Authentication: client SHA256, server required" \
5432*62c56f98SSadaf Ebrahimi            "$P_SRV auth_mode=required" \
5433*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/server6.crt \
5434*62c56f98SSadaf Ebrahimi             key_file=data_files/server6.key \
5435*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384" \
5436*62c56f98SSadaf Ebrahimi            0 \
5437*62c56f98SSadaf Ebrahimi            -c "Supported Signature Algorithm found: 04 " \
5438*62c56f98SSadaf Ebrahimi            -c "Supported Signature Algorithm found: 05 "
5439*62c56f98SSadaf Ebrahimi
5440*62c56f98SSadaf Ebrahimirequires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
5441*62c56f98SSadaf Ebrahimirun_test    "Authentication: client SHA384, server required" \
5442*62c56f98SSadaf Ebrahimi            "$P_SRV auth_mode=required" \
5443*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/server6.crt \
5444*62c56f98SSadaf Ebrahimi             key_file=data_files/server6.key \
5445*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256" \
5446*62c56f98SSadaf Ebrahimi            0 \
5447*62c56f98SSadaf Ebrahimi            -c "Supported Signature Algorithm found: 04 " \
5448*62c56f98SSadaf Ebrahimi            -c "Supported Signature Algorithm found: 05 "
5449*62c56f98SSadaf Ebrahimi
5450*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
5451*62c56f98SSadaf Ebrahimirun_test    "Authentication: client has no cert, server required (TLS)" \
5452*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 auth_mode=required" \
5453*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=none \
5454*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
5455*62c56f98SSadaf Ebrahimi            1 \
5456*62c56f98SSadaf Ebrahimi            -S "skip write certificate request" \
5457*62c56f98SSadaf Ebrahimi            -C "skip parse certificate request" \
5458*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
5459*62c56f98SSadaf Ebrahimi            -c "= write certificate$" \
5460*62c56f98SSadaf Ebrahimi            -C "skip write certificate$" \
5461*62c56f98SSadaf Ebrahimi            -S "x509_verify_cert() returned" \
5462*62c56f98SSadaf Ebrahimi            -s "peer has no certificate" \
5463*62c56f98SSadaf Ebrahimi            -s "! mbedtls_ssl_handshake returned" \
5464*62c56f98SSadaf Ebrahimi            -s "No client certification received from the client, but required by the authentication mode"
5465*62c56f98SSadaf Ebrahimi
5466*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
5467*62c56f98SSadaf Ebrahimirun_test    "Authentication: client badcert, server required" \
5468*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 auth_mode=required" \
5469*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/server5-badsign.crt \
5470*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
5471*62c56f98SSadaf Ebrahimi            1 \
5472*62c56f98SSadaf Ebrahimi            -S "skip write certificate request" \
5473*62c56f98SSadaf Ebrahimi            -C "skip parse certificate request" \
5474*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
5475*62c56f98SSadaf Ebrahimi            -C "skip write certificate" \
5476*62c56f98SSadaf Ebrahimi            -C "skip write certificate verify" \
5477*62c56f98SSadaf Ebrahimi            -S "skip parse certificate verify" \
5478*62c56f98SSadaf Ebrahimi            -s "x509_verify_cert() returned" \
5479*62c56f98SSadaf Ebrahimi            -s "! The certificate is not correctly signed by the trusted CA" \
5480*62c56f98SSadaf Ebrahimi            -s "! mbedtls_ssl_handshake returned" \
5481*62c56f98SSadaf Ebrahimi            -s "send alert level=2 message=48" \
5482*62c56f98SSadaf Ebrahimi            -s "X509 - Certificate verification failed"
5483*62c56f98SSadaf Ebrahimi# We don't check that the client receives the alert because it might
5484*62c56f98SSadaf Ebrahimi# detect that its write end of the connection is closed and abort
5485*62c56f98SSadaf Ebrahimi# before reading the alert message.
5486*62c56f98SSadaf Ebrahimi
5487*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
5488*62c56f98SSadaf Ebrahimirun_test    "Authentication: client cert self-signed and trusted, server required" \
5489*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 auth_mode=required ca_file=data_files/server5-selfsigned.crt" \
5490*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/server5-selfsigned.crt \
5491*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
5492*62c56f98SSadaf Ebrahimi            0 \
5493*62c56f98SSadaf Ebrahimi            -S "skip write certificate request" \
5494*62c56f98SSadaf Ebrahimi            -C "skip parse certificate request" \
5495*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
5496*62c56f98SSadaf Ebrahimi            -C "skip write certificate" \
5497*62c56f98SSadaf Ebrahimi            -C "skip write certificate verify" \
5498*62c56f98SSadaf Ebrahimi            -S "skip parse certificate verify" \
5499*62c56f98SSadaf Ebrahimi            -S "x509_verify_cert() returned" \
5500*62c56f98SSadaf Ebrahimi            -S "! The certificate is not correctly signed" \
5501*62c56f98SSadaf Ebrahimi            -S "X509 - Certificate verification failed"
5502*62c56f98SSadaf Ebrahimi
5503*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
5504*62c56f98SSadaf Ebrahimirun_test    "Authentication: client cert not trusted, server required" \
5505*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 auth_mode=required" \
5506*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/server5-selfsigned.crt \
5507*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
5508*62c56f98SSadaf Ebrahimi            1 \
5509*62c56f98SSadaf Ebrahimi            -S "skip write certificate request" \
5510*62c56f98SSadaf Ebrahimi            -C "skip parse certificate request" \
5511*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
5512*62c56f98SSadaf Ebrahimi            -C "skip write certificate" \
5513*62c56f98SSadaf Ebrahimi            -C "skip write certificate verify" \
5514*62c56f98SSadaf Ebrahimi            -S "skip parse certificate verify" \
5515*62c56f98SSadaf Ebrahimi            -s "x509_verify_cert() returned" \
5516*62c56f98SSadaf Ebrahimi            -s "! The certificate is not correctly signed by the trusted CA" \
5517*62c56f98SSadaf Ebrahimi            -s "! mbedtls_ssl_handshake returned" \
5518*62c56f98SSadaf Ebrahimi            -s "X509 - Certificate verification failed"
5519*62c56f98SSadaf Ebrahimi
5520*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
5521*62c56f98SSadaf Ebrahimirun_test    "Authentication: client badcert, server optional" \
5522*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 auth_mode=optional" \
5523*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/server5-badsign.crt \
5524*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
5525*62c56f98SSadaf Ebrahimi            0 \
5526*62c56f98SSadaf Ebrahimi            -S "skip write certificate request" \
5527*62c56f98SSadaf Ebrahimi            -C "skip parse certificate request" \
5528*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
5529*62c56f98SSadaf Ebrahimi            -C "skip write certificate" \
5530*62c56f98SSadaf Ebrahimi            -C "skip write certificate verify" \
5531*62c56f98SSadaf Ebrahimi            -S "skip parse certificate verify" \
5532*62c56f98SSadaf Ebrahimi            -s "x509_verify_cert() returned" \
5533*62c56f98SSadaf Ebrahimi            -s "! The certificate is not correctly signed by the trusted CA" \
5534*62c56f98SSadaf Ebrahimi            -S "! mbedtls_ssl_handshake returned" \
5535*62c56f98SSadaf Ebrahimi            -C "! mbedtls_ssl_handshake returned" \
5536*62c56f98SSadaf Ebrahimi            -S "X509 - Certificate verification failed"
5537*62c56f98SSadaf Ebrahimi
5538*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
5539*62c56f98SSadaf Ebrahimirun_test    "Authentication: client badcert, server none" \
5540*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 auth_mode=none" \
5541*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/server5-badsign.crt \
5542*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
5543*62c56f98SSadaf Ebrahimi            0 \
5544*62c56f98SSadaf Ebrahimi            -s "skip write certificate request" \
5545*62c56f98SSadaf Ebrahimi            -C "skip parse certificate request" \
5546*62c56f98SSadaf Ebrahimi            -c "got no certificate request" \
5547*62c56f98SSadaf Ebrahimi            -c "skip write certificate" \
5548*62c56f98SSadaf Ebrahimi            -c "skip write certificate verify" \
5549*62c56f98SSadaf Ebrahimi            -s "skip parse certificate verify" \
5550*62c56f98SSadaf Ebrahimi            -S "x509_verify_cert() returned" \
5551*62c56f98SSadaf Ebrahimi            -S "! The certificate is not correctly signed by the trusted CA" \
5552*62c56f98SSadaf Ebrahimi            -S "! mbedtls_ssl_handshake returned" \
5553*62c56f98SSadaf Ebrahimi            -C "! mbedtls_ssl_handshake returned" \
5554*62c56f98SSadaf Ebrahimi            -S "X509 - Certificate verification failed"
5555*62c56f98SSadaf Ebrahimi
5556*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
5557*62c56f98SSadaf Ebrahimirun_test    "Authentication: client no cert, server optional" \
5558*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 auth_mode=optional" \
5559*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=none key_file=none" \
5560*62c56f98SSadaf Ebrahimi            0 \
5561*62c56f98SSadaf Ebrahimi            -S "skip write certificate request" \
5562*62c56f98SSadaf Ebrahimi            -C "skip parse certificate request" \
5563*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
5564*62c56f98SSadaf Ebrahimi            -C "skip write certificate$" \
5565*62c56f98SSadaf Ebrahimi            -C "got no certificate to send" \
5566*62c56f98SSadaf Ebrahimi            -c "skip write certificate verify" \
5567*62c56f98SSadaf Ebrahimi            -s "skip parse certificate verify" \
5568*62c56f98SSadaf Ebrahimi            -s "! Certificate was missing" \
5569*62c56f98SSadaf Ebrahimi            -S "! mbedtls_ssl_handshake returned" \
5570*62c56f98SSadaf Ebrahimi            -C "! mbedtls_ssl_handshake returned" \
5571*62c56f98SSadaf Ebrahimi            -S "X509 - Certificate verification failed"
5572*62c56f98SSadaf Ebrahimi
5573*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
5574*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
5575*62c56f98SSadaf Ebrahimirun_test    "Authentication: openssl client no cert, server optional" \
5576*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 auth_mode=optional" \
5577*62c56f98SSadaf Ebrahimi            "$O_NEXT_CLI_NO_CERT -no_middlebox" \
5578*62c56f98SSadaf Ebrahimi            0 \
5579*62c56f98SSadaf Ebrahimi            -S "skip write certificate request" \
5580*62c56f98SSadaf Ebrahimi            -s "skip parse certificate verify" \
5581*62c56f98SSadaf Ebrahimi            -s "! Certificate was missing" \
5582*62c56f98SSadaf Ebrahimi            -S "! mbedtls_ssl_handshake returned" \
5583*62c56f98SSadaf Ebrahimi            -S "X509 - Certificate verification failed"
5584*62c56f98SSadaf Ebrahimi
5585*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
5586*62c56f98SSadaf Ebrahimirun_test    "Authentication: client no cert, openssl server optional" \
5587*62c56f98SSadaf Ebrahimi            "$O_SRV -verify 10 -tls1_2" \
5588*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=none key_file=none" \
5589*62c56f98SSadaf Ebrahimi            0 \
5590*62c56f98SSadaf Ebrahimi            -C "skip parse certificate request" \
5591*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
5592*62c56f98SSadaf Ebrahimi            -C "skip write certificate$" \
5593*62c56f98SSadaf Ebrahimi            -c "skip write certificate verify" \
5594*62c56f98SSadaf Ebrahimi            -C "! mbedtls_ssl_handshake returned"
5595*62c56f98SSadaf Ebrahimi
5596*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
5597*62c56f98SSadaf Ebrahimirun_test    "Authentication: client no cert, openssl server required" \
5598*62c56f98SSadaf Ebrahimi            "$O_SRV -Verify 10 -tls1_2" \
5599*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=none key_file=none" \
5600*62c56f98SSadaf Ebrahimi            1 \
5601*62c56f98SSadaf Ebrahimi            -C "skip parse certificate request" \
5602*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
5603*62c56f98SSadaf Ebrahimi            -C "skip write certificate$" \
5604*62c56f98SSadaf Ebrahimi            -c "skip write certificate verify" \
5605*62c56f98SSadaf Ebrahimi            -c "! mbedtls_ssl_handshake returned"
5606*62c56f98SSadaf Ebrahimi
5607*62c56f98SSadaf Ebrahimi# This script assumes that MBEDTLS_X509_MAX_INTERMEDIATE_CA has its default
5608*62c56f98SSadaf Ebrahimi# value, defined here as MAX_IM_CA. Some test cases will be skipped if the
5609*62c56f98SSadaf Ebrahimi# library is configured with a different value.
5610*62c56f98SSadaf Ebrahimi
5611*62c56f98SSadaf EbrahimiMAX_IM_CA='8'
5612*62c56f98SSadaf Ebrahimi
5613*62c56f98SSadaf Ebrahimi# The tests for the max_int tests can pass with any number higher than MAX_IM_CA
5614*62c56f98SSadaf Ebrahimi# because only a chain of MAX_IM_CA length is tested. Equally, the max_int+1
5615*62c56f98SSadaf Ebrahimi# tests can pass with any number less than MAX_IM_CA. However, stricter preconditions
5616*62c56f98SSadaf Ebrahimi# are in place so that the semantics are consistent with the test description.
5617*62c56f98SSadaf Ebrahimirequires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
5618*62c56f98SSadaf Ebrahimirequires_full_size_output_buffer
5619*62c56f98SSadaf Ebrahimirun_test    "Authentication: server max_int chain, client default" \
5620*62c56f98SSadaf Ebrahimi            "$P_SRV crt_file=data_files/dir-maxpath/c09.pem \
5621*62c56f98SSadaf Ebrahimi                    key_file=data_files/dir-maxpath/09.key" \
5622*62c56f98SSadaf Ebrahimi            "$P_CLI server_name=CA09 ca_file=data_files/dir-maxpath/00.crt" \
5623*62c56f98SSadaf Ebrahimi            0 \
5624*62c56f98SSadaf Ebrahimi            -C "X509 - A fatal error occurred"
5625*62c56f98SSadaf Ebrahimi
5626*62c56f98SSadaf Ebrahimirequires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
5627*62c56f98SSadaf Ebrahimirequires_full_size_output_buffer
5628*62c56f98SSadaf Ebrahimirun_test    "Authentication: server max_int+1 chain, client default" \
5629*62c56f98SSadaf Ebrahimi            "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \
5630*62c56f98SSadaf Ebrahimi                    key_file=data_files/dir-maxpath/10.key" \
5631*62c56f98SSadaf Ebrahimi            "$P_CLI server_name=CA10 ca_file=data_files/dir-maxpath/00.crt" \
5632*62c56f98SSadaf Ebrahimi            1 \
5633*62c56f98SSadaf Ebrahimi            -c "X509 - A fatal error occurred"
5634*62c56f98SSadaf Ebrahimi
5635*62c56f98SSadaf Ebrahimirequires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
5636*62c56f98SSadaf Ebrahimirequires_full_size_output_buffer
5637*62c56f98SSadaf Ebrahimirun_test    "Authentication: server max_int+1 chain, client optional" \
5638*62c56f98SSadaf Ebrahimi            "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \
5639*62c56f98SSadaf Ebrahimi                    key_file=data_files/dir-maxpath/10.key" \
5640*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 server_name=CA10 ca_file=data_files/dir-maxpath/00.crt \
5641*62c56f98SSadaf Ebrahimi                    auth_mode=optional" \
5642*62c56f98SSadaf Ebrahimi            1 \
5643*62c56f98SSadaf Ebrahimi            -c "X509 - A fatal error occurred"
5644*62c56f98SSadaf Ebrahimi
5645*62c56f98SSadaf Ebrahimirequires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
5646*62c56f98SSadaf Ebrahimirequires_full_size_output_buffer
5647*62c56f98SSadaf Ebrahimirun_test    "Authentication: server max_int+1 chain, client none" \
5648*62c56f98SSadaf Ebrahimi            "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \
5649*62c56f98SSadaf Ebrahimi                    key_file=data_files/dir-maxpath/10.key" \
5650*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 server_name=CA10 ca_file=data_files/dir-maxpath/00.crt \
5651*62c56f98SSadaf Ebrahimi                    auth_mode=none" \
5652*62c56f98SSadaf Ebrahimi            0 \
5653*62c56f98SSadaf Ebrahimi            -C "X509 - A fatal error occurred"
5654*62c56f98SSadaf Ebrahimi
5655*62c56f98SSadaf Ebrahimirequires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
5656*62c56f98SSadaf Ebrahimirequires_full_size_output_buffer
5657*62c56f98SSadaf Ebrahimirun_test    "Authentication: client max_int+1 chain, server default" \
5658*62c56f98SSadaf Ebrahimi            "$P_SRV ca_file=data_files/dir-maxpath/00.crt" \
5659*62c56f98SSadaf Ebrahimi            "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \
5660*62c56f98SSadaf Ebrahimi                    key_file=data_files/dir-maxpath/10.key" \
5661*62c56f98SSadaf Ebrahimi            0 \
5662*62c56f98SSadaf Ebrahimi            -S "X509 - A fatal error occurred"
5663*62c56f98SSadaf Ebrahimi
5664*62c56f98SSadaf Ebrahimirequires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
5665*62c56f98SSadaf Ebrahimirequires_full_size_output_buffer
5666*62c56f98SSadaf Ebrahimirun_test    "Authentication: client max_int+1 chain, server optional" \
5667*62c56f98SSadaf Ebrahimi            "$P_SRV ca_file=data_files/dir-maxpath/00.crt auth_mode=optional" \
5668*62c56f98SSadaf Ebrahimi            "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \
5669*62c56f98SSadaf Ebrahimi                    key_file=data_files/dir-maxpath/10.key" \
5670*62c56f98SSadaf Ebrahimi            1 \
5671*62c56f98SSadaf Ebrahimi            -s "X509 - A fatal error occurred"
5672*62c56f98SSadaf Ebrahimi
5673*62c56f98SSadaf Ebrahimirequires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
5674*62c56f98SSadaf Ebrahimirequires_full_size_output_buffer
5675*62c56f98SSadaf Ebrahimirun_test    "Authentication: client max_int+1 chain, server required" \
5676*62c56f98SSadaf Ebrahimi            "$P_SRV ca_file=data_files/dir-maxpath/00.crt auth_mode=required" \
5677*62c56f98SSadaf Ebrahimi            "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \
5678*62c56f98SSadaf Ebrahimi                    key_file=data_files/dir-maxpath/10.key" \
5679*62c56f98SSadaf Ebrahimi            1 \
5680*62c56f98SSadaf Ebrahimi            -s "X509 - A fatal error occurred"
5681*62c56f98SSadaf Ebrahimi
5682*62c56f98SSadaf Ebrahimirequires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
5683*62c56f98SSadaf Ebrahimirequires_full_size_output_buffer
5684*62c56f98SSadaf Ebrahimirun_test    "Authentication: client max_int chain, server required" \
5685*62c56f98SSadaf Ebrahimi            "$P_SRV ca_file=data_files/dir-maxpath/00.crt auth_mode=required" \
5686*62c56f98SSadaf Ebrahimi            "$P_CLI crt_file=data_files/dir-maxpath/c09.pem \
5687*62c56f98SSadaf Ebrahimi                    key_file=data_files/dir-maxpath/09.key" \
5688*62c56f98SSadaf Ebrahimi            0 \
5689*62c56f98SSadaf Ebrahimi            -S "X509 - A fatal error occurred"
5690*62c56f98SSadaf Ebrahimi
5691*62c56f98SSadaf Ebrahimi# Tests for CA list in CertificateRequest messages
5692*62c56f98SSadaf Ebrahimi
5693*62c56f98SSadaf Ebrahimirequires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
5694*62c56f98SSadaf Ebrahimirun_test    "Authentication: send CA list in CertificateRequest  (default)" \
5695*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 auth_mode=required" \
5696*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 crt_file=data_files/server6.crt \
5697*62c56f98SSadaf Ebrahimi             key_file=data_files/server6.key" \
5698*62c56f98SSadaf Ebrahimi            0 \
5699*62c56f98SSadaf Ebrahimi            -s "requested DN"
5700*62c56f98SSadaf Ebrahimi
5701*62c56f98SSadaf Ebrahimirequires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
5702*62c56f98SSadaf Ebrahimirun_test    "Authentication: do not send CA list in CertificateRequest" \
5703*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 auth_mode=required cert_req_ca_list=0" \
5704*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 crt_file=data_files/server6.crt \
5705*62c56f98SSadaf Ebrahimi             key_file=data_files/server6.key" \
5706*62c56f98SSadaf Ebrahimi            0 \
5707*62c56f98SSadaf Ebrahimi            -S "requested DN"
5708*62c56f98SSadaf Ebrahimi
5709*62c56f98SSadaf Ebrahimirun_test    "Authentication: send CA list in CertificateRequest, client self signed" \
5710*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 debug_level=3 auth_mode=required cert_req_ca_list=0" \
5711*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/server5-selfsigned.crt \
5712*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
5713*62c56f98SSadaf Ebrahimi            1 \
5714*62c56f98SSadaf Ebrahimi            -S "requested DN" \
5715*62c56f98SSadaf Ebrahimi            -s "x509_verify_cert() returned" \
5716*62c56f98SSadaf Ebrahimi            -s "! The certificate is not correctly signed by the trusted CA" \
5717*62c56f98SSadaf Ebrahimi            -s "! mbedtls_ssl_handshake returned" \
5718*62c56f98SSadaf Ebrahimi            -c "! mbedtls_ssl_handshake returned" \
5719*62c56f98SSadaf Ebrahimi            -s "X509 - Certificate verification failed"
5720*62c56f98SSadaf Ebrahimi
5721*62c56f98SSadaf Ebrahimirequires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
5722*62c56f98SSadaf Ebrahimirun_test    "Authentication: send alt conf DN hints in CertificateRequest" \
5723*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 auth_mode=optional cert_req_ca_list=2 \
5724*62c56f98SSadaf Ebrahimi             crt_file2=data_files/server1.crt \
5725*62c56f98SSadaf Ebrahimi             key_file2=data_files/server1.key" \
5726*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 auth_mode=optional \
5727*62c56f98SSadaf Ebrahimi             crt_file=data_files/server6.crt \
5728*62c56f98SSadaf Ebrahimi             key_file=data_files/server6.key" \
5729*62c56f98SSadaf Ebrahimi            0 \
5730*62c56f98SSadaf Ebrahimi            -c "DN hint: C=NL, O=PolarSSL, CN=PolarSSL Server 1"
5731*62c56f98SSadaf Ebrahimi
5732*62c56f98SSadaf Ebrahimirequires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
5733*62c56f98SSadaf Ebrahimirun_test    "Authentication: send alt conf DN hints in CertificateRequest (2)" \
5734*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 auth_mode=optional cert_req_ca_list=2 \
5735*62c56f98SSadaf Ebrahimi             crt_file2=data_files/server2.crt \
5736*62c56f98SSadaf Ebrahimi             key_file2=data_files/server2.key" \
5737*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 auth_mode=optional \
5738*62c56f98SSadaf Ebrahimi             crt_file=data_files/server6.crt \
5739*62c56f98SSadaf Ebrahimi             key_file=data_files/server6.key" \
5740*62c56f98SSadaf Ebrahimi            0 \
5741*62c56f98SSadaf Ebrahimi            -c "DN hint: C=NL, O=PolarSSL, CN=localhost"
5742*62c56f98SSadaf Ebrahimi
5743*62c56f98SSadaf Ebrahimirequires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
5744*62c56f98SSadaf Ebrahimirun_test    "Authentication: send alt hs DN hints in CertificateRequest" \
5745*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 auth_mode=optional cert_req_ca_list=3 \
5746*62c56f98SSadaf Ebrahimi             crt_file2=data_files/server1.crt \
5747*62c56f98SSadaf Ebrahimi             key_file2=data_files/server1.key" \
5748*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 auth_mode=optional \
5749*62c56f98SSadaf Ebrahimi             crt_file=data_files/server6.crt \
5750*62c56f98SSadaf Ebrahimi             key_file=data_files/server6.key" \
5751*62c56f98SSadaf Ebrahimi            0 \
5752*62c56f98SSadaf Ebrahimi            -c "DN hint: C=NL, O=PolarSSL, CN=PolarSSL Server 1"
5753*62c56f98SSadaf Ebrahimi
5754*62c56f98SSadaf Ebrahimi# Tests for auth_mode, using CA callback, these are duplicated from the authentication tests
5755*62c56f98SSadaf Ebrahimi# When updating these tests, modify the matching authentication tests accordingly
5756*62c56f98SSadaf Ebrahimi
5757*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5758*62c56f98SSadaf Ebrahimirun_test    "Authentication, CA callback: server badcert, client required" \
5759*62c56f98SSadaf Ebrahimi            "$P_SRV crt_file=data_files/server5-badsign.crt \
5760*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
5761*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 ca_callback=1 debug_level=3 auth_mode=required" \
5762*62c56f98SSadaf Ebrahimi            1 \
5763*62c56f98SSadaf Ebrahimi            -c "use CA callback for X.509 CRT verification" \
5764*62c56f98SSadaf Ebrahimi            -c "x509_verify_cert() returned" \
5765*62c56f98SSadaf Ebrahimi            -c "! The certificate is not correctly signed by the trusted CA" \
5766*62c56f98SSadaf Ebrahimi            -c "! mbedtls_ssl_handshake returned" \
5767*62c56f98SSadaf Ebrahimi            -c "X509 - Certificate verification failed"
5768*62c56f98SSadaf Ebrahimi
5769*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5770*62c56f98SSadaf Ebrahimirun_test    "Authentication, CA callback: server badcert, client optional" \
5771*62c56f98SSadaf Ebrahimi            "$P_SRV crt_file=data_files/server5-badsign.crt \
5772*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
5773*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 ca_callback=1 debug_level=3 auth_mode=optional" \
5774*62c56f98SSadaf Ebrahimi            0 \
5775*62c56f98SSadaf Ebrahimi            -c "use CA callback for X.509 CRT verification" \
5776*62c56f98SSadaf Ebrahimi            -c "x509_verify_cert() returned" \
5777*62c56f98SSadaf Ebrahimi            -c "! The certificate is not correctly signed by the trusted CA" \
5778*62c56f98SSadaf Ebrahimi            -C "! mbedtls_ssl_handshake returned" \
5779*62c56f98SSadaf Ebrahimi            -C "X509 - Certificate verification failed"
5780*62c56f98SSadaf Ebrahimi
5781*62c56f98SSadaf Ebrahimi# The purpose of the next two tests is to test the client's behaviour when receiving a server
5782*62c56f98SSadaf Ebrahimi# certificate with an unsupported elliptic curve. This should usually not happen because
5783*62c56f98SSadaf Ebrahimi# the client informs the server about the supported curves - it does, though, in the
5784*62c56f98SSadaf Ebrahimi# corner case of a static ECDH suite, because the server doesn't check the curve on that
5785*62c56f98SSadaf Ebrahimi# occasion (to be fixed). If that bug's fixed, the test needs to be altered to use a
5786*62c56f98SSadaf Ebrahimi# different means to have the server ignoring the client's supported curve list.
5787*62c56f98SSadaf Ebrahimi
5788*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5789*62c56f98SSadaf Ebrahimirun_test    "Authentication, CA callback: server ECDH p256v1, client required, p256v1 unsupported" \
5790*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=1 key_file=data_files/server5.key \
5791*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.ku-ka.crt" \
5792*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 ca_callback=1 debug_level=3 auth_mode=required groups=secp521r1" \
5793*62c56f98SSadaf Ebrahimi            1 \
5794*62c56f98SSadaf Ebrahimi            -c "use CA callback for X.509 CRT verification" \
5795*62c56f98SSadaf Ebrahimi            -c "bad certificate (EC key curve)" \
5796*62c56f98SSadaf Ebrahimi            -c "! Certificate verification flags" \
5797*62c56f98SSadaf Ebrahimi            -C "bad server certificate (ECDH curve)" # Expect failure at earlier verification stage
5798*62c56f98SSadaf Ebrahimi
5799*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5800*62c56f98SSadaf Ebrahimirun_test    "Authentication, CA callback: server ECDH p256v1, client optional, p256v1 unsupported" \
5801*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=1 key_file=data_files/server5.key \
5802*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.ku-ka.crt" \
5803*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 ca_callback=1 debug_level=3 auth_mode=optional groups=secp521r1" \
5804*62c56f98SSadaf Ebrahimi            1 \
5805*62c56f98SSadaf Ebrahimi            -c "use CA callback for X.509 CRT verification" \
5806*62c56f98SSadaf Ebrahimi            -c "bad certificate (EC key curve)"\
5807*62c56f98SSadaf Ebrahimi            -c "! Certificate verification flags"\
5808*62c56f98SSadaf Ebrahimi            -c "bad server certificate (ECDH curve)" # Expect failure only at ECDH params check
5809*62c56f98SSadaf Ebrahimi
5810*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5811*62c56f98SSadaf Ebrahimirequires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
5812*62c56f98SSadaf Ebrahimirun_test    "Authentication, CA callback: client SHA256, server required" \
5813*62c56f98SSadaf Ebrahimi            "$P_SRV ca_callback=1 debug_level=3 auth_mode=required" \
5814*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/server6.crt \
5815*62c56f98SSadaf Ebrahimi             key_file=data_files/server6.key \
5816*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384" \
5817*62c56f98SSadaf Ebrahimi            0 \
5818*62c56f98SSadaf Ebrahimi            -s "use CA callback for X.509 CRT verification" \
5819*62c56f98SSadaf Ebrahimi            -c "Supported Signature Algorithm found: 04 " \
5820*62c56f98SSadaf Ebrahimi            -c "Supported Signature Algorithm found: 05 "
5821*62c56f98SSadaf Ebrahimi
5822*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5823*62c56f98SSadaf Ebrahimirequires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
5824*62c56f98SSadaf Ebrahimirun_test    "Authentication, CA callback: client SHA384, server required" \
5825*62c56f98SSadaf Ebrahimi            "$P_SRV ca_callback=1 debug_level=3 auth_mode=required" \
5826*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/server6.crt \
5827*62c56f98SSadaf Ebrahimi             key_file=data_files/server6.key \
5828*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256" \
5829*62c56f98SSadaf Ebrahimi            0 \
5830*62c56f98SSadaf Ebrahimi            -s "use CA callback for X.509 CRT verification" \
5831*62c56f98SSadaf Ebrahimi            -c "Supported Signature Algorithm found: 04 " \
5832*62c56f98SSadaf Ebrahimi            -c "Supported Signature Algorithm found: 05 "
5833*62c56f98SSadaf Ebrahimi
5834*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5835*62c56f98SSadaf Ebrahimirun_test    "Authentication, CA callback: client badcert, server required" \
5836*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 ca_callback=1 debug_level=3 auth_mode=required" \
5837*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/server5-badsign.crt \
5838*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
5839*62c56f98SSadaf Ebrahimi            1 \
5840*62c56f98SSadaf Ebrahimi            -s "use CA callback for X.509 CRT verification" \
5841*62c56f98SSadaf Ebrahimi            -S "skip write certificate request" \
5842*62c56f98SSadaf Ebrahimi            -C "skip parse certificate request" \
5843*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
5844*62c56f98SSadaf Ebrahimi            -C "skip write certificate" \
5845*62c56f98SSadaf Ebrahimi            -C "skip write certificate verify" \
5846*62c56f98SSadaf Ebrahimi            -S "skip parse certificate verify" \
5847*62c56f98SSadaf Ebrahimi            -s "x509_verify_cert() returned" \
5848*62c56f98SSadaf Ebrahimi            -s "! The certificate is not correctly signed by the trusted CA" \
5849*62c56f98SSadaf Ebrahimi            -s "! mbedtls_ssl_handshake returned" \
5850*62c56f98SSadaf Ebrahimi            -s "send alert level=2 message=48" \
5851*62c56f98SSadaf Ebrahimi            -c "! mbedtls_ssl_handshake returned" \
5852*62c56f98SSadaf Ebrahimi            -s "X509 - Certificate verification failed"
5853*62c56f98SSadaf Ebrahimi# We don't check that the client receives the alert because it might
5854*62c56f98SSadaf Ebrahimi# detect that its write end of the connection is closed and abort
5855*62c56f98SSadaf Ebrahimi# before reading the alert message.
5856*62c56f98SSadaf Ebrahimi
5857*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5858*62c56f98SSadaf Ebrahimirun_test    "Authentication, CA callback: client cert not trusted, server required" \
5859*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 ca_callback=1 debug_level=3 auth_mode=required" \
5860*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/server5-selfsigned.crt \
5861*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
5862*62c56f98SSadaf Ebrahimi            1 \
5863*62c56f98SSadaf Ebrahimi            -s "use CA callback for X.509 CRT verification" \
5864*62c56f98SSadaf Ebrahimi            -S "skip write certificate request" \
5865*62c56f98SSadaf Ebrahimi            -C "skip parse certificate request" \
5866*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
5867*62c56f98SSadaf Ebrahimi            -C "skip write certificate" \
5868*62c56f98SSadaf Ebrahimi            -C "skip write certificate verify" \
5869*62c56f98SSadaf Ebrahimi            -S "skip parse certificate verify" \
5870*62c56f98SSadaf Ebrahimi            -s "x509_verify_cert() returned" \
5871*62c56f98SSadaf Ebrahimi            -s "! The certificate is not correctly signed by the trusted CA" \
5872*62c56f98SSadaf Ebrahimi            -s "! mbedtls_ssl_handshake returned" \
5873*62c56f98SSadaf Ebrahimi            -c "! mbedtls_ssl_handshake returned" \
5874*62c56f98SSadaf Ebrahimi            -s "X509 - Certificate verification failed"
5875*62c56f98SSadaf Ebrahimi
5876*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5877*62c56f98SSadaf Ebrahimirun_test    "Authentication, CA callback: client badcert, server optional" \
5878*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 ca_callback=1 debug_level=3 auth_mode=optional" \
5879*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/server5-badsign.crt \
5880*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
5881*62c56f98SSadaf Ebrahimi            0 \
5882*62c56f98SSadaf Ebrahimi            -s "use CA callback for X.509 CRT verification" \
5883*62c56f98SSadaf Ebrahimi            -S "skip write certificate request" \
5884*62c56f98SSadaf Ebrahimi            -C "skip parse certificate request" \
5885*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
5886*62c56f98SSadaf Ebrahimi            -C "skip write certificate" \
5887*62c56f98SSadaf Ebrahimi            -C "skip write certificate verify" \
5888*62c56f98SSadaf Ebrahimi            -S "skip parse certificate verify" \
5889*62c56f98SSadaf Ebrahimi            -s "x509_verify_cert() returned" \
5890*62c56f98SSadaf Ebrahimi            -s "! The certificate is not correctly signed by the trusted CA" \
5891*62c56f98SSadaf Ebrahimi            -S "! mbedtls_ssl_handshake returned" \
5892*62c56f98SSadaf Ebrahimi            -C "! mbedtls_ssl_handshake returned" \
5893*62c56f98SSadaf Ebrahimi            -S "X509 - Certificate verification failed"
5894*62c56f98SSadaf Ebrahimi
5895*62c56f98SSadaf Ebrahimirequires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
5896*62c56f98SSadaf Ebrahimirequires_full_size_output_buffer
5897*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5898*62c56f98SSadaf Ebrahimirun_test    "Authentication, CA callback: server max_int chain, client default" \
5899*62c56f98SSadaf Ebrahimi            "$P_SRV crt_file=data_files/dir-maxpath/c09.pem \
5900*62c56f98SSadaf Ebrahimi                    key_file=data_files/dir-maxpath/09.key" \
5901*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 ca_callback=1 debug_level=3 server_name=CA09 ca_file=data_files/dir-maxpath/00.crt" \
5902*62c56f98SSadaf Ebrahimi            0 \
5903*62c56f98SSadaf Ebrahimi            -c "use CA callback for X.509 CRT verification" \
5904*62c56f98SSadaf Ebrahimi            -C "X509 - A fatal error occurred"
5905*62c56f98SSadaf Ebrahimi
5906*62c56f98SSadaf Ebrahimirequires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
5907*62c56f98SSadaf Ebrahimirequires_full_size_output_buffer
5908*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5909*62c56f98SSadaf Ebrahimirun_test    "Authentication, CA callback: server max_int+1 chain, client default" \
5910*62c56f98SSadaf Ebrahimi            "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \
5911*62c56f98SSadaf Ebrahimi                    key_file=data_files/dir-maxpath/10.key" \
5912*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 debug_level=3 ca_callback=1 server_name=CA10 ca_file=data_files/dir-maxpath/00.crt" \
5913*62c56f98SSadaf Ebrahimi            1 \
5914*62c56f98SSadaf Ebrahimi            -c "use CA callback for X.509 CRT verification" \
5915*62c56f98SSadaf Ebrahimi            -c "X509 - A fatal error occurred"
5916*62c56f98SSadaf Ebrahimi
5917*62c56f98SSadaf Ebrahimirequires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
5918*62c56f98SSadaf Ebrahimirequires_full_size_output_buffer
5919*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5920*62c56f98SSadaf Ebrahimirun_test    "Authentication, CA callback: server max_int+1 chain, client optional" \
5921*62c56f98SSadaf Ebrahimi            "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \
5922*62c56f98SSadaf Ebrahimi                    key_file=data_files/dir-maxpath/10.key" \
5923*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 ca_callback=1 server_name=CA10 ca_file=data_files/dir-maxpath/00.crt \
5924*62c56f98SSadaf Ebrahimi                    debug_level=3 auth_mode=optional" \
5925*62c56f98SSadaf Ebrahimi            1 \
5926*62c56f98SSadaf Ebrahimi            -c "use CA callback for X.509 CRT verification" \
5927*62c56f98SSadaf Ebrahimi            -c "X509 - A fatal error occurred"
5928*62c56f98SSadaf Ebrahimi
5929*62c56f98SSadaf Ebrahimirequires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
5930*62c56f98SSadaf Ebrahimirequires_full_size_output_buffer
5931*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5932*62c56f98SSadaf Ebrahimirun_test    "Authentication, CA callback: client max_int+1 chain, server optional" \
5933*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 ca_callback=1 debug_level=3 ca_file=data_files/dir-maxpath/00.crt auth_mode=optional" \
5934*62c56f98SSadaf Ebrahimi            "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \
5935*62c56f98SSadaf Ebrahimi                    key_file=data_files/dir-maxpath/10.key" \
5936*62c56f98SSadaf Ebrahimi            1 \
5937*62c56f98SSadaf Ebrahimi            -s "use CA callback for X.509 CRT verification" \
5938*62c56f98SSadaf Ebrahimi            -s "X509 - A fatal error occurred"
5939*62c56f98SSadaf Ebrahimi
5940*62c56f98SSadaf Ebrahimirequires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
5941*62c56f98SSadaf Ebrahimirequires_full_size_output_buffer
5942*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5943*62c56f98SSadaf Ebrahimirun_test    "Authentication, CA callback: client max_int+1 chain, server required" \
5944*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 ca_callback=1 debug_level=3 ca_file=data_files/dir-maxpath/00.crt auth_mode=required" \
5945*62c56f98SSadaf Ebrahimi            "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \
5946*62c56f98SSadaf Ebrahimi                    key_file=data_files/dir-maxpath/10.key" \
5947*62c56f98SSadaf Ebrahimi            1 \
5948*62c56f98SSadaf Ebrahimi            -s "use CA callback for X.509 CRT verification" \
5949*62c56f98SSadaf Ebrahimi            -s "X509 - A fatal error occurred"
5950*62c56f98SSadaf Ebrahimi
5951*62c56f98SSadaf Ebrahimirequires_config_value_equals "MBEDTLS_X509_MAX_INTERMEDIATE_CA" $MAX_IM_CA
5952*62c56f98SSadaf Ebrahimirequires_full_size_output_buffer
5953*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
5954*62c56f98SSadaf Ebrahimirun_test    "Authentication, CA callback: client max_int chain, server required" \
5955*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 ca_callback=1 debug_level=3 ca_file=data_files/dir-maxpath/00.crt auth_mode=required" \
5956*62c56f98SSadaf Ebrahimi            "$P_CLI crt_file=data_files/dir-maxpath/c09.pem \
5957*62c56f98SSadaf Ebrahimi                    key_file=data_files/dir-maxpath/09.key" \
5958*62c56f98SSadaf Ebrahimi            0 \
5959*62c56f98SSadaf Ebrahimi            -s "use CA callback for X.509 CRT verification" \
5960*62c56f98SSadaf Ebrahimi            -S "X509 - A fatal error occurred"
5961*62c56f98SSadaf Ebrahimi
5962*62c56f98SSadaf Ebrahimi# Tests for certificate selection based on SHA version
5963*62c56f98SSadaf Ebrahimi
5964*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_X509_REMOVE_INFO
5965*62c56f98SSadaf Ebrahimirun_test    "Certificate hash: client TLS 1.2 -> SHA-2" \
5966*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 crt_file=data_files/server5.crt \
5967*62c56f98SSadaf Ebrahimi                    key_file=data_files/server5.key \
5968*62c56f98SSadaf Ebrahimi                    crt_file2=data_files/server5-sha1.crt \
5969*62c56f98SSadaf Ebrahimi                    key_file2=data_files/server5.key" \
5970*62c56f98SSadaf Ebrahimi            "$P_CLI" \
5971*62c56f98SSadaf Ebrahimi            0 \
5972*62c56f98SSadaf Ebrahimi            -c "signed using.*ECDSA with SHA256" \
5973*62c56f98SSadaf Ebrahimi            -C "signed using.*ECDSA with SHA1"
5974*62c56f98SSadaf Ebrahimi
5975*62c56f98SSadaf Ebrahimi# tests for SNI
5976*62c56f98SSadaf Ebrahimi
5977*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_X509_REMOVE_INFO
5978*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
5979*62c56f98SSadaf Ebrahimirun_test    "SNI: no SNI callback" \
5980*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 \
5981*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.crt key_file=data_files/server5.key" \
5982*62c56f98SSadaf Ebrahimi            "$P_CLI server_name=localhost" \
5983*62c56f98SSadaf Ebrahimi            0 \
5984*62c56f98SSadaf Ebrahimi            -c "issuer name *: C=NL, O=PolarSSL, CN=Polarssl Test EC CA" \
5985*62c56f98SSadaf Ebrahimi            -c "subject name *: C=NL, O=PolarSSL, CN=localhost"
5986*62c56f98SSadaf Ebrahimi
5987*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_X509_REMOVE_INFO
5988*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
5989*62c56f98SSadaf Ebrahimirun_test    "SNI: matching cert 1" \
5990*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 \
5991*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.crt key_file=data_files/server5.key \
5992*62c56f98SSadaf Ebrahimi             sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
5993*62c56f98SSadaf Ebrahimi            "$P_CLI server_name=localhost" \
5994*62c56f98SSadaf Ebrahimi            0 \
5995*62c56f98SSadaf Ebrahimi            -s "parse ServerName extension" \
5996*62c56f98SSadaf Ebrahimi            -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
5997*62c56f98SSadaf Ebrahimi            -c "subject name *: C=NL, O=PolarSSL, CN=localhost"
5998*62c56f98SSadaf Ebrahimi
5999*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_X509_REMOVE_INFO
6000*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6001*62c56f98SSadaf Ebrahimirun_test    "SNI: matching cert 2" \
6002*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 \
6003*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.crt key_file=data_files/server5.key \
6004*62c56f98SSadaf Ebrahimi             sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
6005*62c56f98SSadaf Ebrahimi            "$P_CLI server_name=polarssl.example" \
6006*62c56f98SSadaf Ebrahimi            0 \
6007*62c56f98SSadaf Ebrahimi            -s "parse ServerName extension" \
6008*62c56f98SSadaf Ebrahimi            -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
6009*62c56f98SSadaf Ebrahimi            -c "subject name *: C=NL, O=PolarSSL, CN=polarssl.example"
6010*62c56f98SSadaf Ebrahimi
6011*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_X509_REMOVE_INFO
6012*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6013*62c56f98SSadaf Ebrahimirun_test    "SNI: no matching cert" \
6014*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 \
6015*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.crt key_file=data_files/server5.key \
6016*62c56f98SSadaf Ebrahimi             sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
6017*62c56f98SSadaf Ebrahimi            "$P_CLI server_name=nonesuch.example" \
6018*62c56f98SSadaf Ebrahimi            1 \
6019*62c56f98SSadaf Ebrahimi            -s "parse ServerName extension" \
6020*62c56f98SSadaf Ebrahimi            -s "ssl_sni_wrapper() returned" \
6021*62c56f98SSadaf Ebrahimi            -s "mbedtls_ssl_handshake returned" \
6022*62c56f98SSadaf Ebrahimi            -c "mbedtls_ssl_handshake returned" \
6023*62c56f98SSadaf Ebrahimi            -c "SSL - A fatal alert message was received from our peer"
6024*62c56f98SSadaf Ebrahimi
6025*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6026*62c56f98SSadaf Ebrahimirun_test    "SNI: client auth no override: optional" \
6027*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 auth_mode=optional \
6028*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.crt key_file=data_files/server5.key \
6029*62c56f98SSadaf Ebrahimi             sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-" \
6030*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 server_name=localhost" \
6031*62c56f98SSadaf Ebrahimi            0 \
6032*62c56f98SSadaf Ebrahimi            -S "skip write certificate request" \
6033*62c56f98SSadaf Ebrahimi            -C "skip parse certificate request" \
6034*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
6035*62c56f98SSadaf Ebrahimi            -C "skip write certificate" \
6036*62c56f98SSadaf Ebrahimi            -C "skip write certificate verify" \
6037*62c56f98SSadaf Ebrahimi            -S "skip parse certificate verify"
6038*62c56f98SSadaf Ebrahimi
6039*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6040*62c56f98SSadaf Ebrahimirun_test    "SNI: client auth override: none -> optional" \
6041*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 auth_mode=none \
6042*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.crt key_file=data_files/server5.key \
6043*62c56f98SSadaf Ebrahimi             sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,optional" \
6044*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 server_name=localhost" \
6045*62c56f98SSadaf Ebrahimi            0 \
6046*62c56f98SSadaf Ebrahimi            -S "skip write certificate request" \
6047*62c56f98SSadaf Ebrahimi            -C "skip parse certificate request" \
6048*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
6049*62c56f98SSadaf Ebrahimi            -C "skip write certificate" \
6050*62c56f98SSadaf Ebrahimi            -C "skip write certificate verify" \
6051*62c56f98SSadaf Ebrahimi            -S "skip parse certificate verify"
6052*62c56f98SSadaf Ebrahimi
6053*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6054*62c56f98SSadaf Ebrahimirun_test    "SNI: client auth override: optional -> none" \
6055*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 auth_mode=optional \
6056*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.crt key_file=data_files/server5.key \
6057*62c56f98SSadaf Ebrahimi             sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,none" \
6058*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 server_name=localhost" \
6059*62c56f98SSadaf Ebrahimi            0 \
6060*62c56f98SSadaf Ebrahimi            -s "skip write certificate request" \
6061*62c56f98SSadaf Ebrahimi            -C "skip parse certificate request" \
6062*62c56f98SSadaf Ebrahimi            -c "got no certificate request" \
6063*62c56f98SSadaf Ebrahimi            -c "skip write certificate"
6064*62c56f98SSadaf Ebrahimi
6065*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6066*62c56f98SSadaf Ebrahimirun_test    "SNI: CA no override" \
6067*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 auth_mode=optional \
6068*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.crt key_file=data_files/server5.key \
6069*62c56f98SSadaf Ebrahimi             ca_file=data_files/test-ca.crt \
6070*62c56f98SSadaf Ebrahimi             sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,required" \
6071*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 server_name=localhost \
6072*62c56f98SSadaf Ebrahimi             crt_file=data_files/server6.crt key_file=data_files/server6.key" \
6073*62c56f98SSadaf Ebrahimi            1 \
6074*62c56f98SSadaf Ebrahimi            -S "skip write certificate request" \
6075*62c56f98SSadaf Ebrahimi            -C "skip parse certificate request" \
6076*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
6077*62c56f98SSadaf Ebrahimi            -C "skip write certificate" \
6078*62c56f98SSadaf Ebrahimi            -C "skip write certificate verify" \
6079*62c56f98SSadaf Ebrahimi            -S "skip parse certificate verify" \
6080*62c56f98SSadaf Ebrahimi            -s "x509_verify_cert() returned" \
6081*62c56f98SSadaf Ebrahimi            -s "! The certificate is not correctly signed by the trusted CA" \
6082*62c56f98SSadaf Ebrahimi            -S "The certificate has been revoked (is on a CRL)"
6083*62c56f98SSadaf Ebrahimi
6084*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6085*62c56f98SSadaf Ebrahimirun_test    "SNI: CA override" \
6086*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 auth_mode=optional \
6087*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.crt key_file=data_files/server5.key \
6088*62c56f98SSadaf Ebrahimi             ca_file=data_files/test-ca.crt \
6089*62c56f98SSadaf Ebrahimi             sni=localhost,data_files/server2.crt,data_files/server2.key,data_files/test-ca2.crt,-,required" \
6090*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 server_name=localhost \
6091*62c56f98SSadaf Ebrahimi             crt_file=data_files/server6.crt key_file=data_files/server6.key" \
6092*62c56f98SSadaf Ebrahimi            0 \
6093*62c56f98SSadaf Ebrahimi            -S "skip write certificate request" \
6094*62c56f98SSadaf Ebrahimi            -C "skip parse certificate request" \
6095*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
6096*62c56f98SSadaf Ebrahimi            -C "skip write certificate" \
6097*62c56f98SSadaf Ebrahimi            -C "skip write certificate verify" \
6098*62c56f98SSadaf Ebrahimi            -S "skip parse certificate verify" \
6099*62c56f98SSadaf Ebrahimi            -S "x509_verify_cert() returned" \
6100*62c56f98SSadaf Ebrahimi            -S "! The certificate is not correctly signed by the trusted CA" \
6101*62c56f98SSadaf Ebrahimi            -S "The certificate has been revoked (is on a CRL)"
6102*62c56f98SSadaf Ebrahimi
6103*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6104*62c56f98SSadaf Ebrahimirun_test    "SNI: CA override with CRL" \
6105*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 auth_mode=optional \
6106*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.crt key_file=data_files/server5.key \
6107*62c56f98SSadaf Ebrahimi             ca_file=data_files/test-ca.crt \
6108*62c56f98SSadaf Ebrahimi             sni=localhost,data_files/server2.crt,data_files/server2.key,data_files/test-ca2.crt,data_files/crl-ec-sha256.pem,required" \
6109*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 server_name=localhost \
6110*62c56f98SSadaf Ebrahimi             crt_file=data_files/server6.crt key_file=data_files/server6.key" \
6111*62c56f98SSadaf Ebrahimi            1 \
6112*62c56f98SSadaf Ebrahimi            -S "skip write certificate request" \
6113*62c56f98SSadaf Ebrahimi            -C "skip parse certificate request" \
6114*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
6115*62c56f98SSadaf Ebrahimi            -C "skip write certificate" \
6116*62c56f98SSadaf Ebrahimi            -C "skip write certificate verify" \
6117*62c56f98SSadaf Ebrahimi            -S "skip parse certificate verify" \
6118*62c56f98SSadaf Ebrahimi            -s "x509_verify_cert() returned" \
6119*62c56f98SSadaf Ebrahimi            -S "! The certificate is not correctly signed by the trusted CA" \
6120*62c56f98SSadaf Ebrahimi            -s "The certificate has been revoked (is on a CRL)"
6121*62c56f98SSadaf Ebrahimi
6122*62c56f98SSadaf Ebrahimi# Tests for SNI and DTLS
6123*62c56f98SSadaf Ebrahimi
6124*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_X509_REMOVE_INFO
6125*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6126*62c56f98SSadaf Ebrahimirun_test    "SNI: DTLS, no SNI callback" \
6127*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 \
6128*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.crt key_file=data_files/server5.key" \
6129*62c56f98SSadaf Ebrahimi            "$P_CLI server_name=localhost dtls=1" \
6130*62c56f98SSadaf Ebrahimi            0 \
6131*62c56f98SSadaf Ebrahimi            -c "issuer name *: C=NL, O=PolarSSL, CN=Polarssl Test EC CA" \
6132*62c56f98SSadaf Ebrahimi            -c "subject name *: C=NL, O=PolarSSL, CN=localhost"
6133*62c56f98SSadaf Ebrahimi
6134*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_X509_REMOVE_INFO
6135*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6136*62c56f98SSadaf Ebrahimirun_test    "SNI: DTLS, matching cert 1" \
6137*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 \
6138*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.crt key_file=data_files/server5.key \
6139*62c56f98SSadaf Ebrahimi             sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
6140*62c56f98SSadaf Ebrahimi            "$P_CLI server_name=localhost dtls=1" \
6141*62c56f98SSadaf Ebrahimi            0 \
6142*62c56f98SSadaf Ebrahimi            -s "parse ServerName extension" \
6143*62c56f98SSadaf Ebrahimi            -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
6144*62c56f98SSadaf Ebrahimi            -c "subject name *: C=NL, O=PolarSSL, CN=localhost"
6145*62c56f98SSadaf Ebrahimi
6146*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_X509_REMOVE_INFO
6147*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6148*62c56f98SSadaf Ebrahimirun_test    "SNI: DTLS, matching cert 2" \
6149*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 \
6150*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.crt key_file=data_files/server5.key \
6151*62c56f98SSadaf Ebrahimi             sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
6152*62c56f98SSadaf Ebrahimi            "$P_CLI server_name=polarssl.example dtls=1" \
6153*62c56f98SSadaf Ebrahimi            0 \
6154*62c56f98SSadaf Ebrahimi            -s "parse ServerName extension" \
6155*62c56f98SSadaf Ebrahimi            -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
6156*62c56f98SSadaf Ebrahimi            -c "subject name *: C=NL, O=PolarSSL, CN=polarssl.example"
6157*62c56f98SSadaf Ebrahimi
6158*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6159*62c56f98SSadaf Ebrahimirun_test    "SNI: DTLS, no matching cert" \
6160*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 \
6161*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.crt key_file=data_files/server5.key \
6162*62c56f98SSadaf Ebrahimi             sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
6163*62c56f98SSadaf Ebrahimi            "$P_CLI server_name=nonesuch.example dtls=1" \
6164*62c56f98SSadaf Ebrahimi            1 \
6165*62c56f98SSadaf Ebrahimi            -s "parse ServerName extension" \
6166*62c56f98SSadaf Ebrahimi            -s "ssl_sni_wrapper() returned" \
6167*62c56f98SSadaf Ebrahimi            -s "mbedtls_ssl_handshake returned" \
6168*62c56f98SSadaf Ebrahimi            -c "mbedtls_ssl_handshake returned" \
6169*62c56f98SSadaf Ebrahimi            -c "SSL - A fatal alert message was received from our peer"
6170*62c56f98SSadaf Ebrahimi
6171*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6172*62c56f98SSadaf Ebrahimirun_test    "SNI: DTLS, client auth no override: optional" \
6173*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 auth_mode=optional dtls=1 \
6174*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.crt key_file=data_files/server5.key \
6175*62c56f98SSadaf Ebrahimi             sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-" \
6176*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 server_name=localhost dtls=1" \
6177*62c56f98SSadaf Ebrahimi            0 \
6178*62c56f98SSadaf Ebrahimi            -S "skip write certificate request" \
6179*62c56f98SSadaf Ebrahimi            -C "skip parse certificate request" \
6180*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
6181*62c56f98SSadaf Ebrahimi            -C "skip write certificate" \
6182*62c56f98SSadaf Ebrahimi            -C "skip write certificate verify" \
6183*62c56f98SSadaf Ebrahimi            -S "skip parse certificate verify"
6184*62c56f98SSadaf Ebrahimi
6185*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6186*62c56f98SSadaf Ebrahimirun_test    "SNI: DTLS, client auth override: none -> optional" \
6187*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 auth_mode=none dtls=1 \
6188*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.crt key_file=data_files/server5.key \
6189*62c56f98SSadaf Ebrahimi             sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,optional" \
6190*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 server_name=localhost dtls=1" \
6191*62c56f98SSadaf Ebrahimi            0 \
6192*62c56f98SSadaf Ebrahimi            -S "skip write certificate request" \
6193*62c56f98SSadaf Ebrahimi            -C "skip parse certificate request" \
6194*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
6195*62c56f98SSadaf Ebrahimi            -C "skip write certificate" \
6196*62c56f98SSadaf Ebrahimi            -C "skip write certificate verify" \
6197*62c56f98SSadaf Ebrahimi            -S "skip parse certificate verify"
6198*62c56f98SSadaf Ebrahimi
6199*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6200*62c56f98SSadaf Ebrahimirun_test    "SNI: DTLS, client auth override: optional -> none" \
6201*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 auth_mode=optional dtls=1 \
6202*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.crt key_file=data_files/server5.key \
6203*62c56f98SSadaf Ebrahimi             sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,none" \
6204*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 server_name=localhost dtls=1" \
6205*62c56f98SSadaf Ebrahimi            0 \
6206*62c56f98SSadaf Ebrahimi            -s "skip write certificate request" \
6207*62c56f98SSadaf Ebrahimi            -C "skip parse certificate request" \
6208*62c56f98SSadaf Ebrahimi            -c "got no certificate request" \
6209*62c56f98SSadaf Ebrahimi            -c "skip write certificate" \
6210*62c56f98SSadaf Ebrahimi            -c "skip write certificate verify" \
6211*62c56f98SSadaf Ebrahimi            -s "skip parse certificate verify"
6212*62c56f98SSadaf Ebrahimi
6213*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6214*62c56f98SSadaf Ebrahimirun_test    "SNI: DTLS, CA no override" \
6215*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 auth_mode=optional dtls=1 \
6216*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.crt key_file=data_files/server5.key \
6217*62c56f98SSadaf Ebrahimi             ca_file=data_files/test-ca.crt \
6218*62c56f98SSadaf Ebrahimi             sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,required" \
6219*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 server_name=localhost dtls=1 \
6220*62c56f98SSadaf Ebrahimi             crt_file=data_files/server6.crt key_file=data_files/server6.key" \
6221*62c56f98SSadaf Ebrahimi            1 \
6222*62c56f98SSadaf Ebrahimi            -S "skip write certificate request" \
6223*62c56f98SSadaf Ebrahimi            -C "skip parse certificate request" \
6224*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
6225*62c56f98SSadaf Ebrahimi            -C "skip write certificate" \
6226*62c56f98SSadaf Ebrahimi            -C "skip write certificate verify" \
6227*62c56f98SSadaf Ebrahimi            -S "skip parse certificate verify" \
6228*62c56f98SSadaf Ebrahimi            -s "x509_verify_cert() returned" \
6229*62c56f98SSadaf Ebrahimi            -s "! The certificate is not correctly signed by the trusted CA" \
6230*62c56f98SSadaf Ebrahimi            -S "The certificate has been revoked (is on a CRL)"
6231*62c56f98SSadaf Ebrahimi
6232*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6233*62c56f98SSadaf Ebrahimirun_test    "SNI: DTLS, CA override" \
6234*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 auth_mode=optional dtls=1 \
6235*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.crt key_file=data_files/server5.key \
6236*62c56f98SSadaf Ebrahimi             ca_file=data_files/test-ca.crt \
6237*62c56f98SSadaf Ebrahimi             sni=localhost,data_files/server2.crt,data_files/server2.key,data_files/test-ca2.crt,-,required" \
6238*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 server_name=localhost dtls=1 \
6239*62c56f98SSadaf Ebrahimi             crt_file=data_files/server6.crt key_file=data_files/server6.key" \
6240*62c56f98SSadaf Ebrahimi            0 \
6241*62c56f98SSadaf Ebrahimi            -S "skip write certificate request" \
6242*62c56f98SSadaf Ebrahimi            -C "skip parse certificate request" \
6243*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
6244*62c56f98SSadaf Ebrahimi            -C "skip write certificate" \
6245*62c56f98SSadaf Ebrahimi            -C "skip write certificate verify" \
6246*62c56f98SSadaf Ebrahimi            -S "skip parse certificate verify" \
6247*62c56f98SSadaf Ebrahimi            -S "x509_verify_cert() returned" \
6248*62c56f98SSadaf Ebrahimi            -S "! The certificate is not correctly signed by the trusted CA" \
6249*62c56f98SSadaf Ebrahimi            -S "The certificate has been revoked (is on a CRL)"
6250*62c56f98SSadaf Ebrahimi
6251*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6252*62c56f98SSadaf Ebrahimirun_test    "SNI: DTLS, CA override with CRL" \
6253*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 auth_mode=optional \
6254*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.crt key_file=data_files/server5.key dtls=1 \
6255*62c56f98SSadaf Ebrahimi             ca_file=data_files/test-ca.crt \
6256*62c56f98SSadaf Ebrahimi             sni=localhost,data_files/server2.crt,data_files/server2.key,data_files/test-ca2.crt,data_files/crl-ec-sha256.pem,required" \
6257*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 server_name=localhost dtls=1 \
6258*62c56f98SSadaf Ebrahimi             crt_file=data_files/server6.crt key_file=data_files/server6.key" \
6259*62c56f98SSadaf Ebrahimi            1 \
6260*62c56f98SSadaf Ebrahimi            -S "skip write certificate request" \
6261*62c56f98SSadaf Ebrahimi            -C "skip parse certificate request" \
6262*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
6263*62c56f98SSadaf Ebrahimi            -C "skip write certificate" \
6264*62c56f98SSadaf Ebrahimi            -C "skip write certificate verify" \
6265*62c56f98SSadaf Ebrahimi            -S "skip parse certificate verify" \
6266*62c56f98SSadaf Ebrahimi            -s "x509_verify_cert() returned" \
6267*62c56f98SSadaf Ebrahimi            -S "! The certificate is not correctly signed by the trusted CA" \
6268*62c56f98SSadaf Ebrahimi            -s "The certificate has been revoked (is on a CRL)"
6269*62c56f98SSadaf Ebrahimi
6270*62c56f98SSadaf Ebrahimi# Tests for non-blocking I/O: exercise a variety of handshake flows
6271*62c56f98SSadaf Ebrahimi
6272*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6273*62c56f98SSadaf Ebrahimirun_test    "Non-blocking I/O: basic handshake" \
6274*62c56f98SSadaf Ebrahimi            "$P_SRV nbio=2 tickets=0 auth_mode=none" \
6275*62c56f98SSadaf Ebrahimi            "$P_CLI nbio=2 tickets=0" \
6276*62c56f98SSadaf Ebrahimi            0 \
6277*62c56f98SSadaf Ebrahimi            -S "mbedtls_ssl_handshake returned" \
6278*62c56f98SSadaf Ebrahimi            -C "mbedtls_ssl_handshake returned" \
6279*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6280*62c56f98SSadaf Ebrahimi
6281*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6282*62c56f98SSadaf Ebrahimirun_test    "Non-blocking I/O: client auth" \
6283*62c56f98SSadaf Ebrahimi            "$P_SRV nbio=2 tickets=0 auth_mode=required" \
6284*62c56f98SSadaf Ebrahimi            "$P_CLI nbio=2 tickets=0" \
6285*62c56f98SSadaf Ebrahimi            0 \
6286*62c56f98SSadaf Ebrahimi            -S "mbedtls_ssl_handshake returned" \
6287*62c56f98SSadaf Ebrahimi            -C "mbedtls_ssl_handshake returned" \
6288*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6289*62c56f98SSadaf Ebrahimi
6290*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6291*62c56f98SSadaf Ebrahimirun_test    "Non-blocking I/O: ticket" \
6292*62c56f98SSadaf Ebrahimi            "$P_SRV nbio=2 tickets=1 auth_mode=none" \
6293*62c56f98SSadaf Ebrahimi            "$P_CLI nbio=2 tickets=1" \
6294*62c56f98SSadaf Ebrahimi            0 \
6295*62c56f98SSadaf Ebrahimi            -S "mbedtls_ssl_handshake returned" \
6296*62c56f98SSadaf Ebrahimi            -C "mbedtls_ssl_handshake returned" \
6297*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6298*62c56f98SSadaf Ebrahimi
6299*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6300*62c56f98SSadaf Ebrahimirun_test    "Non-blocking I/O: ticket + client auth" \
6301*62c56f98SSadaf Ebrahimi            "$P_SRV nbio=2 tickets=1 auth_mode=required" \
6302*62c56f98SSadaf Ebrahimi            "$P_CLI nbio=2 tickets=1" \
6303*62c56f98SSadaf Ebrahimi            0 \
6304*62c56f98SSadaf Ebrahimi            -S "mbedtls_ssl_handshake returned" \
6305*62c56f98SSadaf Ebrahimi            -C "mbedtls_ssl_handshake returned" \
6306*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6307*62c56f98SSadaf Ebrahimi
6308*62c56f98SSadaf Ebrahimirequires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
6309*62c56f98SSadaf Ebrahimirun_test    "Non-blocking I/O: TLS 1.2 + ticket + client auth + resume" \
6310*62c56f98SSadaf Ebrahimi            "$P_SRV nbio=2 tickets=1 auth_mode=required" \
6311*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 nbio=2 tickets=1 reconnect=1" \
6312*62c56f98SSadaf Ebrahimi            0 \
6313*62c56f98SSadaf Ebrahimi            -S "mbedtls_ssl_handshake returned" \
6314*62c56f98SSadaf Ebrahimi            -C "mbedtls_ssl_handshake returned" \
6315*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6316*62c56f98SSadaf Ebrahimi
6317*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
6318*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
6319*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
6320*62c56f98SSadaf Ebrahimirun_test    "Non-blocking I/O: TLS 1.3 + ticket + client auth + resume" \
6321*62c56f98SSadaf Ebrahimi            "$P_SRV nbio=2 tickets=1 auth_mode=required" \
6322*62c56f98SSadaf Ebrahimi            "$P_CLI nbio=2 tickets=1 reconnect=1" \
6323*62c56f98SSadaf Ebrahimi            0 \
6324*62c56f98SSadaf Ebrahimi            -S "mbedtls_ssl_handshake returned" \
6325*62c56f98SSadaf Ebrahimi            -C "mbedtls_ssl_handshake returned" \
6326*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6327*62c56f98SSadaf Ebrahimi
6328*62c56f98SSadaf Ebrahimirequires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
6329*62c56f98SSadaf Ebrahimirun_test    "Non-blocking I/O: TLS 1.2 + ticket + resume" \
6330*62c56f98SSadaf Ebrahimi            "$P_SRV nbio=2 tickets=1 auth_mode=none" \
6331*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 nbio=2 tickets=1 reconnect=1" \
6332*62c56f98SSadaf Ebrahimi            0 \
6333*62c56f98SSadaf Ebrahimi            -S "mbedtls_ssl_handshake returned" \
6334*62c56f98SSadaf Ebrahimi            -C "mbedtls_ssl_handshake returned" \
6335*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6336*62c56f98SSadaf Ebrahimi
6337*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
6338*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
6339*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
6340*62c56f98SSadaf Ebrahimirun_test    "Non-blocking I/O: TLS 1.3 + ticket + resume" \
6341*62c56f98SSadaf Ebrahimi            "$P_SRV nbio=2 tickets=1 auth_mode=none" \
6342*62c56f98SSadaf Ebrahimi            "$P_CLI nbio=2 tickets=1 reconnect=1" \
6343*62c56f98SSadaf Ebrahimi            0 \
6344*62c56f98SSadaf Ebrahimi            -S "mbedtls_ssl_handshake returned" \
6345*62c56f98SSadaf Ebrahimi            -C "mbedtls_ssl_handshake returned" \
6346*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6347*62c56f98SSadaf Ebrahimi
6348*62c56f98SSadaf Ebrahimirequires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
6349*62c56f98SSadaf Ebrahimirun_test    "Non-blocking I/O: session-id resume" \
6350*62c56f98SSadaf Ebrahimi            "$P_SRV nbio=2 tickets=0 auth_mode=none" \
6351*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 nbio=2 tickets=0 reconnect=1" \
6352*62c56f98SSadaf Ebrahimi            0 \
6353*62c56f98SSadaf Ebrahimi            -S "mbedtls_ssl_handshake returned" \
6354*62c56f98SSadaf Ebrahimi            -C "mbedtls_ssl_handshake returned" \
6355*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6356*62c56f98SSadaf Ebrahimi
6357*62c56f98SSadaf Ebrahimi# Tests for event-driven I/O: exercise a variety of handshake flows
6358*62c56f98SSadaf Ebrahimi
6359*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6360*62c56f98SSadaf Ebrahimirun_test    "Event-driven I/O: basic handshake" \
6361*62c56f98SSadaf Ebrahimi            "$P_SRV event=1 tickets=0 auth_mode=none" \
6362*62c56f98SSadaf Ebrahimi            "$P_CLI event=1 tickets=0" \
6363*62c56f98SSadaf Ebrahimi            0 \
6364*62c56f98SSadaf Ebrahimi            -S "mbedtls_ssl_handshake returned" \
6365*62c56f98SSadaf Ebrahimi            -C "mbedtls_ssl_handshake returned" \
6366*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6367*62c56f98SSadaf Ebrahimi
6368*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6369*62c56f98SSadaf Ebrahimirun_test    "Event-driven I/O: client auth" \
6370*62c56f98SSadaf Ebrahimi            "$P_SRV event=1 tickets=0 auth_mode=required" \
6371*62c56f98SSadaf Ebrahimi            "$P_CLI event=1 tickets=0" \
6372*62c56f98SSadaf Ebrahimi            0 \
6373*62c56f98SSadaf Ebrahimi            -S "mbedtls_ssl_handshake returned" \
6374*62c56f98SSadaf Ebrahimi            -C "mbedtls_ssl_handshake returned" \
6375*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6376*62c56f98SSadaf Ebrahimi
6377*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6378*62c56f98SSadaf Ebrahimirun_test    "Event-driven I/O: ticket" \
6379*62c56f98SSadaf Ebrahimi            "$P_SRV event=1 tickets=1 auth_mode=none" \
6380*62c56f98SSadaf Ebrahimi            "$P_CLI event=1 tickets=1" \
6381*62c56f98SSadaf Ebrahimi            0 \
6382*62c56f98SSadaf Ebrahimi            -S "mbedtls_ssl_handshake returned" \
6383*62c56f98SSadaf Ebrahimi            -C "mbedtls_ssl_handshake returned" \
6384*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6385*62c56f98SSadaf Ebrahimi
6386*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6387*62c56f98SSadaf Ebrahimirun_test    "Event-driven I/O: ticket + client auth" \
6388*62c56f98SSadaf Ebrahimi            "$P_SRV event=1 tickets=1 auth_mode=required" \
6389*62c56f98SSadaf Ebrahimi            "$P_CLI event=1 tickets=1" \
6390*62c56f98SSadaf Ebrahimi            0 \
6391*62c56f98SSadaf Ebrahimi            -S "mbedtls_ssl_handshake returned" \
6392*62c56f98SSadaf Ebrahimi            -C "mbedtls_ssl_handshake returned" \
6393*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6394*62c56f98SSadaf Ebrahimi
6395*62c56f98SSadaf Ebrahimirequires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
6396*62c56f98SSadaf Ebrahimirun_test    "Event-driven I/O: TLS 1.2 + ticket + client auth + resume" \
6397*62c56f98SSadaf Ebrahimi            "$P_SRV event=1 tickets=1 auth_mode=required" \
6398*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 event=1 tickets=1 reconnect=1" \
6399*62c56f98SSadaf Ebrahimi            0 \
6400*62c56f98SSadaf Ebrahimi            -S "mbedtls_ssl_handshake returned" \
6401*62c56f98SSadaf Ebrahimi            -C "mbedtls_ssl_handshake returned" \
6402*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6403*62c56f98SSadaf Ebrahimi
6404*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
6405*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
6406*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
6407*62c56f98SSadaf Ebrahimirun_test    "Event-driven I/O: TLS 1.3 + ticket + client auth + resume" \
6408*62c56f98SSadaf Ebrahimi            "$P_SRV event=1 tickets=1 auth_mode=required" \
6409*62c56f98SSadaf Ebrahimi            "$P_CLI event=1 tickets=1 reconnect=1" \
6410*62c56f98SSadaf Ebrahimi            0 \
6411*62c56f98SSadaf Ebrahimi            -S "mbedtls_ssl_handshake returned" \
6412*62c56f98SSadaf Ebrahimi            -C "mbedtls_ssl_handshake returned" \
6413*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6414*62c56f98SSadaf Ebrahimi
6415*62c56f98SSadaf Ebrahimirequires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
6416*62c56f98SSadaf Ebrahimirun_test    "Event-driven I/O: TLS 1.2 + ticket + resume" \
6417*62c56f98SSadaf Ebrahimi            "$P_SRV event=1 tickets=1 auth_mode=none" \
6418*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 event=1 tickets=1 reconnect=1" \
6419*62c56f98SSadaf Ebrahimi            0 \
6420*62c56f98SSadaf Ebrahimi            -S "mbedtls_ssl_handshake returned" \
6421*62c56f98SSadaf Ebrahimi            -C "mbedtls_ssl_handshake returned" \
6422*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6423*62c56f98SSadaf Ebrahimi
6424*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
6425*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
6426*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
6427*62c56f98SSadaf Ebrahimirun_test    "Event-driven I/O: TLS 1.3 + ticket + resume" \
6428*62c56f98SSadaf Ebrahimi            "$P_SRV event=1 tickets=1 auth_mode=none" \
6429*62c56f98SSadaf Ebrahimi            "$P_CLI event=1 tickets=1 reconnect=1" \
6430*62c56f98SSadaf Ebrahimi            0 \
6431*62c56f98SSadaf Ebrahimi            -S "mbedtls_ssl_handshake returned" \
6432*62c56f98SSadaf Ebrahimi            -C "mbedtls_ssl_handshake returned" \
6433*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6434*62c56f98SSadaf Ebrahimi
6435*62c56f98SSadaf Ebrahimirequires_any_configs_enabled $TLS1_2_KEY_EXCHANGES_WITH_CERT
6436*62c56f98SSadaf Ebrahimirun_test    "Event-driven I/O: session-id resume" \
6437*62c56f98SSadaf Ebrahimi            "$P_SRV event=1 tickets=0 auth_mode=none" \
6438*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 event=1 tickets=0 reconnect=1" \
6439*62c56f98SSadaf Ebrahimi            0 \
6440*62c56f98SSadaf Ebrahimi            -S "mbedtls_ssl_handshake returned" \
6441*62c56f98SSadaf Ebrahimi            -C "mbedtls_ssl_handshake returned" \
6442*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6443*62c56f98SSadaf Ebrahimi
6444*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6445*62c56f98SSadaf Ebrahimirun_test    "Event-driven I/O, DTLS: basic handshake" \
6446*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 event=1 tickets=0 auth_mode=none" \
6447*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 event=1 tickets=0" \
6448*62c56f98SSadaf Ebrahimi            0 \
6449*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6450*62c56f98SSadaf Ebrahimi
6451*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6452*62c56f98SSadaf Ebrahimirun_test    "Event-driven I/O, DTLS: client auth" \
6453*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 event=1 tickets=0 auth_mode=required" \
6454*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 event=1 tickets=0" \
6455*62c56f98SSadaf Ebrahimi            0 \
6456*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6457*62c56f98SSadaf Ebrahimi
6458*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6459*62c56f98SSadaf Ebrahimirun_test    "Event-driven I/O, DTLS: ticket" \
6460*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 event=1 tickets=1 auth_mode=none" \
6461*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 event=1 tickets=1" \
6462*62c56f98SSadaf Ebrahimi            0 \
6463*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6464*62c56f98SSadaf Ebrahimi
6465*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6466*62c56f98SSadaf Ebrahimirun_test    "Event-driven I/O, DTLS: ticket + client auth" \
6467*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 event=1 tickets=1 auth_mode=required" \
6468*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 event=1 tickets=1" \
6469*62c56f98SSadaf Ebrahimi            0 \
6470*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6471*62c56f98SSadaf Ebrahimi
6472*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6473*62c56f98SSadaf Ebrahimirun_test    "Event-driven I/O, DTLS: ticket + client auth + resume" \
6474*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 event=1 tickets=1 auth_mode=required" \
6475*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 event=1 tickets=1 reconnect=1 skip_close_notify=1" \
6476*62c56f98SSadaf Ebrahimi            0 \
6477*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6478*62c56f98SSadaf Ebrahimi
6479*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6480*62c56f98SSadaf Ebrahimirun_test    "Event-driven I/O, DTLS: ticket + resume" \
6481*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 event=1 tickets=1 auth_mode=none" \
6482*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 event=1 tickets=1 reconnect=1 skip_close_notify=1" \
6483*62c56f98SSadaf Ebrahimi            0 \
6484*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6485*62c56f98SSadaf Ebrahimi
6486*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6487*62c56f98SSadaf Ebrahimirun_test    "Event-driven I/O, DTLS: session-id resume" \
6488*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 event=1 tickets=0 auth_mode=none" \
6489*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 event=1 tickets=0 reconnect=1 skip_close_notify=1" \
6490*62c56f98SSadaf Ebrahimi            0 \
6491*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6492*62c56f98SSadaf Ebrahimi
6493*62c56f98SSadaf Ebrahimi# This test demonstrates the need for the mbedtls_ssl_check_pending function.
6494*62c56f98SSadaf Ebrahimi# During session resumption, the client will send its ApplicationData record
6495*62c56f98SSadaf Ebrahimi# within the same datagram as the Finished messages. In this situation, the
6496*62c56f98SSadaf Ebrahimi# server MUST NOT idle on the underlying transport after handshake completion,
6497*62c56f98SSadaf Ebrahimi# because the ApplicationData request has already been queued internally.
6498*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6499*62c56f98SSadaf Ebrahimirun_test    "Event-driven I/O, DTLS: session-id resume, UDP packing" \
6500*62c56f98SSadaf Ebrahimi            -p "$P_PXY pack=50" \
6501*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 event=1 tickets=0 auth_mode=required" \
6502*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 event=1 tickets=0 reconnect=1 skip_close_notify=1" \
6503*62c56f98SSadaf Ebrahimi            0 \
6504*62c56f98SSadaf Ebrahimi            -c "Read from server: .* bytes read"
6505*62c56f98SSadaf Ebrahimi
6506*62c56f98SSadaf Ebrahimi# Tests for version negotiation
6507*62c56f98SSadaf Ebrahimi
6508*62c56f98SSadaf Ebrahimirun_test    "Version check: all -> 1.2" \
6509*62c56f98SSadaf Ebrahimi            "$P_SRV" \
6510*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12" \
6511*62c56f98SSadaf Ebrahimi            0 \
6512*62c56f98SSadaf Ebrahimi            -S "mbedtls_ssl_handshake returned" \
6513*62c56f98SSadaf Ebrahimi            -C "mbedtls_ssl_handshake returned" \
6514*62c56f98SSadaf Ebrahimi            -s "Protocol is TLSv1.2" \
6515*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.2"
6516*62c56f98SSadaf Ebrahimi
6517*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6518*62c56f98SSadaf Ebrahimirun_test    "Not supported version check: cli TLS 1.0" \
6519*62c56f98SSadaf Ebrahimi            "$P_SRV" \
6520*62c56f98SSadaf Ebrahimi            "$G_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.0" \
6521*62c56f98SSadaf Ebrahimi            1 \
6522*62c56f98SSadaf Ebrahimi            -s "Handshake protocol not within min/max boundaries" \
6523*62c56f98SSadaf Ebrahimi            -c "Error in protocol version" \
6524*62c56f98SSadaf Ebrahimi            -S "Protocol is TLSv1.0" \
6525*62c56f98SSadaf Ebrahimi            -C "Handshake was completed"
6526*62c56f98SSadaf Ebrahimi
6527*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6528*62c56f98SSadaf Ebrahimirun_test    "Not supported version check: cli TLS 1.1" \
6529*62c56f98SSadaf Ebrahimi            "$P_SRV" \
6530*62c56f98SSadaf Ebrahimi            "$G_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.1" \
6531*62c56f98SSadaf Ebrahimi            1 \
6532*62c56f98SSadaf Ebrahimi            -s "Handshake protocol not within min/max boundaries" \
6533*62c56f98SSadaf Ebrahimi            -c "Error in protocol version" \
6534*62c56f98SSadaf Ebrahimi            -S "Protocol is TLSv1.1" \
6535*62c56f98SSadaf Ebrahimi            -C "Handshake was completed"
6536*62c56f98SSadaf Ebrahimi
6537*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6538*62c56f98SSadaf Ebrahimirun_test    "Not supported version check: srv max TLS 1.0" \
6539*62c56f98SSadaf Ebrahimi            "$G_SRV --priority=NORMAL:-VERS-TLS-ALL:+VERS-TLS1.0" \
6540*62c56f98SSadaf Ebrahimi            "$P_CLI" \
6541*62c56f98SSadaf Ebrahimi            1 \
6542*62c56f98SSadaf Ebrahimi            -s "Error in protocol version" \
6543*62c56f98SSadaf Ebrahimi            -c "Handshake protocol not within min/max boundaries" \
6544*62c56f98SSadaf Ebrahimi            -S "Version: TLS1.0" \
6545*62c56f98SSadaf Ebrahimi            -C "Protocol is TLSv1.0"
6546*62c56f98SSadaf Ebrahimi
6547*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6548*62c56f98SSadaf Ebrahimirun_test    "Not supported version check: srv max TLS 1.1" \
6549*62c56f98SSadaf Ebrahimi            "$G_SRV --priority=NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1" \
6550*62c56f98SSadaf Ebrahimi            "$P_CLI" \
6551*62c56f98SSadaf Ebrahimi            1 \
6552*62c56f98SSadaf Ebrahimi            -s "Error in protocol version" \
6553*62c56f98SSadaf Ebrahimi            -c "Handshake protocol not within min/max boundaries" \
6554*62c56f98SSadaf Ebrahimi            -S "Version: TLS1.1" \
6555*62c56f98SSadaf Ebrahimi            -C "Protocol is TLSv1.1"
6556*62c56f98SSadaf Ebrahimi
6557*62c56f98SSadaf Ebrahimi# Tests for ALPN extension
6558*62c56f98SSadaf Ebrahimi
6559*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6560*62c56f98SSadaf Ebrahimirun_test    "ALPN: none" \
6561*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3" \
6562*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3" \
6563*62c56f98SSadaf Ebrahimi            0 \
6564*62c56f98SSadaf Ebrahimi            -C "client hello, adding alpn extension" \
6565*62c56f98SSadaf Ebrahimi            -S "found alpn extension" \
6566*62c56f98SSadaf Ebrahimi            -C "got an alert message, type: \\[2:120]" \
6567*62c56f98SSadaf Ebrahimi            -S "server side, adding alpn extension" \
6568*62c56f98SSadaf Ebrahimi            -C "found alpn extension " \
6569*62c56f98SSadaf Ebrahimi            -C "Application Layer Protocol is" \
6570*62c56f98SSadaf Ebrahimi            -S "Application Layer Protocol is"
6571*62c56f98SSadaf Ebrahimi
6572*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6573*62c56f98SSadaf Ebrahimirun_test    "ALPN: client only" \
6574*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3" \
6575*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 alpn=abc,1234" \
6576*62c56f98SSadaf Ebrahimi            0 \
6577*62c56f98SSadaf Ebrahimi            -c "client hello, adding alpn extension" \
6578*62c56f98SSadaf Ebrahimi            -s "found alpn extension" \
6579*62c56f98SSadaf Ebrahimi            -C "got an alert message, type: \\[2:120]" \
6580*62c56f98SSadaf Ebrahimi            -S "server side, adding alpn extension" \
6581*62c56f98SSadaf Ebrahimi            -C "found alpn extension " \
6582*62c56f98SSadaf Ebrahimi            -c "Application Layer Protocol is (none)" \
6583*62c56f98SSadaf Ebrahimi            -S "Application Layer Protocol is"
6584*62c56f98SSadaf Ebrahimi
6585*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6586*62c56f98SSadaf Ebrahimirun_test    "ALPN: server only" \
6587*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 alpn=abc,1234" \
6588*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3" \
6589*62c56f98SSadaf Ebrahimi            0 \
6590*62c56f98SSadaf Ebrahimi            -C "client hello, adding alpn extension" \
6591*62c56f98SSadaf Ebrahimi            -S "found alpn extension" \
6592*62c56f98SSadaf Ebrahimi            -C "got an alert message, type: \\[2:120]" \
6593*62c56f98SSadaf Ebrahimi            -S "server side, adding alpn extension" \
6594*62c56f98SSadaf Ebrahimi            -C "found alpn extension " \
6595*62c56f98SSadaf Ebrahimi            -C "Application Layer Protocol is" \
6596*62c56f98SSadaf Ebrahimi            -s "Application Layer Protocol is (none)"
6597*62c56f98SSadaf Ebrahimi
6598*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6599*62c56f98SSadaf Ebrahimirun_test    "ALPN: both, common cli1-srv1" \
6600*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 alpn=abc,1234" \
6601*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 alpn=abc,1234" \
6602*62c56f98SSadaf Ebrahimi            0 \
6603*62c56f98SSadaf Ebrahimi            -c "client hello, adding alpn extension" \
6604*62c56f98SSadaf Ebrahimi            -s "found alpn extension" \
6605*62c56f98SSadaf Ebrahimi            -C "got an alert message, type: \\[2:120]" \
6606*62c56f98SSadaf Ebrahimi            -s "server side, adding alpn extension" \
6607*62c56f98SSadaf Ebrahimi            -c "found alpn extension" \
6608*62c56f98SSadaf Ebrahimi            -c "Application Layer Protocol is abc" \
6609*62c56f98SSadaf Ebrahimi            -s "Application Layer Protocol is abc"
6610*62c56f98SSadaf Ebrahimi
6611*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6612*62c56f98SSadaf Ebrahimirun_test    "ALPN: both, common cli2-srv1" \
6613*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 alpn=abc,1234" \
6614*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 alpn=1234,abc" \
6615*62c56f98SSadaf Ebrahimi            0 \
6616*62c56f98SSadaf Ebrahimi            -c "client hello, adding alpn extension" \
6617*62c56f98SSadaf Ebrahimi            -s "found alpn extension" \
6618*62c56f98SSadaf Ebrahimi            -C "got an alert message, type: \\[2:120]" \
6619*62c56f98SSadaf Ebrahimi            -s "server side, adding alpn extension" \
6620*62c56f98SSadaf Ebrahimi            -c "found alpn extension" \
6621*62c56f98SSadaf Ebrahimi            -c "Application Layer Protocol is abc" \
6622*62c56f98SSadaf Ebrahimi            -s "Application Layer Protocol is abc"
6623*62c56f98SSadaf Ebrahimi
6624*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6625*62c56f98SSadaf Ebrahimirun_test    "ALPN: both, common cli1-srv2" \
6626*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 alpn=abc,1234" \
6627*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 alpn=1234,abcde" \
6628*62c56f98SSadaf Ebrahimi            0 \
6629*62c56f98SSadaf Ebrahimi            -c "client hello, adding alpn extension" \
6630*62c56f98SSadaf Ebrahimi            -s "found alpn extension" \
6631*62c56f98SSadaf Ebrahimi            -C "got an alert message, type: \\[2:120]" \
6632*62c56f98SSadaf Ebrahimi            -s "server side, adding alpn extension" \
6633*62c56f98SSadaf Ebrahimi            -c "found alpn extension" \
6634*62c56f98SSadaf Ebrahimi            -c "Application Layer Protocol is 1234" \
6635*62c56f98SSadaf Ebrahimi            -s "Application Layer Protocol is 1234"
6636*62c56f98SSadaf Ebrahimi
6637*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6638*62c56f98SSadaf Ebrahimirun_test    "ALPN: both, no common" \
6639*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 alpn=abc,123" \
6640*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 alpn=1234,abcde" \
6641*62c56f98SSadaf Ebrahimi            1 \
6642*62c56f98SSadaf Ebrahimi            -c "client hello, adding alpn extension" \
6643*62c56f98SSadaf Ebrahimi            -s "found alpn extension" \
6644*62c56f98SSadaf Ebrahimi            -c "got an alert message, type: \\[2:120]" \
6645*62c56f98SSadaf Ebrahimi            -S "server side, adding alpn extension" \
6646*62c56f98SSadaf Ebrahimi            -C "found alpn extension" \
6647*62c56f98SSadaf Ebrahimi            -C "Application Layer Protocol is 1234" \
6648*62c56f98SSadaf Ebrahimi            -S "Application Layer Protocol is 1234"
6649*62c56f98SSadaf Ebrahimi
6650*62c56f98SSadaf Ebrahimi
6651*62c56f98SSadaf Ebrahimi# Tests for keyUsage in leaf certificates, part 1:
6652*62c56f98SSadaf Ebrahimi# server-side certificate/suite selection
6653*62c56f98SSadaf Ebrahimi
6654*62c56f98SSadaf Ebrahimirun_test    "keyUsage srv: RSA, digitalSignature -> (EC)DHE-RSA" \
6655*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 key_file=data_files/server2.key \
6656*62c56f98SSadaf Ebrahimi             crt_file=data_files/server2.ku-ds.crt" \
6657*62c56f98SSadaf Ebrahimi            "$P_CLI" \
6658*62c56f98SSadaf Ebrahimi            0 \
6659*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-[EC]*DHE-RSA-WITH-"
6660*62c56f98SSadaf Ebrahimi
6661*62c56f98SSadaf Ebrahimirun_test    "keyUsage srv: RSA, keyEncipherment -> RSA" \
6662*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 key_file=data_files/server2.key \
6663*62c56f98SSadaf Ebrahimi             crt_file=data_files/server2.ku-ke.crt" \
6664*62c56f98SSadaf Ebrahimi            "$P_CLI" \
6665*62c56f98SSadaf Ebrahimi            0 \
6666*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-RSA-WITH-"
6667*62c56f98SSadaf Ebrahimi
6668*62c56f98SSadaf Ebrahimirun_test    "keyUsage srv: RSA, keyAgreement -> fail" \
6669*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 key_file=data_files/server2.key \
6670*62c56f98SSadaf Ebrahimi             crt_file=data_files/server2.ku-ka.crt" \
6671*62c56f98SSadaf Ebrahimi            "$P_CLI" \
6672*62c56f98SSadaf Ebrahimi            1 \
6673*62c56f98SSadaf Ebrahimi            -C "Ciphersuite is "
6674*62c56f98SSadaf Ebrahimi
6675*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
6676*62c56f98SSadaf Ebrahimirun_test    "keyUsage srv: ECDSA, digitalSignature -> ECDHE-ECDSA" \
6677*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 key_file=data_files/server5.key \
6678*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.ku-ds.crt" \
6679*62c56f98SSadaf Ebrahimi            "$P_CLI" \
6680*62c56f98SSadaf Ebrahimi            0 \
6681*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-ECDHE-ECDSA-WITH-"
6682*62c56f98SSadaf Ebrahimi
6683*62c56f98SSadaf Ebrahimi
6684*62c56f98SSadaf Ebrahimirun_test    "keyUsage srv: ECDSA, keyAgreement -> ECDH-" \
6685*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 key_file=data_files/server5.key \
6686*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.ku-ka.crt" \
6687*62c56f98SSadaf Ebrahimi            "$P_CLI" \
6688*62c56f98SSadaf Ebrahimi            0 \
6689*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-ECDH-"
6690*62c56f98SSadaf Ebrahimi
6691*62c56f98SSadaf Ebrahimirun_test    "keyUsage srv: ECDSA, keyEncipherment -> fail" \
6692*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 key_file=data_files/server5.key \
6693*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.ku-ke.crt" \
6694*62c56f98SSadaf Ebrahimi            "$P_CLI" \
6695*62c56f98SSadaf Ebrahimi            1 \
6696*62c56f98SSadaf Ebrahimi            -C "Ciphersuite is "
6697*62c56f98SSadaf Ebrahimi
6698*62c56f98SSadaf Ebrahimi# Tests for keyUsage in leaf certificates, part 2:
6699*62c56f98SSadaf Ebrahimi# client-side checking of server cert
6700*62c56f98SSadaf Ebrahimi
6701*62c56f98SSadaf Ebrahimirun_test    "keyUsage cli: DigitalSignature+KeyEncipherment, RSA: OK" \
6702*62c56f98SSadaf Ebrahimi            "$O_SRV -tls1_2 -key data_files/server2.key \
6703*62c56f98SSadaf Ebrahimi             -cert data_files/server2.ku-ds_ke.crt" \
6704*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=1 \
6705*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
6706*62c56f98SSadaf Ebrahimi            0 \
6707*62c56f98SSadaf Ebrahimi            -C "bad certificate (usage extensions)" \
6708*62c56f98SSadaf Ebrahimi            -C "Processing of the Certificate handshake message failed" \
6709*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-"
6710*62c56f98SSadaf Ebrahimi
6711*62c56f98SSadaf Ebrahimirun_test    "keyUsage cli: DigitalSignature+KeyEncipherment, DHE-RSA: OK" \
6712*62c56f98SSadaf Ebrahimi            "$O_SRV -tls1_2 -key data_files/server2.key \
6713*62c56f98SSadaf Ebrahimi             -cert data_files/server2.ku-ds_ke.crt" \
6714*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=1 \
6715*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
6716*62c56f98SSadaf Ebrahimi            0 \
6717*62c56f98SSadaf Ebrahimi            -C "bad certificate (usage extensions)" \
6718*62c56f98SSadaf Ebrahimi            -C "Processing of the Certificate handshake message failed" \
6719*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-"
6720*62c56f98SSadaf Ebrahimi
6721*62c56f98SSadaf Ebrahimirun_test    "keyUsage cli: KeyEncipherment, RSA: OK" \
6722*62c56f98SSadaf Ebrahimi            "$O_SRV -tls1_2 -key data_files/server2.key \
6723*62c56f98SSadaf Ebrahimi             -cert data_files/server2.ku-ke.crt" \
6724*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=1 \
6725*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
6726*62c56f98SSadaf Ebrahimi            0 \
6727*62c56f98SSadaf Ebrahimi            -C "bad certificate (usage extensions)" \
6728*62c56f98SSadaf Ebrahimi            -C "Processing of the Certificate handshake message failed" \
6729*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-"
6730*62c56f98SSadaf Ebrahimi
6731*62c56f98SSadaf Ebrahimirun_test    "keyUsage cli: KeyEncipherment, DHE-RSA: fail" \
6732*62c56f98SSadaf Ebrahimi            "$O_SRV -tls1_2 -key data_files/server2.key \
6733*62c56f98SSadaf Ebrahimi             -cert data_files/server2.ku-ke.crt" \
6734*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=1 \
6735*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
6736*62c56f98SSadaf Ebrahimi            1 \
6737*62c56f98SSadaf Ebrahimi            -c "bad certificate (usage extensions)" \
6738*62c56f98SSadaf Ebrahimi            -c "Processing of the Certificate handshake message failed" \
6739*62c56f98SSadaf Ebrahimi            -C "Ciphersuite is TLS-"
6740*62c56f98SSadaf Ebrahimi
6741*62c56f98SSadaf Ebrahimirun_test    "keyUsage cli: KeyEncipherment, DHE-RSA: fail, soft" \
6742*62c56f98SSadaf Ebrahimi            "$O_SRV -tls1_2 -key data_files/server2.key \
6743*62c56f98SSadaf Ebrahimi             -cert data_files/server2.ku-ke.crt" \
6744*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=1 auth_mode=optional \
6745*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
6746*62c56f98SSadaf Ebrahimi            0 \
6747*62c56f98SSadaf Ebrahimi            -c "bad certificate (usage extensions)" \
6748*62c56f98SSadaf Ebrahimi            -C "Processing of the Certificate handshake message failed" \
6749*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-" \
6750*62c56f98SSadaf Ebrahimi            -c "! Usage does not match the keyUsage extension"
6751*62c56f98SSadaf Ebrahimi
6752*62c56f98SSadaf Ebrahimirun_test    "keyUsage cli: DigitalSignature, DHE-RSA: OK" \
6753*62c56f98SSadaf Ebrahimi            "$O_SRV -tls1_2 -key data_files/server2.key \
6754*62c56f98SSadaf Ebrahimi             -cert data_files/server2.ku-ds.crt" \
6755*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=1 \
6756*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA" \
6757*62c56f98SSadaf Ebrahimi            0 \
6758*62c56f98SSadaf Ebrahimi            -C "bad certificate (usage extensions)" \
6759*62c56f98SSadaf Ebrahimi            -C "Processing of the Certificate handshake message failed" \
6760*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-"
6761*62c56f98SSadaf Ebrahimi
6762*62c56f98SSadaf Ebrahimirun_test    "keyUsage cli: DigitalSignature, RSA: fail" \
6763*62c56f98SSadaf Ebrahimi            "$O_SRV -tls1_2 -key data_files/server2.key \
6764*62c56f98SSadaf Ebrahimi             -cert data_files/server2.ku-ds.crt" \
6765*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=1 \
6766*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
6767*62c56f98SSadaf Ebrahimi            1 \
6768*62c56f98SSadaf Ebrahimi            -c "bad certificate (usage extensions)" \
6769*62c56f98SSadaf Ebrahimi            -c "Processing of the Certificate handshake message failed" \
6770*62c56f98SSadaf Ebrahimi            -C "Ciphersuite is TLS-"
6771*62c56f98SSadaf Ebrahimi
6772*62c56f98SSadaf Ebrahimirun_test    "keyUsage cli: DigitalSignature, RSA: fail, soft" \
6773*62c56f98SSadaf Ebrahimi            "$O_SRV -tls1_2 -key data_files/server2.key \
6774*62c56f98SSadaf Ebrahimi             -cert data_files/server2.ku-ds.crt" \
6775*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=1 auth_mode=optional \
6776*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
6777*62c56f98SSadaf Ebrahimi            0 \
6778*62c56f98SSadaf Ebrahimi            -c "bad certificate (usage extensions)" \
6779*62c56f98SSadaf Ebrahimi            -C "Processing of the Certificate handshake message failed" \
6780*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-" \
6781*62c56f98SSadaf Ebrahimi            -c "! Usage does not match the keyUsage extension"
6782*62c56f98SSadaf Ebrahimi
6783*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
6784*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
6785*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
6786*62c56f98SSadaf Ebrahimirun_test    "keyUsage cli 1.3: DigitalSignature+KeyEncipherment, RSA: OK" \
6787*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV_NO_CERT -tls1_3 -num_tickets=0 -key data_files/server2.key \
6788*62c56f98SSadaf Ebrahimi             -cert data_files/server2.ku-ds_ke.crt" \
6789*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3" \
6790*62c56f98SSadaf Ebrahimi            0 \
6791*62c56f98SSadaf Ebrahimi            -C "bad certificate (usage extensions)" \
6792*62c56f98SSadaf Ebrahimi            -C "Processing of the Certificate handshake message failed" \
6793*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is"
6794*62c56f98SSadaf Ebrahimi
6795*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
6796*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
6797*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
6798*62c56f98SSadaf Ebrahimirun_test    "keyUsage cli 1.3: KeyEncipherment, RSA: fail" \
6799*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV_NO_CERT -tls1_3 -num_tickets=0 -key data_files/server2.key \
6800*62c56f98SSadaf Ebrahimi             -cert data_files/server2.ku-ke.crt" \
6801*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=1" \
6802*62c56f98SSadaf Ebrahimi            1 \
6803*62c56f98SSadaf Ebrahimi            -c "bad certificate (usage extensions)" \
6804*62c56f98SSadaf Ebrahimi            -c "Processing of the Certificate handshake message failed" \
6805*62c56f98SSadaf Ebrahimi            -C "Ciphersuite is"
6806*62c56f98SSadaf Ebrahimi
6807*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
6808*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
6809*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
6810*62c56f98SSadaf Ebrahimirun_test    "keyUsage cli 1.3: KeyAgreement, RSA: fail" \
6811*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV_NO_CERT -tls1_3 -num_tickets=0 -key data_files/server2.key \
6812*62c56f98SSadaf Ebrahimi             -cert data_files/server2.ku-ka.crt" \
6813*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=1" \
6814*62c56f98SSadaf Ebrahimi            1 \
6815*62c56f98SSadaf Ebrahimi            -c "bad certificate (usage extensions)" \
6816*62c56f98SSadaf Ebrahimi            -c "Processing of the Certificate handshake message failed" \
6817*62c56f98SSadaf Ebrahimi            -C "Ciphersuite is"
6818*62c56f98SSadaf Ebrahimi
6819*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
6820*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
6821*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
6822*62c56f98SSadaf Ebrahimirun_test    "keyUsage cli 1.3: DigitalSignature, ECDSA: OK" \
6823*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV_NO_CERT -tls1_3 -num_tickets=0 -key data_files/server5.key \
6824*62c56f98SSadaf Ebrahimi             -cert data_files/server5.ku-ds.crt" \
6825*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3" \
6826*62c56f98SSadaf Ebrahimi            0 \
6827*62c56f98SSadaf Ebrahimi            -C "bad certificate (usage extensions)" \
6828*62c56f98SSadaf Ebrahimi            -C "Processing of the Certificate handshake message failed" \
6829*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is"
6830*62c56f98SSadaf Ebrahimi
6831*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
6832*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
6833*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
6834*62c56f98SSadaf Ebrahimirun_test    "keyUsage cli 1.3: KeyEncipherment, ECDSA: fail" \
6835*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV_NO_CERT -tls1_3 -num_tickets=0 -key data_files/server5.key \
6836*62c56f98SSadaf Ebrahimi             -cert data_files/server5.ku-ke.crt" \
6837*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=1" \
6838*62c56f98SSadaf Ebrahimi            1 \
6839*62c56f98SSadaf Ebrahimi            -c "bad certificate (usage extensions)" \
6840*62c56f98SSadaf Ebrahimi            -c "Processing of the Certificate handshake message failed" \
6841*62c56f98SSadaf Ebrahimi            -C "Ciphersuite is"
6842*62c56f98SSadaf Ebrahimi
6843*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
6844*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
6845*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
6846*62c56f98SSadaf Ebrahimirun_test    "keyUsage cli 1.3: KeyAgreement, ECDSA: fail" \
6847*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV_NO_CERT -tls1_3 -num_tickets=0 -key data_files/server5.key \
6848*62c56f98SSadaf Ebrahimi             -cert data_files/server5.ku-ka.crt" \
6849*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=1" \
6850*62c56f98SSadaf Ebrahimi            1 \
6851*62c56f98SSadaf Ebrahimi            -c "bad certificate (usage extensions)" \
6852*62c56f98SSadaf Ebrahimi            -c "Processing of the Certificate handshake message failed" \
6853*62c56f98SSadaf Ebrahimi            -C "Ciphersuite is"
6854*62c56f98SSadaf Ebrahimi
6855*62c56f98SSadaf Ebrahimi# Tests for keyUsage in leaf certificates, part 3:
6856*62c56f98SSadaf Ebrahimi# server-side checking of client cert
6857*62c56f98SSadaf Ebrahimi
6858*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6859*62c56f98SSadaf Ebrahimirun_test    "keyUsage cli-auth: RSA, DigitalSignature: OK" \
6860*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=1 auth_mode=optional" \
6861*62c56f98SSadaf Ebrahimi            "$O_CLI -key data_files/server2.key \
6862*62c56f98SSadaf Ebrahimi             -cert data_files/server2.ku-ds.crt" \
6863*62c56f98SSadaf Ebrahimi            0 \
6864*62c56f98SSadaf Ebrahimi            -s "Verifying peer X.509 certificate... ok" \
6865*62c56f98SSadaf Ebrahimi            -S "bad certificate (usage extensions)" \
6866*62c56f98SSadaf Ebrahimi            -S "Processing of the Certificate handshake message failed"
6867*62c56f98SSadaf Ebrahimi
6868*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6869*62c56f98SSadaf Ebrahimirun_test    "keyUsage cli-auth: RSA, KeyEncipherment: fail (soft)" \
6870*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=1 auth_mode=optional" \
6871*62c56f98SSadaf Ebrahimi            "$O_CLI -key data_files/server2.key \
6872*62c56f98SSadaf Ebrahimi             -cert data_files/server2.ku-ke.crt" \
6873*62c56f98SSadaf Ebrahimi            0 \
6874*62c56f98SSadaf Ebrahimi            -s "bad certificate (usage extensions)" \
6875*62c56f98SSadaf Ebrahimi            -S "Processing of the Certificate handshake message failed"
6876*62c56f98SSadaf Ebrahimi
6877*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6878*62c56f98SSadaf Ebrahimirun_test    "keyUsage cli-auth: RSA, KeyEncipherment: fail (hard)" \
6879*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=1 auth_mode=required" \
6880*62c56f98SSadaf Ebrahimi            "$O_CLI -key data_files/server2.key \
6881*62c56f98SSadaf Ebrahimi             -cert data_files/server2.ku-ke.crt" \
6882*62c56f98SSadaf Ebrahimi            1 \
6883*62c56f98SSadaf Ebrahimi            -s "bad certificate (usage extensions)" \
6884*62c56f98SSadaf Ebrahimi            -s "Processing of the Certificate handshake message failed"
6885*62c56f98SSadaf Ebrahimi
6886*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6887*62c56f98SSadaf Ebrahimirun_test    "keyUsage cli-auth: ECDSA, DigitalSignature: OK" \
6888*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=1 auth_mode=optional" \
6889*62c56f98SSadaf Ebrahimi            "$O_CLI -key data_files/server5.key \
6890*62c56f98SSadaf Ebrahimi             -cert data_files/server5.ku-ds.crt" \
6891*62c56f98SSadaf Ebrahimi            0 \
6892*62c56f98SSadaf Ebrahimi            -s "Verifying peer X.509 certificate... ok" \
6893*62c56f98SSadaf Ebrahimi            -S "bad certificate (usage extensions)" \
6894*62c56f98SSadaf Ebrahimi            -S "Processing of the Certificate handshake message failed"
6895*62c56f98SSadaf Ebrahimi
6896*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6897*62c56f98SSadaf Ebrahimirun_test    "keyUsage cli-auth: ECDSA, KeyAgreement: fail (soft)" \
6898*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=1 auth_mode=optional" \
6899*62c56f98SSadaf Ebrahimi            "$O_CLI -key data_files/server5.key \
6900*62c56f98SSadaf Ebrahimi             -cert data_files/server5.ku-ka.crt" \
6901*62c56f98SSadaf Ebrahimi            0 \
6902*62c56f98SSadaf Ebrahimi            -s "bad certificate (usage extensions)" \
6903*62c56f98SSadaf Ebrahimi            -S "Processing of the Certificate handshake message failed"
6904*62c56f98SSadaf Ebrahimi
6905*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
6906*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
6907*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
6908*62c56f98SSadaf Ebrahimirun_test    "keyUsage cli-auth 1.3: RSA, DigitalSignature: OK" \
6909*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=1 force_version=tls13 auth_mode=optional" \
6910*62c56f98SSadaf Ebrahimi            "$O_NEXT_CLI_NO_CERT -key data_files/server2.key \
6911*62c56f98SSadaf Ebrahimi             -cert data_files/server2.ku-ds.crt" \
6912*62c56f98SSadaf Ebrahimi            0 \
6913*62c56f98SSadaf Ebrahimi            -s "Verifying peer X.509 certificate... ok" \
6914*62c56f98SSadaf Ebrahimi            -S "bad certificate (usage extensions)" \
6915*62c56f98SSadaf Ebrahimi            -S "Processing of the Certificate handshake message failed"
6916*62c56f98SSadaf Ebrahimi
6917*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
6918*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
6919*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
6920*62c56f98SSadaf Ebrahimirun_test    "keyUsage cli-auth 1.3: RSA, KeyEncipherment: fail (soft)" \
6921*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=1 force_version=tls13 auth_mode=optional" \
6922*62c56f98SSadaf Ebrahimi            "$O_NEXT_CLI_NO_CERT -key data_files/server2.key \
6923*62c56f98SSadaf Ebrahimi             -cert data_files/server2.ku-ke.crt" \
6924*62c56f98SSadaf Ebrahimi            0 \
6925*62c56f98SSadaf Ebrahimi            -s "bad certificate (usage extensions)" \
6926*62c56f98SSadaf Ebrahimi            -S "Processing of the Certificate handshake message failed"
6927*62c56f98SSadaf Ebrahimi
6928*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
6929*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
6930*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
6931*62c56f98SSadaf Ebrahimirun_test    "keyUsage cli-auth 1.3: ECDSA, DigitalSignature: OK" \
6932*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=1 force_version=tls13 auth_mode=optional" \
6933*62c56f98SSadaf Ebrahimi            "$O_NEXT_CLI_NO_CERT -key data_files/server5.key \
6934*62c56f98SSadaf Ebrahimi             -cert data_files/server5.ku-ds.crt" \
6935*62c56f98SSadaf Ebrahimi            0 \
6936*62c56f98SSadaf Ebrahimi            -s "Verifying peer X.509 certificate... ok" \
6937*62c56f98SSadaf Ebrahimi            -S "bad certificate (usage extensions)" \
6938*62c56f98SSadaf Ebrahimi            -S "Processing of the Certificate handshake message failed"
6939*62c56f98SSadaf Ebrahimi
6940*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
6941*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
6942*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
6943*62c56f98SSadaf Ebrahimirun_test    "keyUsage cli-auth 1.3: ECDSA, KeyAgreement: fail (soft)" \
6944*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=1 force_version=tls13 auth_mode=optional" \
6945*62c56f98SSadaf Ebrahimi            "$O_NEXT_CLI_NO_CERT -key data_files/server5.key \
6946*62c56f98SSadaf Ebrahimi             -cert data_files/server5.ku-ka.crt" \
6947*62c56f98SSadaf Ebrahimi            0 \
6948*62c56f98SSadaf Ebrahimi            -s "bad certificate (usage extensions)" \
6949*62c56f98SSadaf Ebrahimi            -S "Processing of the Certificate handshake message failed"
6950*62c56f98SSadaf Ebrahimi
6951*62c56f98SSadaf Ebrahimi# Tests for extendedKeyUsage, part 1: server-side certificate/suite selection
6952*62c56f98SSadaf Ebrahimi
6953*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6954*62c56f98SSadaf Ebrahimirun_test    "extKeyUsage srv: serverAuth -> OK" \
6955*62c56f98SSadaf Ebrahimi            "$P_SRV key_file=data_files/server5.key \
6956*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.eku-srv.crt" \
6957*62c56f98SSadaf Ebrahimi            "$P_CLI" \
6958*62c56f98SSadaf Ebrahimi            0
6959*62c56f98SSadaf Ebrahimi
6960*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6961*62c56f98SSadaf Ebrahimirun_test    "extKeyUsage srv: serverAuth,clientAuth -> OK" \
6962*62c56f98SSadaf Ebrahimi            "$P_SRV key_file=data_files/server5.key \
6963*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.eku-srv.crt" \
6964*62c56f98SSadaf Ebrahimi            "$P_CLI" \
6965*62c56f98SSadaf Ebrahimi            0
6966*62c56f98SSadaf Ebrahimi
6967*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6968*62c56f98SSadaf Ebrahimirun_test    "extKeyUsage srv: codeSign,anyEKU -> OK" \
6969*62c56f98SSadaf Ebrahimi            "$P_SRV key_file=data_files/server5.key \
6970*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.eku-cs_any.crt" \
6971*62c56f98SSadaf Ebrahimi            "$P_CLI" \
6972*62c56f98SSadaf Ebrahimi            0
6973*62c56f98SSadaf Ebrahimi
6974*62c56f98SSadaf Ebrahimirequires_key_exchange_with_cert_in_tls12_or_tls13_enabled
6975*62c56f98SSadaf Ebrahimirun_test    "extKeyUsage srv: codeSign -> fail" \
6976*62c56f98SSadaf Ebrahimi            "$P_SRV key_file=data_files/server5.key \
6977*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.eku-cli.crt" \
6978*62c56f98SSadaf Ebrahimi            "$P_CLI" \
6979*62c56f98SSadaf Ebrahimi            1
6980*62c56f98SSadaf Ebrahimi
6981*62c56f98SSadaf Ebrahimi# Tests for extendedKeyUsage, part 2: client-side checking of server cert
6982*62c56f98SSadaf Ebrahimi
6983*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6984*62c56f98SSadaf Ebrahimirun_test    "extKeyUsage cli: serverAuth -> OK" \
6985*62c56f98SSadaf Ebrahimi            "$O_SRV -tls1_2 -key data_files/server5.key \
6986*62c56f98SSadaf Ebrahimi             -cert data_files/server5.eku-srv.crt" \
6987*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=1" \
6988*62c56f98SSadaf Ebrahimi            0 \
6989*62c56f98SSadaf Ebrahimi            -C "bad certificate (usage extensions)" \
6990*62c56f98SSadaf Ebrahimi            -C "Processing of the Certificate handshake message failed" \
6991*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-"
6992*62c56f98SSadaf Ebrahimi
6993*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
6994*62c56f98SSadaf Ebrahimirun_test    "extKeyUsage cli: serverAuth,clientAuth -> OK" \
6995*62c56f98SSadaf Ebrahimi            "$O_SRV -tls1_2 -key data_files/server5.key \
6996*62c56f98SSadaf Ebrahimi             -cert data_files/server5.eku-srv_cli.crt" \
6997*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=1" \
6998*62c56f98SSadaf Ebrahimi            0 \
6999*62c56f98SSadaf Ebrahimi            -C "bad certificate (usage extensions)" \
7000*62c56f98SSadaf Ebrahimi            -C "Processing of the Certificate handshake message failed" \
7001*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-"
7002*62c56f98SSadaf Ebrahimi
7003*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7004*62c56f98SSadaf Ebrahimirun_test    "extKeyUsage cli: codeSign,anyEKU -> OK" \
7005*62c56f98SSadaf Ebrahimi            "$O_SRV -tls1_2 -key data_files/server5.key \
7006*62c56f98SSadaf Ebrahimi             -cert data_files/server5.eku-cs_any.crt" \
7007*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=1" \
7008*62c56f98SSadaf Ebrahimi            0 \
7009*62c56f98SSadaf Ebrahimi            -C "bad certificate (usage extensions)" \
7010*62c56f98SSadaf Ebrahimi            -C "Processing of the Certificate handshake message failed" \
7011*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is TLS-"
7012*62c56f98SSadaf Ebrahimi
7013*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7014*62c56f98SSadaf Ebrahimirun_test    "extKeyUsage cli: codeSign -> fail" \
7015*62c56f98SSadaf Ebrahimi            "$O_SRV -tls1_2 -key data_files/server5.key \
7016*62c56f98SSadaf Ebrahimi             -cert data_files/server5.eku-cs.crt" \
7017*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=1" \
7018*62c56f98SSadaf Ebrahimi            1 \
7019*62c56f98SSadaf Ebrahimi            -c "bad certificate (usage extensions)" \
7020*62c56f98SSadaf Ebrahimi            -c "Processing of the Certificate handshake message failed" \
7021*62c56f98SSadaf Ebrahimi            -C "Ciphersuite is TLS-"
7022*62c56f98SSadaf Ebrahimi
7023*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
7024*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
7025*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
7026*62c56f98SSadaf Ebrahimirun_test    "extKeyUsage cli 1.3: serverAuth -> OK" \
7027*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV_NO_CERT -tls1_3 -num_tickets=0 -key data_files/server5.key \
7028*62c56f98SSadaf Ebrahimi             -cert data_files/server5.eku-srv.crt" \
7029*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=1" \
7030*62c56f98SSadaf Ebrahimi            0 \
7031*62c56f98SSadaf Ebrahimi            -C "bad certificate (usage extensions)" \
7032*62c56f98SSadaf Ebrahimi            -C "Processing of the Certificate handshake message failed" \
7033*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is"
7034*62c56f98SSadaf Ebrahimi
7035*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
7036*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
7037*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
7038*62c56f98SSadaf Ebrahimirun_test    "extKeyUsage cli 1.3: serverAuth,clientAuth -> OK" \
7039*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV_NO_CERT -tls1_3 -num_tickets=0 -key data_files/server5.key \
7040*62c56f98SSadaf Ebrahimi             -cert data_files/server5.eku-srv_cli.crt" \
7041*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=1" \
7042*62c56f98SSadaf Ebrahimi            0 \
7043*62c56f98SSadaf Ebrahimi            -C "bad certificate (usage extensions)" \
7044*62c56f98SSadaf Ebrahimi            -C "Processing of the Certificate handshake message failed" \
7045*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is"
7046*62c56f98SSadaf Ebrahimi
7047*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
7048*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
7049*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
7050*62c56f98SSadaf Ebrahimirun_test    "extKeyUsage cli 1.3: codeSign,anyEKU -> OK" \
7051*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV_NO_CERT -tls1_3 -num_tickets=0 -key data_files/server5.key \
7052*62c56f98SSadaf Ebrahimi             -cert data_files/server5.eku-cs_any.crt" \
7053*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=1" \
7054*62c56f98SSadaf Ebrahimi            0 \
7055*62c56f98SSadaf Ebrahimi            -C "bad certificate (usage extensions)" \
7056*62c56f98SSadaf Ebrahimi            -C "Processing of the Certificate handshake message failed" \
7057*62c56f98SSadaf Ebrahimi            -c "Ciphersuite is"
7058*62c56f98SSadaf Ebrahimi
7059*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
7060*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
7061*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
7062*62c56f98SSadaf Ebrahimirun_test    "extKeyUsage cli 1.3: codeSign -> fail" \
7063*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV_NO_CERT -tls1_3 -num_tickets=0 -key data_files/server5.key \
7064*62c56f98SSadaf Ebrahimi             -cert data_files/server5.eku-cs.crt" \
7065*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=1" \
7066*62c56f98SSadaf Ebrahimi            1 \
7067*62c56f98SSadaf Ebrahimi            -c "bad certificate (usage extensions)" \
7068*62c56f98SSadaf Ebrahimi            -c "Processing of the Certificate handshake message failed" \
7069*62c56f98SSadaf Ebrahimi            -C "Ciphersuite is"
7070*62c56f98SSadaf Ebrahimi
7071*62c56f98SSadaf Ebrahimi# Tests for extendedKeyUsage, part 3: server-side checking of client cert
7072*62c56f98SSadaf Ebrahimi
7073*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7074*62c56f98SSadaf Ebrahimirun_test    "extKeyUsage cli-auth: clientAuth -> OK" \
7075*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=1 auth_mode=optional" \
7076*62c56f98SSadaf Ebrahimi            "$O_CLI -key data_files/server5.key \
7077*62c56f98SSadaf Ebrahimi             -cert data_files/server5.eku-cli.crt" \
7078*62c56f98SSadaf Ebrahimi            0 \
7079*62c56f98SSadaf Ebrahimi            -S "bad certificate (usage extensions)" \
7080*62c56f98SSadaf Ebrahimi            -S "Processing of the Certificate handshake message failed"
7081*62c56f98SSadaf Ebrahimi
7082*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7083*62c56f98SSadaf Ebrahimirun_test    "extKeyUsage cli-auth: serverAuth,clientAuth -> OK" \
7084*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=1 auth_mode=optional" \
7085*62c56f98SSadaf Ebrahimi            "$O_CLI -key data_files/server5.key \
7086*62c56f98SSadaf Ebrahimi             -cert data_files/server5.eku-srv_cli.crt" \
7087*62c56f98SSadaf Ebrahimi            0 \
7088*62c56f98SSadaf Ebrahimi            -S "bad certificate (usage extensions)" \
7089*62c56f98SSadaf Ebrahimi            -S "Processing of the Certificate handshake message failed"
7090*62c56f98SSadaf Ebrahimi
7091*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7092*62c56f98SSadaf Ebrahimirun_test    "extKeyUsage cli-auth: codeSign,anyEKU -> OK" \
7093*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=1 auth_mode=optional" \
7094*62c56f98SSadaf Ebrahimi            "$O_CLI -key data_files/server5.key \
7095*62c56f98SSadaf Ebrahimi             -cert data_files/server5.eku-cs_any.crt" \
7096*62c56f98SSadaf Ebrahimi            0 \
7097*62c56f98SSadaf Ebrahimi            -S "bad certificate (usage extensions)" \
7098*62c56f98SSadaf Ebrahimi            -S "Processing of the Certificate handshake message failed"
7099*62c56f98SSadaf Ebrahimi
7100*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7101*62c56f98SSadaf Ebrahimirun_test    "extKeyUsage cli-auth: codeSign -> fail (soft)" \
7102*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=1 auth_mode=optional" \
7103*62c56f98SSadaf Ebrahimi            "$O_CLI -key data_files/server5.key \
7104*62c56f98SSadaf Ebrahimi             -cert data_files/server5.eku-cs.crt" \
7105*62c56f98SSadaf Ebrahimi            0 \
7106*62c56f98SSadaf Ebrahimi            -s "bad certificate (usage extensions)" \
7107*62c56f98SSadaf Ebrahimi            -S "Processing of the Certificate handshake message failed"
7108*62c56f98SSadaf Ebrahimi
7109*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7110*62c56f98SSadaf Ebrahimirun_test    "extKeyUsage cli-auth: codeSign -> fail (hard)" \
7111*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=1 auth_mode=required" \
7112*62c56f98SSadaf Ebrahimi            "$O_CLI -key data_files/server5.key \
7113*62c56f98SSadaf Ebrahimi             -cert data_files/server5.eku-cs.crt" \
7114*62c56f98SSadaf Ebrahimi            1 \
7115*62c56f98SSadaf Ebrahimi            -s "bad certificate (usage extensions)" \
7116*62c56f98SSadaf Ebrahimi            -s "Processing of the Certificate handshake message failed"
7117*62c56f98SSadaf Ebrahimi
7118*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
7119*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
7120*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
7121*62c56f98SSadaf Ebrahimirun_test    "extKeyUsage cli-auth 1.3: clientAuth -> OK" \
7122*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=1 force_version=tls13 auth_mode=optional" \
7123*62c56f98SSadaf Ebrahimi            "$O_NEXT_CLI_NO_CERT -key data_files/server5.key \
7124*62c56f98SSadaf Ebrahimi             -cert data_files/server5.eku-cli.crt" \
7125*62c56f98SSadaf Ebrahimi            0 \
7126*62c56f98SSadaf Ebrahimi            -S "bad certificate (usage extensions)" \
7127*62c56f98SSadaf Ebrahimi            -S "Processing of the Certificate handshake message failed"
7128*62c56f98SSadaf Ebrahimi
7129*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
7130*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
7131*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
7132*62c56f98SSadaf Ebrahimirun_test    "extKeyUsage cli-auth 1.3: serverAuth,clientAuth -> OK" \
7133*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=1 force_version=tls13 auth_mode=optional" \
7134*62c56f98SSadaf Ebrahimi            "$O_NEXT_CLI_NO_CERT -key data_files/server5.key \
7135*62c56f98SSadaf Ebrahimi             -cert data_files/server5.eku-srv_cli.crt" \
7136*62c56f98SSadaf Ebrahimi            0 \
7137*62c56f98SSadaf Ebrahimi            -S "bad certificate (usage extensions)" \
7138*62c56f98SSadaf Ebrahimi            -S "Processing of the Certificate handshake message failed"
7139*62c56f98SSadaf Ebrahimi
7140*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
7141*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
7142*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
7143*62c56f98SSadaf Ebrahimirun_test    "extKeyUsage cli-auth 1.3: codeSign,anyEKU -> OK" \
7144*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=1 force_version=tls13 auth_mode=optional" \
7145*62c56f98SSadaf Ebrahimi            "$O_NEXT_CLI_NO_CERT -key data_files/server5.key \
7146*62c56f98SSadaf Ebrahimi             -cert data_files/server5.eku-cs_any.crt" \
7147*62c56f98SSadaf Ebrahimi            0 \
7148*62c56f98SSadaf Ebrahimi            -S "bad certificate (usage extensions)" \
7149*62c56f98SSadaf Ebrahimi            -S "Processing of the Certificate handshake message failed"
7150*62c56f98SSadaf Ebrahimi
7151*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
7152*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
7153*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
7154*62c56f98SSadaf Ebrahimirun_test    "extKeyUsage cli-auth 1.3: codeSign -> fail (soft)" \
7155*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=1 force_version=tls13 auth_mode=optional" \
7156*62c56f98SSadaf Ebrahimi            "$O_NEXT_CLI_NO_CERT -key data_files/server5.key \
7157*62c56f98SSadaf Ebrahimi             -cert data_files/server5.eku-cs.crt" \
7158*62c56f98SSadaf Ebrahimi            0 \
7159*62c56f98SSadaf Ebrahimi            -s "bad certificate (usage extensions)" \
7160*62c56f98SSadaf Ebrahimi            -S "Processing of the Certificate handshake message failed"
7161*62c56f98SSadaf Ebrahimi
7162*62c56f98SSadaf Ebrahimi# Tests for DHM parameters loading
7163*62c56f98SSadaf Ebrahimi
7164*62c56f98SSadaf Ebrahimirun_test    "DHM parameters: reference" \
7165*62c56f98SSadaf Ebrahimi            "$P_SRV" \
7166*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
7167*62c56f98SSadaf Ebrahimi                    debug_level=3" \
7168*62c56f98SSadaf Ebrahimi            0 \
7169*62c56f98SSadaf Ebrahimi            -c "value of 'DHM: P ' (2048 bits)" \
7170*62c56f98SSadaf Ebrahimi            -c "value of 'DHM: G ' (2 bits)"
7171*62c56f98SSadaf Ebrahimi
7172*62c56f98SSadaf Ebrahimirun_test    "DHM parameters: other parameters" \
7173*62c56f98SSadaf Ebrahimi            "$P_SRV dhm_file=data_files/dhparams.pem" \
7174*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
7175*62c56f98SSadaf Ebrahimi                    debug_level=3" \
7176*62c56f98SSadaf Ebrahimi            0 \
7177*62c56f98SSadaf Ebrahimi            -c "value of 'DHM: P ' (1024 bits)" \
7178*62c56f98SSadaf Ebrahimi            -c "value of 'DHM: G ' (2 bits)"
7179*62c56f98SSadaf Ebrahimi
7180*62c56f98SSadaf Ebrahimi# Tests for DHM client-side size checking
7181*62c56f98SSadaf Ebrahimi
7182*62c56f98SSadaf Ebrahimirun_test    "DHM size: server default, client default, OK" \
7183*62c56f98SSadaf Ebrahimi            "$P_SRV" \
7184*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
7185*62c56f98SSadaf Ebrahimi                    debug_level=1" \
7186*62c56f98SSadaf Ebrahimi            0 \
7187*62c56f98SSadaf Ebrahimi            -C "DHM prime too short:"
7188*62c56f98SSadaf Ebrahimi
7189*62c56f98SSadaf Ebrahimirun_test    "DHM size: server default, client 2048, OK" \
7190*62c56f98SSadaf Ebrahimi            "$P_SRV" \
7191*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
7192*62c56f98SSadaf Ebrahimi                    debug_level=1 dhmlen=2048" \
7193*62c56f98SSadaf Ebrahimi            0 \
7194*62c56f98SSadaf Ebrahimi            -C "DHM prime too short:"
7195*62c56f98SSadaf Ebrahimi
7196*62c56f98SSadaf Ebrahimirun_test    "DHM size: server 1024, client default, OK" \
7197*62c56f98SSadaf Ebrahimi            "$P_SRV dhm_file=data_files/dhparams.pem" \
7198*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
7199*62c56f98SSadaf Ebrahimi                    debug_level=1" \
7200*62c56f98SSadaf Ebrahimi            0 \
7201*62c56f98SSadaf Ebrahimi            -C "DHM prime too short:"
7202*62c56f98SSadaf Ebrahimi
7203*62c56f98SSadaf Ebrahimirun_test    "DHM size: server 999, client 999, OK" \
7204*62c56f98SSadaf Ebrahimi            "$P_SRV dhm_file=data_files/dh.999.pem" \
7205*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
7206*62c56f98SSadaf Ebrahimi                    debug_level=1 dhmlen=999" \
7207*62c56f98SSadaf Ebrahimi            0 \
7208*62c56f98SSadaf Ebrahimi            -C "DHM prime too short:"
7209*62c56f98SSadaf Ebrahimi
7210*62c56f98SSadaf Ebrahimirun_test    "DHM size: server 1000, client 1000, OK" \
7211*62c56f98SSadaf Ebrahimi            "$P_SRV dhm_file=data_files/dh.1000.pem" \
7212*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
7213*62c56f98SSadaf Ebrahimi                    debug_level=1 dhmlen=1000" \
7214*62c56f98SSadaf Ebrahimi            0 \
7215*62c56f98SSadaf Ebrahimi            -C "DHM prime too short:"
7216*62c56f98SSadaf Ebrahimi
7217*62c56f98SSadaf Ebrahimirun_test    "DHM size: server 1000, client default, rejected" \
7218*62c56f98SSadaf Ebrahimi            "$P_SRV dhm_file=data_files/dh.1000.pem" \
7219*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
7220*62c56f98SSadaf Ebrahimi                    debug_level=1" \
7221*62c56f98SSadaf Ebrahimi            1 \
7222*62c56f98SSadaf Ebrahimi            -c "DHM prime too short:"
7223*62c56f98SSadaf Ebrahimi
7224*62c56f98SSadaf Ebrahimirun_test    "DHM size: server 1000, client 1001, rejected" \
7225*62c56f98SSadaf Ebrahimi            "$P_SRV dhm_file=data_files/dh.1000.pem" \
7226*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
7227*62c56f98SSadaf Ebrahimi                    debug_level=1 dhmlen=1001" \
7228*62c56f98SSadaf Ebrahimi            1 \
7229*62c56f98SSadaf Ebrahimi            -c "DHM prime too short:"
7230*62c56f98SSadaf Ebrahimi
7231*62c56f98SSadaf Ebrahimirun_test    "DHM size: server 999, client 1000, rejected" \
7232*62c56f98SSadaf Ebrahimi            "$P_SRV dhm_file=data_files/dh.999.pem" \
7233*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
7234*62c56f98SSadaf Ebrahimi                    debug_level=1 dhmlen=1000" \
7235*62c56f98SSadaf Ebrahimi            1 \
7236*62c56f98SSadaf Ebrahimi            -c "DHM prime too short:"
7237*62c56f98SSadaf Ebrahimi
7238*62c56f98SSadaf Ebrahimirun_test    "DHM size: server 998, client 999, rejected" \
7239*62c56f98SSadaf Ebrahimi            "$P_SRV dhm_file=data_files/dh.998.pem" \
7240*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
7241*62c56f98SSadaf Ebrahimi                    debug_level=1 dhmlen=999" \
7242*62c56f98SSadaf Ebrahimi            1 \
7243*62c56f98SSadaf Ebrahimi            -c "DHM prime too short:"
7244*62c56f98SSadaf Ebrahimi
7245*62c56f98SSadaf Ebrahimirun_test    "DHM size: server default, client 2049, rejected" \
7246*62c56f98SSadaf Ebrahimi            "$P_SRV" \
7247*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-DHE-RSA-WITH-AES-128-CBC-SHA \
7248*62c56f98SSadaf Ebrahimi                    debug_level=1 dhmlen=2049" \
7249*62c56f98SSadaf Ebrahimi            1 \
7250*62c56f98SSadaf Ebrahimi            -c "DHM prime too short:"
7251*62c56f98SSadaf Ebrahimi
7252*62c56f98SSadaf Ebrahimi# Tests for PSK callback
7253*62c56f98SSadaf Ebrahimi
7254*62c56f98SSadaf Ebrahimirun_test    "PSK callback: psk, no callback" \
7255*62c56f98SSadaf Ebrahimi            "$P_SRV psk=abc123 psk_identity=foo" \
7256*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
7257*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123" \
7258*62c56f98SSadaf Ebrahimi            0 \
7259*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7260*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7261*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7262*62c56f98SSadaf Ebrahimi
7263*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7264*62c56f98SSadaf Ebrahimirun_test    "PSK callback: opaque psk on client, no callback" \
7265*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=0 debug_level=1 psk=abc123 psk_identity=foo" \
7266*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
7267*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123 psk_opaque=1" \
7268*62c56f98SSadaf Ebrahimi            0 \
7269*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7270*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7271*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7272*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7273*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7274*62c56f98SSadaf Ebrahimi
7275*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7276*62c56f98SSadaf Ebrahimirun_test    "PSK callback: opaque psk on client, no callback, SHA-384" \
7277*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=0 debug_level=1 psk=abc123 psk_identity=foo" \
7278*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 \
7279*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123 psk_opaque=1" \
7280*62c56f98SSadaf Ebrahimi            0 \
7281*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7282*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7283*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7284*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7285*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7286*62c56f98SSadaf Ebrahimi
7287*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7288*62c56f98SSadaf Ebrahimirun_test    "PSK callback: opaque psk on client, no callback, EMS" \
7289*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=1 debug_level=3 psk=abc123 psk_identity=foo" \
7290*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=1 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
7291*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123 psk_opaque=1" \
7292*62c56f98SSadaf Ebrahimi            0 \
7293*62c56f98SSadaf Ebrahimi            -c "session hash for extended master secret"\
7294*62c56f98SSadaf Ebrahimi            -s "session hash for extended master secret"\
7295*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7296*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7297*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7298*62c56f98SSadaf Ebrahimi
7299*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7300*62c56f98SSadaf Ebrahimirun_test    "PSK callback: opaque psk on client, no callback, SHA-384, EMS" \
7301*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=1 debug_level=3 psk=abc123 psk_identity=foo" \
7302*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=1 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 \
7303*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123 psk_opaque=1" \
7304*62c56f98SSadaf Ebrahimi            0 \
7305*62c56f98SSadaf Ebrahimi            -c "session hash for extended master secret"\
7306*62c56f98SSadaf Ebrahimi            -s "session hash for extended master secret"\
7307*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7308*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7309*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7310*62c56f98SSadaf Ebrahimi
7311*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7312*62c56f98SSadaf Ebrahimirun_test    "PSK callback: opaque rsa-psk on client, no callback" \
7313*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=0 debug_level=1 psk=abc123 psk_identity=foo" \
7314*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA256 \
7315*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123 psk_opaque=1" \
7316*62c56f98SSadaf Ebrahimi            0 \
7317*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7318*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7319*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7320*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7321*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7322*62c56f98SSadaf Ebrahimi
7323*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7324*62c56f98SSadaf Ebrahimirun_test    "PSK callback: opaque rsa-psk on client, no callback, SHA-384" \
7325*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=0 debug_level=1 psk=abc123 psk_identity=foo" \
7326*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-256-CBC-SHA384 \
7327*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123 psk_opaque=1" \
7328*62c56f98SSadaf Ebrahimi            0 \
7329*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7330*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7331*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7332*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7333*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7334*62c56f98SSadaf Ebrahimi
7335*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7336*62c56f98SSadaf Ebrahimirun_test    "PSK callback: opaque rsa-psk on client, no callback, EMS" \
7337*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=1 debug_level=3 psk=abc123 psk_identity=foo" \
7338*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=1 debug_level=3 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA \
7339*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123 psk_opaque=1" \
7340*62c56f98SSadaf Ebrahimi            0 \
7341*62c56f98SSadaf Ebrahimi            -c "session hash for extended master secret"\
7342*62c56f98SSadaf Ebrahimi            -s "session hash for extended master secret"\
7343*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7344*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7345*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7346*62c56f98SSadaf Ebrahimi
7347*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7348*62c56f98SSadaf Ebrahimirun_test    "PSK callback: opaque rsa-psk on client, no callback, SHA-384, EMS" \
7349*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=1 debug_level=3 psk=abc123 psk_identity=foo" \
7350*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=1 debug_level=3 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-256-CBC-SHA384 \
7351*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123 psk_opaque=1" \
7352*62c56f98SSadaf Ebrahimi            0 \
7353*62c56f98SSadaf Ebrahimi            -c "session hash for extended master secret"\
7354*62c56f98SSadaf Ebrahimi            -s "session hash for extended master secret"\
7355*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7356*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7357*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7358*62c56f98SSadaf Ebrahimi
7359*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7360*62c56f98SSadaf Ebrahimirun_test    "PSK callback: opaque ecdhe-psk on client, no callback" \
7361*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=0 debug_level=1 psk=abc123 psk_identity=foo" \
7362*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256 \
7363*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123 psk_opaque=1" \
7364*62c56f98SSadaf Ebrahimi            0 \
7365*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7366*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7367*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7368*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7369*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7370*62c56f98SSadaf Ebrahimi
7371*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7372*62c56f98SSadaf Ebrahimirun_test    "PSK callback: opaque ecdhe-psk on client, no callback, SHA-384" \
7373*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=0 debug_level=1 psk=abc123 psk_identity=foo" \
7374*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384 \
7375*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123 psk_opaque=1" \
7376*62c56f98SSadaf Ebrahimi            0 \
7377*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7378*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7379*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7380*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7381*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7382*62c56f98SSadaf Ebrahimi
7383*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7384*62c56f98SSadaf Ebrahimirun_test    "PSK callback: opaque ecdhe-psk on client, no callback, EMS" \
7385*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=1 debug_level=3 psk=abc123 psk_identity=foo" \
7386*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=1 debug_level=3 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA \
7387*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123 psk_opaque=1" \
7388*62c56f98SSadaf Ebrahimi            0 \
7389*62c56f98SSadaf Ebrahimi            -c "session hash for extended master secret"\
7390*62c56f98SSadaf Ebrahimi            -s "session hash for extended master secret"\
7391*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7392*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7393*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7394*62c56f98SSadaf Ebrahimi
7395*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7396*62c56f98SSadaf Ebrahimirun_test    "PSK callback: opaque ecdhe-psk on client, no callback, SHA-384, EMS" \
7397*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=1 debug_level=3 psk=abc123 psk_identity=foo" \
7398*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=1 debug_level=3 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384 \
7399*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123 psk_opaque=1" \
7400*62c56f98SSadaf Ebrahimi            0 \
7401*62c56f98SSadaf Ebrahimi            -c "session hash for extended master secret"\
7402*62c56f98SSadaf Ebrahimi            -s "session hash for extended master secret"\
7403*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7404*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7405*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7406*62c56f98SSadaf Ebrahimi
7407*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7408*62c56f98SSadaf Ebrahimirun_test    "PSK callback: opaque dhe-psk on client, no callback" \
7409*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=0 debug_level=1 psk=abc123 psk_identity=foo" \
7410*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-128-CBC-SHA256 \
7411*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123 psk_opaque=1" \
7412*62c56f98SSadaf Ebrahimi            0 \
7413*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7414*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7415*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7416*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7417*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7418*62c56f98SSadaf Ebrahimi
7419*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7420*62c56f98SSadaf Ebrahimirun_test    "PSK callback: opaque dhe-psk on client, no callback, SHA-384" \
7421*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=0 debug_level=1 psk=abc123 psk_identity=foo" \
7422*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-256-CBC-SHA384 \
7423*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123 psk_opaque=1" \
7424*62c56f98SSadaf Ebrahimi            0 \
7425*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7426*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7427*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7428*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7429*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7430*62c56f98SSadaf Ebrahimi
7431*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7432*62c56f98SSadaf Ebrahimirun_test    "PSK callback: opaque dhe-psk on client, no callback, EMS" \
7433*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=1 debug_level=3 psk=abc123 psk_identity=foo" \
7434*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=1 debug_level=3 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-128-CBC-SHA \
7435*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123 psk_opaque=1" \
7436*62c56f98SSadaf Ebrahimi            0 \
7437*62c56f98SSadaf Ebrahimi            -c "session hash for extended master secret"\
7438*62c56f98SSadaf Ebrahimi            -s "session hash for extended master secret"\
7439*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7440*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7441*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7442*62c56f98SSadaf Ebrahimi
7443*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7444*62c56f98SSadaf Ebrahimirun_test    "PSK callback: opaque dhe-psk on client, no callback, SHA-384, EMS" \
7445*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=1 debug_level=3 psk=abc123 psk_identity=foo" \
7446*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=1 debug_level=3 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-256-CBC-SHA384 \
7447*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123 psk_opaque=1" \
7448*62c56f98SSadaf Ebrahimi            0 \
7449*62c56f98SSadaf Ebrahimi            -c "session hash for extended master secret"\
7450*62c56f98SSadaf Ebrahimi            -s "session hash for extended master secret"\
7451*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7452*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7453*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7454*62c56f98SSadaf Ebrahimi
7455*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7456*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw psk on client, static opaque on server, no callback" \
7457*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=0 debug_level=1 psk=abc123 psk_identity=foo psk_opaque=1 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA" \
7458*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
7459*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123" \
7460*62c56f98SSadaf Ebrahimi            0 \
7461*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7462*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7463*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7464*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7465*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7466*62c56f98SSadaf Ebrahimi
7467*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7468*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw psk on client, static opaque on server, no callback, SHA-384" \
7469*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=0 debug_level=1 psk=abc123 psk_identity=foo psk_opaque=1 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384" \
7470*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 \
7471*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123" \
7472*62c56f98SSadaf Ebrahimi            0 \
7473*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7474*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7475*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7476*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7477*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7478*62c56f98SSadaf Ebrahimi
7479*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7480*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw psk on client, static opaque on server, no callback, EMS" \
7481*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 psk=abc123 psk_identity=foo psk_opaque=1 min_version=tls12 \
7482*62c56f98SSadaf Ebrahimi            force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA extended_ms=1" \
7483*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
7484*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123 extended_ms=1" \
7485*62c56f98SSadaf Ebrahimi            0 \
7486*62c56f98SSadaf Ebrahimi            -c "session hash for extended master secret"\
7487*62c56f98SSadaf Ebrahimi            -s "session hash for extended master secret"\
7488*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7489*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7490*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7491*62c56f98SSadaf Ebrahimi
7492*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7493*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw psk on client, static opaque on server, no callback, EMS, SHA384" \
7494*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 psk=abc123 psk_identity=foo psk_opaque=1 min_version=tls12 \
7495*62c56f98SSadaf Ebrahimi            force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 extended_ms=1" \
7496*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 \
7497*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123 extended_ms=1" \
7498*62c56f98SSadaf Ebrahimi            0 \
7499*62c56f98SSadaf Ebrahimi            -c "session hash for extended master secret"\
7500*62c56f98SSadaf Ebrahimi            -s "session hash for extended master secret"\
7501*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7502*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7503*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7504*62c56f98SSadaf Ebrahimi
7505*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7506*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw rsa-psk on client, static opaque on server, no callback" \
7507*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=0 debug_level=5 psk=abc123 psk_identity=foo psk_opaque=1 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA" \
7508*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=5 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA \
7509*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123" \
7510*62c56f98SSadaf Ebrahimi            0 \
7511*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7512*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7513*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7514*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7515*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7516*62c56f98SSadaf Ebrahimi
7517*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7518*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw rsa-psk on client, static opaque on server, no callback, SHA-384" \
7519*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=0 debug_level=1 psk=abc123 psk_identity=foo psk_opaque=1 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-256-CBC-SHA384" \
7520*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-256-CBC-SHA384 \
7521*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123" \
7522*62c56f98SSadaf Ebrahimi            0 \
7523*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7524*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7525*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7526*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7527*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7528*62c56f98SSadaf Ebrahimi
7529*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7530*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw rsa-psk on client, static opaque on server, no callback, EMS" \
7531*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 psk=abc123 psk_identity=foo psk_opaque=1 min_version=tls12 \
7532*62c56f98SSadaf Ebrahimi            force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA extended_ms=1" \
7533*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA \
7534*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123 extended_ms=1" \
7535*62c56f98SSadaf Ebrahimi            0 \
7536*62c56f98SSadaf Ebrahimi            -c "session hash for extended master secret"\
7537*62c56f98SSadaf Ebrahimi            -s "session hash for extended master secret"\
7538*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7539*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7540*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7541*62c56f98SSadaf Ebrahimi
7542*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7543*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw rsa-psk on client, static opaque on server, no callback, EMS, SHA384" \
7544*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 psk=abc123 psk_identity=foo psk_opaque=1 min_version=tls12 \
7545*62c56f98SSadaf Ebrahimi            force_ciphersuite=TLS-RSA-PSK-WITH-AES-256-CBC-SHA384 extended_ms=1" \
7546*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-256-CBC-SHA384 \
7547*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123 extended_ms=1" \
7548*62c56f98SSadaf Ebrahimi            0 \
7549*62c56f98SSadaf Ebrahimi            -c "session hash for extended master secret"\
7550*62c56f98SSadaf Ebrahimi            -s "session hash for extended master secret"\
7551*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7552*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7553*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7554*62c56f98SSadaf Ebrahimi
7555*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7556*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw ecdhe-psk on client, static opaque on server, no callback" \
7557*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=0 debug_level=5 psk=abc123 psk_identity=foo psk_opaque=1 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA" \
7558*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=5 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA \
7559*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123" \
7560*62c56f98SSadaf Ebrahimi            0 \
7561*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7562*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7563*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7564*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7565*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7566*62c56f98SSadaf Ebrahimi
7567*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7568*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw ecdhe-psk on client, static opaque on server, no callback, SHA-384" \
7569*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=0 debug_level=1 psk=abc123 psk_identity=foo psk_opaque=1 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384" \
7570*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384 \
7571*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123" \
7572*62c56f98SSadaf Ebrahimi            0 \
7573*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7574*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7575*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7576*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7577*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7578*62c56f98SSadaf Ebrahimi
7579*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7580*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw ecdhe-psk on client, static opaque on server, no callback, EMS" \
7581*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 psk=abc123 psk_identity=foo psk_opaque=1 min_version=tls12 \
7582*62c56f98SSadaf Ebrahimi            force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA extended_ms=1" \
7583*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA \
7584*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123 extended_ms=1" \
7585*62c56f98SSadaf Ebrahimi            0 \
7586*62c56f98SSadaf Ebrahimi            -c "session hash for extended master secret"\
7587*62c56f98SSadaf Ebrahimi            -s "session hash for extended master secret"\
7588*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7589*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7590*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7591*62c56f98SSadaf Ebrahimi
7592*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7593*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw ecdhe-psk on client, static opaque on server, no callback, EMS, SHA384" \
7594*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 psk=abc123 psk_identity=foo psk_opaque=1 min_version=tls12 \
7595*62c56f98SSadaf Ebrahimi            force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384 extended_ms=1" \
7596*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384 \
7597*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123 extended_ms=1" \
7598*62c56f98SSadaf Ebrahimi            0 \
7599*62c56f98SSadaf Ebrahimi            -c "session hash for extended master secret"\
7600*62c56f98SSadaf Ebrahimi            -s "session hash for extended master secret"\
7601*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7602*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7603*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7604*62c56f98SSadaf Ebrahimi
7605*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7606*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw dhe-psk on client, static opaque on server, no callback" \
7607*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=0 debug_level=5 psk=abc123 psk_identity=foo psk_opaque=1 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-128-CBC-SHA" \
7608*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=5 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-128-CBC-SHA \
7609*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123" \
7610*62c56f98SSadaf Ebrahimi            0 \
7611*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7612*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7613*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7614*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7615*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7616*62c56f98SSadaf Ebrahimi
7617*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7618*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw dhe-psk on client, static opaque on server, no callback, SHA-384" \
7619*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=0 debug_level=1 psk=abc123 psk_identity=foo psk_opaque=1 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-256-CBC-SHA384" \
7620*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=1 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-256-CBC-SHA384 \
7621*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123" \
7622*62c56f98SSadaf Ebrahimi            0 \
7623*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7624*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7625*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7626*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7627*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7628*62c56f98SSadaf Ebrahimi
7629*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7630*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw dhe-psk on client, static opaque on server, no callback, EMS" \
7631*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 psk=abc123 psk_identity=foo psk_opaque=1 min_version=tls12 \
7632*62c56f98SSadaf Ebrahimi            force_ciphersuite=TLS-DHE-PSK-WITH-AES-128-CBC-SHA extended_ms=1" \
7633*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-128-CBC-SHA \
7634*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123 extended_ms=1" \
7635*62c56f98SSadaf Ebrahimi            0 \
7636*62c56f98SSadaf Ebrahimi            -c "session hash for extended master secret"\
7637*62c56f98SSadaf Ebrahimi            -s "session hash for extended master secret"\
7638*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7639*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7640*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7641*62c56f98SSadaf Ebrahimi
7642*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7643*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw dhe-psk on client, static opaque on server, no callback, EMS, SHA384" \
7644*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 psk=abc123 psk_identity=foo psk_opaque=1 min_version=tls12 \
7645*62c56f98SSadaf Ebrahimi            force_ciphersuite=TLS-DHE-PSK-WITH-AES-256-CBC-SHA384 extended_ms=1" \
7646*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-256-CBC-SHA384 \
7647*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123 extended_ms=1" \
7648*62c56f98SSadaf Ebrahimi            0 \
7649*62c56f98SSadaf Ebrahimi            -c "session hash for extended master secret"\
7650*62c56f98SSadaf Ebrahimi            -s "session hash for extended master secret"\
7651*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7652*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7653*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7654*62c56f98SSadaf Ebrahimi
7655*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7656*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw psk on client, no static PSK on server, opaque PSK from callback" \
7657*62c56f98SSadaf Ebrahimi            "$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" \
7658*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
7659*62c56f98SSadaf Ebrahimi            psk_identity=def psk=beef" \
7660*62c56f98SSadaf Ebrahimi            0 \
7661*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7662*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7663*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7664*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7665*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7666*62c56f98SSadaf Ebrahimi
7667*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7668*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw psk on client, no static PSK on server, opaque PSK from callback, SHA-384" \
7669*62c56f98SSadaf Ebrahimi            "$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" \
7670*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 \
7671*62c56f98SSadaf Ebrahimi            psk_identity=def psk=beef" \
7672*62c56f98SSadaf Ebrahimi            0 \
7673*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7674*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7675*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7676*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7677*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7678*62c56f98SSadaf Ebrahimi
7679*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7680*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw psk on client, no static PSK on server, opaque PSK from callback, EMS" \
7681*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 \
7682*62c56f98SSadaf Ebrahimi            force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA extended_ms=1" \
7683*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
7684*62c56f98SSadaf Ebrahimi            psk_identity=abc psk=dead extended_ms=1" \
7685*62c56f98SSadaf Ebrahimi            0 \
7686*62c56f98SSadaf Ebrahimi            -c "session hash for extended master secret"\
7687*62c56f98SSadaf Ebrahimi            -s "session hash for extended master secret"\
7688*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7689*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7690*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7691*62c56f98SSadaf Ebrahimi
7692*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7693*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw psk on client, no static PSK on server, opaque PSK from callback, EMS, SHA384" \
7694*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 \
7695*62c56f98SSadaf Ebrahimi            force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 extended_ms=1" \
7696*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-256-CBC-SHA384 \
7697*62c56f98SSadaf Ebrahimi            psk_identity=abc psk=dead extended_ms=1" \
7698*62c56f98SSadaf Ebrahimi            0 \
7699*62c56f98SSadaf Ebrahimi            -c "session hash for extended master secret"\
7700*62c56f98SSadaf Ebrahimi            -s "session hash for extended master secret"\
7701*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7702*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7703*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7704*62c56f98SSadaf Ebrahimi
7705*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7706*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw rsa-psk on client, no static RSA-PSK on server, opaque RSA-PSK from callback" \
7707*62c56f98SSadaf Ebrahimi            "$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" \
7708*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA \
7709*62c56f98SSadaf Ebrahimi            psk_identity=def psk=beef" \
7710*62c56f98SSadaf Ebrahimi            0 \
7711*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7712*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7713*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7714*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7715*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7716*62c56f98SSadaf Ebrahimi
7717*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7718*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw rsa-psk on client, no static RSA-PSK on server, opaque RSA-PSK from callback, SHA-384" \
7719*62c56f98SSadaf Ebrahimi            "$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" \
7720*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-256-CBC-SHA384 \
7721*62c56f98SSadaf Ebrahimi            psk_identity=def psk=beef" \
7722*62c56f98SSadaf Ebrahimi            0 \
7723*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7724*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7725*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7726*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7727*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7728*62c56f98SSadaf Ebrahimi
7729*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7730*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw rsa-psk on client, no static RSA-PSK on server, opaque RSA-PSK from callback, EMS" \
7731*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 \
7732*62c56f98SSadaf Ebrahimi            force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA extended_ms=1" \
7733*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA \
7734*62c56f98SSadaf Ebrahimi            psk_identity=abc psk=dead extended_ms=1" \
7735*62c56f98SSadaf Ebrahimi            0 \
7736*62c56f98SSadaf Ebrahimi            -c "session hash for extended master secret"\
7737*62c56f98SSadaf Ebrahimi            -s "session hash for extended master secret"\
7738*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7739*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7740*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7741*62c56f98SSadaf Ebrahimi
7742*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7743*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw rsa-psk on client, no static RSA-PSK on server, opaque RSA-PSK from callback, EMS, SHA384" \
7744*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 \
7745*62c56f98SSadaf Ebrahimi            force_ciphersuite=TLS-RSA-PSK-WITH-AES-256-CBC-SHA384 extended_ms=1" \
7746*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-RSA-PSK-WITH-AES-256-CBC-SHA384 \
7747*62c56f98SSadaf Ebrahimi            psk_identity=abc psk=dead extended_ms=1" \
7748*62c56f98SSadaf Ebrahimi            0 \
7749*62c56f98SSadaf Ebrahimi            -c "session hash for extended master secret"\
7750*62c56f98SSadaf Ebrahimi            -s "session hash for extended master secret"\
7751*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7752*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7753*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7754*62c56f98SSadaf Ebrahimi
7755*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7756*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw ecdhe-psk on client, no static ECDHE-PSK on server, opaque ECDHE-PSK from callback" \
7757*62c56f98SSadaf Ebrahimi            "$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" \
7758*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA \
7759*62c56f98SSadaf Ebrahimi            psk_identity=def psk=beef" \
7760*62c56f98SSadaf Ebrahimi            0 \
7761*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7762*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7763*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7764*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7765*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7766*62c56f98SSadaf Ebrahimi
7767*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7768*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw ecdhe-psk on client, no static ECDHE-PSK on server, opaque ECDHE-PSK from callback, SHA-384" \
7769*62c56f98SSadaf Ebrahimi            "$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" \
7770*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384 \
7771*62c56f98SSadaf Ebrahimi            psk_identity=def psk=beef" \
7772*62c56f98SSadaf Ebrahimi            0 \
7773*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7774*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7775*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7776*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7777*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7778*62c56f98SSadaf Ebrahimi
7779*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7780*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw ecdhe-psk on client, no static ECDHE-PSK on server, opaque ECDHE-PSK from callback, EMS" \
7781*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 \
7782*62c56f98SSadaf Ebrahimi            force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA extended_ms=1" \
7783*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA \
7784*62c56f98SSadaf Ebrahimi            psk_identity=abc psk=dead extended_ms=1" \
7785*62c56f98SSadaf Ebrahimi            0 \
7786*62c56f98SSadaf Ebrahimi            -c "session hash for extended master secret"\
7787*62c56f98SSadaf Ebrahimi            -s "session hash for extended master secret"\
7788*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7789*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7790*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7791*62c56f98SSadaf Ebrahimi
7792*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7793*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw ecdhe-psk on client, no static ECDHE-PSK on server, opaque ECDHE-PSK from callback, EMS, SHA384" \
7794*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 \
7795*62c56f98SSadaf Ebrahimi            force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384 extended_ms=1" \
7796*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384 \
7797*62c56f98SSadaf Ebrahimi            psk_identity=abc psk=dead extended_ms=1" \
7798*62c56f98SSadaf Ebrahimi            0 \
7799*62c56f98SSadaf Ebrahimi            -c "session hash for extended master secret"\
7800*62c56f98SSadaf Ebrahimi            -s "session hash for extended master secret"\
7801*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7802*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7803*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7804*62c56f98SSadaf Ebrahimi
7805*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7806*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw dhe-psk on client, no static DHE-PSK on server, opaque DHE-PSK from callback" \
7807*62c56f98SSadaf Ebrahimi            "$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" \
7808*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-128-CBC-SHA \
7809*62c56f98SSadaf Ebrahimi            psk_identity=def psk=beef" \
7810*62c56f98SSadaf Ebrahimi            0 \
7811*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7812*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7813*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7814*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7815*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7816*62c56f98SSadaf Ebrahimi
7817*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7818*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw dhe-psk on client, no static DHE-PSK on server, opaque DHE-PSK from callback, SHA-384" \
7819*62c56f98SSadaf Ebrahimi            "$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" \
7820*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-256-CBC-SHA384 \
7821*62c56f98SSadaf Ebrahimi            psk_identity=def psk=beef" \
7822*62c56f98SSadaf Ebrahimi            0 \
7823*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7824*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7825*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7826*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7827*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7828*62c56f98SSadaf Ebrahimi
7829*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7830*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw dhe-psk on client, no static DHE-PSK on server, opaque DHE-PSK from callback, EMS" \
7831*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 \
7832*62c56f98SSadaf Ebrahimi            force_ciphersuite=TLS-DHE-PSK-WITH-AES-128-CBC-SHA extended_ms=1" \
7833*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-128-CBC-SHA \
7834*62c56f98SSadaf Ebrahimi            psk_identity=abc psk=dead extended_ms=1" \
7835*62c56f98SSadaf Ebrahimi            0 \
7836*62c56f98SSadaf Ebrahimi            -c "session hash for extended master secret"\
7837*62c56f98SSadaf Ebrahimi            -s "session hash for extended master secret"\
7838*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7839*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7840*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7841*62c56f98SSadaf Ebrahimi
7842*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7843*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw dhe-psk on client, no static DHE-PSK on server, opaque DHE-PSK from callback, EMS, SHA384" \
7844*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 psk_list=abc,dead,def,beef psk_list_opaque=1 min_version=tls12 \
7845*62c56f98SSadaf Ebrahimi            force_ciphersuite=TLS-DHE-PSK-WITH-AES-256-CBC-SHA384 extended_ms=1" \
7846*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 min_version=tls12 force_ciphersuite=TLS-DHE-PSK-WITH-AES-256-CBC-SHA384 \
7847*62c56f98SSadaf Ebrahimi            psk_identity=abc psk=dead extended_ms=1" \
7848*62c56f98SSadaf Ebrahimi            0 \
7849*62c56f98SSadaf Ebrahimi            -c "session hash for extended master secret"\
7850*62c56f98SSadaf Ebrahimi            -s "session hash for extended master secret"\
7851*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7852*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7853*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7854*62c56f98SSadaf Ebrahimi
7855*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7856*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw psk on client, mismatching static raw PSK on server, opaque PSK from callback" \
7857*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=0 psk_identity=foo psk=abc123 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" \
7858*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
7859*62c56f98SSadaf Ebrahimi            psk_identity=def psk=beef" \
7860*62c56f98SSadaf Ebrahimi            0 \
7861*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7862*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7863*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7864*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7865*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7866*62c56f98SSadaf Ebrahimi
7867*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7868*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw psk on client, mismatching static opaque PSK on server, opaque PSK from callback" \
7869*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=0 psk_opaque=1 psk_identity=foo psk=abc123 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" \
7870*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
7871*62c56f98SSadaf Ebrahimi            psk_identity=def psk=beef" \
7872*62c56f98SSadaf Ebrahimi            0 \
7873*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7874*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7875*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7876*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7877*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7878*62c56f98SSadaf Ebrahimi
7879*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7880*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw psk on client, mismatching static opaque PSK on server, raw PSK from callback" \
7881*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=0 psk_opaque=1 psk_identity=foo psk=abc123 debug_level=3 psk_list=abc,dead,def,beef min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA" \
7882*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
7883*62c56f98SSadaf Ebrahimi            psk_identity=def psk=beef" \
7884*62c56f98SSadaf Ebrahimi            0 \
7885*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7886*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7887*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7888*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7889*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7890*62c56f98SSadaf Ebrahimi
7891*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7892*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw psk on client, id-matching but wrong raw PSK on server, opaque PSK from callback" \
7893*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=0 psk_opaque=1 psk_identity=def psk=abc123 debug_level=3 psk_list=abc,dead,def,beef min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA" \
7894*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
7895*62c56f98SSadaf Ebrahimi            psk_identity=def psk=beef" \
7896*62c56f98SSadaf Ebrahimi            0 \
7897*62c56f98SSadaf Ebrahimi            -C "session hash for extended master secret"\
7898*62c56f98SSadaf Ebrahimi            -S "session hash for extended master secret"\
7899*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7900*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7901*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7902*62c56f98SSadaf Ebrahimi
7903*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
7904*62c56f98SSadaf Ebrahimirun_test    "PSK callback: raw psk on client, matching opaque PSK on server, wrong opaque PSK from callback" \
7905*62c56f98SSadaf Ebrahimi            "$P_SRV extended_ms=0 psk_opaque=1 psk_identity=def psk=beef debug_level=3 psk_list=abc,dead,def,abc123 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA" \
7906*62c56f98SSadaf Ebrahimi            "$P_CLI extended_ms=0 debug_level=3 min_version=tls12 force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
7907*62c56f98SSadaf Ebrahimi            psk_identity=def psk=beef" \
7908*62c56f98SSadaf Ebrahimi            1 \
7909*62c56f98SSadaf Ebrahimi            -s "SSL - Verification of the message MAC failed"
7910*62c56f98SSadaf Ebrahimi
7911*62c56f98SSadaf Ebrahimirun_test    "PSK callback: no psk, no callback" \
7912*62c56f98SSadaf Ebrahimi            "$P_SRV" \
7913*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
7914*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123" \
7915*62c56f98SSadaf Ebrahimi            1 \
7916*62c56f98SSadaf Ebrahimi            -s "SSL - The handshake negotiation failed" \
7917*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7918*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7919*62c56f98SSadaf Ebrahimi
7920*62c56f98SSadaf Ebrahimirun_test    "PSK callback: callback overrides other settings" \
7921*62c56f98SSadaf Ebrahimi            "$P_SRV psk=abc123 psk_identity=foo psk_list=abc,dead,def,beef" \
7922*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
7923*62c56f98SSadaf Ebrahimi            psk_identity=foo psk=abc123" \
7924*62c56f98SSadaf Ebrahimi            1 \
7925*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7926*62c56f98SSadaf Ebrahimi            -s "SSL - Unknown identity received" \
7927*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7928*62c56f98SSadaf Ebrahimi
7929*62c56f98SSadaf Ebrahimirun_test    "PSK callback: first id matches" \
7930*62c56f98SSadaf Ebrahimi            "$P_SRV psk_list=abc,dead,def,beef" \
7931*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
7932*62c56f98SSadaf Ebrahimi            psk_identity=abc psk=dead" \
7933*62c56f98SSadaf Ebrahimi            0 \
7934*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7935*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7936*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7937*62c56f98SSadaf Ebrahimi
7938*62c56f98SSadaf Ebrahimirun_test    "PSK callback: second id matches" \
7939*62c56f98SSadaf Ebrahimi            "$P_SRV psk_list=abc,dead,def,beef" \
7940*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
7941*62c56f98SSadaf Ebrahimi            psk_identity=def psk=beef" \
7942*62c56f98SSadaf Ebrahimi            0 \
7943*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7944*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7945*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7946*62c56f98SSadaf Ebrahimi
7947*62c56f98SSadaf Ebrahimirun_test    "PSK callback: no match" \
7948*62c56f98SSadaf Ebrahimi            "$P_SRV psk_list=abc,dead,def,beef" \
7949*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
7950*62c56f98SSadaf Ebrahimi            psk_identity=ghi psk=beef" \
7951*62c56f98SSadaf Ebrahimi            1 \
7952*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7953*62c56f98SSadaf Ebrahimi            -s "SSL - Unknown identity received" \
7954*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
7955*62c56f98SSadaf Ebrahimi
7956*62c56f98SSadaf Ebrahimirun_test    "PSK callback: wrong key" \
7957*62c56f98SSadaf Ebrahimi            "$P_SRV psk_list=abc,dead,def,beef" \
7958*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-PSK-WITH-AES-128-CBC-SHA \
7959*62c56f98SSadaf Ebrahimi            psk_identity=abc psk=beef" \
7960*62c56f98SSadaf Ebrahimi            1 \
7961*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
7962*62c56f98SSadaf Ebrahimi            -S "SSL - Unknown identity received" \
7963*62c56f98SSadaf Ebrahimi            -s "SSL - Verification of the message MAC failed"
7964*62c56f98SSadaf Ebrahimi
7965*62c56f98SSadaf Ebrahimi# Tests for EC J-PAKE
7966*62c56f98SSadaf Ebrahimi
7967*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
7968*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
7969*62c56f98SSadaf Ebrahimirun_test    "ECJPAKE: client not configured" \
7970*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3" \
7971*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3" \
7972*62c56f98SSadaf Ebrahimi            0 \
7973*62c56f98SSadaf Ebrahimi            -C "add ciphersuite: 0xc0ff" \
7974*62c56f98SSadaf Ebrahimi            -C "adding ecjpake_kkpp extension" \
7975*62c56f98SSadaf Ebrahimi            -S "found ecjpake kkpp extension" \
7976*62c56f98SSadaf Ebrahimi            -S "skip ecjpake kkpp extension" \
7977*62c56f98SSadaf Ebrahimi            -S "ciphersuite mismatch: ecjpake not configured" \
7978*62c56f98SSadaf Ebrahimi            -S "server hello, ecjpake kkpp extension" \
7979*62c56f98SSadaf Ebrahimi            -C "found ecjpake_kkpp extension" \
7980*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed"
7981*62c56f98SSadaf Ebrahimi
7982*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
7983*62c56f98SSadaf Ebrahimirun_test    "ECJPAKE: server not configured" \
7984*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3" \
7985*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 ecjpake_pw=bla \
7986*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
7987*62c56f98SSadaf Ebrahimi            1 \
7988*62c56f98SSadaf Ebrahimi            -c "add ciphersuite: c0ff" \
7989*62c56f98SSadaf Ebrahimi            -c "adding ecjpake_kkpp extension" \
7990*62c56f98SSadaf Ebrahimi            -s "found ecjpake kkpp extension" \
7991*62c56f98SSadaf Ebrahimi            -s "skip ecjpake kkpp extension" \
7992*62c56f98SSadaf Ebrahimi            -s "ciphersuite mismatch: ecjpake not configured" \
7993*62c56f98SSadaf Ebrahimi            -S "server hello, ecjpake kkpp extension" \
7994*62c56f98SSadaf Ebrahimi            -C "found ecjpake_kkpp extension" \
7995*62c56f98SSadaf Ebrahimi            -s "SSL - The handshake negotiation failed"
7996*62c56f98SSadaf Ebrahimi
7997*62c56f98SSadaf Ebrahimi# Note: if the name of this test is changed, then please adjust the corresponding
7998*62c56f98SSadaf Ebrahimi#       filtering label in "test_tls1_2_ecjpake_compatibility" (in "all.sh")
7999*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
8000*62c56f98SSadaf Ebrahimirun_test    "ECJPAKE: working, TLS" \
8001*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 ecjpake_pw=bla" \
8002*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 ecjpake_pw=bla \
8003*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
8004*62c56f98SSadaf Ebrahimi            0 \
8005*62c56f98SSadaf Ebrahimi            -c "add ciphersuite: c0ff" \
8006*62c56f98SSadaf Ebrahimi            -c "adding ecjpake_kkpp extension" \
8007*62c56f98SSadaf Ebrahimi            -C "re-using cached ecjpake parameters" \
8008*62c56f98SSadaf Ebrahimi            -s "found ecjpake kkpp extension" \
8009*62c56f98SSadaf Ebrahimi            -S "skip ecjpake kkpp extension" \
8010*62c56f98SSadaf Ebrahimi            -S "ciphersuite mismatch: ecjpake not configured" \
8011*62c56f98SSadaf Ebrahimi            -s "server hello, ecjpake kkpp extension" \
8012*62c56f98SSadaf Ebrahimi            -c "found ecjpake_kkpp extension" \
8013*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
8014*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
8015*62c56f98SSadaf Ebrahimi
8016*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
8017*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
8018*62c56f98SSadaf Ebrahimirun_test    "ECJPAKE: opaque password client+server, working, TLS" \
8019*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 ecjpake_pw=bla ecjpake_pw_opaque=1" \
8020*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 ecjpake_pw=bla ecjpake_pw_opaque=1\
8021*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
8022*62c56f98SSadaf Ebrahimi            0 \
8023*62c56f98SSadaf Ebrahimi            -c "add ciphersuite: c0ff" \
8024*62c56f98SSadaf Ebrahimi            -c "adding ecjpake_kkpp extension" \
8025*62c56f98SSadaf Ebrahimi            -c "using opaque password" \
8026*62c56f98SSadaf Ebrahimi            -s "using opaque password" \
8027*62c56f98SSadaf Ebrahimi            -C "re-using cached ecjpake parameters" \
8028*62c56f98SSadaf Ebrahimi            -s "found ecjpake kkpp extension" \
8029*62c56f98SSadaf Ebrahimi            -S "skip ecjpake kkpp extension" \
8030*62c56f98SSadaf Ebrahimi            -S "ciphersuite mismatch: ecjpake not configured" \
8031*62c56f98SSadaf Ebrahimi            -s "server hello, ecjpake kkpp extension" \
8032*62c56f98SSadaf Ebrahimi            -c "found ecjpake_kkpp extension" \
8033*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
8034*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
8035*62c56f98SSadaf Ebrahimi
8036*62c56f98SSadaf Ebrahimi# Note: if the name of this test is changed, then please adjust the corresponding
8037*62c56f98SSadaf Ebrahimi#       filtering label in "test_tls1_2_ecjpake_compatibility" (in "all.sh")
8038*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
8039*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
8040*62c56f98SSadaf Ebrahimirun_test    "ECJPAKE: opaque password client only, working, TLS" \
8041*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 ecjpake_pw=bla" \
8042*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 ecjpake_pw=bla ecjpake_pw_opaque=1\
8043*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
8044*62c56f98SSadaf Ebrahimi            0 \
8045*62c56f98SSadaf Ebrahimi            -c "add ciphersuite: c0ff" \
8046*62c56f98SSadaf Ebrahimi            -c "adding ecjpake_kkpp extension" \
8047*62c56f98SSadaf Ebrahimi            -c "using opaque password" \
8048*62c56f98SSadaf Ebrahimi            -S "using opaque password" \
8049*62c56f98SSadaf Ebrahimi            -C "re-using cached ecjpake parameters" \
8050*62c56f98SSadaf Ebrahimi            -s "found ecjpake kkpp extension" \
8051*62c56f98SSadaf Ebrahimi            -S "skip ecjpake kkpp extension" \
8052*62c56f98SSadaf Ebrahimi            -S "ciphersuite mismatch: ecjpake not configured" \
8053*62c56f98SSadaf Ebrahimi            -s "server hello, ecjpake kkpp extension" \
8054*62c56f98SSadaf Ebrahimi            -c "found ecjpake_kkpp extension" \
8055*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
8056*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
8057*62c56f98SSadaf Ebrahimi
8058*62c56f98SSadaf Ebrahimi# Note: if the name of this test is changed, then please adjust the corresponding
8059*62c56f98SSadaf Ebrahimi#       filtering label in "test_tls1_2_ecjpake_compatibility" (in "all.sh")
8060*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
8061*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
8062*62c56f98SSadaf Ebrahimirun_test    "ECJPAKE: opaque password server only, working, TLS" \
8063*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 ecjpake_pw=bla ecjpake_pw_opaque=1" \
8064*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 ecjpake_pw=bla\
8065*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
8066*62c56f98SSadaf Ebrahimi            0 \
8067*62c56f98SSadaf Ebrahimi            -c "add ciphersuite: c0ff" \
8068*62c56f98SSadaf Ebrahimi            -c "adding ecjpake_kkpp extension" \
8069*62c56f98SSadaf Ebrahimi            -C "using opaque password" \
8070*62c56f98SSadaf Ebrahimi            -s "using opaque password" \
8071*62c56f98SSadaf Ebrahimi            -C "re-using cached ecjpake parameters" \
8072*62c56f98SSadaf Ebrahimi            -s "found ecjpake kkpp extension" \
8073*62c56f98SSadaf Ebrahimi            -S "skip ecjpake kkpp extension" \
8074*62c56f98SSadaf Ebrahimi            -S "ciphersuite mismatch: ecjpake not configured" \
8075*62c56f98SSadaf Ebrahimi            -s "server hello, ecjpake kkpp extension" \
8076*62c56f98SSadaf Ebrahimi            -c "found ecjpake_kkpp extension" \
8077*62c56f98SSadaf Ebrahimi            -S "SSL - The handshake negotiation failed" \
8078*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
8079*62c56f98SSadaf Ebrahimi
8080*62c56f98SSadaf Ebrahimiserver_needs_more_time 1
8081*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
8082*62c56f98SSadaf Ebrahimirun_test    "ECJPAKE: password mismatch, TLS" \
8083*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 ecjpake_pw=bla" \
8084*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 ecjpake_pw=bad \
8085*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
8086*62c56f98SSadaf Ebrahimi            1 \
8087*62c56f98SSadaf Ebrahimi            -C "re-using cached ecjpake parameters" \
8088*62c56f98SSadaf Ebrahimi            -s "SSL - Verification of the message MAC failed"
8089*62c56f98SSadaf Ebrahimi
8090*62c56f98SSadaf Ebrahimiserver_needs_more_time 1
8091*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
8092*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
8093*62c56f98SSadaf Ebrahimirun_test    "ECJPAKE_OPAQUE_PW: opaque password mismatch, TLS" \
8094*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 ecjpake_pw=bla ecjpake_pw_opaque=1" \
8095*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 ecjpake_pw=bad ecjpake_pw_opaque=1 \
8096*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
8097*62c56f98SSadaf Ebrahimi            1 \
8098*62c56f98SSadaf Ebrahimi            -c "using opaque password" \
8099*62c56f98SSadaf Ebrahimi            -s "using opaque password" \
8100*62c56f98SSadaf Ebrahimi            -C "re-using cached ecjpake parameters" \
8101*62c56f98SSadaf Ebrahimi            -s "SSL - Verification of the message MAC failed"
8102*62c56f98SSadaf Ebrahimi
8103*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
8104*62c56f98SSadaf Ebrahimirun_test    "ECJPAKE: working, DTLS" \
8105*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 ecjpake_pw=bla" \
8106*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 ecjpake_pw=bla \
8107*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
8108*62c56f98SSadaf Ebrahimi            0 \
8109*62c56f98SSadaf Ebrahimi            -c "re-using cached ecjpake parameters" \
8110*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
8111*62c56f98SSadaf Ebrahimi
8112*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
8113*62c56f98SSadaf Ebrahimirun_test    "ECJPAKE: working, DTLS, no cookie" \
8114*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 ecjpake_pw=bla cookies=0" \
8115*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 ecjpake_pw=bla \
8116*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
8117*62c56f98SSadaf Ebrahimi            0 \
8118*62c56f98SSadaf Ebrahimi            -C "re-using cached ecjpake parameters" \
8119*62c56f98SSadaf Ebrahimi            -S "SSL - Verification of the message MAC failed"
8120*62c56f98SSadaf Ebrahimi
8121*62c56f98SSadaf Ebrahimiserver_needs_more_time 1
8122*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
8123*62c56f98SSadaf Ebrahimirun_test    "ECJPAKE: password mismatch, DTLS" \
8124*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 dtls=1 ecjpake_pw=bla" \
8125*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 ecjpake_pw=bad \
8126*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
8127*62c56f98SSadaf Ebrahimi            1 \
8128*62c56f98SSadaf Ebrahimi            -c "re-using cached ecjpake parameters" \
8129*62c56f98SSadaf Ebrahimi            -s "SSL - Verification of the message MAC failed"
8130*62c56f98SSadaf Ebrahimi
8131*62c56f98SSadaf Ebrahimi# for tests with configs/config-thread.h
8132*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
8133*62c56f98SSadaf Ebrahimirun_test    "ECJPAKE: working, DTLS, nolog" \
8134*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 ecjpake_pw=bla" \
8135*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 ecjpake_pw=bla \
8136*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECJPAKE-WITH-AES-128-CCM-8" \
8137*62c56f98SSadaf Ebrahimi            0
8138*62c56f98SSadaf Ebrahimi
8139*62c56f98SSadaf Ebrahimi# Test for ClientHello without extensions
8140*62c56f98SSadaf Ebrahimi
8141*62c56f98SSadaf Ebrahimirequires_gnutls
8142*62c56f98SSadaf Ebrahimirun_test    "ClientHello without extensions" \
8143*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 debug_level=3" \
8144*62c56f98SSadaf Ebrahimi            "$G_CLI --priority=NORMAL:%NO_EXTENSIONS:%DISABLE_SAFE_RENEGOTIATION localhost" \
8145*62c56f98SSadaf Ebrahimi            0 \
8146*62c56f98SSadaf Ebrahimi            -s "dumping 'client hello extensions' (0 bytes)"
8147*62c56f98SSadaf Ebrahimi
8148*62c56f98SSadaf Ebrahimi# Tests for mbedtls_ssl_get_bytes_avail()
8149*62c56f98SSadaf Ebrahimi
8150*62c56f98SSadaf Ebrahimi# The server first reads buffer_size-1 bytes, then reads the remainder.
8151*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
8152*62c56f98SSadaf Ebrahimirun_test    "mbedtls_ssl_get_bytes_avail: no extra data" \
8153*62c56f98SSadaf Ebrahimi            "$P_SRV buffer_size=100" \
8154*62c56f98SSadaf Ebrahimi            "$P_CLI request_size=100" \
8155*62c56f98SSadaf Ebrahimi            0 \
8156*62c56f98SSadaf Ebrahimi            -s "Read from client: 100 bytes read$"
8157*62c56f98SSadaf Ebrahimi
8158*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
8159*62c56f98SSadaf Ebrahimirun_test    "mbedtls_ssl_get_bytes_avail: extra data (+1)" \
8160*62c56f98SSadaf Ebrahimi            "$P_SRV buffer_size=100" \
8161*62c56f98SSadaf Ebrahimi            "$P_CLI request_size=101" \
8162*62c56f98SSadaf Ebrahimi            0 \
8163*62c56f98SSadaf Ebrahimi            -s "Read from client: 101 bytes read (100 + 1)"
8164*62c56f98SSadaf Ebrahimi
8165*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
8166*62c56f98SSadaf Ebrahimirequires_max_content_len 200
8167*62c56f98SSadaf Ebrahimirun_test    "mbedtls_ssl_get_bytes_avail: extra data (*2)" \
8168*62c56f98SSadaf Ebrahimi            "$P_SRV buffer_size=100" \
8169*62c56f98SSadaf Ebrahimi            "$P_CLI request_size=200" \
8170*62c56f98SSadaf Ebrahimi            0 \
8171*62c56f98SSadaf Ebrahimi            -s "Read from client: 200 bytes read (100 + 100)"
8172*62c56f98SSadaf Ebrahimi
8173*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
8174*62c56f98SSadaf Ebrahimirun_test    "mbedtls_ssl_get_bytes_avail: extra data (max)" \
8175*62c56f98SSadaf Ebrahimi            "$P_SRV buffer_size=100" \
8176*62c56f98SSadaf Ebrahimi            "$P_CLI request_size=$MAX_CONTENT_LEN" \
8177*62c56f98SSadaf Ebrahimi            0 \
8178*62c56f98SSadaf Ebrahimi            -s "Read from client: $MAX_CONTENT_LEN bytes read (100 + $((MAX_CONTENT_LEN - 100)))"
8179*62c56f98SSadaf Ebrahimi
8180*62c56f98SSadaf Ebrahimi# Tests for small client packets
8181*62c56f98SSadaf Ebrahimi
8182*62c56f98SSadaf Ebrahimirun_test    "Small client packet TLS 1.2 BlockCipher" \
8183*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12" \
8184*62c56f98SSadaf Ebrahimi            "$P_CLI request_size=1 \
8185*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
8186*62c56f98SSadaf Ebrahimi            0 \
8187*62c56f98SSadaf Ebrahimi            -s "Read from client: 1 bytes read"
8188*62c56f98SSadaf Ebrahimi
8189*62c56f98SSadaf Ebrahimirun_test    "Small client packet TLS 1.2 BlockCipher, without EtM" \
8190*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12" \
8191*62c56f98SSadaf Ebrahimi            "$P_CLI request_size=1 \
8192*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA etm=0" \
8193*62c56f98SSadaf Ebrahimi            0 \
8194*62c56f98SSadaf Ebrahimi            -s "Read from client: 1 bytes read"
8195*62c56f98SSadaf Ebrahimi
8196*62c56f98SSadaf Ebrahimirun_test    "Small client packet TLS 1.2 BlockCipher larger MAC" \
8197*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12" \
8198*62c56f98SSadaf Ebrahimi            "$P_CLI request_size=1 \
8199*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \
8200*62c56f98SSadaf Ebrahimi            0 \
8201*62c56f98SSadaf Ebrahimi            -s "Read from client: 1 bytes read"
8202*62c56f98SSadaf Ebrahimi
8203*62c56f98SSadaf Ebrahimirun_test    "Small client packet TLS 1.2 AEAD" \
8204*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12" \
8205*62c56f98SSadaf Ebrahimi            "$P_CLI request_size=1 \
8206*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \
8207*62c56f98SSadaf Ebrahimi            0 \
8208*62c56f98SSadaf Ebrahimi            -s "Read from client: 1 bytes read"
8209*62c56f98SSadaf Ebrahimi
8210*62c56f98SSadaf Ebrahimirun_test    "Small client packet TLS 1.2 AEAD shorter tag" \
8211*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12" \
8212*62c56f98SSadaf Ebrahimi            "$P_CLI request_size=1 \
8213*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \
8214*62c56f98SSadaf Ebrahimi            0 \
8215*62c56f98SSadaf Ebrahimi            -s "Read from client: 1 bytes read"
8216*62c56f98SSadaf Ebrahimi
8217*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
8218*62c56f98SSadaf Ebrahimirun_test    "Small client packet TLS 1.3 AEAD" \
8219*62c56f98SSadaf Ebrahimi            "$P_SRV" \
8220*62c56f98SSadaf Ebrahimi            "$P_CLI request_size=1 \
8221*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS1-3-AES-128-CCM-SHA256" \
8222*62c56f98SSadaf Ebrahimi            0 \
8223*62c56f98SSadaf Ebrahimi            -s "Read from client: 1 bytes read"
8224*62c56f98SSadaf Ebrahimi
8225*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
8226*62c56f98SSadaf Ebrahimirun_test    "Small client packet TLS 1.3 AEAD shorter tag" \
8227*62c56f98SSadaf Ebrahimi            "$P_SRV" \
8228*62c56f98SSadaf Ebrahimi            "$P_CLI request_size=1 \
8229*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS1-3-AES-128-CCM-8-SHA256" \
8230*62c56f98SSadaf Ebrahimi            0 \
8231*62c56f98SSadaf Ebrahimi            -s "Read from client: 1 bytes read"
8232*62c56f98SSadaf Ebrahimi
8233*62c56f98SSadaf Ebrahimi# Tests for small client packets in DTLS
8234*62c56f98SSadaf Ebrahimi
8235*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8236*62c56f98SSadaf Ebrahimirun_test    "Small client packet DTLS 1.2" \
8237*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 force_version=dtls12" \
8238*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 request_size=1 \
8239*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
8240*62c56f98SSadaf Ebrahimi            0 \
8241*62c56f98SSadaf Ebrahimi            -s "Read from client: 1 bytes read"
8242*62c56f98SSadaf Ebrahimi
8243*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8244*62c56f98SSadaf Ebrahimirun_test    "Small client packet DTLS 1.2, without EtM" \
8245*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 force_version=dtls12 etm=0" \
8246*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 request_size=1 \
8247*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
8248*62c56f98SSadaf Ebrahimi            0 \
8249*62c56f98SSadaf Ebrahimi            -s "Read from client: 1 bytes read"
8250*62c56f98SSadaf Ebrahimi
8251*62c56f98SSadaf Ebrahimi# Tests for small server packets
8252*62c56f98SSadaf Ebrahimi
8253*62c56f98SSadaf Ebrahimirun_test    "Small server packet TLS 1.2 BlockCipher" \
8254*62c56f98SSadaf Ebrahimi            "$P_SRV response_size=1 force_version=tls12" \
8255*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
8256*62c56f98SSadaf Ebrahimi            0 \
8257*62c56f98SSadaf Ebrahimi            -c "Read from server: 1 bytes read"
8258*62c56f98SSadaf Ebrahimi
8259*62c56f98SSadaf Ebrahimirun_test    "Small server packet TLS 1.2 BlockCipher, without EtM" \
8260*62c56f98SSadaf Ebrahimi            "$P_SRV response_size=1 force_version=tls12" \
8261*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA etm=0" \
8262*62c56f98SSadaf Ebrahimi            0 \
8263*62c56f98SSadaf Ebrahimi            -c "Read from server: 1 bytes read"
8264*62c56f98SSadaf Ebrahimi
8265*62c56f98SSadaf Ebrahimirun_test    "Small server packet TLS 1.2 BlockCipher larger MAC" \
8266*62c56f98SSadaf Ebrahimi            "$P_SRV response_size=1 force_version=tls12" \
8267*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \
8268*62c56f98SSadaf Ebrahimi            0 \
8269*62c56f98SSadaf Ebrahimi            -c "Read from server: 1 bytes read"
8270*62c56f98SSadaf Ebrahimi
8271*62c56f98SSadaf Ebrahimirun_test    "Small server packet TLS 1.2 AEAD" \
8272*62c56f98SSadaf Ebrahimi            "$P_SRV response_size=1 force_version=tls12" \
8273*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \
8274*62c56f98SSadaf Ebrahimi            0 \
8275*62c56f98SSadaf Ebrahimi            -c "Read from server: 1 bytes read"
8276*62c56f98SSadaf Ebrahimi
8277*62c56f98SSadaf Ebrahimirun_test    "Small server packet TLS 1.2 AEAD shorter tag" \
8278*62c56f98SSadaf Ebrahimi            "$P_SRV response_size=1 force_version=tls12" \
8279*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \
8280*62c56f98SSadaf Ebrahimi            0 \
8281*62c56f98SSadaf Ebrahimi            -c "Read from server: 1 bytes read"
8282*62c56f98SSadaf Ebrahimi
8283*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
8284*62c56f98SSadaf Ebrahimirun_test    "Small server packet TLS 1.3 AEAD" \
8285*62c56f98SSadaf Ebrahimi            "$P_SRV response_size=1" \
8286*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS1-3-AES-128-CCM-SHA256" \
8287*62c56f98SSadaf Ebrahimi            0 \
8288*62c56f98SSadaf Ebrahimi            -c "Read from server: 1 bytes read"
8289*62c56f98SSadaf Ebrahimi
8290*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
8291*62c56f98SSadaf Ebrahimirun_test    "Small server packet TLS 1.3 AEAD shorter tag" \
8292*62c56f98SSadaf Ebrahimi            "$P_SRV response_size=1" \
8293*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS1-3-AES-128-CCM-8-SHA256" \
8294*62c56f98SSadaf Ebrahimi            0 \
8295*62c56f98SSadaf Ebrahimi            -c "Read from server: 1 bytes read"
8296*62c56f98SSadaf Ebrahimi
8297*62c56f98SSadaf Ebrahimi# Tests for small server packets in DTLS
8298*62c56f98SSadaf Ebrahimi
8299*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8300*62c56f98SSadaf Ebrahimirun_test    "Small server packet DTLS 1.2" \
8301*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 response_size=1 force_version=dtls12" \
8302*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 \
8303*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
8304*62c56f98SSadaf Ebrahimi            0 \
8305*62c56f98SSadaf Ebrahimi            -c "Read from server: 1 bytes read"
8306*62c56f98SSadaf Ebrahimi
8307*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
8308*62c56f98SSadaf Ebrahimirun_test    "Small server packet DTLS 1.2, without EtM" \
8309*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 response_size=1 force_version=dtls12 etm=0" \
8310*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 \
8311*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
8312*62c56f98SSadaf Ebrahimi            0 \
8313*62c56f98SSadaf Ebrahimi            -c "Read from server: 1 bytes read"
8314*62c56f98SSadaf Ebrahimi
8315*62c56f98SSadaf Ebrahimi# Test for large client packets
8316*62c56f98SSadaf Ebrahimi
8317*62c56f98SSadaf Ebrahimi# How many fragments do we expect to write $1 bytes?
8318*62c56f98SSadaf Ebrahimifragments_for_write() {
8319*62c56f98SSadaf Ebrahimi    echo "$(( ( $1 + $MAX_OUT_LEN - 1 ) / $MAX_OUT_LEN ))"
8320*62c56f98SSadaf Ebrahimi}
8321*62c56f98SSadaf Ebrahimi
8322*62c56f98SSadaf Ebrahimirun_test    "Large client packet TLS 1.2 BlockCipher" \
8323*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12" \
8324*62c56f98SSadaf Ebrahimi            "$P_CLI request_size=16384 \
8325*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
8326*62c56f98SSadaf Ebrahimi            0 \
8327*62c56f98SSadaf Ebrahimi            -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
8328*62c56f98SSadaf Ebrahimi            -s "Read from client: $MAX_CONTENT_LEN bytes read"
8329*62c56f98SSadaf Ebrahimi
8330*62c56f98SSadaf Ebrahimirun_test    "Large client packet TLS 1.2 BlockCipher, without EtM" \
8331*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12" \
8332*62c56f98SSadaf Ebrahimi            "$P_CLI request_size=16384 etm=0 \
8333*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
8334*62c56f98SSadaf Ebrahimi            0 \
8335*62c56f98SSadaf Ebrahimi            -s "Read from client: $MAX_CONTENT_LEN bytes read"
8336*62c56f98SSadaf Ebrahimi
8337*62c56f98SSadaf Ebrahimirun_test    "Large client packet TLS 1.2 BlockCipher larger MAC" \
8338*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12" \
8339*62c56f98SSadaf Ebrahimi            "$P_CLI request_size=16384 \
8340*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \
8341*62c56f98SSadaf Ebrahimi            0 \
8342*62c56f98SSadaf Ebrahimi            -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
8343*62c56f98SSadaf Ebrahimi            -s "Read from client: $MAX_CONTENT_LEN bytes read"
8344*62c56f98SSadaf Ebrahimi
8345*62c56f98SSadaf Ebrahimirun_test    "Large client packet TLS 1.2 AEAD" \
8346*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12" \
8347*62c56f98SSadaf Ebrahimi            "$P_CLI request_size=16384 \
8348*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \
8349*62c56f98SSadaf Ebrahimi            0 \
8350*62c56f98SSadaf Ebrahimi            -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
8351*62c56f98SSadaf Ebrahimi            -s "Read from client: $MAX_CONTENT_LEN bytes read"
8352*62c56f98SSadaf Ebrahimi
8353*62c56f98SSadaf Ebrahimirun_test    "Large client packet TLS 1.2 AEAD shorter tag" \
8354*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12" \
8355*62c56f98SSadaf Ebrahimi            "$P_CLI request_size=16384 \
8356*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \
8357*62c56f98SSadaf Ebrahimi            0 \
8358*62c56f98SSadaf Ebrahimi            -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
8359*62c56f98SSadaf Ebrahimi            -s "Read from client: $MAX_CONTENT_LEN bytes read"
8360*62c56f98SSadaf Ebrahimi
8361*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
8362*62c56f98SSadaf Ebrahimirun_test    "Large client packet TLS 1.3 AEAD" \
8363*62c56f98SSadaf Ebrahimi            "$P_SRV" \
8364*62c56f98SSadaf Ebrahimi            "$P_CLI request_size=16384 \
8365*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS1-3-AES-128-CCM-SHA256" \
8366*62c56f98SSadaf Ebrahimi            0 \
8367*62c56f98SSadaf Ebrahimi            -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
8368*62c56f98SSadaf Ebrahimi            -s "Read from client: $MAX_CONTENT_LEN bytes read"
8369*62c56f98SSadaf Ebrahimi
8370*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
8371*62c56f98SSadaf Ebrahimirun_test    "Large client packet TLS 1.3 AEAD shorter tag" \
8372*62c56f98SSadaf Ebrahimi            "$P_SRV" \
8373*62c56f98SSadaf Ebrahimi            "$P_CLI request_size=16384 \
8374*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS1-3-AES-128-CCM-8-SHA256" \
8375*62c56f98SSadaf Ebrahimi            0 \
8376*62c56f98SSadaf Ebrahimi            -c "16384 bytes written in $(fragments_for_write 16384) fragments" \
8377*62c56f98SSadaf Ebrahimi            -s "Read from client: $MAX_CONTENT_LEN bytes read"
8378*62c56f98SSadaf Ebrahimi
8379*62c56f98SSadaf Ebrahimi# The tests below fail when the server's OUT_CONTENT_LEN is less than 16384.
8380*62c56f98SSadaf Ebrahimirun_test    "Large server packet TLS 1.2 BlockCipher" \
8381*62c56f98SSadaf Ebrahimi            "$P_SRV response_size=16384 force_version=tls12" \
8382*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
8383*62c56f98SSadaf Ebrahimi            0 \
8384*62c56f98SSadaf Ebrahimi            -c "Read from server: 16384 bytes read"
8385*62c56f98SSadaf Ebrahimi
8386*62c56f98SSadaf Ebrahimirun_test    "Large server packet TLS 1.2 BlockCipher, without EtM" \
8387*62c56f98SSadaf Ebrahimi            "$P_SRV response_size=16384 force_version=tls12" \
8388*62c56f98SSadaf Ebrahimi            "$P_CLI etm=0 force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \
8389*62c56f98SSadaf Ebrahimi            0 \
8390*62c56f98SSadaf Ebrahimi            -s "16384 bytes written in 1 fragments" \
8391*62c56f98SSadaf Ebrahimi            -c "Read from server: 16384 bytes read"
8392*62c56f98SSadaf Ebrahimi
8393*62c56f98SSadaf Ebrahimirun_test    "Large server packet TLS 1.2 BlockCipher larger MAC" \
8394*62c56f98SSadaf Ebrahimi            "$P_SRV response_size=16384 force_version=tls12" \
8395*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \
8396*62c56f98SSadaf Ebrahimi            0 \
8397*62c56f98SSadaf Ebrahimi            -c "Read from server: 16384 bytes read"
8398*62c56f98SSadaf Ebrahimi
8399*62c56f98SSadaf Ebrahimirun_test    "Large server packet TLS 1.2 BlockCipher, without EtM, truncated MAC" \
8400*62c56f98SSadaf Ebrahimi            "$P_SRV response_size=16384 trunc_hmac=1 force_version=tls12" \
8401*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \
8402*62c56f98SSadaf Ebrahimi            0 \
8403*62c56f98SSadaf Ebrahimi            -s "16384 bytes written in 1 fragments" \
8404*62c56f98SSadaf Ebrahimi            -c "Read from server: 16384 bytes read"
8405*62c56f98SSadaf Ebrahimi
8406*62c56f98SSadaf Ebrahimirun_test    "Large server packet TLS 1.2 AEAD" \
8407*62c56f98SSadaf Ebrahimi            "$P_SRV response_size=16384 force_version=tls12" \
8408*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \
8409*62c56f98SSadaf Ebrahimi            0 \
8410*62c56f98SSadaf Ebrahimi            -c "Read from server: 16384 bytes read"
8411*62c56f98SSadaf Ebrahimi
8412*62c56f98SSadaf Ebrahimirun_test    "Large server packet TLS 1.2 AEAD shorter tag" \
8413*62c56f98SSadaf Ebrahimi            "$P_SRV response_size=16384 force_version=tls12" \
8414*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \
8415*62c56f98SSadaf Ebrahimi            0 \
8416*62c56f98SSadaf Ebrahimi            -c "Read from server: 16384 bytes read"
8417*62c56f98SSadaf Ebrahimi
8418*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
8419*62c56f98SSadaf Ebrahimirun_test    "Large server packet TLS 1.3 AEAD" \
8420*62c56f98SSadaf Ebrahimi            "$P_SRV response_size=16384" \
8421*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS1-3-AES-128-CCM-SHA256" \
8422*62c56f98SSadaf Ebrahimi            0 \
8423*62c56f98SSadaf Ebrahimi            -c "Read from server: 16384 bytes read"
8424*62c56f98SSadaf Ebrahimi
8425*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
8426*62c56f98SSadaf Ebrahimirun_test    "Large server packet TLS 1.3 AEAD shorter tag" \
8427*62c56f98SSadaf Ebrahimi            "$P_SRV response_size=16384" \
8428*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS1-3-AES-128-CCM-8-SHA256" \
8429*62c56f98SSadaf Ebrahimi            0 \
8430*62c56f98SSadaf Ebrahimi            -c "Read from server: 16384 bytes read"
8431*62c56f98SSadaf Ebrahimi
8432*62c56f98SSadaf Ebrahimi# Tests for restartable ECC
8433*62c56f98SSadaf Ebrahimi
8434*62c56f98SSadaf Ebrahimi# Force the use of a curve that supports restartable ECC (secp256r1).
8435*62c56f98SSadaf Ebrahimi
8436*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_RESTARTABLE
8437*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
8438*62c56f98SSadaf Ebrahimirun_test    "EC restart: TLS, default" \
8439*62c56f98SSadaf Ebrahimi            "$P_SRV groups=secp256r1 auth_mode=required" \
8440*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
8441*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key crt_file=data_files/server5.crt  \
8442*62c56f98SSadaf Ebrahimi             debug_level=1" \
8443*62c56f98SSadaf Ebrahimi            0 \
8444*62c56f98SSadaf Ebrahimi            -C "x509_verify_cert.*4b00" \
8445*62c56f98SSadaf Ebrahimi            -C "mbedtls_pk_verify.*4b00" \
8446*62c56f98SSadaf Ebrahimi            -C "mbedtls_ecdh_make_public.*4b00" \
8447*62c56f98SSadaf Ebrahimi            -C "mbedtls_pk_sign.*4b00"
8448*62c56f98SSadaf Ebrahimi
8449*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_RESTARTABLE
8450*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
8451*62c56f98SSadaf Ebrahimirun_test    "EC restart: TLS, max_ops=0" \
8452*62c56f98SSadaf Ebrahimi            "$P_SRV groups=secp256r1 auth_mode=required" \
8453*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
8454*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key crt_file=data_files/server5.crt  \
8455*62c56f98SSadaf Ebrahimi             debug_level=1 ec_max_ops=0" \
8456*62c56f98SSadaf Ebrahimi            0 \
8457*62c56f98SSadaf Ebrahimi            -C "x509_verify_cert.*4b00" \
8458*62c56f98SSadaf Ebrahimi            -C "mbedtls_pk_verify.*4b00" \
8459*62c56f98SSadaf Ebrahimi            -C "mbedtls_ecdh_make_public.*4b00" \
8460*62c56f98SSadaf Ebrahimi            -C "mbedtls_pk_sign.*4b00"
8461*62c56f98SSadaf Ebrahimi
8462*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_RESTARTABLE
8463*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
8464*62c56f98SSadaf Ebrahimirun_test    "EC restart: TLS, max_ops=65535" \
8465*62c56f98SSadaf Ebrahimi            "$P_SRV groups=secp256r1 auth_mode=required" \
8466*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
8467*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key crt_file=data_files/server5.crt  \
8468*62c56f98SSadaf Ebrahimi             debug_level=1 ec_max_ops=65535" \
8469*62c56f98SSadaf Ebrahimi            0 \
8470*62c56f98SSadaf Ebrahimi            -C "x509_verify_cert.*4b00" \
8471*62c56f98SSadaf Ebrahimi            -C "mbedtls_pk_verify.*4b00" \
8472*62c56f98SSadaf Ebrahimi            -C "mbedtls_ecdh_make_public.*4b00" \
8473*62c56f98SSadaf Ebrahimi            -C "mbedtls_pk_sign.*4b00"
8474*62c56f98SSadaf Ebrahimi
8475*62c56f98SSadaf Ebrahimi# With USE_PSA disabled we expect full restartable behaviour.
8476*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_RESTARTABLE
8477*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
8478*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_USE_PSA_CRYPTO
8479*62c56f98SSadaf Ebrahimirun_test    "EC restart: TLS, max_ops=1000 (no USE_PSA)" \
8480*62c56f98SSadaf Ebrahimi            "$P_SRV groups=secp256r1 auth_mode=required" \
8481*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
8482*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key crt_file=data_files/server5.crt  \
8483*62c56f98SSadaf Ebrahimi             debug_level=1 ec_max_ops=1000" \
8484*62c56f98SSadaf Ebrahimi            0 \
8485*62c56f98SSadaf Ebrahimi            -c "x509_verify_cert.*4b00" \
8486*62c56f98SSadaf Ebrahimi            -c "mbedtls_pk_verify.*4b00" \
8487*62c56f98SSadaf Ebrahimi            -c "mbedtls_ecdh_make_public.*4b00" \
8488*62c56f98SSadaf Ebrahimi            -c "mbedtls_pk_sign.*4b00"
8489*62c56f98SSadaf Ebrahimi
8490*62c56f98SSadaf Ebrahimi# With USE_PSA enabled we expect only partial restartable behaviour:
8491*62c56f98SSadaf Ebrahimi# everything except ECDH (where TLS calls PSA directly).
8492*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_RESTARTABLE
8493*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
8494*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
8495*62c56f98SSadaf Ebrahimirun_test    "EC restart: TLS, max_ops=1000 (USE_PSA)" \
8496*62c56f98SSadaf Ebrahimi            "$P_SRV groups=secp256r1 auth_mode=required" \
8497*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
8498*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key crt_file=data_files/server5.crt  \
8499*62c56f98SSadaf Ebrahimi             debug_level=1 ec_max_ops=1000" \
8500*62c56f98SSadaf Ebrahimi            0 \
8501*62c56f98SSadaf Ebrahimi            -c "x509_verify_cert.*4b00" \
8502*62c56f98SSadaf Ebrahimi            -c "mbedtls_pk_verify.*4b00" \
8503*62c56f98SSadaf Ebrahimi            -C "mbedtls_ecdh_make_public.*4b00" \
8504*62c56f98SSadaf Ebrahimi            -c "mbedtls_pk_sign.*4b00"
8505*62c56f98SSadaf Ebrahimi
8506*62c56f98SSadaf Ebrahimi# This works the same with & without USE_PSA as we never get to ECDH:
8507*62c56f98SSadaf Ebrahimi# we abort as soon as we determined the cert is bad.
8508*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_RESTARTABLE
8509*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
8510*62c56f98SSadaf Ebrahimirun_test    "EC restart: TLS, max_ops=1000, badsign" \
8511*62c56f98SSadaf Ebrahimi            "$P_SRV groups=secp256r1 auth_mode=required \
8512*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5-badsign.crt \
8513*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
8514*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
8515*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key crt_file=data_files/server5.crt  \
8516*62c56f98SSadaf Ebrahimi             debug_level=1 ec_max_ops=1000" \
8517*62c56f98SSadaf Ebrahimi            1 \
8518*62c56f98SSadaf Ebrahimi            -c "x509_verify_cert.*4b00" \
8519*62c56f98SSadaf Ebrahimi            -C "mbedtls_pk_verify.*4b00" \
8520*62c56f98SSadaf Ebrahimi            -C "mbedtls_ecdh_make_public.*4b00" \
8521*62c56f98SSadaf Ebrahimi            -C "mbedtls_pk_sign.*4b00" \
8522*62c56f98SSadaf Ebrahimi            -c "! The certificate is not correctly signed by the trusted CA" \
8523*62c56f98SSadaf Ebrahimi            -c "! mbedtls_ssl_handshake returned" \
8524*62c56f98SSadaf Ebrahimi            -c "X509 - Certificate verification failed"
8525*62c56f98SSadaf Ebrahimi
8526*62c56f98SSadaf Ebrahimi# With USE_PSA disabled we expect full restartable behaviour.
8527*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_RESTARTABLE
8528*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
8529*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_USE_PSA_CRYPTO
8530*62c56f98SSadaf Ebrahimirun_test    "EC restart: TLS, max_ops=1000, auth_mode=optional badsign (no USE_PSA)" \
8531*62c56f98SSadaf Ebrahimi            "$P_SRV groups=secp256r1 auth_mode=required \
8532*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5-badsign.crt \
8533*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
8534*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
8535*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key crt_file=data_files/server5.crt  \
8536*62c56f98SSadaf Ebrahimi             debug_level=1 ec_max_ops=1000 auth_mode=optional" \
8537*62c56f98SSadaf Ebrahimi            0 \
8538*62c56f98SSadaf Ebrahimi            -c "x509_verify_cert.*4b00" \
8539*62c56f98SSadaf Ebrahimi            -c "mbedtls_pk_verify.*4b00" \
8540*62c56f98SSadaf Ebrahimi            -c "mbedtls_ecdh_make_public.*4b00" \
8541*62c56f98SSadaf Ebrahimi            -c "mbedtls_pk_sign.*4b00" \
8542*62c56f98SSadaf Ebrahimi            -c "! The certificate is not correctly signed by the trusted CA" \
8543*62c56f98SSadaf Ebrahimi            -C "! mbedtls_ssl_handshake returned" \
8544*62c56f98SSadaf Ebrahimi            -C "X509 - Certificate verification failed"
8545*62c56f98SSadaf Ebrahimi
8546*62c56f98SSadaf Ebrahimi# With USE_PSA enabled we expect only partial restartable behaviour:
8547*62c56f98SSadaf Ebrahimi# everything except ECDH (where TLS calls PSA directly).
8548*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_RESTARTABLE
8549*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
8550*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
8551*62c56f98SSadaf Ebrahimirun_test    "EC restart: TLS, max_ops=1000, auth_mode=optional badsign (USE_PSA)" \
8552*62c56f98SSadaf Ebrahimi            "$P_SRV groups=secp256r1 auth_mode=required \
8553*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5-badsign.crt \
8554*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
8555*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
8556*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key crt_file=data_files/server5.crt  \
8557*62c56f98SSadaf Ebrahimi             debug_level=1 ec_max_ops=1000 auth_mode=optional" \
8558*62c56f98SSadaf Ebrahimi            0 \
8559*62c56f98SSadaf Ebrahimi            -c "x509_verify_cert.*4b00" \
8560*62c56f98SSadaf Ebrahimi            -c "mbedtls_pk_verify.*4b00" \
8561*62c56f98SSadaf Ebrahimi            -C "mbedtls_ecdh_make_public.*4b00" \
8562*62c56f98SSadaf Ebrahimi            -c "mbedtls_pk_sign.*4b00" \
8563*62c56f98SSadaf Ebrahimi            -c "! The certificate is not correctly signed by the trusted CA" \
8564*62c56f98SSadaf Ebrahimi            -C "! mbedtls_ssl_handshake returned" \
8565*62c56f98SSadaf Ebrahimi            -C "X509 - Certificate verification failed"
8566*62c56f98SSadaf Ebrahimi
8567*62c56f98SSadaf Ebrahimi# With USE_PSA disabled we expect full restartable behaviour.
8568*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_RESTARTABLE
8569*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
8570*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_USE_PSA_CRYPTO
8571*62c56f98SSadaf Ebrahimirun_test    "EC restart: TLS, max_ops=1000, auth_mode=none badsign (no USE_PSA)" \
8572*62c56f98SSadaf Ebrahimi            "$P_SRV groups=secp256r1 auth_mode=required \
8573*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5-badsign.crt \
8574*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
8575*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
8576*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key crt_file=data_files/server5.crt  \
8577*62c56f98SSadaf Ebrahimi             debug_level=1 ec_max_ops=1000 auth_mode=none" \
8578*62c56f98SSadaf Ebrahimi            0 \
8579*62c56f98SSadaf Ebrahimi            -C "x509_verify_cert.*4b00" \
8580*62c56f98SSadaf Ebrahimi            -c "mbedtls_pk_verify.*4b00" \
8581*62c56f98SSadaf Ebrahimi            -c "mbedtls_ecdh_make_public.*4b00" \
8582*62c56f98SSadaf Ebrahimi            -c "mbedtls_pk_sign.*4b00" \
8583*62c56f98SSadaf Ebrahimi            -C "! The certificate is not correctly signed by the trusted CA" \
8584*62c56f98SSadaf Ebrahimi            -C "! mbedtls_ssl_handshake returned" \
8585*62c56f98SSadaf Ebrahimi            -C "X509 - Certificate verification failed"
8586*62c56f98SSadaf Ebrahimi
8587*62c56f98SSadaf Ebrahimi# With USE_PSA enabled we expect only partial restartable behaviour:
8588*62c56f98SSadaf Ebrahimi# everything except ECDH (where TLS calls PSA directly).
8589*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_RESTARTABLE
8590*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
8591*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
8592*62c56f98SSadaf Ebrahimirun_test    "EC restart: TLS, max_ops=1000, auth_mode=none badsign (USE_PSA)" \
8593*62c56f98SSadaf Ebrahimi            "$P_SRV groups=secp256r1 auth_mode=required \
8594*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5-badsign.crt \
8595*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key" \
8596*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
8597*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key crt_file=data_files/server5.crt  \
8598*62c56f98SSadaf Ebrahimi             debug_level=1 ec_max_ops=1000 auth_mode=none" \
8599*62c56f98SSadaf Ebrahimi            0 \
8600*62c56f98SSadaf Ebrahimi            -C "x509_verify_cert.*4b00" \
8601*62c56f98SSadaf Ebrahimi            -c "mbedtls_pk_verify.*4b00" \
8602*62c56f98SSadaf Ebrahimi            -C "mbedtls_ecdh_make_public.*4b00" \
8603*62c56f98SSadaf Ebrahimi            -c "mbedtls_pk_sign.*4b00" \
8604*62c56f98SSadaf Ebrahimi            -C "! The certificate is not correctly signed by the trusted CA" \
8605*62c56f98SSadaf Ebrahimi            -C "! mbedtls_ssl_handshake returned" \
8606*62c56f98SSadaf Ebrahimi            -C "X509 - Certificate verification failed"
8607*62c56f98SSadaf Ebrahimi
8608*62c56f98SSadaf Ebrahimi# With USE_PSA disabled we expect full restartable behaviour.
8609*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_RESTARTABLE
8610*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
8611*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_USE_PSA_CRYPTO
8612*62c56f98SSadaf Ebrahimirun_test    "EC restart: DTLS, max_ops=1000 (no USE_PSA)" \
8613*62c56f98SSadaf Ebrahimi            "$P_SRV groups=secp256r1 auth_mode=required dtls=1" \
8614*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
8615*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key crt_file=data_files/server5.crt  \
8616*62c56f98SSadaf Ebrahimi             dtls=1 debug_level=1 ec_max_ops=1000" \
8617*62c56f98SSadaf Ebrahimi            0 \
8618*62c56f98SSadaf Ebrahimi            -c "x509_verify_cert.*4b00" \
8619*62c56f98SSadaf Ebrahimi            -c "mbedtls_pk_verify.*4b00" \
8620*62c56f98SSadaf Ebrahimi            -c "mbedtls_ecdh_make_public.*4b00" \
8621*62c56f98SSadaf Ebrahimi            -c "mbedtls_pk_sign.*4b00"
8622*62c56f98SSadaf Ebrahimi
8623*62c56f98SSadaf Ebrahimi# With USE_PSA enabled we expect only partial restartable behaviour:
8624*62c56f98SSadaf Ebrahimi# everything except ECDH (where TLS calls PSA directly).
8625*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_RESTARTABLE
8626*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
8627*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
8628*62c56f98SSadaf Ebrahimirun_test    "EC restart: DTLS, max_ops=1000 (USE_PSA)" \
8629*62c56f98SSadaf Ebrahimi            "$P_SRV groups=secp256r1 auth_mode=required dtls=1" \
8630*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
8631*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key crt_file=data_files/server5.crt  \
8632*62c56f98SSadaf Ebrahimi             dtls=1 debug_level=1 ec_max_ops=1000" \
8633*62c56f98SSadaf Ebrahimi            0 \
8634*62c56f98SSadaf Ebrahimi            -c "x509_verify_cert.*4b00" \
8635*62c56f98SSadaf Ebrahimi            -c "mbedtls_pk_verify.*4b00" \
8636*62c56f98SSadaf Ebrahimi            -C "mbedtls_ecdh_make_public.*4b00" \
8637*62c56f98SSadaf Ebrahimi            -c "mbedtls_pk_sign.*4b00"
8638*62c56f98SSadaf Ebrahimi
8639*62c56f98SSadaf Ebrahimi# With USE_PSA disabled we expect full restartable behaviour.
8640*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_RESTARTABLE
8641*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
8642*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_USE_PSA_CRYPTO
8643*62c56f98SSadaf Ebrahimirun_test    "EC restart: TLS, max_ops=1000 no client auth (no USE_PSA)" \
8644*62c56f98SSadaf Ebrahimi            "$P_SRV groups=secp256r1" \
8645*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
8646*62c56f98SSadaf Ebrahimi             debug_level=1 ec_max_ops=1000" \
8647*62c56f98SSadaf Ebrahimi            0 \
8648*62c56f98SSadaf Ebrahimi            -c "x509_verify_cert.*4b00" \
8649*62c56f98SSadaf Ebrahimi            -c "mbedtls_pk_verify.*4b00" \
8650*62c56f98SSadaf Ebrahimi            -c "mbedtls_ecdh_make_public.*4b00" \
8651*62c56f98SSadaf Ebrahimi            -C "mbedtls_pk_sign.*4b00"
8652*62c56f98SSadaf Ebrahimi
8653*62c56f98SSadaf Ebrahimi
8654*62c56f98SSadaf Ebrahimi# With USE_PSA enabled we expect only partial restartable behaviour:
8655*62c56f98SSadaf Ebrahimi# everything except ECDH (where TLS calls PSA directly).
8656*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_RESTARTABLE
8657*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
8658*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
8659*62c56f98SSadaf Ebrahimirun_test    "EC restart: TLS, max_ops=1000 no client auth (USE_PSA)" \
8660*62c56f98SSadaf Ebrahimi            "$P_SRV groups=secp256r1" \
8661*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
8662*62c56f98SSadaf Ebrahimi             debug_level=1 ec_max_ops=1000" \
8663*62c56f98SSadaf Ebrahimi            0 \
8664*62c56f98SSadaf Ebrahimi            -c "x509_verify_cert.*4b00" \
8665*62c56f98SSadaf Ebrahimi            -c "mbedtls_pk_verify.*4b00" \
8666*62c56f98SSadaf Ebrahimi            -C "mbedtls_ecdh_make_public.*4b00" \
8667*62c56f98SSadaf Ebrahimi            -C "mbedtls_pk_sign.*4b00"
8668*62c56f98SSadaf Ebrahimi
8669*62c56f98SSadaf Ebrahimi# Restartable is only for ECDHE-ECDSA, with another ciphersuite we expect no
8670*62c56f98SSadaf Ebrahimi# restartable behaviour at all (not even client auth).
8671*62c56f98SSadaf Ebrahimi# This is the same as "EC restart: TLS, max_ops=1000" except with ECDHE-RSA,
8672*62c56f98SSadaf Ebrahimi# and all 4 assertions negated.
8673*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_RESTARTABLE
8674*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_ECP_DP_SECP256R1_ENABLED
8675*62c56f98SSadaf Ebrahimirun_test    "EC restart: TLS, max_ops=1000, ECDHE-RSA" \
8676*62c56f98SSadaf Ebrahimi            "$P_SRV groups=secp256r1 auth_mode=required" \
8677*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 \
8678*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key crt_file=data_files/server5.crt  \
8679*62c56f98SSadaf Ebrahimi             debug_level=1 ec_max_ops=1000" \
8680*62c56f98SSadaf Ebrahimi            0 \
8681*62c56f98SSadaf Ebrahimi            -C "x509_verify_cert.*4b00" \
8682*62c56f98SSadaf Ebrahimi            -C "mbedtls_pk_verify.*4b00" \
8683*62c56f98SSadaf Ebrahimi            -C "mbedtls_ecdh_make_public.*4b00" \
8684*62c56f98SSadaf Ebrahimi            -C "mbedtls_pk_sign.*4b00"
8685*62c56f98SSadaf Ebrahimi
8686*62c56f98SSadaf Ebrahimi# Tests of asynchronous private key support in SSL
8687*62c56f98SSadaf Ebrahimi
8688*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8689*62c56f98SSadaf Ebrahimirun_test    "SSL async private: sign, delay=0" \
8690*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 \
8691*62c56f98SSadaf Ebrahimi             async_operations=s async_private_delay1=0 async_private_delay2=0" \
8692*62c56f98SSadaf Ebrahimi            "$P_CLI" \
8693*62c56f98SSadaf Ebrahimi            0 \
8694*62c56f98SSadaf Ebrahimi            -s "Async sign callback: using key slot " \
8695*62c56f98SSadaf Ebrahimi            -s "Async resume (slot [0-9]): sign done, status=0"
8696*62c56f98SSadaf Ebrahimi
8697*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8698*62c56f98SSadaf Ebrahimirun_test    "SSL async private: sign, delay=1" \
8699*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 \
8700*62c56f98SSadaf Ebrahimi             async_operations=s async_private_delay1=1 async_private_delay2=1" \
8701*62c56f98SSadaf Ebrahimi            "$P_CLI" \
8702*62c56f98SSadaf Ebrahimi            0 \
8703*62c56f98SSadaf Ebrahimi            -s "Async sign callback: using key slot " \
8704*62c56f98SSadaf Ebrahimi            -s "Async resume (slot [0-9]): call 0 more times." \
8705*62c56f98SSadaf Ebrahimi            -s "Async resume (slot [0-9]): sign done, status=0"
8706*62c56f98SSadaf Ebrahimi
8707*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8708*62c56f98SSadaf Ebrahimirun_test    "SSL async private: sign, delay=2" \
8709*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 \
8710*62c56f98SSadaf Ebrahimi             async_operations=s async_private_delay1=2 async_private_delay2=2" \
8711*62c56f98SSadaf Ebrahimi            "$P_CLI" \
8712*62c56f98SSadaf Ebrahimi            0 \
8713*62c56f98SSadaf Ebrahimi            -s "Async sign callback: using key slot " \
8714*62c56f98SSadaf Ebrahimi            -U "Async sign callback: using key slot " \
8715*62c56f98SSadaf Ebrahimi            -s "Async resume (slot [0-9]): call 1 more times." \
8716*62c56f98SSadaf Ebrahimi            -s "Async resume (slot [0-9]): call 0 more times." \
8717*62c56f98SSadaf Ebrahimi            -s "Async resume (slot [0-9]): sign done, status=0"
8718*62c56f98SSadaf Ebrahimi
8719*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8720*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_X509_REMOVE_INFO
8721*62c56f98SSadaf Ebrahimirun_test    "SSL async private: sign, SNI" \
8722*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 debug_level=3 \
8723*62c56f98SSadaf Ebrahimi             async_operations=s async_private_delay1=0 async_private_delay2=0 \
8724*62c56f98SSadaf Ebrahimi             crt_file=data_files/server5.crt key_file=data_files/server5.key \
8725*62c56f98SSadaf Ebrahimi             sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
8726*62c56f98SSadaf Ebrahimi            "$P_CLI server_name=polarssl.example" \
8727*62c56f98SSadaf Ebrahimi            0 \
8728*62c56f98SSadaf Ebrahimi            -s "Async sign callback: using key slot " \
8729*62c56f98SSadaf Ebrahimi            -s "Async resume (slot [0-9]): sign done, status=0" \
8730*62c56f98SSadaf Ebrahimi            -s "parse ServerName extension" \
8731*62c56f98SSadaf Ebrahimi            -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \
8732*62c56f98SSadaf Ebrahimi            -c "subject name *: C=NL, O=PolarSSL, CN=polarssl.example"
8733*62c56f98SSadaf Ebrahimi
8734*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8735*62c56f98SSadaf Ebrahimirun_test    "SSL async private: decrypt, delay=0" \
8736*62c56f98SSadaf Ebrahimi            "$P_SRV \
8737*62c56f98SSadaf Ebrahimi             async_operations=d async_private_delay1=0 async_private_delay2=0" \
8738*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
8739*62c56f98SSadaf Ebrahimi            0 \
8740*62c56f98SSadaf Ebrahimi            -s "Async decrypt callback: using key slot " \
8741*62c56f98SSadaf Ebrahimi            -s "Async resume (slot [0-9]): decrypt done, status=0"
8742*62c56f98SSadaf Ebrahimi
8743*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8744*62c56f98SSadaf Ebrahimirun_test    "SSL async private: decrypt, delay=1" \
8745*62c56f98SSadaf Ebrahimi            "$P_SRV \
8746*62c56f98SSadaf Ebrahimi             async_operations=d async_private_delay1=1 async_private_delay2=1" \
8747*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
8748*62c56f98SSadaf Ebrahimi            0 \
8749*62c56f98SSadaf Ebrahimi            -s "Async decrypt callback: using key slot " \
8750*62c56f98SSadaf Ebrahimi            -s "Async resume (slot [0-9]): call 0 more times." \
8751*62c56f98SSadaf Ebrahimi            -s "Async resume (slot [0-9]): decrypt done, status=0"
8752*62c56f98SSadaf Ebrahimi
8753*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8754*62c56f98SSadaf Ebrahimirun_test    "SSL async private: decrypt RSA-PSK, delay=0" \
8755*62c56f98SSadaf Ebrahimi            "$P_SRV psk=abc123 \
8756*62c56f98SSadaf Ebrahimi             async_operations=d async_private_delay1=0 async_private_delay2=0" \
8757*62c56f98SSadaf Ebrahimi            "$P_CLI psk=abc123 \
8758*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA256" \
8759*62c56f98SSadaf Ebrahimi            0 \
8760*62c56f98SSadaf Ebrahimi            -s "Async decrypt callback: using key slot " \
8761*62c56f98SSadaf Ebrahimi            -s "Async resume (slot [0-9]): decrypt done, status=0"
8762*62c56f98SSadaf Ebrahimi
8763*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8764*62c56f98SSadaf Ebrahimirun_test    "SSL async private: decrypt RSA-PSK, delay=1" \
8765*62c56f98SSadaf Ebrahimi            "$P_SRV psk=abc123 \
8766*62c56f98SSadaf Ebrahimi             async_operations=d async_private_delay1=1 async_private_delay2=1" \
8767*62c56f98SSadaf Ebrahimi            "$P_CLI psk=abc123 \
8768*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA256" \
8769*62c56f98SSadaf Ebrahimi            0 \
8770*62c56f98SSadaf Ebrahimi            -s "Async decrypt callback: using key slot " \
8771*62c56f98SSadaf Ebrahimi            -s "Async resume (slot [0-9]): call 0 more times." \
8772*62c56f98SSadaf Ebrahimi            -s "Async resume (slot [0-9]): decrypt done, status=0"
8773*62c56f98SSadaf Ebrahimi
8774*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8775*62c56f98SSadaf Ebrahimirun_test    "SSL async private: sign callback not present" \
8776*62c56f98SSadaf Ebrahimi            "$P_SRV \
8777*62c56f98SSadaf Ebrahimi             async_operations=d async_private_delay1=1 async_private_delay2=1" \
8778*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12; [ \$? -eq 1 ] &&
8779*62c56f98SSadaf Ebrahimi             $P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
8780*62c56f98SSadaf Ebrahimi            0 \
8781*62c56f98SSadaf Ebrahimi            -S "Async sign callback" \
8782*62c56f98SSadaf Ebrahimi            -s "! mbedtls_ssl_handshake returned" \
8783*62c56f98SSadaf Ebrahimi            -s "The own private key or pre-shared key is not set, but needed" \
8784*62c56f98SSadaf Ebrahimi            -s "Async resume (slot [0-9]): decrypt done, status=0" \
8785*62c56f98SSadaf Ebrahimi            -s "Successful connection"
8786*62c56f98SSadaf Ebrahimi
8787*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8788*62c56f98SSadaf Ebrahimirun_test    "SSL async private: decrypt callback not present" \
8789*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=1 \
8790*62c56f98SSadaf Ebrahimi             async_operations=s async_private_delay1=1 async_private_delay2=1" \
8791*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA;
8792*62c56f98SSadaf Ebrahimi             [ \$? -eq 1 ] && $P_CLI force_version=tls12" \
8793*62c56f98SSadaf Ebrahimi            0 \
8794*62c56f98SSadaf Ebrahimi            -S "Async decrypt callback" \
8795*62c56f98SSadaf Ebrahimi            -s "! mbedtls_ssl_handshake returned" \
8796*62c56f98SSadaf Ebrahimi            -s "got no RSA private key" \
8797*62c56f98SSadaf Ebrahimi            -s "Async resume (slot [0-9]): sign done, status=0" \
8798*62c56f98SSadaf Ebrahimi            -s "Successful connection"
8799*62c56f98SSadaf Ebrahimi
8800*62c56f98SSadaf Ebrahimi# key1: ECDSA, key2: RSA; use key1 from slot 0
8801*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8802*62c56f98SSadaf Ebrahimirun_test    "SSL async private: slot 0 used with key1" \
8803*62c56f98SSadaf Ebrahimi            "$P_SRV \
8804*62c56f98SSadaf Ebrahimi             async_operations=s async_private_delay1=1 \
8805*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key crt_file=data_files/server5.crt \
8806*62c56f98SSadaf Ebrahimi             key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \
8807*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
8808*62c56f98SSadaf Ebrahimi            0 \
8809*62c56f98SSadaf Ebrahimi            -s "Async sign callback: using key slot 0," \
8810*62c56f98SSadaf Ebrahimi            -s "Async resume (slot 0): call 0 more times." \
8811*62c56f98SSadaf Ebrahimi            -s "Async resume (slot 0): sign done, status=0"
8812*62c56f98SSadaf Ebrahimi
8813*62c56f98SSadaf Ebrahimi# key1: ECDSA, key2: RSA; use key2 from slot 0
8814*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8815*62c56f98SSadaf Ebrahimirun_test    "SSL async private: slot 0 used with key2" \
8816*62c56f98SSadaf Ebrahimi            "$P_SRV \
8817*62c56f98SSadaf Ebrahimi             async_operations=s async_private_delay2=1 \
8818*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key crt_file=data_files/server5.crt \
8819*62c56f98SSadaf Ebrahimi             key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \
8820*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \
8821*62c56f98SSadaf Ebrahimi            0 \
8822*62c56f98SSadaf Ebrahimi            -s "Async sign callback: using key slot 0," \
8823*62c56f98SSadaf Ebrahimi            -s "Async resume (slot 0): call 0 more times." \
8824*62c56f98SSadaf Ebrahimi            -s "Async resume (slot 0): sign done, status=0"
8825*62c56f98SSadaf Ebrahimi
8826*62c56f98SSadaf Ebrahimi# key1: ECDSA, key2: RSA; use key2 from slot 1
8827*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8828*62c56f98SSadaf Ebrahimirun_test    "SSL async private: slot 1 used with key2" \
8829*62c56f98SSadaf Ebrahimi            "$P_SRV \
8830*62c56f98SSadaf Ebrahimi             async_operations=s async_private_delay1=1 async_private_delay2=1 \
8831*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key crt_file=data_files/server5.crt \
8832*62c56f98SSadaf Ebrahimi             key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \
8833*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \
8834*62c56f98SSadaf Ebrahimi            0 \
8835*62c56f98SSadaf Ebrahimi            -s "Async sign callback: using key slot 1," \
8836*62c56f98SSadaf Ebrahimi            -s "Async resume (slot 1): call 0 more times." \
8837*62c56f98SSadaf Ebrahimi            -s "Async resume (slot 1): sign done, status=0"
8838*62c56f98SSadaf Ebrahimi
8839*62c56f98SSadaf Ebrahimi# key1: ECDSA, key2: RSA; use key2 directly
8840*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8841*62c56f98SSadaf Ebrahimirun_test    "SSL async private: fall back to transparent key" \
8842*62c56f98SSadaf Ebrahimi            "$P_SRV \
8843*62c56f98SSadaf Ebrahimi             async_operations=s async_private_delay1=1 \
8844*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key crt_file=data_files/server5.crt \
8845*62c56f98SSadaf Ebrahimi             key_file2=data_files/server2.key crt_file2=data_files/server2.crt " \
8846*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \
8847*62c56f98SSadaf Ebrahimi            0 \
8848*62c56f98SSadaf Ebrahimi            -s "Async sign callback: no key matches this certificate."
8849*62c56f98SSadaf Ebrahimi
8850*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8851*62c56f98SSadaf Ebrahimirun_test    "SSL async private: sign, error in start" \
8852*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 \
8853*62c56f98SSadaf Ebrahimi             async_operations=s async_private_delay1=1 async_private_delay2=1 \
8854*62c56f98SSadaf Ebrahimi             async_private_error=1" \
8855*62c56f98SSadaf Ebrahimi            "$P_CLI" \
8856*62c56f98SSadaf Ebrahimi            1 \
8857*62c56f98SSadaf Ebrahimi            -s "Async sign callback: injected error" \
8858*62c56f98SSadaf Ebrahimi            -S "Async resume" \
8859*62c56f98SSadaf Ebrahimi            -S "Async cancel" \
8860*62c56f98SSadaf Ebrahimi            -s "! mbedtls_ssl_handshake returned"
8861*62c56f98SSadaf Ebrahimi
8862*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8863*62c56f98SSadaf Ebrahimirun_test    "SSL async private: sign, cancel after start" \
8864*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 \
8865*62c56f98SSadaf Ebrahimi             async_operations=s async_private_delay1=1 async_private_delay2=1 \
8866*62c56f98SSadaf Ebrahimi             async_private_error=2" \
8867*62c56f98SSadaf Ebrahimi            "$P_CLI" \
8868*62c56f98SSadaf Ebrahimi            1 \
8869*62c56f98SSadaf Ebrahimi            -s "Async sign callback: using key slot " \
8870*62c56f98SSadaf Ebrahimi            -S "Async resume" \
8871*62c56f98SSadaf Ebrahimi            -s "Async cancel"
8872*62c56f98SSadaf Ebrahimi
8873*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8874*62c56f98SSadaf Ebrahimirun_test    "SSL async private: sign, error in resume" \
8875*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 \
8876*62c56f98SSadaf Ebrahimi             async_operations=s async_private_delay1=1 async_private_delay2=1 \
8877*62c56f98SSadaf Ebrahimi             async_private_error=3" \
8878*62c56f98SSadaf Ebrahimi            "$P_CLI" \
8879*62c56f98SSadaf Ebrahimi            1 \
8880*62c56f98SSadaf Ebrahimi            -s "Async sign callback: using key slot " \
8881*62c56f98SSadaf Ebrahimi            -s "Async resume callback: sign done but injected error" \
8882*62c56f98SSadaf Ebrahimi            -S "Async cancel" \
8883*62c56f98SSadaf Ebrahimi            -s "! mbedtls_ssl_handshake returned"
8884*62c56f98SSadaf Ebrahimi
8885*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8886*62c56f98SSadaf Ebrahimirun_test    "SSL async private: decrypt, error in start" \
8887*62c56f98SSadaf Ebrahimi            "$P_SRV \
8888*62c56f98SSadaf Ebrahimi             async_operations=d async_private_delay1=1 async_private_delay2=1 \
8889*62c56f98SSadaf Ebrahimi             async_private_error=1" \
8890*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
8891*62c56f98SSadaf Ebrahimi            1 \
8892*62c56f98SSadaf Ebrahimi            -s "Async decrypt callback: injected error" \
8893*62c56f98SSadaf Ebrahimi            -S "Async resume" \
8894*62c56f98SSadaf Ebrahimi            -S "Async cancel" \
8895*62c56f98SSadaf Ebrahimi            -s "! mbedtls_ssl_handshake returned"
8896*62c56f98SSadaf Ebrahimi
8897*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8898*62c56f98SSadaf Ebrahimirun_test    "SSL async private: decrypt, cancel after start" \
8899*62c56f98SSadaf Ebrahimi            "$P_SRV \
8900*62c56f98SSadaf Ebrahimi             async_operations=d async_private_delay1=1 async_private_delay2=1 \
8901*62c56f98SSadaf Ebrahimi             async_private_error=2" \
8902*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
8903*62c56f98SSadaf Ebrahimi            1 \
8904*62c56f98SSadaf Ebrahimi            -s "Async decrypt callback: using key slot " \
8905*62c56f98SSadaf Ebrahimi            -S "Async resume" \
8906*62c56f98SSadaf Ebrahimi            -s "Async cancel"
8907*62c56f98SSadaf Ebrahimi
8908*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8909*62c56f98SSadaf Ebrahimirun_test    "SSL async private: decrypt, error in resume" \
8910*62c56f98SSadaf Ebrahimi            "$P_SRV \
8911*62c56f98SSadaf Ebrahimi             async_operations=d async_private_delay1=1 async_private_delay2=1 \
8912*62c56f98SSadaf Ebrahimi             async_private_error=3" \
8913*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
8914*62c56f98SSadaf Ebrahimi            1 \
8915*62c56f98SSadaf Ebrahimi            -s "Async decrypt callback: using key slot " \
8916*62c56f98SSadaf Ebrahimi            -s "Async resume callback: decrypt done but injected error" \
8917*62c56f98SSadaf Ebrahimi            -S "Async cancel" \
8918*62c56f98SSadaf Ebrahimi            -s "! mbedtls_ssl_handshake returned"
8919*62c56f98SSadaf Ebrahimi
8920*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8921*62c56f98SSadaf Ebrahimirun_test    "SSL async private: cancel after start then operate correctly" \
8922*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 \
8923*62c56f98SSadaf Ebrahimi             async_operations=s async_private_delay1=1 async_private_delay2=1 \
8924*62c56f98SSadaf Ebrahimi             async_private_error=-2" \
8925*62c56f98SSadaf Ebrahimi            "$P_CLI; [ \$? -eq 1 ] && $P_CLI" \
8926*62c56f98SSadaf Ebrahimi            0 \
8927*62c56f98SSadaf Ebrahimi            -s "Async cancel" \
8928*62c56f98SSadaf Ebrahimi            -s "! mbedtls_ssl_handshake returned" \
8929*62c56f98SSadaf Ebrahimi            -s "Async resume" \
8930*62c56f98SSadaf Ebrahimi            -s "Successful connection"
8931*62c56f98SSadaf Ebrahimi
8932*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8933*62c56f98SSadaf Ebrahimirun_test    "SSL async private: error in resume then operate correctly" \
8934*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 \
8935*62c56f98SSadaf Ebrahimi             async_operations=s async_private_delay1=1 async_private_delay2=1 \
8936*62c56f98SSadaf Ebrahimi             async_private_error=-3" \
8937*62c56f98SSadaf Ebrahimi            "$P_CLI; [ \$? -eq 1 ] && $P_CLI" \
8938*62c56f98SSadaf Ebrahimi            0 \
8939*62c56f98SSadaf Ebrahimi            -s "! mbedtls_ssl_handshake returned" \
8940*62c56f98SSadaf Ebrahimi            -s "Async resume" \
8941*62c56f98SSadaf Ebrahimi            -s "Successful connection"
8942*62c56f98SSadaf Ebrahimi
8943*62c56f98SSadaf Ebrahimi# key1: ECDSA, key2: RSA; use key1 through async, then key2 directly
8944*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8945*62c56f98SSadaf Ebrahimi# Note: the function "detect_required_features()" is not able to detect more than
8946*62c56f98SSadaf Ebrahimi#       one "force_ciphersuite" per client/server and it only picks the 2nd one.
8947*62c56f98SSadaf Ebrahimi#       Therefore the 1st one is added explicitly here
8948*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
8949*62c56f98SSadaf Ebrahimirun_test    "SSL async private: cancel after start then fall back to transparent key" \
8950*62c56f98SSadaf Ebrahimi            "$P_SRV \
8951*62c56f98SSadaf Ebrahimi             async_operations=s async_private_delay1=1 async_private_error=-2 \
8952*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key crt_file=data_files/server5.crt \
8953*62c56f98SSadaf Ebrahimi             key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \
8954*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256;
8955*62c56f98SSadaf Ebrahimi             [ \$? -eq 1 ] &&
8956*62c56f98SSadaf Ebrahimi             $P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \
8957*62c56f98SSadaf Ebrahimi            0 \
8958*62c56f98SSadaf Ebrahimi            -s "Async sign callback: using key slot 0" \
8959*62c56f98SSadaf Ebrahimi            -S "Async resume" \
8960*62c56f98SSadaf Ebrahimi            -s "Async cancel" \
8961*62c56f98SSadaf Ebrahimi            -s "! mbedtls_ssl_handshake returned" \
8962*62c56f98SSadaf Ebrahimi            -s "Async sign callback: no key matches this certificate." \
8963*62c56f98SSadaf Ebrahimi            -s "Successful connection"
8964*62c56f98SSadaf Ebrahimi
8965*62c56f98SSadaf Ebrahimi# key1: ECDSA, key2: RSA; use key1 through async, then key2 directly
8966*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8967*62c56f98SSadaf Ebrahimi# Note: the function "detect_required_features()" is not able to detect more than
8968*62c56f98SSadaf Ebrahimi#       one "force_ciphersuite" per client/server and it only picks the 2nd one.
8969*62c56f98SSadaf Ebrahimi#       Therefore the 1st one is added explicitly here
8970*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
8971*62c56f98SSadaf Ebrahimirun_test    "SSL async private: sign, error in resume then fall back to transparent key" \
8972*62c56f98SSadaf Ebrahimi            "$P_SRV \
8973*62c56f98SSadaf Ebrahimi             async_operations=s async_private_delay1=1 async_private_error=-3 \
8974*62c56f98SSadaf Ebrahimi             key_file=data_files/server5.key crt_file=data_files/server5.crt \
8975*62c56f98SSadaf Ebrahimi             key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \
8976*62c56f98SSadaf Ebrahimi            "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256;
8977*62c56f98SSadaf Ebrahimi             [ \$? -eq 1 ] &&
8978*62c56f98SSadaf Ebrahimi             $P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \
8979*62c56f98SSadaf Ebrahimi            0 \
8980*62c56f98SSadaf Ebrahimi            -s "Async resume" \
8981*62c56f98SSadaf Ebrahimi            -s "! mbedtls_ssl_handshake returned" \
8982*62c56f98SSadaf Ebrahimi            -s "Async sign callback: no key matches this certificate." \
8983*62c56f98SSadaf Ebrahimi            -s "Successful connection"
8984*62c56f98SSadaf Ebrahimi
8985*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8986*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
8987*62c56f98SSadaf Ebrahimirun_test    "SSL async private: renegotiation: client-initiated, sign" \
8988*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 \
8989*62c56f98SSadaf Ebrahimi             async_operations=s async_private_delay1=1 async_private_delay2=1 \
8990*62c56f98SSadaf Ebrahimi             exchanges=2 renegotiation=1" \
8991*62c56f98SSadaf Ebrahimi            "$P_CLI exchanges=2 renegotiation=1 renegotiate=1" \
8992*62c56f98SSadaf Ebrahimi            0 \
8993*62c56f98SSadaf Ebrahimi            -s "Async sign callback: using key slot " \
8994*62c56f98SSadaf Ebrahimi            -s "Async resume (slot [0-9]): sign done, status=0"
8995*62c56f98SSadaf Ebrahimi
8996*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
8997*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
8998*62c56f98SSadaf Ebrahimirun_test    "SSL async private: renegotiation: server-initiated, sign" \
8999*62c56f98SSadaf Ebrahimi            "$P_SRV force_version=tls12 \
9000*62c56f98SSadaf Ebrahimi             async_operations=s async_private_delay1=1 async_private_delay2=1 \
9001*62c56f98SSadaf Ebrahimi             exchanges=2 renegotiation=1 renegotiate=1" \
9002*62c56f98SSadaf Ebrahimi            "$P_CLI exchanges=2 renegotiation=1" \
9003*62c56f98SSadaf Ebrahimi            0 \
9004*62c56f98SSadaf Ebrahimi            -s "Async sign callback: using key slot " \
9005*62c56f98SSadaf Ebrahimi            -s "Async resume (slot [0-9]): sign done, status=0"
9006*62c56f98SSadaf Ebrahimi
9007*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
9008*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
9009*62c56f98SSadaf Ebrahimirun_test    "SSL async private: renegotiation: client-initiated, decrypt" \
9010*62c56f98SSadaf Ebrahimi            "$P_SRV \
9011*62c56f98SSadaf Ebrahimi             async_operations=d async_private_delay1=1 async_private_delay2=1 \
9012*62c56f98SSadaf Ebrahimi             exchanges=2 renegotiation=1" \
9013*62c56f98SSadaf Ebrahimi            "$P_CLI exchanges=2 renegotiation=1 renegotiate=1 \
9014*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
9015*62c56f98SSadaf Ebrahimi            0 \
9016*62c56f98SSadaf Ebrahimi            -s "Async decrypt callback: using key slot " \
9017*62c56f98SSadaf Ebrahimi            -s "Async resume (slot [0-9]): decrypt done, status=0"
9018*62c56f98SSadaf Ebrahimi
9019*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE
9020*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
9021*62c56f98SSadaf Ebrahimirun_test    "SSL async private: renegotiation: server-initiated, decrypt" \
9022*62c56f98SSadaf Ebrahimi            "$P_SRV \
9023*62c56f98SSadaf Ebrahimi             async_operations=d async_private_delay1=1 async_private_delay2=1 \
9024*62c56f98SSadaf Ebrahimi             exchanges=2 renegotiation=1 renegotiate=1" \
9025*62c56f98SSadaf Ebrahimi            "$P_CLI exchanges=2 renegotiation=1 \
9026*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
9027*62c56f98SSadaf Ebrahimi            0 \
9028*62c56f98SSadaf Ebrahimi            -s "Async decrypt callback: using key slot " \
9029*62c56f98SSadaf Ebrahimi            -s "Async resume (slot [0-9]): decrypt done, status=0"
9030*62c56f98SSadaf Ebrahimi
9031*62c56f98SSadaf Ebrahimi# Tests for ECC extensions (rfc 4492)
9032*62c56f98SSadaf Ebrahimi
9033*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_AES_C
9034*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_CIPHER_MODE_CBC
9035*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
9036*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
9037*62c56f98SSadaf Ebrahimirun_test    "Force a non ECC ciphersuite in the client side" \
9038*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3" \
9039*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA256" \
9040*62c56f98SSadaf Ebrahimi            0 \
9041*62c56f98SSadaf Ebrahimi            -C "client hello, adding supported_groups extension" \
9042*62c56f98SSadaf Ebrahimi            -C "client hello, adding supported_point_formats extension" \
9043*62c56f98SSadaf Ebrahimi            -S "found supported elliptic curves extension" \
9044*62c56f98SSadaf Ebrahimi            -S "found supported point formats extension"
9045*62c56f98SSadaf Ebrahimi
9046*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_AES_C
9047*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_CIPHER_MODE_CBC
9048*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
9049*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
9050*62c56f98SSadaf Ebrahimirun_test    "Force a non ECC ciphersuite in the server side" \
9051*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA256" \
9052*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3" \
9053*62c56f98SSadaf Ebrahimi            0 \
9054*62c56f98SSadaf Ebrahimi            -C "found supported_point_formats extension" \
9055*62c56f98SSadaf Ebrahimi            -S "server hello, supported_point_formats extension"
9056*62c56f98SSadaf Ebrahimi
9057*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_AES_C
9058*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_CIPHER_MODE_CBC
9059*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
9060*62c56f98SSadaf Ebrahimirun_test    "Force an ECC ciphersuite in the client side" \
9061*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3" \
9062*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
9063*62c56f98SSadaf Ebrahimi            0 \
9064*62c56f98SSadaf Ebrahimi            -c "client hello, adding supported_groups extension" \
9065*62c56f98SSadaf Ebrahimi            -c "client hello, adding supported_point_formats extension" \
9066*62c56f98SSadaf Ebrahimi            -s "found supported elliptic curves extension" \
9067*62c56f98SSadaf Ebrahimi            -s "found supported point formats extension"
9068*62c56f98SSadaf Ebrahimi
9069*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_AES_C
9070*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_CIPHER_MODE_CBC
9071*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
9072*62c56f98SSadaf Ebrahimirun_test    "Force an ECC ciphersuite in the server side" \
9073*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \
9074*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3" \
9075*62c56f98SSadaf Ebrahimi            0 \
9076*62c56f98SSadaf Ebrahimi            -c "found supported_point_formats extension" \
9077*62c56f98SSadaf Ebrahimi            -s "server hello, supported_point_formats extension"
9078*62c56f98SSadaf Ebrahimi
9079*62c56f98SSadaf Ebrahimi# Tests for DTLS HelloVerifyRequest
9080*62c56f98SSadaf Ebrahimi
9081*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9082*62c56f98SSadaf Ebrahimirun_test    "DTLS cookie: enabled" \
9083*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2" \
9084*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2" \
9085*62c56f98SSadaf Ebrahimi            0 \
9086*62c56f98SSadaf Ebrahimi            -s "cookie verification failed" \
9087*62c56f98SSadaf Ebrahimi            -s "cookie verification passed" \
9088*62c56f98SSadaf Ebrahimi            -S "cookie verification skipped" \
9089*62c56f98SSadaf Ebrahimi            -c "received hello verify request" \
9090*62c56f98SSadaf Ebrahimi            -s "hello verification requested" \
9091*62c56f98SSadaf Ebrahimi            -S "SSL - The requested feature is not available"
9092*62c56f98SSadaf Ebrahimi
9093*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9094*62c56f98SSadaf Ebrahimirun_test    "DTLS cookie: disabled" \
9095*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 cookies=0" \
9096*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2" \
9097*62c56f98SSadaf Ebrahimi            0 \
9098*62c56f98SSadaf Ebrahimi            -S "cookie verification failed" \
9099*62c56f98SSadaf Ebrahimi            -S "cookie verification passed" \
9100*62c56f98SSadaf Ebrahimi            -s "cookie verification skipped" \
9101*62c56f98SSadaf Ebrahimi            -C "received hello verify request" \
9102*62c56f98SSadaf Ebrahimi            -S "hello verification requested" \
9103*62c56f98SSadaf Ebrahimi            -S "SSL - The requested feature is not available"
9104*62c56f98SSadaf Ebrahimi
9105*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9106*62c56f98SSadaf Ebrahimirun_test    "DTLS cookie: default (failing)" \
9107*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 cookies=-1" \
9108*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 hs_timeout=100-400" \
9109*62c56f98SSadaf Ebrahimi            1 \
9110*62c56f98SSadaf Ebrahimi            -s "cookie verification failed" \
9111*62c56f98SSadaf Ebrahimi            -S "cookie verification passed" \
9112*62c56f98SSadaf Ebrahimi            -S "cookie verification skipped" \
9113*62c56f98SSadaf Ebrahimi            -C "received hello verify request" \
9114*62c56f98SSadaf Ebrahimi            -S "hello verification requested" \
9115*62c56f98SSadaf Ebrahimi            -s "SSL - The requested feature is not available"
9116*62c56f98SSadaf Ebrahimi
9117*62c56f98SSadaf Ebrahimirequires_ipv6
9118*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9119*62c56f98SSadaf Ebrahimirun_test    "DTLS cookie: enabled, IPv6" \
9120*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 server_addr=::1" \
9121*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 server_addr=::1" \
9122*62c56f98SSadaf Ebrahimi            0 \
9123*62c56f98SSadaf Ebrahimi            -s "cookie verification failed" \
9124*62c56f98SSadaf Ebrahimi            -s "cookie verification passed" \
9125*62c56f98SSadaf Ebrahimi            -S "cookie verification skipped" \
9126*62c56f98SSadaf Ebrahimi            -c "received hello verify request" \
9127*62c56f98SSadaf Ebrahimi            -s "hello verification requested" \
9128*62c56f98SSadaf Ebrahimi            -S "SSL - The requested feature is not available"
9129*62c56f98SSadaf Ebrahimi
9130*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9131*62c56f98SSadaf Ebrahimirun_test    "DTLS cookie: enabled, nbio" \
9132*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 nbio=2 debug_level=2" \
9133*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 nbio=2 debug_level=2" \
9134*62c56f98SSadaf Ebrahimi            0 \
9135*62c56f98SSadaf Ebrahimi            -s "cookie verification failed" \
9136*62c56f98SSadaf Ebrahimi            -s "cookie verification passed" \
9137*62c56f98SSadaf Ebrahimi            -S "cookie verification skipped" \
9138*62c56f98SSadaf Ebrahimi            -c "received hello verify request" \
9139*62c56f98SSadaf Ebrahimi            -s "hello verification requested" \
9140*62c56f98SSadaf Ebrahimi            -S "SSL - The requested feature is not available"
9141*62c56f98SSadaf Ebrahimi
9142*62c56f98SSadaf Ebrahimi# Tests for client reconnecting from the same port with DTLS
9143*62c56f98SSadaf Ebrahimi
9144*62c56f98SSadaf Ebrahiminot_with_valgrind # spurious resend
9145*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9146*62c56f98SSadaf Ebrahimirun_test    "DTLS client reconnect from same port: reference" \
9147*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 exchanges=2 read_timeout=20000 hs_timeout=10000-20000" \
9148*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=10000-20000" \
9149*62c56f98SSadaf Ebrahimi            0 \
9150*62c56f98SSadaf Ebrahimi            -C "resend" \
9151*62c56f98SSadaf Ebrahimi            -S "The operation timed out" \
9152*62c56f98SSadaf Ebrahimi            -S "Client initiated reconnection from same port"
9153*62c56f98SSadaf Ebrahimi
9154*62c56f98SSadaf Ebrahiminot_with_valgrind # spurious resend
9155*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9156*62c56f98SSadaf Ebrahimirun_test    "DTLS client reconnect from same port: reconnect" \
9157*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 exchanges=2 read_timeout=20000 hs_timeout=10000-20000" \
9158*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=10000-20000 reconnect_hard=1" \
9159*62c56f98SSadaf Ebrahimi            0 \
9160*62c56f98SSadaf Ebrahimi            -C "resend" \
9161*62c56f98SSadaf Ebrahimi            -S "The operation timed out" \
9162*62c56f98SSadaf Ebrahimi            -s "Client initiated reconnection from same port"
9163*62c56f98SSadaf Ebrahimi
9164*62c56f98SSadaf Ebrahiminot_with_valgrind # server/client too slow to respond in time (next test has higher timeouts)
9165*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9166*62c56f98SSadaf Ebrahimirun_test    "DTLS client reconnect from same port: reconnect, nbio, no valgrind" \
9167*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 exchanges=2 read_timeout=1000 nbio=2" \
9168*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=500-1000 reconnect_hard=1" \
9169*62c56f98SSadaf Ebrahimi            0 \
9170*62c56f98SSadaf Ebrahimi            -S "The operation timed out" \
9171*62c56f98SSadaf Ebrahimi            -s "Client initiated reconnection from same port"
9172*62c56f98SSadaf Ebrahimi
9173*62c56f98SSadaf Ebrahimionly_with_valgrind # Only with valgrind, do previous test but with higher read_timeout and hs_timeout
9174*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9175*62c56f98SSadaf Ebrahimirun_test    "DTLS client reconnect from same port: reconnect, nbio, valgrind" \
9176*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 exchanges=2 read_timeout=2000 nbio=2 hs_timeout=1500-6000" \
9177*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=1500-3000 reconnect_hard=1" \
9178*62c56f98SSadaf Ebrahimi            0 \
9179*62c56f98SSadaf Ebrahimi            -S "The operation timed out" \
9180*62c56f98SSadaf Ebrahimi            -s "Client initiated reconnection from same port"
9181*62c56f98SSadaf Ebrahimi
9182*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9183*62c56f98SSadaf Ebrahimirun_test    "DTLS client reconnect from same port: no cookies" \
9184*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 exchanges=2 read_timeout=1000 cookies=0" \
9185*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=500-8000 reconnect_hard=1" \
9186*62c56f98SSadaf Ebrahimi            0 \
9187*62c56f98SSadaf Ebrahimi            -s "The operation timed out" \
9188*62c56f98SSadaf Ebrahimi            -S "Client initiated reconnection from same port"
9189*62c56f98SSadaf Ebrahimi
9190*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9191*62c56f98SSadaf Ebrahimirun_test    "DTLS client reconnect from same port: attacker-injected" \
9192*62c56f98SSadaf Ebrahimi            -p "$P_PXY inject_clihlo=1" \
9193*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 exchanges=2 debug_level=1" \
9194*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 exchanges=2" \
9195*62c56f98SSadaf Ebrahimi            0 \
9196*62c56f98SSadaf Ebrahimi            -s "possible client reconnect from the same port" \
9197*62c56f98SSadaf Ebrahimi            -S "Client initiated reconnection from same port"
9198*62c56f98SSadaf Ebrahimi
9199*62c56f98SSadaf Ebrahimi# Tests for various cases of client authentication with DTLS
9200*62c56f98SSadaf Ebrahimi# (focused on handshake flows and message parsing)
9201*62c56f98SSadaf Ebrahimi
9202*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9203*62c56f98SSadaf Ebrahimirun_test    "DTLS client auth: required" \
9204*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 auth_mode=required" \
9205*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1" \
9206*62c56f98SSadaf Ebrahimi            0 \
9207*62c56f98SSadaf Ebrahimi            -s "Verifying peer X.509 certificate... ok"
9208*62c56f98SSadaf Ebrahimi
9209*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9210*62c56f98SSadaf Ebrahimirun_test    "DTLS client auth: optional, client has no cert" \
9211*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 auth_mode=optional" \
9212*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 crt_file=none key_file=none" \
9213*62c56f98SSadaf Ebrahimi            0 \
9214*62c56f98SSadaf Ebrahimi            -s "! Certificate was missing"
9215*62c56f98SSadaf Ebrahimi
9216*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9217*62c56f98SSadaf Ebrahimirun_test    "DTLS client auth: none, client has no cert" \
9218*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 auth_mode=none" \
9219*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 crt_file=none key_file=none debug_level=2" \
9220*62c56f98SSadaf Ebrahimi            0 \
9221*62c56f98SSadaf Ebrahimi            -c "skip write certificate$" \
9222*62c56f98SSadaf Ebrahimi            -s "! Certificate verification was skipped"
9223*62c56f98SSadaf Ebrahimi
9224*62c56f98SSadaf Ebrahimirun_test    "DTLS wrong PSK: badmac alert" \
9225*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 psk=abc123 force_ciphersuite=TLS-PSK-WITH-AES-128-GCM-SHA256" \
9226*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 psk=abc124" \
9227*62c56f98SSadaf Ebrahimi            1 \
9228*62c56f98SSadaf Ebrahimi            -s "SSL - Verification of the message MAC failed" \
9229*62c56f98SSadaf Ebrahimi            -c "SSL - A fatal alert message was received from our peer"
9230*62c56f98SSadaf Ebrahimi
9231*62c56f98SSadaf Ebrahimi# Tests for receiving fragmented handshake messages with DTLS
9232*62c56f98SSadaf Ebrahimi
9233*62c56f98SSadaf Ebrahimirequires_gnutls
9234*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9235*62c56f98SSadaf Ebrahimirun_test    "DTLS reassembly: no fragmentation (gnutls server)" \
9236*62c56f98SSadaf Ebrahimi            "$G_SRV -u --mtu 2048 -a" \
9237*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2" \
9238*62c56f98SSadaf Ebrahimi            0 \
9239*62c56f98SSadaf Ebrahimi            -C "found fragmented DTLS handshake message" \
9240*62c56f98SSadaf Ebrahimi            -C "error"
9241*62c56f98SSadaf Ebrahimi
9242*62c56f98SSadaf Ebrahimirequires_gnutls
9243*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9244*62c56f98SSadaf Ebrahimirun_test    "DTLS reassembly: some fragmentation (gnutls server)" \
9245*62c56f98SSadaf Ebrahimi            "$G_SRV -u --mtu 512" \
9246*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2" \
9247*62c56f98SSadaf Ebrahimi            0 \
9248*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9249*62c56f98SSadaf Ebrahimi            -C "error"
9250*62c56f98SSadaf Ebrahimi
9251*62c56f98SSadaf Ebrahimirequires_gnutls
9252*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9253*62c56f98SSadaf Ebrahimirun_test    "DTLS reassembly: more fragmentation (gnutls server)" \
9254*62c56f98SSadaf Ebrahimi            "$G_SRV -u --mtu 128" \
9255*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2" \
9256*62c56f98SSadaf Ebrahimi            0 \
9257*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9258*62c56f98SSadaf Ebrahimi            -C "error"
9259*62c56f98SSadaf Ebrahimi
9260*62c56f98SSadaf Ebrahimirequires_gnutls
9261*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9262*62c56f98SSadaf Ebrahimirun_test    "DTLS reassembly: more fragmentation, nbio (gnutls server)" \
9263*62c56f98SSadaf Ebrahimi            "$G_SRV -u --mtu 128" \
9264*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 nbio=2 debug_level=2" \
9265*62c56f98SSadaf Ebrahimi            0 \
9266*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9267*62c56f98SSadaf Ebrahimi            -C "error"
9268*62c56f98SSadaf Ebrahimi
9269*62c56f98SSadaf Ebrahimirequires_gnutls
9270*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
9271*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9272*62c56f98SSadaf Ebrahimirun_test    "DTLS reassembly: fragmentation, renego (gnutls server)" \
9273*62c56f98SSadaf Ebrahimi            "$G_SRV -u --mtu 256" \
9274*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 dtls=1 renegotiation=1 renegotiate=1" \
9275*62c56f98SSadaf Ebrahimi            0 \
9276*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9277*62c56f98SSadaf Ebrahimi            -c "client hello, adding renegotiation extension" \
9278*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
9279*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
9280*62c56f98SSadaf Ebrahimi            -C "mbedtls_ssl_handshake returned" \
9281*62c56f98SSadaf Ebrahimi            -C "error" \
9282*62c56f98SSadaf Ebrahimi            -s "Extra-header:"
9283*62c56f98SSadaf Ebrahimi
9284*62c56f98SSadaf Ebrahimirequires_gnutls
9285*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
9286*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9287*62c56f98SSadaf Ebrahimirun_test    "DTLS reassembly: fragmentation, nbio, renego (gnutls server)" \
9288*62c56f98SSadaf Ebrahimi            "$G_SRV -u --mtu 256" \
9289*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 nbio=2 dtls=1 renegotiation=1 renegotiate=1" \
9290*62c56f98SSadaf Ebrahimi            0 \
9291*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9292*62c56f98SSadaf Ebrahimi            -c "client hello, adding renegotiation extension" \
9293*62c56f98SSadaf Ebrahimi            -c "found renegotiation extension" \
9294*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
9295*62c56f98SSadaf Ebrahimi            -C "mbedtls_ssl_handshake returned" \
9296*62c56f98SSadaf Ebrahimi            -C "error" \
9297*62c56f98SSadaf Ebrahimi            -s "Extra-header:"
9298*62c56f98SSadaf Ebrahimi
9299*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9300*62c56f98SSadaf Ebrahimirun_test    "DTLS reassembly: no fragmentation (openssl server)" \
9301*62c56f98SSadaf Ebrahimi            "$O_SRV -dtls -mtu 2048" \
9302*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2" \
9303*62c56f98SSadaf Ebrahimi            0 \
9304*62c56f98SSadaf Ebrahimi            -C "found fragmented DTLS handshake message" \
9305*62c56f98SSadaf Ebrahimi            -C "error"
9306*62c56f98SSadaf Ebrahimi
9307*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9308*62c56f98SSadaf Ebrahimirun_test    "DTLS reassembly: some fragmentation (openssl server)" \
9309*62c56f98SSadaf Ebrahimi            "$O_SRV -dtls -mtu 256" \
9310*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2" \
9311*62c56f98SSadaf Ebrahimi            0 \
9312*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9313*62c56f98SSadaf Ebrahimi            -C "error"
9314*62c56f98SSadaf Ebrahimi
9315*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9316*62c56f98SSadaf Ebrahimirun_test    "DTLS reassembly: more fragmentation (openssl server)" \
9317*62c56f98SSadaf Ebrahimi            "$O_SRV -dtls -mtu 256" \
9318*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2" \
9319*62c56f98SSadaf Ebrahimi            0 \
9320*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9321*62c56f98SSadaf Ebrahimi            -C "error"
9322*62c56f98SSadaf Ebrahimi
9323*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9324*62c56f98SSadaf Ebrahimirun_test    "DTLS reassembly: fragmentation, nbio (openssl server)" \
9325*62c56f98SSadaf Ebrahimi            "$O_SRV -dtls -mtu 256" \
9326*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 nbio=2 debug_level=2" \
9327*62c56f98SSadaf Ebrahimi            0 \
9328*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9329*62c56f98SSadaf Ebrahimi            -C "error"
9330*62c56f98SSadaf Ebrahimi
9331*62c56f98SSadaf Ebrahimi# Tests for sending fragmented handshake messages with DTLS
9332*62c56f98SSadaf Ebrahimi#
9333*62c56f98SSadaf Ebrahimi# Use client auth when we need the client to send large messages,
9334*62c56f98SSadaf Ebrahimi# and use large cert chains on both sides too (the long chains we have all use
9335*62c56f98SSadaf Ebrahimi# both RSA and ECDSA, but ideally we should have long chains with either).
9336*62c56f98SSadaf Ebrahimi# Sizes reached (UDP payload):
9337*62c56f98SSadaf Ebrahimi# - 2037B for server certificate
9338*62c56f98SSadaf Ebrahimi# - 1542B for client certificate
9339*62c56f98SSadaf Ebrahimi# - 1013B for newsessionticket
9340*62c56f98SSadaf Ebrahimi# - all others below 512B
9341*62c56f98SSadaf Ebrahimi# All those tests assume MAX_CONTENT_LEN is at least 2048
9342*62c56f98SSadaf Ebrahimi
9343*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9344*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9345*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
9346*62c56f98SSadaf Ebrahimirequires_max_content_len 4096
9347*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9348*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: none (for reference)" \
9349*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9350*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9351*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9352*62c56f98SSadaf Ebrahimi             hs_timeout=2500-60000 \
9353*62c56f98SSadaf Ebrahimi             max_frag_len=4096" \
9354*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
9355*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9356*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
9357*62c56f98SSadaf Ebrahimi             hs_timeout=2500-60000 \
9358*62c56f98SSadaf Ebrahimi             max_frag_len=4096" \
9359*62c56f98SSadaf Ebrahimi            0 \
9360*62c56f98SSadaf Ebrahimi            -S "found fragmented DTLS handshake message" \
9361*62c56f98SSadaf Ebrahimi            -C "found fragmented DTLS handshake message" \
9362*62c56f98SSadaf Ebrahimi            -C "error"
9363*62c56f98SSadaf Ebrahimi
9364*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9365*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9366*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
9367*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
9368*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9369*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: server only (max_frag_len)" \
9370*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9371*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9372*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9373*62c56f98SSadaf Ebrahimi             hs_timeout=2500-60000 \
9374*62c56f98SSadaf Ebrahimi             max_frag_len=1024" \
9375*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
9376*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9377*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
9378*62c56f98SSadaf Ebrahimi             hs_timeout=2500-60000 \
9379*62c56f98SSadaf Ebrahimi             max_frag_len=2048" \
9380*62c56f98SSadaf Ebrahimi            0 \
9381*62c56f98SSadaf Ebrahimi            -S "found fragmented DTLS handshake message" \
9382*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9383*62c56f98SSadaf Ebrahimi            -C "error"
9384*62c56f98SSadaf Ebrahimi
9385*62c56f98SSadaf Ebrahimi# With the MFL extension, the server has no way of forcing
9386*62c56f98SSadaf Ebrahimi# the client to not exceed a certain MTU; hence, the following
9387*62c56f98SSadaf Ebrahimi# test can't be replicated with an MTU proxy such as the one
9388*62c56f98SSadaf Ebrahimi# `client-initiated, server only (max_frag_len)` below.
9389*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9390*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9391*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
9392*62c56f98SSadaf Ebrahimirequires_max_content_len 4096
9393*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9394*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: server only (more) (max_frag_len)" \
9395*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9396*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9397*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9398*62c56f98SSadaf Ebrahimi             hs_timeout=2500-60000 \
9399*62c56f98SSadaf Ebrahimi             max_frag_len=512" \
9400*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
9401*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9402*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
9403*62c56f98SSadaf Ebrahimi             hs_timeout=2500-60000 \
9404*62c56f98SSadaf Ebrahimi             max_frag_len=4096" \
9405*62c56f98SSadaf Ebrahimi            0 \
9406*62c56f98SSadaf Ebrahimi            -S "found fragmented DTLS handshake message" \
9407*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9408*62c56f98SSadaf Ebrahimi            -C "error"
9409*62c56f98SSadaf Ebrahimi
9410*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9411*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9412*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
9413*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
9414*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9415*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: client-initiated, server only (max_frag_len)" \
9416*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 auth_mode=none \
9417*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9418*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9419*62c56f98SSadaf Ebrahimi             hs_timeout=2500-60000 \
9420*62c56f98SSadaf Ebrahimi             max_frag_len=2048" \
9421*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
9422*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9423*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
9424*62c56f98SSadaf Ebrahimi             hs_timeout=2500-60000 \
9425*62c56f98SSadaf Ebrahimi             max_frag_len=1024" \
9426*62c56f98SSadaf Ebrahimi             0 \
9427*62c56f98SSadaf Ebrahimi            -S "found fragmented DTLS handshake message" \
9428*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9429*62c56f98SSadaf Ebrahimi            -C "error"
9430*62c56f98SSadaf Ebrahimi
9431*62c56f98SSadaf Ebrahimi# While not required by the standard defining the MFL extension
9432*62c56f98SSadaf Ebrahimi# (according to which it only applies to records, not to datagrams),
9433*62c56f98SSadaf Ebrahimi# Mbed TLS will never send datagrams larger than MFL + { Max record expansion },
9434*62c56f98SSadaf Ebrahimi# as otherwise there wouldn't be any means to communicate MTU restrictions
9435*62c56f98SSadaf Ebrahimi# to the peer.
9436*62c56f98SSadaf Ebrahimi# The next test checks that no datagrams significantly larger than the
9437*62c56f98SSadaf Ebrahimi# negotiated MFL are sent.
9438*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9439*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9440*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
9441*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
9442*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9443*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: client-initiated, server only (max_frag_len), proxy MTU" \
9444*62c56f98SSadaf Ebrahimi            -p "$P_PXY mtu=1110" \
9445*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 auth_mode=none \
9446*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9447*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9448*62c56f98SSadaf Ebrahimi             hs_timeout=2500-60000 \
9449*62c56f98SSadaf Ebrahimi             max_frag_len=2048" \
9450*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
9451*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9452*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
9453*62c56f98SSadaf Ebrahimi             hs_timeout=2500-60000 \
9454*62c56f98SSadaf Ebrahimi             max_frag_len=1024" \
9455*62c56f98SSadaf Ebrahimi            0 \
9456*62c56f98SSadaf Ebrahimi            -S "found fragmented DTLS handshake message" \
9457*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9458*62c56f98SSadaf Ebrahimi            -C "error"
9459*62c56f98SSadaf Ebrahimi
9460*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9461*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9462*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
9463*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
9464*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9465*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: client-initiated, both (max_frag_len)" \
9466*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9467*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9468*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9469*62c56f98SSadaf Ebrahimi             hs_timeout=2500-60000 \
9470*62c56f98SSadaf Ebrahimi             max_frag_len=2048" \
9471*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
9472*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9473*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
9474*62c56f98SSadaf Ebrahimi             hs_timeout=2500-60000 \
9475*62c56f98SSadaf Ebrahimi             max_frag_len=1024" \
9476*62c56f98SSadaf Ebrahimi            0 \
9477*62c56f98SSadaf Ebrahimi            -s "found fragmented DTLS handshake message" \
9478*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9479*62c56f98SSadaf Ebrahimi            -C "error"
9480*62c56f98SSadaf Ebrahimi
9481*62c56f98SSadaf Ebrahimi# While not required by the standard defining the MFL extension
9482*62c56f98SSadaf Ebrahimi# (according to which it only applies to records, not to datagrams),
9483*62c56f98SSadaf Ebrahimi# Mbed TLS will never send datagrams larger than MFL + { Max record expansion },
9484*62c56f98SSadaf Ebrahimi# as otherwise there wouldn't be any means to communicate MTU restrictions
9485*62c56f98SSadaf Ebrahimi# to the peer.
9486*62c56f98SSadaf Ebrahimi# The next test checks that no datagrams significantly larger than the
9487*62c56f98SSadaf Ebrahimi# negotiated MFL are sent.
9488*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9489*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9490*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
9491*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
9492*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9493*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: client-initiated, both (max_frag_len), proxy MTU" \
9494*62c56f98SSadaf Ebrahimi            -p "$P_PXY mtu=1110" \
9495*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9496*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9497*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9498*62c56f98SSadaf Ebrahimi             hs_timeout=2500-60000 \
9499*62c56f98SSadaf Ebrahimi             max_frag_len=2048" \
9500*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
9501*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9502*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
9503*62c56f98SSadaf Ebrahimi             hs_timeout=2500-60000 \
9504*62c56f98SSadaf Ebrahimi             max_frag_len=1024" \
9505*62c56f98SSadaf Ebrahimi            0 \
9506*62c56f98SSadaf Ebrahimi            -s "found fragmented DTLS handshake message" \
9507*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9508*62c56f98SSadaf Ebrahimi            -C "error"
9509*62c56f98SSadaf Ebrahimi
9510*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9511*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9512*62c56f98SSadaf Ebrahimirequires_max_content_len 4096
9513*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9514*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: none (for reference) (MTU)" \
9515*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9516*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9517*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9518*62c56f98SSadaf Ebrahimi             hs_timeout=2500-60000 \
9519*62c56f98SSadaf Ebrahimi             mtu=4096" \
9520*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
9521*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9522*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
9523*62c56f98SSadaf Ebrahimi             hs_timeout=2500-60000 \
9524*62c56f98SSadaf Ebrahimi             mtu=4096" \
9525*62c56f98SSadaf Ebrahimi            0 \
9526*62c56f98SSadaf Ebrahimi            -S "found fragmented DTLS handshake message" \
9527*62c56f98SSadaf Ebrahimi            -C "found fragmented DTLS handshake message" \
9528*62c56f98SSadaf Ebrahimi            -C "error"
9529*62c56f98SSadaf Ebrahimi
9530*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9531*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9532*62c56f98SSadaf Ebrahimirequires_max_content_len 4096
9533*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9534*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: client (MTU)" \
9535*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9536*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9537*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9538*62c56f98SSadaf Ebrahimi             hs_timeout=3500-60000 \
9539*62c56f98SSadaf Ebrahimi             mtu=4096" \
9540*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
9541*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9542*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
9543*62c56f98SSadaf Ebrahimi             hs_timeout=3500-60000 \
9544*62c56f98SSadaf Ebrahimi             mtu=1024" \
9545*62c56f98SSadaf Ebrahimi            0 \
9546*62c56f98SSadaf Ebrahimi            -s "found fragmented DTLS handshake message" \
9547*62c56f98SSadaf Ebrahimi            -C "found fragmented DTLS handshake message" \
9548*62c56f98SSadaf Ebrahimi            -C "error"
9549*62c56f98SSadaf Ebrahimi
9550*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9551*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9552*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
9553*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9554*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: server (MTU)" \
9555*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9556*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9557*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9558*62c56f98SSadaf Ebrahimi             hs_timeout=2500-60000 \
9559*62c56f98SSadaf Ebrahimi             mtu=512" \
9560*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
9561*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9562*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
9563*62c56f98SSadaf Ebrahimi             hs_timeout=2500-60000 \
9564*62c56f98SSadaf Ebrahimi             mtu=2048" \
9565*62c56f98SSadaf Ebrahimi            0 \
9566*62c56f98SSadaf Ebrahimi            -S "found fragmented DTLS handshake message" \
9567*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9568*62c56f98SSadaf Ebrahimi            -C "error"
9569*62c56f98SSadaf Ebrahimi
9570*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9571*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9572*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
9573*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9574*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: both (MTU=1024)" \
9575*62c56f98SSadaf Ebrahimi            -p "$P_PXY mtu=1024" \
9576*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9577*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9578*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9579*62c56f98SSadaf Ebrahimi             hs_timeout=2500-60000 \
9580*62c56f98SSadaf Ebrahimi             mtu=1024" \
9581*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
9582*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9583*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
9584*62c56f98SSadaf Ebrahimi             hs_timeout=2500-60000 \
9585*62c56f98SSadaf Ebrahimi             mtu=1024" \
9586*62c56f98SSadaf Ebrahimi            0 \
9587*62c56f98SSadaf Ebrahimi            -s "found fragmented DTLS handshake message" \
9588*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9589*62c56f98SSadaf Ebrahimi            -C "error"
9590*62c56f98SSadaf Ebrahimi
9591*62c56f98SSadaf Ebrahimi# Forcing ciphersuite for this test to fit the MTU of 512 with full config.
9592*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9593*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9594*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
9595*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_AES_C
9596*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_GCM_C
9597*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
9598*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: both (MTU=512)" \
9599*62c56f98SSadaf Ebrahimi            -p "$P_PXY mtu=512" \
9600*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9601*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9602*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9603*62c56f98SSadaf Ebrahimi             hs_timeout=2500-60000 \
9604*62c56f98SSadaf Ebrahimi             mtu=512" \
9605*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
9606*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9607*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
9608*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
9609*62c56f98SSadaf Ebrahimi             hs_timeout=2500-60000 \
9610*62c56f98SSadaf Ebrahimi             mtu=512" \
9611*62c56f98SSadaf Ebrahimi            0 \
9612*62c56f98SSadaf Ebrahimi            -s "found fragmented DTLS handshake message" \
9613*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9614*62c56f98SSadaf Ebrahimi            -C "error"
9615*62c56f98SSadaf Ebrahimi
9616*62c56f98SSadaf Ebrahimi# Test for automatic MTU reduction on repeated resend.
9617*62c56f98SSadaf Ebrahimi# Forcing ciphersuite for this test to fit the MTU of 508 with full config.
9618*62c56f98SSadaf Ebrahimi# The ratio of max/min timeout should ideally equal 4 to accept two
9619*62c56f98SSadaf Ebrahimi# retransmissions, but in some cases (like both the server and client using
9620*62c56f98SSadaf Ebrahimi# fragmentation and auto-reduction) an extra retransmission might occur,
9621*62c56f98SSadaf Ebrahimi# hence the ratio of 8.
9622*62c56f98SSadaf Ebrahiminot_with_valgrind
9623*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9624*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9625*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_AES_C
9626*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_GCM_C
9627*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
9628*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: proxy MTU: auto-reduction (not valgrind)" \
9629*62c56f98SSadaf Ebrahimi            -p "$P_PXY mtu=508" \
9630*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9631*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9632*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9633*62c56f98SSadaf Ebrahimi             hs_timeout=400-3200" \
9634*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
9635*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9636*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
9637*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
9638*62c56f98SSadaf Ebrahimi             hs_timeout=400-3200" \
9639*62c56f98SSadaf Ebrahimi            0 \
9640*62c56f98SSadaf Ebrahimi            -s "found fragmented DTLS handshake message" \
9641*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9642*62c56f98SSadaf Ebrahimi            -C "error"
9643*62c56f98SSadaf Ebrahimi
9644*62c56f98SSadaf Ebrahimi# Forcing ciphersuite for this test to fit the MTU of 508 with full config.
9645*62c56f98SSadaf Ebrahimionly_with_valgrind
9646*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9647*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9648*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_AES_C
9649*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_GCM_C
9650*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
9651*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: proxy MTU: auto-reduction (with valgrind)" \
9652*62c56f98SSadaf Ebrahimi            -p "$P_PXY mtu=508" \
9653*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9654*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9655*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9656*62c56f98SSadaf Ebrahimi             hs_timeout=250-10000" \
9657*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
9658*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9659*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
9660*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
9661*62c56f98SSadaf Ebrahimi             hs_timeout=250-10000" \
9662*62c56f98SSadaf Ebrahimi            0 \
9663*62c56f98SSadaf Ebrahimi            -s "found fragmented DTLS handshake message" \
9664*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9665*62c56f98SSadaf Ebrahimi            -C "error"
9666*62c56f98SSadaf Ebrahimi
9667*62c56f98SSadaf Ebrahimi# the proxy shouldn't drop or mess up anything, so we shouldn't need to resend
9668*62c56f98SSadaf Ebrahimi# OTOH the client might resend if the server is to slow to reset after sending
9669*62c56f98SSadaf Ebrahimi# a HelloVerifyRequest, so only check for no retransmission server-side
9670*62c56f98SSadaf Ebrahiminot_with_valgrind # spurious autoreduction due to timeout
9671*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9672*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9673*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
9674*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9675*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: proxy MTU, simple handshake (MTU=1024)" \
9676*62c56f98SSadaf Ebrahimi            -p "$P_PXY mtu=1024" \
9677*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9678*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9679*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9680*62c56f98SSadaf Ebrahimi             hs_timeout=10000-60000 \
9681*62c56f98SSadaf Ebrahimi             mtu=1024" \
9682*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
9683*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9684*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
9685*62c56f98SSadaf Ebrahimi             hs_timeout=10000-60000 \
9686*62c56f98SSadaf Ebrahimi             mtu=1024" \
9687*62c56f98SSadaf Ebrahimi            0 \
9688*62c56f98SSadaf Ebrahimi            -S "autoreduction" \
9689*62c56f98SSadaf Ebrahimi            -s "found fragmented DTLS handshake message" \
9690*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9691*62c56f98SSadaf Ebrahimi            -C "error"
9692*62c56f98SSadaf Ebrahimi
9693*62c56f98SSadaf Ebrahimi# Forcing ciphersuite for this test to fit the MTU of 512 with full config.
9694*62c56f98SSadaf Ebrahimi# the proxy shouldn't drop or mess up anything, so we shouldn't need to resend
9695*62c56f98SSadaf Ebrahimi# OTOH the client might resend if the server is to slow to reset after sending
9696*62c56f98SSadaf Ebrahimi# a HelloVerifyRequest, so only check for no retransmission server-side
9697*62c56f98SSadaf Ebrahiminot_with_valgrind # spurious autoreduction due to timeout
9698*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9699*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9700*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_AES_C
9701*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_GCM_C
9702*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
9703*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: proxy MTU, simple handshake (MTU=512)" \
9704*62c56f98SSadaf Ebrahimi            -p "$P_PXY mtu=512" \
9705*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9706*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9707*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9708*62c56f98SSadaf Ebrahimi             hs_timeout=10000-60000 \
9709*62c56f98SSadaf Ebrahimi             mtu=512" \
9710*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
9711*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9712*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
9713*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
9714*62c56f98SSadaf Ebrahimi             hs_timeout=10000-60000 \
9715*62c56f98SSadaf Ebrahimi             mtu=512" \
9716*62c56f98SSadaf Ebrahimi            0 \
9717*62c56f98SSadaf Ebrahimi            -S "autoreduction" \
9718*62c56f98SSadaf Ebrahimi            -s "found fragmented DTLS handshake message" \
9719*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9720*62c56f98SSadaf Ebrahimi            -C "error"
9721*62c56f98SSadaf Ebrahimi
9722*62c56f98SSadaf Ebrahiminot_with_valgrind # spurious autoreduction due to timeout
9723*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9724*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9725*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
9726*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
9727*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: proxy MTU, simple handshake, nbio (MTU=1024)" \
9728*62c56f98SSadaf Ebrahimi            -p "$P_PXY mtu=1024" \
9729*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9730*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9731*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9732*62c56f98SSadaf Ebrahimi             hs_timeout=10000-60000 \
9733*62c56f98SSadaf Ebrahimi             mtu=1024 nbio=2" \
9734*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
9735*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9736*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
9737*62c56f98SSadaf Ebrahimi             hs_timeout=10000-60000 \
9738*62c56f98SSadaf Ebrahimi             mtu=1024 nbio=2" \
9739*62c56f98SSadaf Ebrahimi            0 \
9740*62c56f98SSadaf Ebrahimi            -S "autoreduction" \
9741*62c56f98SSadaf Ebrahimi            -s "found fragmented DTLS handshake message" \
9742*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9743*62c56f98SSadaf Ebrahimi            -C "error"
9744*62c56f98SSadaf Ebrahimi
9745*62c56f98SSadaf Ebrahimi# Forcing ciphersuite for this test to fit the MTU of 512 with full config.
9746*62c56f98SSadaf Ebrahiminot_with_valgrind # spurious autoreduction due to timeout
9747*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9748*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9749*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_AES_C
9750*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_GCM_C
9751*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
9752*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: proxy MTU, simple handshake, nbio (MTU=512)" \
9753*62c56f98SSadaf Ebrahimi            -p "$P_PXY mtu=512" \
9754*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9755*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9756*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9757*62c56f98SSadaf Ebrahimi             hs_timeout=10000-60000 \
9758*62c56f98SSadaf Ebrahimi             mtu=512 nbio=2" \
9759*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
9760*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9761*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
9762*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
9763*62c56f98SSadaf Ebrahimi             hs_timeout=10000-60000 \
9764*62c56f98SSadaf Ebrahimi             mtu=512 nbio=2" \
9765*62c56f98SSadaf Ebrahimi            0 \
9766*62c56f98SSadaf Ebrahimi            -S "autoreduction" \
9767*62c56f98SSadaf Ebrahimi            -s "found fragmented DTLS handshake message" \
9768*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9769*62c56f98SSadaf Ebrahimi            -C "error"
9770*62c56f98SSadaf Ebrahimi
9771*62c56f98SSadaf Ebrahimi# Forcing ciphersuite for this test to fit the MTU of 1450 with full config.
9772*62c56f98SSadaf Ebrahimi# This ensures things still work after session_reset().
9773*62c56f98SSadaf Ebrahimi# It also exercises the "resumed handshake" flow.
9774*62c56f98SSadaf Ebrahimi# Since we don't support reading fragmented ClientHello yet,
9775*62c56f98SSadaf Ebrahimi# up the MTU to 1450 (larger than ClientHello with session ticket,
9776*62c56f98SSadaf Ebrahimi# but still smaller than client's Certificate to ensure fragmentation).
9777*62c56f98SSadaf Ebrahimi# An autoreduction on the client-side might happen if the server is
9778*62c56f98SSadaf Ebrahimi# slow to reset, therefore omitting '-C "autoreduction"' below.
9779*62c56f98SSadaf Ebrahimi# reco_delay avoids races where the client reconnects before the server has
9780*62c56f98SSadaf Ebrahimi# resumed listening, which would result in a spurious autoreduction.
9781*62c56f98SSadaf Ebrahiminot_with_valgrind # spurious autoreduction due to timeout
9782*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9783*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9784*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_AES_C
9785*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_GCM_C
9786*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
9787*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: proxy MTU, resumed handshake" \
9788*62c56f98SSadaf Ebrahimi            -p "$P_PXY mtu=1450" \
9789*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9790*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9791*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9792*62c56f98SSadaf Ebrahimi             hs_timeout=10000-60000 \
9793*62c56f98SSadaf Ebrahimi             mtu=1450" \
9794*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
9795*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9796*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
9797*62c56f98SSadaf Ebrahimi             hs_timeout=10000-60000 \
9798*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
9799*62c56f98SSadaf Ebrahimi             mtu=1450 reconnect=1 skip_close_notify=1 reco_delay=1000" \
9800*62c56f98SSadaf Ebrahimi            0 \
9801*62c56f98SSadaf Ebrahimi            -S "autoreduction" \
9802*62c56f98SSadaf Ebrahimi            -s "found fragmented DTLS handshake message" \
9803*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9804*62c56f98SSadaf Ebrahimi            -C "error"
9805*62c56f98SSadaf Ebrahimi
9806*62c56f98SSadaf Ebrahimi# An autoreduction on the client-side might happen if the server is
9807*62c56f98SSadaf Ebrahimi# slow to reset, therefore omitting '-C "autoreduction"' below.
9808*62c56f98SSadaf Ebrahiminot_with_valgrind # spurious autoreduction due to timeout
9809*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9810*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9811*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
9812*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
9813*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_CHACHAPOLY_C
9814*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
9815*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: proxy MTU, ChachaPoly renego" \
9816*62c56f98SSadaf Ebrahimi            -p "$P_PXY mtu=512" \
9817*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9818*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9819*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9820*62c56f98SSadaf Ebrahimi             exchanges=2 renegotiation=1 \
9821*62c56f98SSadaf Ebrahimi             hs_timeout=10000-60000 \
9822*62c56f98SSadaf Ebrahimi             mtu=512" \
9823*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
9824*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9825*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
9826*62c56f98SSadaf Ebrahimi             exchanges=2 renegotiation=1 renegotiate=1 \
9827*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
9828*62c56f98SSadaf Ebrahimi             hs_timeout=10000-60000 \
9829*62c56f98SSadaf Ebrahimi             mtu=512" \
9830*62c56f98SSadaf Ebrahimi            0 \
9831*62c56f98SSadaf Ebrahimi            -S "autoreduction" \
9832*62c56f98SSadaf Ebrahimi            -s "found fragmented DTLS handshake message" \
9833*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9834*62c56f98SSadaf Ebrahimi            -C "error"
9835*62c56f98SSadaf Ebrahimi
9836*62c56f98SSadaf Ebrahimi# An autoreduction on the client-side might happen if the server is
9837*62c56f98SSadaf Ebrahimi# slow to reset, therefore omitting '-C "autoreduction"' below.
9838*62c56f98SSadaf Ebrahiminot_with_valgrind # spurious autoreduction due to timeout
9839*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9840*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9841*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
9842*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
9843*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_AES_C
9844*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_GCM_C
9845*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
9846*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: proxy MTU, AES-GCM renego" \
9847*62c56f98SSadaf Ebrahimi            -p "$P_PXY mtu=512" \
9848*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9849*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9850*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9851*62c56f98SSadaf Ebrahimi             exchanges=2 renegotiation=1 \
9852*62c56f98SSadaf Ebrahimi             hs_timeout=10000-60000 \
9853*62c56f98SSadaf Ebrahimi             mtu=512" \
9854*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
9855*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9856*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
9857*62c56f98SSadaf Ebrahimi             exchanges=2 renegotiation=1 renegotiate=1 \
9858*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
9859*62c56f98SSadaf Ebrahimi             hs_timeout=10000-60000 \
9860*62c56f98SSadaf Ebrahimi             mtu=512" \
9861*62c56f98SSadaf Ebrahimi            0 \
9862*62c56f98SSadaf Ebrahimi            -S "autoreduction" \
9863*62c56f98SSadaf Ebrahimi            -s "found fragmented DTLS handshake message" \
9864*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9865*62c56f98SSadaf Ebrahimi            -C "error"
9866*62c56f98SSadaf Ebrahimi
9867*62c56f98SSadaf Ebrahimi# An autoreduction on the client-side might happen if the server is
9868*62c56f98SSadaf Ebrahimi# slow to reset, therefore omitting '-C "autoreduction"' below.
9869*62c56f98SSadaf Ebrahiminot_with_valgrind # spurious autoreduction due to timeout
9870*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9871*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9872*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
9873*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
9874*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_AES_C
9875*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_CCM_C
9876*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
9877*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: proxy MTU, AES-CCM renego" \
9878*62c56f98SSadaf Ebrahimi            -p "$P_PXY mtu=1024" \
9879*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9880*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9881*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9882*62c56f98SSadaf Ebrahimi             exchanges=2 renegotiation=1 \
9883*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8 \
9884*62c56f98SSadaf Ebrahimi             hs_timeout=10000-60000 \
9885*62c56f98SSadaf Ebrahimi             mtu=1024" \
9886*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
9887*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9888*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
9889*62c56f98SSadaf Ebrahimi             exchanges=2 renegotiation=1 renegotiate=1 \
9890*62c56f98SSadaf Ebrahimi             hs_timeout=10000-60000 \
9891*62c56f98SSadaf Ebrahimi             mtu=1024" \
9892*62c56f98SSadaf Ebrahimi            0 \
9893*62c56f98SSadaf Ebrahimi            -S "autoreduction" \
9894*62c56f98SSadaf Ebrahimi            -s "found fragmented DTLS handshake message" \
9895*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9896*62c56f98SSadaf Ebrahimi            -C "error"
9897*62c56f98SSadaf Ebrahimi
9898*62c56f98SSadaf Ebrahimi# An autoreduction on the client-side might happen if the server is
9899*62c56f98SSadaf Ebrahimi# slow to reset, therefore omitting '-C "autoreduction"' below.
9900*62c56f98SSadaf Ebrahiminot_with_valgrind # spurious autoreduction due to timeout
9901*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9902*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9903*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
9904*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
9905*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_AES_C
9906*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_CIPHER_MODE_CBC
9907*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ENCRYPT_THEN_MAC
9908*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
9909*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: proxy MTU, AES-CBC EtM renego" \
9910*62c56f98SSadaf Ebrahimi            -p "$P_PXY mtu=1024" \
9911*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9912*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9913*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9914*62c56f98SSadaf Ebrahimi             exchanges=2 renegotiation=1 \
9915*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256 \
9916*62c56f98SSadaf Ebrahimi             hs_timeout=10000-60000 \
9917*62c56f98SSadaf Ebrahimi             mtu=1024" \
9918*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
9919*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9920*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
9921*62c56f98SSadaf Ebrahimi             exchanges=2 renegotiation=1 renegotiate=1 \
9922*62c56f98SSadaf Ebrahimi             hs_timeout=10000-60000 \
9923*62c56f98SSadaf Ebrahimi             mtu=1024" \
9924*62c56f98SSadaf Ebrahimi            0 \
9925*62c56f98SSadaf Ebrahimi            -S "autoreduction" \
9926*62c56f98SSadaf Ebrahimi            -s "found fragmented DTLS handshake message" \
9927*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9928*62c56f98SSadaf Ebrahimi            -C "error"
9929*62c56f98SSadaf Ebrahimi
9930*62c56f98SSadaf Ebrahimi# An autoreduction on the client-side might happen if the server is
9931*62c56f98SSadaf Ebrahimi# slow to reset, therefore omitting '-C "autoreduction"' below.
9932*62c56f98SSadaf Ebrahiminot_with_valgrind # spurious autoreduction due to timeout
9933*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9934*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9935*62c56f98SSadaf Ebrahimirequires_hash_alg SHA_256
9936*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
9937*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_AES_C
9938*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_CIPHER_MODE_CBC
9939*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
9940*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: proxy MTU, AES-CBC non-EtM renego" \
9941*62c56f98SSadaf Ebrahimi            -p "$P_PXY mtu=1024" \
9942*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9943*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9944*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9945*62c56f98SSadaf Ebrahimi             exchanges=2 renegotiation=1 \
9946*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256 etm=0 \
9947*62c56f98SSadaf Ebrahimi             hs_timeout=10000-60000 \
9948*62c56f98SSadaf Ebrahimi             mtu=1024" \
9949*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
9950*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9951*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
9952*62c56f98SSadaf Ebrahimi             exchanges=2 renegotiation=1 renegotiate=1 \
9953*62c56f98SSadaf Ebrahimi             hs_timeout=10000-60000 \
9954*62c56f98SSadaf Ebrahimi             mtu=1024" \
9955*62c56f98SSadaf Ebrahimi            0 \
9956*62c56f98SSadaf Ebrahimi            -S "autoreduction" \
9957*62c56f98SSadaf Ebrahimi            -s "found fragmented DTLS handshake message" \
9958*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9959*62c56f98SSadaf Ebrahimi            -C "error"
9960*62c56f98SSadaf Ebrahimi
9961*62c56f98SSadaf Ebrahimi# Forcing ciphersuite for this test to fit the MTU of 512 with full config.
9962*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9963*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9964*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_AES_C
9965*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_GCM_C
9966*62c56f98SSadaf Ebrahimiclient_needs_more_time 2
9967*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
9968*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: proxy MTU + 3d" \
9969*62c56f98SSadaf Ebrahimi            -p "$P_PXY mtu=512 drop=8 delay=8 duplicate=8" \
9970*62c56f98SSadaf Ebrahimi            "$P_SRV dgram_packing=0 dtls=1 debug_level=2 auth_mode=required \
9971*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9972*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9973*62c56f98SSadaf Ebrahimi             hs_timeout=250-10000 mtu=512" \
9974*62c56f98SSadaf Ebrahimi            "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
9975*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9976*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
9977*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
9978*62c56f98SSadaf Ebrahimi             hs_timeout=250-10000 mtu=512" \
9979*62c56f98SSadaf Ebrahimi            0 \
9980*62c56f98SSadaf Ebrahimi            -s "found fragmented DTLS handshake message" \
9981*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
9982*62c56f98SSadaf Ebrahimi            -C "error"
9983*62c56f98SSadaf Ebrahimi
9984*62c56f98SSadaf Ebrahimi# Forcing ciphersuite for this test to fit the MTU of 512 with full config.
9985*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
9986*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
9987*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_AES_C
9988*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_GCM_C
9989*62c56f98SSadaf Ebrahimiclient_needs_more_time 2
9990*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
9991*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: proxy MTU + 3d, nbio" \
9992*62c56f98SSadaf Ebrahimi            -p "$P_PXY mtu=512 drop=8 delay=8 duplicate=8" \
9993*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 auth_mode=required \
9994*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
9995*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
9996*62c56f98SSadaf Ebrahimi             hs_timeout=250-10000 mtu=512 nbio=2" \
9997*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
9998*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
9999*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
10000*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \
10001*62c56f98SSadaf Ebrahimi             hs_timeout=250-10000 mtu=512 nbio=2" \
10002*62c56f98SSadaf Ebrahimi            0 \
10003*62c56f98SSadaf Ebrahimi            -s "found fragmented DTLS handshake message" \
10004*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message" \
10005*62c56f98SSadaf Ebrahimi            -C "error"
10006*62c56f98SSadaf Ebrahimi
10007*62c56f98SSadaf Ebrahimi# interop tests for DTLS fragmentating with reliable connection
10008*62c56f98SSadaf Ebrahimi#
10009*62c56f98SSadaf Ebrahimi# here and below we just want to test that the we fragment in a way that
10010*62c56f98SSadaf Ebrahimi# pleases other implementations, so we don't need the peer to fragment
10011*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
10012*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
10013*62c56f98SSadaf Ebrahimirequires_gnutls
10014*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
10015*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: gnutls server, DTLS 1.2" \
10016*62c56f98SSadaf Ebrahimi            "$G_SRV -u" \
10017*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
10018*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
10019*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
10020*62c56f98SSadaf Ebrahimi             mtu=512 force_version=dtls12" \
10021*62c56f98SSadaf Ebrahimi            0 \
10022*62c56f98SSadaf Ebrahimi            -c "fragmenting handshake message" \
10023*62c56f98SSadaf Ebrahimi            -C "error"
10024*62c56f98SSadaf Ebrahimi
10025*62c56f98SSadaf Ebrahimi# We use --insecure for the GnuTLS client because it expects
10026*62c56f98SSadaf Ebrahimi# the hostname / IP it connects to to be the name used in the
10027*62c56f98SSadaf Ebrahimi# certificate obtained from the server. Here, however, it
10028*62c56f98SSadaf Ebrahimi# connects to 127.0.0.1 while our test certificates use 'localhost'
10029*62c56f98SSadaf Ebrahimi# as the server name in the certificate. This will make the
10030*62c56f98SSadaf Ebrahimi# certificate validation fail, but passing --insecure makes
10031*62c56f98SSadaf Ebrahimi# GnuTLS continue the connection nonetheless.
10032*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
10033*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
10034*62c56f98SSadaf Ebrahimirequires_gnutls
10035*62c56f98SSadaf Ebrahimirequires_not_i686
10036*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
10037*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: gnutls client, DTLS 1.2" \
10038*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 \
10039*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
10040*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
10041*62c56f98SSadaf Ebrahimi             mtu=512 force_version=dtls12" \
10042*62c56f98SSadaf Ebrahimi            "$G_CLI -u --insecure 127.0.0.1" \
10043*62c56f98SSadaf Ebrahimi            0 \
10044*62c56f98SSadaf Ebrahimi            -s "fragmenting handshake message"
10045*62c56f98SSadaf Ebrahimi
10046*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
10047*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
10048*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
10049*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: openssl server, DTLS 1.2" \
10050*62c56f98SSadaf Ebrahimi            "$O_SRV -dtls1_2 -verify 10" \
10051*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
10052*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
10053*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
10054*62c56f98SSadaf Ebrahimi             mtu=512 force_version=dtls12" \
10055*62c56f98SSadaf Ebrahimi            0 \
10056*62c56f98SSadaf Ebrahimi            -c "fragmenting handshake message" \
10057*62c56f98SSadaf Ebrahimi            -C "error"
10058*62c56f98SSadaf Ebrahimi
10059*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
10060*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
10061*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
10062*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: openssl client, DTLS 1.2" \
10063*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 \
10064*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
10065*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
10066*62c56f98SSadaf Ebrahimi             mtu=512 force_version=dtls12" \
10067*62c56f98SSadaf Ebrahimi            "$O_CLI -dtls1_2" \
10068*62c56f98SSadaf Ebrahimi            0 \
10069*62c56f98SSadaf Ebrahimi            -s "fragmenting handshake message"
10070*62c56f98SSadaf Ebrahimi
10071*62c56f98SSadaf Ebrahimi# interop tests for DTLS fragmentating with unreliable connection
10072*62c56f98SSadaf Ebrahimi#
10073*62c56f98SSadaf Ebrahimi# again we just want to test that the we fragment in a way that
10074*62c56f98SSadaf Ebrahimi# pleases other implementations, so we don't need the peer to fragment
10075*62c56f98SSadaf Ebrahimirequires_gnutls_next
10076*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
10077*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
10078*62c56f98SSadaf Ebrahimiclient_needs_more_time 4
10079*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
10080*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: 3d, gnutls server, DTLS 1.2" \
10081*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=8 delay=8 duplicate=8" \
10082*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV -u" \
10083*62c56f98SSadaf Ebrahimi            "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
10084*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
10085*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
10086*62c56f98SSadaf Ebrahimi             hs_timeout=250-60000 mtu=512 force_version=dtls12" \
10087*62c56f98SSadaf Ebrahimi            0 \
10088*62c56f98SSadaf Ebrahimi            -c "fragmenting handshake message" \
10089*62c56f98SSadaf Ebrahimi            -C "error"
10090*62c56f98SSadaf Ebrahimi
10091*62c56f98SSadaf Ebrahimirequires_gnutls_next
10092*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
10093*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
10094*62c56f98SSadaf Ebrahimiclient_needs_more_time 4
10095*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
10096*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: 3d, gnutls client, DTLS 1.2" \
10097*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=8 delay=8 duplicate=8" \
10098*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 \
10099*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
10100*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
10101*62c56f98SSadaf Ebrahimi             hs_timeout=250-60000 mtu=512 force_version=dtls12" \
10102*62c56f98SSadaf Ebrahimi           "$G_NEXT_CLI -u --insecure 127.0.0.1" \
10103*62c56f98SSadaf Ebrahimi            0 \
10104*62c56f98SSadaf Ebrahimi            -s "fragmenting handshake message"
10105*62c56f98SSadaf Ebrahimi
10106*62c56f98SSadaf Ebrahimi## The test below requires 1.1.1a or higher version of openssl, otherwise
10107*62c56f98SSadaf Ebrahimi## it might trigger a bug due to openssl server (https://github.com/openssl/openssl/issues/6902)
10108*62c56f98SSadaf Ebrahimirequires_openssl_next
10109*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
10110*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
10111*62c56f98SSadaf Ebrahimiclient_needs_more_time 4
10112*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
10113*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: 3d, openssl server, DTLS 1.2" \
10114*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=8 delay=8 duplicate=8" \
10115*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -dtls1_2 -verify 10" \
10116*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 \
10117*62c56f98SSadaf Ebrahimi             crt_file=data_files/server8_int-ca2.crt \
10118*62c56f98SSadaf Ebrahimi             key_file=data_files/server8.key \
10119*62c56f98SSadaf Ebrahimi             hs_timeout=250-60000 mtu=512 force_version=dtls12" \
10120*62c56f98SSadaf Ebrahimi            0 \
10121*62c56f98SSadaf Ebrahimi            -c "fragmenting handshake message" \
10122*62c56f98SSadaf Ebrahimi            -C "error"
10123*62c56f98SSadaf Ebrahimi
10124*62c56f98SSadaf Ebrahimi## the test below will time out with certain seed.
10125*62c56f98SSadaf Ebrahimi## The cause is an openssl bug (https://github.com/openssl/openssl/issues/18887)
10126*62c56f98SSadaf Ebrahimiskip_next_test
10127*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_DTLS
10128*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
10129*62c56f98SSadaf Ebrahimiclient_needs_more_time 4
10130*62c56f98SSadaf Ebrahimirequires_max_content_len 2048
10131*62c56f98SSadaf Ebrahimirun_test    "DTLS fragmenting: 3d, openssl client, DTLS 1.2" \
10132*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=8 delay=8 duplicate=8" \
10133*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 \
10134*62c56f98SSadaf Ebrahimi             crt_file=data_files/server7_int-ca.crt \
10135*62c56f98SSadaf Ebrahimi             key_file=data_files/server7.key \
10136*62c56f98SSadaf Ebrahimi             hs_timeout=250-60000 mtu=512 force_version=dtls12" \
10137*62c56f98SSadaf Ebrahimi            "$O_CLI -dtls1_2" \
10138*62c56f98SSadaf Ebrahimi            0 \
10139*62c56f98SSadaf Ebrahimi            -s "fragmenting handshake message"
10140*62c56f98SSadaf Ebrahimi
10141*62c56f98SSadaf Ebrahimi# Tests for DTLS-SRTP (RFC 5764)
10142*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10143*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10144*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP all profiles supported" \
10145*62c56f98SSadaf Ebrahimi          "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
10146*62c56f98SSadaf Ebrahimi          "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
10147*62c56f98SSadaf Ebrahimi          0 \
10148*62c56f98SSadaf Ebrahimi          -s "found use_srtp extension" \
10149*62c56f98SSadaf Ebrahimi          -s "found srtp profile" \
10150*62c56f98SSadaf Ebrahimi          -s "selected srtp profile" \
10151*62c56f98SSadaf Ebrahimi          -s "server hello, adding use_srtp extension" \
10152*62c56f98SSadaf Ebrahimi          -s "DTLS-SRTP key material is"\
10153*62c56f98SSadaf Ebrahimi          -c "client hello, adding use_srtp extension" \
10154*62c56f98SSadaf Ebrahimi          -c "found use_srtp extension" \
10155*62c56f98SSadaf Ebrahimi          -c "found srtp profile" \
10156*62c56f98SSadaf Ebrahimi          -c "selected srtp profile" \
10157*62c56f98SSadaf Ebrahimi          -c "DTLS-SRTP key material is"\
10158*62c56f98SSadaf Ebrahimi          -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
10159*62c56f98SSadaf Ebrahimi          -C "error"
10160*62c56f98SSadaf Ebrahimi
10161*62c56f98SSadaf Ebrahimi
10162*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10163*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10164*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server supports all profiles. Client supports one profile." \
10165*62c56f98SSadaf Ebrahimi          "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
10166*62c56f98SSadaf Ebrahimi          "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=5 debug_level=3" \
10167*62c56f98SSadaf Ebrahimi          0 \
10168*62c56f98SSadaf Ebrahimi          -s "found use_srtp extension" \
10169*62c56f98SSadaf Ebrahimi          -s "found srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80" \
10170*62c56f98SSadaf Ebrahimi          -s "selected srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80" \
10171*62c56f98SSadaf Ebrahimi          -s "server hello, adding use_srtp extension" \
10172*62c56f98SSadaf Ebrahimi          -s "DTLS-SRTP key material is"\
10173*62c56f98SSadaf Ebrahimi          -c "client hello, adding use_srtp extension" \
10174*62c56f98SSadaf Ebrahimi          -c "found use_srtp extension" \
10175*62c56f98SSadaf Ebrahimi          -c "found srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80" \
10176*62c56f98SSadaf Ebrahimi          -c "selected srtp profile" \
10177*62c56f98SSadaf Ebrahimi          -c "DTLS-SRTP key material is"\
10178*62c56f98SSadaf Ebrahimi          -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
10179*62c56f98SSadaf Ebrahimi          -C "error"
10180*62c56f98SSadaf Ebrahimi
10181*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10182*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10183*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server supports one profile. Client supports all profiles." \
10184*62c56f98SSadaf Ebrahimi          "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=6 debug_level=3" \
10185*62c56f98SSadaf Ebrahimi          "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
10186*62c56f98SSadaf Ebrahimi          0 \
10187*62c56f98SSadaf Ebrahimi          -s "found use_srtp extension" \
10188*62c56f98SSadaf Ebrahimi          -s "found srtp profile" \
10189*62c56f98SSadaf Ebrahimi          -s "selected srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32" \
10190*62c56f98SSadaf Ebrahimi          -s "server hello, adding use_srtp extension" \
10191*62c56f98SSadaf Ebrahimi          -s "DTLS-SRTP key material is"\
10192*62c56f98SSadaf Ebrahimi          -c "client hello, adding use_srtp extension" \
10193*62c56f98SSadaf Ebrahimi          -c "found use_srtp extension" \
10194*62c56f98SSadaf Ebrahimi          -c "found srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32" \
10195*62c56f98SSadaf Ebrahimi          -c "selected srtp profile" \
10196*62c56f98SSadaf Ebrahimi          -c "DTLS-SRTP key material is"\
10197*62c56f98SSadaf Ebrahimi          -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
10198*62c56f98SSadaf Ebrahimi          -C "error"
10199*62c56f98SSadaf Ebrahimi
10200*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10201*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10202*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server and Client support only one matching profile." \
10203*62c56f98SSadaf Ebrahimi          "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
10204*62c56f98SSadaf Ebrahimi          "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
10205*62c56f98SSadaf Ebrahimi          0 \
10206*62c56f98SSadaf Ebrahimi          -s "found use_srtp extension" \
10207*62c56f98SSadaf Ebrahimi          -s "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
10208*62c56f98SSadaf Ebrahimi          -s "selected srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
10209*62c56f98SSadaf Ebrahimi          -s "server hello, adding use_srtp extension" \
10210*62c56f98SSadaf Ebrahimi          -s "DTLS-SRTP key material is"\
10211*62c56f98SSadaf Ebrahimi          -c "client hello, adding use_srtp extension" \
10212*62c56f98SSadaf Ebrahimi          -c "found use_srtp extension" \
10213*62c56f98SSadaf Ebrahimi          -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
10214*62c56f98SSadaf Ebrahimi          -c "selected srtp profile" \
10215*62c56f98SSadaf Ebrahimi          -c "DTLS-SRTP key material is"\
10216*62c56f98SSadaf Ebrahimi          -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
10217*62c56f98SSadaf Ebrahimi          -C "error"
10218*62c56f98SSadaf Ebrahimi
10219*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10220*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10221*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server and Client support only one different profile." \
10222*62c56f98SSadaf Ebrahimi          "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
10223*62c56f98SSadaf Ebrahimi          "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=6 debug_level=3" \
10224*62c56f98SSadaf Ebrahimi          0 \
10225*62c56f98SSadaf Ebrahimi          -s "found use_srtp extension" \
10226*62c56f98SSadaf Ebrahimi          -s "found srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32" \
10227*62c56f98SSadaf Ebrahimi          -S "selected srtp profile" \
10228*62c56f98SSadaf Ebrahimi          -S "server hello, adding use_srtp extension" \
10229*62c56f98SSadaf Ebrahimi          -S "DTLS-SRTP key material is"\
10230*62c56f98SSadaf Ebrahimi          -c "client hello, adding use_srtp extension" \
10231*62c56f98SSadaf Ebrahimi          -C "found use_srtp extension" \
10232*62c56f98SSadaf Ebrahimi          -C "found srtp profile" \
10233*62c56f98SSadaf Ebrahimi          -C "selected srtp profile" \
10234*62c56f98SSadaf Ebrahimi          -C "DTLS-SRTP key material is"\
10235*62c56f98SSadaf Ebrahimi          -C "error"
10236*62c56f98SSadaf Ebrahimi
10237*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10238*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10239*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server doesn't support use_srtp extension." \
10240*62c56f98SSadaf Ebrahimi          "$P_SRV dtls=1 debug_level=3" \
10241*62c56f98SSadaf Ebrahimi          "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
10242*62c56f98SSadaf Ebrahimi          0 \
10243*62c56f98SSadaf Ebrahimi          -s "found use_srtp extension" \
10244*62c56f98SSadaf Ebrahimi          -S "server hello, adding use_srtp extension" \
10245*62c56f98SSadaf Ebrahimi          -S "DTLS-SRTP key material is"\
10246*62c56f98SSadaf Ebrahimi          -c "client hello, adding use_srtp extension" \
10247*62c56f98SSadaf Ebrahimi          -C "found use_srtp extension" \
10248*62c56f98SSadaf Ebrahimi          -C "found srtp profile" \
10249*62c56f98SSadaf Ebrahimi          -C "selected srtp profile" \
10250*62c56f98SSadaf Ebrahimi          -C "DTLS-SRTP key material is"\
10251*62c56f98SSadaf Ebrahimi          -C "error"
10252*62c56f98SSadaf Ebrahimi
10253*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10254*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10255*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP all profiles supported. mki used" \
10256*62c56f98SSadaf Ebrahimi          "$P_SRV dtls=1 use_srtp=1 support_mki=1 debug_level=3" \
10257*62c56f98SSadaf Ebrahimi          "$P_CLI dtls=1 use_srtp=1 mki=542310ab34290481 debug_level=3" \
10258*62c56f98SSadaf Ebrahimi          0 \
10259*62c56f98SSadaf Ebrahimi          -s "found use_srtp extension" \
10260*62c56f98SSadaf Ebrahimi          -s "found srtp profile" \
10261*62c56f98SSadaf Ebrahimi          -s "selected srtp profile" \
10262*62c56f98SSadaf Ebrahimi          -s "server hello, adding use_srtp extension" \
10263*62c56f98SSadaf Ebrahimi          -s "dumping 'using mki' (8 bytes)" \
10264*62c56f98SSadaf Ebrahimi          -s "DTLS-SRTP key material is"\
10265*62c56f98SSadaf Ebrahimi          -c "client hello, adding use_srtp extension" \
10266*62c56f98SSadaf Ebrahimi          -c "found use_srtp extension" \
10267*62c56f98SSadaf Ebrahimi          -c "found srtp profile" \
10268*62c56f98SSadaf Ebrahimi          -c "selected srtp profile" \
10269*62c56f98SSadaf Ebrahimi          -c "dumping 'sending mki' (8 bytes)" \
10270*62c56f98SSadaf Ebrahimi          -c "dumping 'received mki' (8 bytes)" \
10271*62c56f98SSadaf Ebrahimi          -c "DTLS-SRTP key material is"\
10272*62c56f98SSadaf Ebrahimi          -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
10273*62c56f98SSadaf Ebrahimi          -g "find_in_both '^ *DTLS-SRTP mki value: [0-9A-F]*$'"\
10274*62c56f98SSadaf Ebrahimi          -C "error"
10275*62c56f98SSadaf Ebrahimi
10276*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10277*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10278*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP all profiles supported. server doesn't support mki." \
10279*62c56f98SSadaf Ebrahimi          "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
10280*62c56f98SSadaf Ebrahimi          "$P_CLI dtls=1 use_srtp=1 mki=542310ab34290481 debug_level=3" \
10281*62c56f98SSadaf Ebrahimi          0 \
10282*62c56f98SSadaf Ebrahimi          -s "found use_srtp extension" \
10283*62c56f98SSadaf Ebrahimi          -s "found srtp profile" \
10284*62c56f98SSadaf Ebrahimi          -s "selected srtp profile" \
10285*62c56f98SSadaf Ebrahimi          -s "server hello, adding use_srtp extension" \
10286*62c56f98SSadaf Ebrahimi          -s "DTLS-SRTP key material is"\
10287*62c56f98SSadaf Ebrahimi          -s "DTLS-SRTP no mki value negotiated"\
10288*62c56f98SSadaf Ebrahimi          -S "dumping 'using mki' (8 bytes)" \
10289*62c56f98SSadaf Ebrahimi          -c "client hello, adding use_srtp extension" \
10290*62c56f98SSadaf Ebrahimi          -c "found use_srtp extension" \
10291*62c56f98SSadaf Ebrahimi          -c "found srtp profile" \
10292*62c56f98SSadaf Ebrahimi          -c "selected srtp profile" \
10293*62c56f98SSadaf Ebrahimi          -c "DTLS-SRTP key material is"\
10294*62c56f98SSadaf Ebrahimi          -c "DTLS-SRTP no mki value negotiated"\
10295*62c56f98SSadaf Ebrahimi          -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
10296*62c56f98SSadaf Ebrahimi          -c "dumping 'sending mki' (8 bytes)" \
10297*62c56f98SSadaf Ebrahimi          -C "dumping 'received mki' (8 bytes)" \
10298*62c56f98SSadaf Ebrahimi          -C "error"
10299*62c56f98SSadaf Ebrahimi
10300*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10301*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10302*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP all profiles supported. openssl client." \
10303*62c56f98SSadaf Ebrahimi          "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
10304*62c56f98SSadaf Ebrahimi          "$O_CLI -dtls -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
10305*62c56f98SSadaf Ebrahimi          0 \
10306*62c56f98SSadaf Ebrahimi          -s "found use_srtp extension" \
10307*62c56f98SSadaf Ebrahimi          -s "found srtp profile" \
10308*62c56f98SSadaf Ebrahimi          -s "selected srtp profile" \
10309*62c56f98SSadaf Ebrahimi          -s "server hello, adding use_srtp extension" \
10310*62c56f98SSadaf Ebrahimi          -s "DTLS-SRTP key material is"\
10311*62c56f98SSadaf Ebrahimi          -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
10312*62c56f98SSadaf Ebrahimi          -c "SRTP Extension negotiated, profile=SRTP_AES128_CM_SHA1_80"
10313*62c56f98SSadaf Ebrahimi
10314*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10315*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10316*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server supports all profiles. Client supports all profiles, in different order. openssl client." \
10317*62c56f98SSadaf Ebrahimi          "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
10318*62c56f98SSadaf Ebrahimi          "$O_CLI -dtls -use_srtp SRTP_AES128_CM_SHA1_32:SRTP_AES128_CM_SHA1_80 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
10319*62c56f98SSadaf Ebrahimi          0 \
10320*62c56f98SSadaf Ebrahimi          -s "found use_srtp extension" \
10321*62c56f98SSadaf Ebrahimi          -s "found srtp profile" \
10322*62c56f98SSadaf Ebrahimi          -s "selected srtp profile" \
10323*62c56f98SSadaf Ebrahimi          -s "server hello, adding use_srtp extension" \
10324*62c56f98SSadaf Ebrahimi          -s "DTLS-SRTP key material is"\
10325*62c56f98SSadaf Ebrahimi          -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
10326*62c56f98SSadaf Ebrahimi          -c "SRTP Extension negotiated, profile=SRTP_AES128_CM_SHA1_32"
10327*62c56f98SSadaf Ebrahimi
10328*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10329*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10330*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server supports all profiles. Client supports one profile. openssl client." \
10331*62c56f98SSadaf Ebrahimi          "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
10332*62c56f98SSadaf Ebrahimi          "$O_CLI -dtls -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
10333*62c56f98SSadaf Ebrahimi          0 \
10334*62c56f98SSadaf Ebrahimi          -s "found use_srtp extension" \
10335*62c56f98SSadaf Ebrahimi          -s "found srtp profile" \
10336*62c56f98SSadaf Ebrahimi          -s "selected srtp profile" \
10337*62c56f98SSadaf Ebrahimi          -s "server hello, adding use_srtp extension" \
10338*62c56f98SSadaf Ebrahimi          -s "DTLS-SRTP key material is"\
10339*62c56f98SSadaf Ebrahimi          -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
10340*62c56f98SSadaf Ebrahimi          -c "SRTP Extension negotiated, profile=SRTP_AES128_CM_SHA1_32"
10341*62c56f98SSadaf Ebrahimi
10342*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10343*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10344*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server supports one profile. Client supports all profiles. openssl client." \
10345*62c56f98SSadaf Ebrahimi          "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
10346*62c56f98SSadaf Ebrahimi          "$O_CLI -dtls -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
10347*62c56f98SSadaf Ebrahimi          0 \
10348*62c56f98SSadaf Ebrahimi          -s "found use_srtp extension" \
10349*62c56f98SSadaf Ebrahimi          -s "found srtp profile" \
10350*62c56f98SSadaf Ebrahimi          -s "selected srtp profile" \
10351*62c56f98SSadaf Ebrahimi          -s "server hello, adding use_srtp extension" \
10352*62c56f98SSadaf Ebrahimi          -s "DTLS-SRTP key material is"\
10353*62c56f98SSadaf Ebrahimi          -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
10354*62c56f98SSadaf Ebrahimi          -c "SRTP Extension negotiated, profile=SRTP_AES128_CM_SHA1_32"
10355*62c56f98SSadaf Ebrahimi
10356*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10357*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10358*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server and Client support only one matching profile. openssl client." \
10359*62c56f98SSadaf Ebrahimi          "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
10360*62c56f98SSadaf Ebrahimi          "$O_CLI -dtls -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
10361*62c56f98SSadaf Ebrahimi          0 \
10362*62c56f98SSadaf Ebrahimi          -s "found use_srtp extension" \
10363*62c56f98SSadaf Ebrahimi          -s "found srtp profile" \
10364*62c56f98SSadaf Ebrahimi          -s "selected srtp profile" \
10365*62c56f98SSadaf Ebrahimi          -s "server hello, adding use_srtp extension" \
10366*62c56f98SSadaf Ebrahimi          -s "DTLS-SRTP key material is"\
10367*62c56f98SSadaf Ebrahimi          -g "find_in_both '^ *Keying material: [0-9A-F]*$'"\
10368*62c56f98SSadaf Ebrahimi          -c "SRTP Extension negotiated, profile=SRTP_AES128_CM_SHA1_32"
10369*62c56f98SSadaf Ebrahimi
10370*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10371*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10372*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server and Client support only one different profile. openssl client." \
10373*62c56f98SSadaf Ebrahimi          "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=1 debug_level=3" \
10374*62c56f98SSadaf Ebrahimi          "$O_CLI -dtls -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
10375*62c56f98SSadaf Ebrahimi          0 \
10376*62c56f98SSadaf Ebrahimi          -s "found use_srtp extension" \
10377*62c56f98SSadaf Ebrahimi          -s "found srtp profile" \
10378*62c56f98SSadaf Ebrahimi          -S "selected srtp profile" \
10379*62c56f98SSadaf Ebrahimi          -S "server hello, adding use_srtp extension" \
10380*62c56f98SSadaf Ebrahimi          -S "DTLS-SRTP key material is"\
10381*62c56f98SSadaf Ebrahimi          -C "SRTP Extension negotiated, profile"
10382*62c56f98SSadaf Ebrahimi
10383*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10384*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10385*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server doesn't support use_srtp extension. openssl client" \
10386*62c56f98SSadaf Ebrahimi          "$P_SRV dtls=1 debug_level=3" \
10387*62c56f98SSadaf Ebrahimi          "$O_CLI -dtls -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
10388*62c56f98SSadaf Ebrahimi          0 \
10389*62c56f98SSadaf Ebrahimi          -s "found use_srtp extension" \
10390*62c56f98SSadaf Ebrahimi          -S "server hello, adding use_srtp extension" \
10391*62c56f98SSadaf Ebrahimi          -S "DTLS-SRTP key material is"\
10392*62c56f98SSadaf Ebrahimi          -C "SRTP Extension negotiated, profile"
10393*62c56f98SSadaf Ebrahimi
10394*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10395*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10396*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP all profiles supported. openssl server" \
10397*62c56f98SSadaf Ebrahimi          "$O_SRV -dtls -verify 0 -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
10398*62c56f98SSadaf Ebrahimi          "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
10399*62c56f98SSadaf Ebrahimi          0 \
10400*62c56f98SSadaf Ebrahimi          -c "client hello, adding use_srtp extension" \
10401*62c56f98SSadaf Ebrahimi          -c "found use_srtp extension" \
10402*62c56f98SSadaf Ebrahimi          -c "found srtp profile" \
10403*62c56f98SSadaf Ebrahimi          -c "selected srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80" \
10404*62c56f98SSadaf Ebrahimi          -c "DTLS-SRTP key material is"\
10405*62c56f98SSadaf Ebrahimi          -C "error"
10406*62c56f98SSadaf Ebrahimi
10407*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10408*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10409*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server supports all profiles. Client supports all profiles, in different order. openssl server." \
10410*62c56f98SSadaf Ebrahimi          "$O_SRV -dtls -verify 0 -use_srtp SRTP_AES128_CM_SHA1_32:SRTP_AES128_CM_SHA1_80 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
10411*62c56f98SSadaf Ebrahimi          "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
10412*62c56f98SSadaf Ebrahimi          0 \
10413*62c56f98SSadaf Ebrahimi          -c "client hello, adding use_srtp extension" \
10414*62c56f98SSadaf Ebrahimi          -c "found use_srtp extension" \
10415*62c56f98SSadaf Ebrahimi          -c "found srtp profile" \
10416*62c56f98SSadaf Ebrahimi          -c "selected srtp profile" \
10417*62c56f98SSadaf Ebrahimi          -c "DTLS-SRTP key material is"\
10418*62c56f98SSadaf Ebrahimi          -C "error"
10419*62c56f98SSadaf Ebrahimi
10420*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10421*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10422*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server supports all profiles. Client supports one profile. openssl server." \
10423*62c56f98SSadaf Ebrahimi          "$O_SRV -dtls -verify 0 -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
10424*62c56f98SSadaf Ebrahimi          "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
10425*62c56f98SSadaf Ebrahimi          0 \
10426*62c56f98SSadaf Ebrahimi          -c "client hello, adding use_srtp extension" \
10427*62c56f98SSadaf Ebrahimi          -c "found use_srtp extension" \
10428*62c56f98SSadaf Ebrahimi          -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
10429*62c56f98SSadaf Ebrahimi          -c "selected srtp profile" \
10430*62c56f98SSadaf Ebrahimi          -c "DTLS-SRTP key material is"\
10431*62c56f98SSadaf Ebrahimi          -C "error"
10432*62c56f98SSadaf Ebrahimi
10433*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10434*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10435*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server supports one profile. Client supports all profiles. openssl server." \
10436*62c56f98SSadaf Ebrahimi          "$O_SRV -dtls -verify 0 -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
10437*62c56f98SSadaf Ebrahimi          "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
10438*62c56f98SSadaf Ebrahimi          0 \
10439*62c56f98SSadaf Ebrahimi          -c "client hello, adding use_srtp extension" \
10440*62c56f98SSadaf Ebrahimi          -c "found use_srtp extension" \
10441*62c56f98SSadaf Ebrahimi          -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
10442*62c56f98SSadaf Ebrahimi          -c "selected srtp profile" \
10443*62c56f98SSadaf Ebrahimi          -c "DTLS-SRTP key material is"\
10444*62c56f98SSadaf Ebrahimi          -C "error"
10445*62c56f98SSadaf Ebrahimi
10446*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10447*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10448*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server and Client support only one matching profile. openssl server." \
10449*62c56f98SSadaf Ebrahimi          "$O_SRV -dtls -verify 0 -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
10450*62c56f98SSadaf Ebrahimi          "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
10451*62c56f98SSadaf Ebrahimi          0 \
10452*62c56f98SSadaf Ebrahimi          -c "client hello, adding use_srtp extension" \
10453*62c56f98SSadaf Ebrahimi          -c "found use_srtp extension" \
10454*62c56f98SSadaf Ebrahimi          -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
10455*62c56f98SSadaf Ebrahimi          -c "selected srtp profile" \
10456*62c56f98SSadaf Ebrahimi          -c "DTLS-SRTP key material is"\
10457*62c56f98SSadaf Ebrahimi          -C "error"
10458*62c56f98SSadaf Ebrahimi
10459*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10460*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10461*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server and Client support only one different profile. openssl server." \
10462*62c56f98SSadaf Ebrahimi          "$O_SRV -dtls -verify 0 -use_srtp SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
10463*62c56f98SSadaf Ebrahimi          "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=6 debug_level=3" \
10464*62c56f98SSadaf Ebrahimi          0 \
10465*62c56f98SSadaf Ebrahimi          -c "client hello, adding use_srtp extension" \
10466*62c56f98SSadaf Ebrahimi          -C "found use_srtp extension" \
10467*62c56f98SSadaf Ebrahimi          -C "found srtp profile" \
10468*62c56f98SSadaf Ebrahimi          -C "selected srtp profile" \
10469*62c56f98SSadaf Ebrahimi          -C "DTLS-SRTP key material is"\
10470*62c56f98SSadaf Ebrahimi          -C "error"
10471*62c56f98SSadaf Ebrahimi
10472*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10473*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10474*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server doesn't support use_srtp extension. openssl server" \
10475*62c56f98SSadaf Ebrahimi          "$O_SRV -dtls" \
10476*62c56f98SSadaf Ebrahimi          "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
10477*62c56f98SSadaf Ebrahimi          0 \
10478*62c56f98SSadaf Ebrahimi          -c "client hello, adding use_srtp extension" \
10479*62c56f98SSadaf Ebrahimi          -C "found use_srtp extension" \
10480*62c56f98SSadaf Ebrahimi          -C "found srtp profile" \
10481*62c56f98SSadaf Ebrahimi          -C "selected srtp profile" \
10482*62c56f98SSadaf Ebrahimi          -C "DTLS-SRTP key material is"\
10483*62c56f98SSadaf Ebrahimi          -C "error"
10484*62c56f98SSadaf Ebrahimi
10485*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10486*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10487*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP all profiles supported. server doesn't support mki. openssl server." \
10488*62c56f98SSadaf Ebrahimi          "$O_SRV -dtls -verify 0 -use_srtp SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32 -keymatexport 'EXTRACTOR-dtls_srtp' -keymatexportlen 60" \
10489*62c56f98SSadaf Ebrahimi          "$P_CLI dtls=1 use_srtp=1 mki=542310ab34290481 debug_level=3" \
10490*62c56f98SSadaf Ebrahimi          0 \
10491*62c56f98SSadaf Ebrahimi          -c "client hello, adding use_srtp extension" \
10492*62c56f98SSadaf Ebrahimi          -c "found use_srtp extension" \
10493*62c56f98SSadaf Ebrahimi          -c "found srtp profile" \
10494*62c56f98SSadaf Ebrahimi          -c "selected srtp profile" \
10495*62c56f98SSadaf Ebrahimi          -c "DTLS-SRTP key material is"\
10496*62c56f98SSadaf Ebrahimi          -c "DTLS-SRTP no mki value negotiated"\
10497*62c56f98SSadaf Ebrahimi          -c "dumping 'sending mki' (8 bytes)" \
10498*62c56f98SSadaf Ebrahimi          -C "dumping 'received mki' (8 bytes)" \
10499*62c56f98SSadaf Ebrahimi          -C "error"
10500*62c56f98SSadaf Ebrahimi
10501*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10502*62c56f98SSadaf Ebrahimirequires_gnutls
10503*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10504*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP all profiles supported. gnutls client." \
10505*62c56f98SSadaf Ebrahimi          "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
10506*62c56f98SSadaf Ebrahimi          "$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" \
10507*62c56f98SSadaf Ebrahimi          0 \
10508*62c56f98SSadaf Ebrahimi          -s "found use_srtp extension" \
10509*62c56f98SSadaf Ebrahimi          -s "found srtp profile" \
10510*62c56f98SSadaf Ebrahimi          -s "selected srtp profile" \
10511*62c56f98SSadaf Ebrahimi          -s "server hello, adding use_srtp extension" \
10512*62c56f98SSadaf Ebrahimi          -s "DTLS-SRTP key material is"\
10513*62c56f98SSadaf Ebrahimi          -c "SRTP profile: SRTP_AES128_CM_HMAC_SHA1_80"
10514*62c56f98SSadaf Ebrahimi
10515*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10516*62c56f98SSadaf Ebrahimirequires_gnutls
10517*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10518*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server supports all profiles. Client supports all profiles, in different order. gnutls client." \
10519*62c56f98SSadaf Ebrahimi          "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
10520*62c56f98SSadaf Ebrahimi          "$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" \
10521*62c56f98SSadaf Ebrahimi          0 \
10522*62c56f98SSadaf Ebrahimi          -s "found use_srtp extension" \
10523*62c56f98SSadaf Ebrahimi          -s "found srtp profile" \
10524*62c56f98SSadaf Ebrahimi          -s "selected srtp profile" \
10525*62c56f98SSadaf Ebrahimi          -s "server hello, adding use_srtp extension" \
10526*62c56f98SSadaf Ebrahimi          -s "DTLS-SRTP key material is"\
10527*62c56f98SSadaf Ebrahimi          -c "SRTP profile: SRTP_NULL_HMAC_SHA1_80"
10528*62c56f98SSadaf Ebrahimi
10529*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10530*62c56f98SSadaf Ebrahimirequires_gnutls
10531*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10532*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server supports all profiles. Client supports one profile. gnutls client." \
10533*62c56f98SSadaf Ebrahimi          "$P_SRV dtls=1 use_srtp=1 debug_level=3" \
10534*62c56f98SSadaf Ebrahimi          "$G_CLI -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_32 --insecure 127.0.0.1" \
10535*62c56f98SSadaf Ebrahimi          0 \
10536*62c56f98SSadaf Ebrahimi          -s "found use_srtp extension" \
10537*62c56f98SSadaf Ebrahimi          -s "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
10538*62c56f98SSadaf Ebrahimi          -s "selected srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
10539*62c56f98SSadaf Ebrahimi          -s "server hello, adding use_srtp extension" \
10540*62c56f98SSadaf Ebrahimi          -s "DTLS-SRTP key material is"\
10541*62c56f98SSadaf Ebrahimi          -c "SRTP profile: SRTP_AES128_CM_HMAC_SHA1_32"
10542*62c56f98SSadaf Ebrahimi
10543*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10544*62c56f98SSadaf Ebrahimirequires_gnutls
10545*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10546*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server supports one profile. Client supports all profiles. gnutls client." \
10547*62c56f98SSadaf Ebrahimi          "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=6 debug_level=3" \
10548*62c56f98SSadaf Ebrahimi          "$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" \
10549*62c56f98SSadaf Ebrahimi          0 \
10550*62c56f98SSadaf Ebrahimi          -s "found use_srtp extension" \
10551*62c56f98SSadaf Ebrahimi          -s "found srtp profile" \
10552*62c56f98SSadaf Ebrahimi          -s "selected srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32" \
10553*62c56f98SSadaf Ebrahimi          -s "server hello, adding use_srtp extension" \
10554*62c56f98SSadaf Ebrahimi          -s "DTLS-SRTP key material is"\
10555*62c56f98SSadaf Ebrahimi          -c "SRTP profile: SRTP_NULL_SHA1_32"
10556*62c56f98SSadaf Ebrahimi
10557*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10558*62c56f98SSadaf Ebrahimirequires_gnutls
10559*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10560*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server and Client support only one matching profile. gnutls client." \
10561*62c56f98SSadaf Ebrahimi          "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
10562*62c56f98SSadaf Ebrahimi          "$G_CLI -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_32 --insecure 127.0.0.1" \
10563*62c56f98SSadaf Ebrahimi          0 \
10564*62c56f98SSadaf Ebrahimi          -s "found use_srtp extension" \
10565*62c56f98SSadaf Ebrahimi          -s "found srtp profile" \
10566*62c56f98SSadaf Ebrahimi          -s "selected srtp profile" \
10567*62c56f98SSadaf Ebrahimi          -s "server hello, adding use_srtp extension" \
10568*62c56f98SSadaf Ebrahimi          -s "DTLS-SRTP key material is"\
10569*62c56f98SSadaf Ebrahimi          -c "SRTP profile: SRTP_AES128_CM_HMAC_SHA1_32"
10570*62c56f98SSadaf Ebrahimi
10571*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10572*62c56f98SSadaf Ebrahimirequires_gnutls
10573*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10574*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server and Client support only one different profile. gnutls client." \
10575*62c56f98SSadaf Ebrahimi          "$P_SRV dtls=1 use_srtp=1 srtp_force_profile=1 debug_level=3" \
10576*62c56f98SSadaf Ebrahimi          "$G_CLI -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_32 --insecure 127.0.0.1" \
10577*62c56f98SSadaf Ebrahimi          0 \
10578*62c56f98SSadaf Ebrahimi          -s "found use_srtp extension" \
10579*62c56f98SSadaf Ebrahimi          -s "found srtp profile" \
10580*62c56f98SSadaf Ebrahimi          -S "selected srtp profile" \
10581*62c56f98SSadaf Ebrahimi          -S "server hello, adding use_srtp extension" \
10582*62c56f98SSadaf Ebrahimi          -S "DTLS-SRTP key material is"\
10583*62c56f98SSadaf Ebrahimi          -C "SRTP profile:"
10584*62c56f98SSadaf Ebrahimi
10585*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10586*62c56f98SSadaf Ebrahimirequires_gnutls
10587*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10588*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server doesn't support use_srtp extension. gnutls client" \
10589*62c56f98SSadaf Ebrahimi          "$P_SRV dtls=1 debug_level=3" \
10590*62c56f98SSadaf Ebrahimi          "$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" \
10591*62c56f98SSadaf Ebrahimi          0 \
10592*62c56f98SSadaf Ebrahimi          -s "found use_srtp extension" \
10593*62c56f98SSadaf Ebrahimi          -S "server hello, adding use_srtp extension" \
10594*62c56f98SSadaf Ebrahimi          -S "DTLS-SRTP key material is"\
10595*62c56f98SSadaf Ebrahimi          -C "SRTP profile:"
10596*62c56f98SSadaf Ebrahimi
10597*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10598*62c56f98SSadaf Ebrahimirequires_gnutls
10599*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10600*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP all profiles supported. gnutls server" \
10601*62c56f98SSadaf Ebrahimi          "$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" \
10602*62c56f98SSadaf Ebrahimi          "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
10603*62c56f98SSadaf Ebrahimi          0 \
10604*62c56f98SSadaf Ebrahimi          -c "client hello, adding use_srtp extension" \
10605*62c56f98SSadaf Ebrahimi          -c "found use_srtp extension" \
10606*62c56f98SSadaf Ebrahimi          -c "found srtp profile" \
10607*62c56f98SSadaf Ebrahimi          -c "selected srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80" \
10608*62c56f98SSadaf Ebrahimi          -c "DTLS-SRTP key material is"\
10609*62c56f98SSadaf Ebrahimi          -C "error"
10610*62c56f98SSadaf Ebrahimi
10611*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10612*62c56f98SSadaf Ebrahimirequires_gnutls
10613*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10614*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server supports all profiles. Client supports all profiles, in different order. gnutls server." \
10615*62c56f98SSadaf Ebrahimi          "$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" \
10616*62c56f98SSadaf Ebrahimi          "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
10617*62c56f98SSadaf Ebrahimi          0 \
10618*62c56f98SSadaf Ebrahimi          -c "client hello, adding use_srtp extension" \
10619*62c56f98SSadaf Ebrahimi          -c "found use_srtp extension" \
10620*62c56f98SSadaf Ebrahimi          -c "found srtp profile" \
10621*62c56f98SSadaf Ebrahimi          -c "selected srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80" \
10622*62c56f98SSadaf Ebrahimi          -c "DTLS-SRTP key material is"\
10623*62c56f98SSadaf Ebrahimi          -C "error"
10624*62c56f98SSadaf Ebrahimi
10625*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10626*62c56f98SSadaf Ebrahimirequires_gnutls
10627*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10628*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server supports all profiles. Client supports one profile. gnutls server." \
10629*62c56f98SSadaf Ebrahimi          "$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" \
10630*62c56f98SSadaf Ebrahimi          "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
10631*62c56f98SSadaf Ebrahimi          0 \
10632*62c56f98SSadaf Ebrahimi          -c "client hello, adding use_srtp extension" \
10633*62c56f98SSadaf Ebrahimi          -c "found use_srtp extension" \
10634*62c56f98SSadaf Ebrahimi          -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
10635*62c56f98SSadaf Ebrahimi          -c "selected srtp profile" \
10636*62c56f98SSadaf Ebrahimi          -c "DTLS-SRTP key material is"\
10637*62c56f98SSadaf Ebrahimi          -C "error"
10638*62c56f98SSadaf Ebrahimi
10639*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10640*62c56f98SSadaf Ebrahimirequires_gnutls
10641*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10642*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server supports one profile. Client supports all profiles. gnutls server." \
10643*62c56f98SSadaf Ebrahimi          "$G_SRV -u --srtp-profiles=SRTP_NULL_HMAC_SHA1_80" \
10644*62c56f98SSadaf Ebrahimi          "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
10645*62c56f98SSadaf Ebrahimi          0 \
10646*62c56f98SSadaf Ebrahimi          -c "client hello, adding use_srtp extension" \
10647*62c56f98SSadaf Ebrahimi          -c "found use_srtp extension" \
10648*62c56f98SSadaf Ebrahimi          -c "found srtp profile: MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80" \
10649*62c56f98SSadaf Ebrahimi          -c "selected srtp profile" \
10650*62c56f98SSadaf Ebrahimi          -c "DTLS-SRTP key material is"\
10651*62c56f98SSadaf Ebrahimi          -C "error"
10652*62c56f98SSadaf Ebrahimi
10653*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10654*62c56f98SSadaf Ebrahimirequires_gnutls
10655*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10656*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server and Client support only one matching profile. gnutls server." \
10657*62c56f98SSadaf Ebrahimi          "$G_SRV -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_32" \
10658*62c56f98SSadaf Ebrahimi          "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=2 debug_level=3" \
10659*62c56f98SSadaf Ebrahimi          0 \
10660*62c56f98SSadaf Ebrahimi          -c "client hello, adding use_srtp extension" \
10661*62c56f98SSadaf Ebrahimi          -c "found use_srtp extension" \
10662*62c56f98SSadaf Ebrahimi          -c "found srtp profile: MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32" \
10663*62c56f98SSadaf Ebrahimi          -c "selected srtp profile" \
10664*62c56f98SSadaf Ebrahimi          -c "DTLS-SRTP key material is"\
10665*62c56f98SSadaf Ebrahimi          -C "error"
10666*62c56f98SSadaf Ebrahimi
10667*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10668*62c56f98SSadaf Ebrahimirequires_gnutls
10669*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10670*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server and Client support only one different profile. gnutls server." \
10671*62c56f98SSadaf Ebrahimi          "$G_SRV -u --srtp-profiles=SRTP_AES128_CM_HMAC_SHA1_32" \
10672*62c56f98SSadaf Ebrahimi          "$P_CLI dtls=1 use_srtp=1 srtp_force_profile=6 debug_level=3" \
10673*62c56f98SSadaf Ebrahimi          0 \
10674*62c56f98SSadaf Ebrahimi          -c "client hello, adding use_srtp extension" \
10675*62c56f98SSadaf Ebrahimi          -C "found use_srtp extension" \
10676*62c56f98SSadaf Ebrahimi          -C "found srtp profile" \
10677*62c56f98SSadaf Ebrahimi          -C "selected srtp profile" \
10678*62c56f98SSadaf Ebrahimi          -C "DTLS-SRTP key material is"\
10679*62c56f98SSadaf Ebrahimi          -C "error"
10680*62c56f98SSadaf Ebrahimi
10681*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10682*62c56f98SSadaf Ebrahimirequires_gnutls
10683*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10684*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP server doesn't support use_srtp extension. gnutls server" \
10685*62c56f98SSadaf Ebrahimi          "$G_SRV -u" \
10686*62c56f98SSadaf Ebrahimi          "$P_CLI dtls=1 use_srtp=1 debug_level=3" \
10687*62c56f98SSadaf Ebrahimi          0 \
10688*62c56f98SSadaf Ebrahimi          -c "client hello, adding use_srtp extension" \
10689*62c56f98SSadaf Ebrahimi          -C "found use_srtp extension" \
10690*62c56f98SSadaf Ebrahimi          -C "found srtp profile" \
10691*62c56f98SSadaf Ebrahimi          -C "selected srtp profile" \
10692*62c56f98SSadaf Ebrahimi          -C "DTLS-SRTP key material is"\
10693*62c56f98SSadaf Ebrahimi          -C "error"
10694*62c56f98SSadaf Ebrahimi
10695*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_DTLS_SRTP
10696*62c56f98SSadaf Ebrahimirequires_gnutls
10697*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10698*62c56f98SSadaf Ebrahimirun_test  "DTLS-SRTP all profiles supported. mki used. gnutls server." \
10699*62c56f98SSadaf Ebrahimi          "$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" \
10700*62c56f98SSadaf Ebrahimi          "$P_CLI dtls=1 use_srtp=1 mki=542310ab34290481 debug_level=3" \
10701*62c56f98SSadaf Ebrahimi          0 \
10702*62c56f98SSadaf Ebrahimi          -c "client hello, adding use_srtp extension" \
10703*62c56f98SSadaf Ebrahimi          -c "found use_srtp extension" \
10704*62c56f98SSadaf Ebrahimi          -c "found srtp profile" \
10705*62c56f98SSadaf Ebrahimi          -c "selected srtp profile" \
10706*62c56f98SSadaf Ebrahimi          -c "DTLS-SRTP key material is"\
10707*62c56f98SSadaf Ebrahimi          -c "DTLS-SRTP mki value:"\
10708*62c56f98SSadaf Ebrahimi          -c "dumping 'sending mki' (8 bytes)" \
10709*62c56f98SSadaf Ebrahimi          -c "dumping 'received mki' (8 bytes)" \
10710*62c56f98SSadaf Ebrahimi          -C "error"
10711*62c56f98SSadaf Ebrahimi
10712*62c56f98SSadaf Ebrahimi# Tests for specific things with "unreliable" UDP connection
10713*62c56f98SSadaf Ebrahimi
10714*62c56f98SSadaf Ebrahiminot_with_valgrind # spurious resend due to timeout
10715*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10716*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: reference" \
10717*62c56f98SSadaf Ebrahimi            -p "$P_PXY" \
10718*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=2 hs_timeout=10000-20000" \
10719*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=2 hs_timeout=10000-20000" \
10720*62c56f98SSadaf Ebrahimi            0 \
10721*62c56f98SSadaf Ebrahimi            -C "replayed record" \
10722*62c56f98SSadaf Ebrahimi            -S "replayed record" \
10723*62c56f98SSadaf Ebrahimi            -C "Buffer record from epoch" \
10724*62c56f98SSadaf Ebrahimi            -S "Buffer record from epoch" \
10725*62c56f98SSadaf Ebrahimi            -C "ssl_buffer_message" \
10726*62c56f98SSadaf Ebrahimi            -S "ssl_buffer_message" \
10727*62c56f98SSadaf Ebrahimi            -C "discarding invalid record" \
10728*62c56f98SSadaf Ebrahimi            -S "discarding invalid record" \
10729*62c56f98SSadaf Ebrahimi            -S "resend" \
10730*62c56f98SSadaf Ebrahimi            -s "Extra-header:" \
10731*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
10732*62c56f98SSadaf Ebrahimi
10733*62c56f98SSadaf Ebrahiminot_with_valgrind # spurious resend due to timeout
10734*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10735*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: duplicate every packet" \
10736*62c56f98SSadaf Ebrahimi            -p "$P_PXY duplicate=1" \
10737*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 dgram_packing=0 debug_level=2 hs_timeout=10000-20000" \
10738*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 dgram_packing=0 debug_level=2 hs_timeout=10000-20000" \
10739*62c56f98SSadaf Ebrahimi            0 \
10740*62c56f98SSadaf Ebrahimi            -c "replayed record" \
10741*62c56f98SSadaf Ebrahimi            -s "replayed record" \
10742*62c56f98SSadaf Ebrahimi            -c "record from another epoch" \
10743*62c56f98SSadaf Ebrahimi            -s "record from another epoch" \
10744*62c56f98SSadaf Ebrahimi            -S "resend" \
10745*62c56f98SSadaf Ebrahimi            -s "Extra-header:" \
10746*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
10747*62c56f98SSadaf Ebrahimi
10748*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10749*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: duplicate every packet, server anti-replay off" \
10750*62c56f98SSadaf Ebrahimi            -p "$P_PXY duplicate=1" \
10751*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 dgram_packing=0 debug_level=2 anti_replay=0" \
10752*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \
10753*62c56f98SSadaf Ebrahimi            0 \
10754*62c56f98SSadaf Ebrahimi            -c "replayed record" \
10755*62c56f98SSadaf Ebrahimi            -S "replayed record" \
10756*62c56f98SSadaf Ebrahimi            -c "record from another epoch" \
10757*62c56f98SSadaf Ebrahimi            -s "record from another epoch" \
10758*62c56f98SSadaf Ebrahimi            -c "resend" \
10759*62c56f98SSadaf Ebrahimi            -s "resend" \
10760*62c56f98SSadaf Ebrahimi            -s "Extra-header:" \
10761*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
10762*62c56f98SSadaf Ebrahimi
10763*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10764*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: multiple records in same datagram" \
10765*62c56f98SSadaf Ebrahimi            -p "$P_PXY pack=50" \
10766*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \
10767*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \
10768*62c56f98SSadaf Ebrahimi            0 \
10769*62c56f98SSadaf Ebrahimi            -c "next record in same datagram" \
10770*62c56f98SSadaf Ebrahimi            -s "next record in same datagram"
10771*62c56f98SSadaf Ebrahimi
10772*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10773*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: multiple records in same datagram, duplicate every packet" \
10774*62c56f98SSadaf Ebrahimi            -p "$P_PXY pack=50 duplicate=1" \
10775*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \
10776*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \
10777*62c56f98SSadaf Ebrahimi            0 \
10778*62c56f98SSadaf Ebrahimi            -c "next record in same datagram" \
10779*62c56f98SSadaf Ebrahimi            -s "next record in same datagram"
10780*62c56f98SSadaf Ebrahimi
10781*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10782*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: inject invalid AD record, default badmac_limit" \
10783*62c56f98SSadaf Ebrahimi            -p "$P_PXY bad_ad=1" \
10784*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 dgram_packing=0 debug_level=1" \
10785*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 dgram_packing=0 debug_level=1 read_timeout=100" \
10786*62c56f98SSadaf Ebrahimi            0 \
10787*62c56f98SSadaf Ebrahimi            -c "discarding invalid record (mac)" \
10788*62c56f98SSadaf Ebrahimi            -s "discarding invalid record (mac)" \
10789*62c56f98SSadaf Ebrahimi            -s "Extra-header:" \
10790*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK" \
10791*62c56f98SSadaf Ebrahimi            -S "too many records with bad MAC" \
10792*62c56f98SSadaf Ebrahimi            -S "Verification of the message MAC failed"
10793*62c56f98SSadaf Ebrahimi
10794*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10795*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: inject invalid AD record, badmac_limit 1" \
10796*62c56f98SSadaf Ebrahimi            -p "$P_PXY bad_ad=1" \
10797*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 dgram_packing=0 debug_level=1 badmac_limit=1" \
10798*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 dgram_packing=0 debug_level=1 read_timeout=100" \
10799*62c56f98SSadaf Ebrahimi            1 \
10800*62c56f98SSadaf Ebrahimi            -C "discarding invalid record (mac)" \
10801*62c56f98SSadaf Ebrahimi            -S "discarding invalid record (mac)" \
10802*62c56f98SSadaf Ebrahimi            -S "Extra-header:" \
10803*62c56f98SSadaf Ebrahimi            -C "HTTP/1.0 200 OK" \
10804*62c56f98SSadaf Ebrahimi            -s "too many records with bad MAC" \
10805*62c56f98SSadaf Ebrahimi            -s "Verification of the message MAC failed"
10806*62c56f98SSadaf Ebrahimi
10807*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10808*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: inject invalid AD record, badmac_limit 2" \
10809*62c56f98SSadaf Ebrahimi            -p "$P_PXY bad_ad=1" \
10810*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 dgram_packing=0 debug_level=1 badmac_limit=2" \
10811*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 dgram_packing=0 debug_level=1 read_timeout=100" \
10812*62c56f98SSadaf Ebrahimi            0 \
10813*62c56f98SSadaf Ebrahimi            -c "discarding invalid record (mac)" \
10814*62c56f98SSadaf Ebrahimi            -s "discarding invalid record (mac)" \
10815*62c56f98SSadaf Ebrahimi            -s "Extra-header:" \
10816*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK" \
10817*62c56f98SSadaf Ebrahimi            -S "too many records with bad MAC" \
10818*62c56f98SSadaf Ebrahimi            -S "Verification of the message MAC failed"
10819*62c56f98SSadaf Ebrahimi
10820*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10821*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: inject invalid AD record, badmac_limit 2, exchanges 2"\
10822*62c56f98SSadaf Ebrahimi            -p "$P_PXY bad_ad=1" \
10823*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 dgram_packing=0 debug_level=1 badmac_limit=2 exchanges=2" \
10824*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 dgram_packing=0 debug_level=1 read_timeout=100 exchanges=2" \
10825*62c56f98SSadaf Ebrahimi            1 \
10826*62c56f98SSadaf Ebrahimi            -c "discarding invalid record (mac)" \
10827*62c56f98SSadaf Ebrahimi            -s "discarding invalid record (mac)" \
10828*62c56f98SSadaf Ebrahimi            -s "Extra-header:" \
10829*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK" \
10830*62c56f98SSadaf Ebrahimi            -s "too many records with bad MAC" \
10831*62c56f98SSadaf Ebrahimi            -s "Verification of the message MAC failed"
10832*62c56f98SSadaf Ebrahimi
10833*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10834*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: delay ChangeCipherSpec" \
10835*62c56f98SSadaf Ebrahimi            -p "$P_PXY delay_ccs=1" \
10836*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 debug_level=1 dgram_packing=0" \
10837*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 debug_level=1 dgram_packing=0" \
10838*62c56f98SSadaf Ebrahimi            0 \
10839*62c56f98SSadaf Ebrahimi            -c "record from another epoch" \
10840*62c56f98SSadaf Ebrahimi            -s "record from another epoch" \
10841*62c56f98SSadaf Ebrahimi            -s "Extra-header:" \
10842*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
10843*62c56f98SSadaf Ebrahimi
10844*62c56f98SSadaf Ebrahimi# Tests for reordering support with DTLS
10845*62c56f98SSadaf Ebrahimi
10846*62c56f98SSadaf Ebrahimirequires_certificate_authentication
10847*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10848*62c56f98SSadaf Ebrahimirun_test    "DTLS reordering: Buffer out-of-order handshake message on client" \
10849*62c56f98SSadaf Ebrahimi            -p "$P_PXY delay_srv=ServerHello" \
10850*62c56f98SSadaf Ebrahimi            "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
10851*62c56f98SSadaf Ebrahimi            hs_timeout=2500-60000" \
10852*62c56f98SSadaf Ebrahimi            "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
10853*62c56f98SSadaf Ebrahimi            hs_timeout=2500-60000" \
10854*62c56f98SSadaf Ebrahimi            0 \
10855*62c56f98SSadaf Ebrahimi            -c "Buffering HS message" \
10856*62c56f98SSadaf Ebrahimi            -c "Next handshake message has been buffered - load"\
10857*62c56f98SSadaf Ebrahimi            -S "Buffering HS message" \
10858*62c56f98SSadaf Ebrahimi            -S "Next handshake message has been buffered - load"\
10859*62c56f98SSadaf Ebrahimi            -C "Injecting buffered CCS message" \
10860*62c56f98SSadaf Ebrahimi            -C "Remember CCS message" \
10861*62c56f98SSadaf Ebrahimi            -S "Injecting buffered CCS message" \
10862*62c56f98SSadaf Ebrahimi            -S "Remember CCS message"
10863*62c56f98SSadaf Ebrahimi
10864*62c56f98SSadaf Ebrahimirequires_certificate_authentication
10865*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10866*62c56f98SSadaf Ebrahimirun_test    "DTLS reordering: Buffer out-of-order handshake message fragment on client" \
10867*62c56f98SSadaf Ebrahimi            -p "$P_PXY delay_srv=ServerHello" \
10868*62c56f98SSadaf Ebrahimi            "$P_SRV mtu=512 dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
10869*62c56f98SSadaf Ebrahimi            hs_timeout=2500-60000" \
10870*62c56f98SSadaf Ebrahimi            "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
10871*62c56f98SSadaf Ebrahimi            hs_timeout=2500-60000" \
10872*62c56f98SSadaf Ebrahimi            0 \
10873*62c56f98SSadaf Ebrahimi            -c "Buffering HS message" \
10874*62c56f98SSadaf Ebrahimi            -c "found fragmented DTLS handshake message"\
10875*62c56f98SSadaf Ebrahimi            -c "Next handshake message 1 not or only partially bufffered" \
10876*62c56f98SSadaf Ebrahimi            -c "Next handshake message has been buffered - load"\
10877*62c56f98SSadaf Ebrahimi            -S "Buffering HS message" \
10878*62c56f98SSadaf Ebrahimi            -S "Next handshake message has been buffered - load"\
10879*62c56f98SSadaf Ebrahimi            -C "Injecting buffered CCS message" \
10880*62c56f98SSadaf Ebrahimi            -C "Remember CCS message" \
10881*62c56f98SSadaf Ebrahimi            -S "Injecting buffered CCS message" \
10882*62c56f98SSadaf Ebrahimi            -S "Remember CCS message"
10883*62c56f98SSadaf Ebrahimi
10884*62c56f98SSadaf Ebrahimi# The client buffers the ServerKeyExchange before receiving the fragmented
10885*62c56f98SSadaf Ebrahimi# Certificate message; at the time of writing, together these are aroudn 1200b
10886*62c56f98SSadaf Ebrahimi# in size, so that the bound below ensures that the certificate can be reassembled
10887*62c56f98SSadaf Ebrahimi# while keeping the ServerKeyExchange.
10888*62c56f98SSadaf Ebrahimirequires_certificate_authentication
10889*62c56f98SSadaf Ebrahimirequires_config_value_at_least "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 1300
10890*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10891*62c56f98SSadaf Ebrahimirun_test    "DTLS reordering: Buffer out-of-order hs msg before reassembling next" \
10892*62c56f98SSadaf Ebrahimi            -p "$P_PXY delay_srv=Certificate delay_srv=Certificate" \
10893*62c56f98SSadaf Ebrahimi            "$P_SRV mtu=512 dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
10894*62c56f98SSadaf Ebrahimi            hs_timeout=2500-60000" \
10895*62c56f98SSadaf Ebrahimi            "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
10896*62c56f98SSadaf Ebrahimi            hs_timeout=2500-60000" \
10897*62c56f98SSadaf Ebrahimi            0 \
10898*62c56f98SSadaf Ebrahimi            -c "Buffering HS message" \
10899*62c56f98SSadaf Ebrahimi            -c "Next handshake message has been buffered - load"\
10900*62c56f98SSadaf Ebrahimi            -C "attempt to make space by freeing buffered messages" \
10901*62c56f98SSadaf Ebrahimi            -S "Buffering HS message" \
10902*62c56f98SSadaf Ebrahimi            -S "Next handshake message has been buffered - load"\
10903*62c56f98SSadaf Ebrahimi            -C "Injecting buffered CCS message" \
10904*62c56f98SSadaf Ebrahimi            -C "Remember CCS message" \
10905*62c56f98SSadaf Ebrahimi            -S "Injecting buffered CCS message" \
10906*62c56f98SSadaf Ebrahimi            -S "Remember CCS message"
10907*62c56f98SSadaf Ebrahimi
10908*62c56f98SSadaf Ebrahimi# The size constraints ensure that the delayed certificate message can't
10909*62c56f98SSadaf Ebrahimi# be reassembled while keeping the ServerKeyExchange message, but it can
10910*62c56f98SSadaf Ebrahimi# when dropping it first.
10911*62c56f98SSadaf Ebrahimirequires_certificate_authentication
10912*62c56f98SSadaf Ebrahimirequires_config_value_at_least "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 900
10913*62c56f98SSadaf Ebrahimirequires_config_value_at_most "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 1299
10914*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10915*62c56f98SSadaf Ebrahimirun_test    "DTLS reordering: Buffer out-of-order hs msg before reassembling next, free buffered msg" \
10916*62c56f98SSadaf Ebrahimi            -p "$P_PXY delay_srv=Certificate delay_srv=Certificate" \
10917*62c56f98SSadaf Ebrahimi            "$P_SRV mtu=512 dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
10918*62c56f98SSadaf Ebrahimi            hs_timeout=2500-60000" \
10919*62c56f98SSadaf Ebrahimi            "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
10920*62c56f98SSadaf Ebrahimi            hs_timeout=2500-60000" \
10921*62c56f98SSadaf Ebrahimi            0 \
10922*62c56f98SSadaf Ebrahimi            -c "Buffering HS message" \
10923*62c56f98SSadaf Ebrahimi            -c "attempt to make space by freeing buffered future messages" \
10924*62c56f98SSadaf Ebrahimi            -c "Enough space available after freeing buffered HS messages" \
10925*62c56f98SSadaf Ebrahimi            -S "Buffering HS message" \
10926*62c56f98SSadaf Ebrahimi            -S "Next handshake message has been buffered - load"\
10927*62c56f98SSadaf Ebrahimi            -C "Injecting buffered CCS message" \
10928*62c56f98SSadaf Ebrahimi            -C "Remember CCS message" \
10929*62c56f98SSadaf Ebrahimi            -S "Injecting buffered CCS message" \
10930*62c56f98SSadaf Ebrahimi            -S "Remember CCS message"
10931*62c56f98SSadaf Ebrahimi
10932*62c56f98SSadaf Ebrahimirequires_certificate_authentication
10933*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10934*62c56f98SSadaf Ebrahimirun_test    "DTLS reordering: Buffer out-of-order handshake message on server" \
10935*62c56f98SSadaf Ebrahimi            -p "$P_PXY delay_cli=Certificate" \
10936*62c56f98SSadaf Ebrahimi            "$P_SRV dgram_packing=0 auth_mode=required cookies=0 dtls=1 debug_level=2 \
10937*62c56f98SSadaf Ebrahimi            hs_timeout=2500-60000" \
10938*62c56f98SSadaf Ebrahimi            "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
10939*62c56f98SSadaf Ebrahimi            hs_timeout=2500-60000" \
10940*62c56f98SSadaf Ebrahimi            0 \
10941*62c56f98SSadaf Ebrahimi            -C "Buffering HS message" \
10942*62c56f98SSadaf Ebrahimi            -C "Next handshake message has been buffered - load"\
10943*62c56f98SSadaf Ebrahimi            -s "Buffering HS message" \
10944*62c56f98SSadaf Ebrahimi            -s "Next handshake message has been buffered - load" \
10945*62c56f98SSadaf Ebrahimi            -C "Injecting buffered CCS message" \
10946*62c56f98SSadaf Ebrahimi            -C "Remember CCS message" \
10947*62c56f98SSadaf Ebrahimi            -S "Injecting buffered CCS message" \
10948*62c56f98SSadaf Ebrahimi            -S "Remember CCS message"
10949*62c56f98SSadaf Ebrahimi
10950*62c56f98SSadaf Ebrahimirequires_certificate_authentication
10951*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10952*62c56f98SSadaf Ebrahimirun_test    "DTLS reordering: Buffer out-of-order CCS message on client"\
10953*62c56f98SSadaf Ebrahimi            -p "$P_PXY delay_srv=NewSessionTicket" \
10954*62c56f98SSadaf Ebrahimi            "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
10955*62c56f98SSadaf Ebrahimi            hs_timeout=2500-60000" \
10956*62c56f98SSadaf Ebrahimi            "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
10957*62c56f98SSadaf Ebrahimi            hs_timeout=2500-60000" \
10958*62c56f98SSadaf Ebrahimi            0 \
10959*62c56f98SSadaf Ebrahimi            -C "Buffering HS message" \
10960*62c56f98SSadaf Ebrahimi            -C "Next handshake message has been buffered - load"\
10961*62c56f98SSadaf Ebrahimi            -S "Buffering HS message" \
10962*62c56f98SSadaf Ebrahimi            -S "Next handshake message has been buffered - load" \
10963*62c56f98SSadaf Ebrahimi            -c "Injecting buffered CCS message" \
10964*62c56f98SSadaf Ebrahimi            -c "Remember CCS message" \
10965*62c56f98SSadaf Ebrahimi            -S "Injecting buffered CCS message" \
10966*62c56f98SSadaf Ebrahimi            -S "Remember CCS message"
10967*62c56f98SSadaf Ebrahimi
10968*62c56f98SSadaf Ebrahimirequires_certificate_authentication
10969*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10970*62c56f98SSadaf Ebrahimirun_test    "DTLS reordering: Buffer out-of-order CCS message on server"\
10971*62c56f98SSadaf Ebrahimi            -p "$P_PXY delay_cli=ClientKeyExchange" \
10972*62c56f98SSadaf Ebrahimi            "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
10973*62c56f98SSadaf Ebrahimi            hs_timeout=2500-60000" \
10974*62c56f98SSadaf Ebrahimi            "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
10975*62c56f98SSadaf Ebrahimi            hs_timeout=2500-60000" \
10976*62c56f98SSadaf Ebrahimi            0 \
10977*62c56f98SSadaf Ebrahimi            -C "Buffering HS message" \
10978*62c56f98SSadaf Ebrahimi            -C "Next handshake message has been buffered - load"\
10979*62c56f98SSadaf Ebrahimi            -S "Buffering HS message" \
10980*62c56f98SSadaf Ebrahimi            -S "Next handshake message has been buffered - load" \
10981*62c56f98SSadaf Ebrahimi            -C "Injecting buffered CCS message" \
10982*62c56f98SSadaf Ebrahimi            -C "Remember CCS message" \
10983*62c56f98SSadaf Ebrahimi            -s "Injecting buffered CCS message" \
10984*62c56f98SSadaf Ebrahimi            -s "Remember CCS message"
10985*62c56f98SSadaf Ebrahimi
10986*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
10987*62c56f98SSadaf Ebrahimirun_test    "DTLS reordering: Buffer encrypted Finished message" \
10988*62c56f98SSadaf Ebrahimi            -p "$P_PXY delay_ccs=1" \
10989*62c56f98SSadaf Ebrahimi            "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2 \
10990*62c56f98SSadaf Ebrahimi            hs_timeout=2500-60000" \
10991*62c56f98SSadaf Ebrahimi            "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \
10992*62c56f98SSadaf Ebrahimi            hs_timeout=2500-60000" \
10993*62c56f98SSadaf Ebrahimi            0 \
10994*62c56f98SSadaf Ebrahimi            -s "Buffer record from epoch 1" \
10995*62c56f98SSadaf Ebrahimi            -s "Found buffered record from current epoch - load" \
10996*62c56f98SSadaf Ebrahimi            -c "Buffer record from epoch 1" \
10997*62c56f98SSadaf Ebrahimi            -c "Found buffered record from current epoch - load"
10998*62c56f98SSadaf Ebrahimi
10999*62c56f98SSadaf Ebrahimi# In this test, both the fragmented NewSessionTicket and the ChangeCipherSpec
11000*62c56f98SSadaf Ebrahimi# from the server are delayed, so that the encrypted Finished message
11001*62c56f98SSadaf Ebrahimi# is received and buffered. When the fragmented NewSessionTicket comes
11002*62c56f98SSadaf Ebrahimi# in afterwards, the encrypted Finished message must be freed in order
11003*62c56f98SSadaf Ebrahimi# to make space for the NewSessionTicket to be reassembled.
11004*62c56f98SSadaf Ebrahimi# This works only in very particular circumstances:
11005*62c56f98SSadaf Ebrahimi# - MBEDTLS_SSL_DTLS_MAX_BUFFERING must be large enough to allow buffering
11006*62c56f98SSadaf Ebrahimi#   of the NewSessionTicket, but small enough to also allow buffering of
11007*62c56f98SSadaf Ebrahimi#   the encrypted Finished message.
11008*62c56f98SSadaf Ebrahimi# - The MTU setting on the server must be so small that the NewSessionTicket
11009*62c56f98SSadaf Ebrahimi#   needs to be fragmented.
11010*62c56f98SSadaf Ebrahimi# - All messages sent by the server must be small enough to be either sent
11011*62c56f98SSadaf Ebrahimi#   without fragmentation or be reassembled within the bounds of
11012*62c56f98SSadaf Ebrahimi#   MBEDTLS_SSL_DTLS_MAX_BUFFERING. Achieve this by testing with a PSK-based
11013*62c56f98SSadaf Ebrahimi#   handshake, omitting CRTs.
11014*62c56f98SSadaf Ebrahimirequires_config_value_at_least "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 190
11015*62c56f98SSadaf Ebrahimirequires_config_value_at_most "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 230
11016*62c56f98SSadaf Ebrahimirun_test    "DTLS reordering: Buffer encrypted Finished message, drop for fragmented NewSessionTicket" \
11017*62c56f98SSadaf Ebrahimi            -p "$P_PXY delay_srv=NewSessionTicket delay_srv=NewSessionTicket delay_ccs=1" \
11018*62c56f98SSadaf Ebrahimi            "$P_SRV mtu=140 response_size=90 dgram_packing=0 psk=abc123 psk_identity=foo cookies=0 dtls=1 debug_level=2" \
11019*62c56f98SSadaf Ebrahimi            "$P_CLI dgram_packing=0 dtls=1 debug_level=2 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8 psk=abc123 psk_identity=foo" \
11020*62c56f98SSadaf Ebrahimi            0 \
11021*62c56f98SSadaf Ebrahimi            -s "Buffer record from epoch 1" \
11022*62c56f98SSadaf Ebrahimi            -s "Found buffered record from current epoch - load" \
11023*62c56f98SSadaf Ebrahimi            -c "Buffer record from epoch 1" \
11024*62c56f98SSadaf Ebrahimi            -C "Found buffered record from current epoch - load" \
11025*62c56f98SSadaf Ebrahimi            -c "Enough space available after freeing future epoch record"
11026*62c56f98SSadaf Ebrahimi
11027*62c56f98SSadaf Ebrahimi# Tests for "randomly unreliable connection": try a variety of flows and peers
11028*62c56f98SSadaf Ebrahimi
11029*62c56f98SSadaf Ebrahimiclient_needs_more_time 2
11030*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: 3d (drop, delay, duplicate), \"short\" PSK handshake" \
11031*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=5 delay=5 duplicate=5" \
11032*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
11033*62c56f98SSadaf Ebrahimi             psk=abc123" \
11034*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \
11035*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
11036*62c56f98SSadaf Ebrahimi            0 \
11037*62c56f98SSadaf Ebrahimi            -s "Extra-header:" \
11038*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
11039*62c56f98SSadaf Ebrahimi
11040*62c56f98SSadaf Ebrahimiclient_needs_more_time 2
11041*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: 3d, \"short\" RSA handshake" \
11042*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=5 delay=5 duplicate=5" \
11043*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none" \
11044*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 \
11045*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \
11046*62c56f98SSadaf Ebrahimi            0 \
11047*62c56f98SSadaf Ebrahimi            -s "Extra-header:" \
11048*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
11049*62c56f98SSadaf Ebrahimi
11050*62c56f98SSadaf Ebrahimiclient_needs_more_time 2
11051*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
11052*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: 3d, \"short\" (no ticket, no cli_auth) FS handshake" \
11053*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=5 delay=5 duplicate=5" \
11054*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none" \
11055*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0" \
11056*62c56f98SSadaf Ebrahimi            0 \
11057*62c56f98SSadaf Ebrahimi            -s "Extra-header:" \
11058*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
11059*62c56f98SSadaf Ebrahimi
11060*62c56f98SSadaf Ebrahimiclient_needs_more_time 2
11061*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
11062*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: 3d, FS, client auth" \
11063*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=5 delay=5 duplicate=5" \
11064*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=required" \
11065*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0" \
11066*62c56f98SSadaf Ebrahimi            0 \
11067*62c56f98SSadaf Ebrahimi            -s "Extra-header:" \
11068*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
11069*62c56f98SSadaf Ebrahimi
11070*62c56f98SSadaf Ebrahimiclient_needs_more_time 2
11071*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
11072*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: 3d, FS, ticket" \
11073*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=5 delay=5 duplicate=5" \
11074*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=1 auth_mode=none" \
11075*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=1" \
11076*62c56f98SSadaf Ebrahimi            0 \
11077*62c56f98SSadaf Ebrahimi            -s "Extra-header:" \
11078*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
11079*62c56f98SSadaf Ebrahimi
11080*62c56f98SSadaf Ebrahimiclient_needs_more_time 2
11081*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
11082*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: 3d, max handshake (FS, ticket + client auth)" \
11083*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=5 delay=5 duplicate=5" \
11084*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=1 auth_mode=required" \
11085*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=1" \
11086*62c56f98SSadaf Ebrahimi            0 \
11087*62c56f98SSadaf Ebrahimi            -s "Extra-header:" \
11088*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
11089*62c56f98SSadaf Ebrahimi
11090*62c56f98SSadaf Ebrahimiclient_needs_more_time 2
11091*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
11092*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: 3d, max handshake, nbio" \
11093*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=5 delay=5 duplicate=5" \
11094*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 nbio=2 tickets=1 \
11095*62c56f98SSadaf Ebrahimi             auth_mode=required" \
11096*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 nbio=2 tickets=1" \
11097*62c56f98SSadaf Ebrahimi            0 \
11098*62c56f98SSadaf Ebrahimi            -s "Extra-header:" \
11099*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
11100*62c56f98SSadaf Ebrahimi
11101*62c56f98SSadaf Ebrahimiclient_needs_more_time 4
11102*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CACHE_C
11103*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: 3d, min handshake, resumption" \
11104*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=5 delay=5 duplicate=5" \
11105*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
11106*62c56f98SSadaf Ebrahimi             psk=abc123 debug_level=3" \
11107*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \
11108*62c56f98SSadaf Ebrahimi             debug_level=3 reconnect=1 skip_close_notify=1 read_timeout=1000 max_resend=10 \
11109*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
11110*62c56f98SSadaf Ebrahimi            0 \
11111*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
11112*62c56f98SSadaf Ebrahimi            -c "a session has been resumed" \
11113*62c56f98SSadaf Ebrahimi            -s "Extra-header:" \
11114*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
11115*62c56f98SSadaf Ebrahimi
11116*62c56f98SSadaf Ebrahimiclient_needs_more_time 4
11117*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CACHE_C
11118*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: 3d, min handshake, resumption, nbio" \
11119*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=5 delay=5 duplicate=5" \
11120*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
11121*62c56f98SSadaf Ebrahimi             psk=abc123 debug_level=3 nbio=2" \
11122*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \
11123*62c56f98SSadaf Ebrahimi             debug_level=3 reconnect=1 skip_close_notify=1 read_timeout=1000 max_resend=10 \
11124*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8 nbio=2" \
11125*62c56f98SSadaf Ebrahimi            0 \
11126*62c56f98SSadaf Ebrahimi            -s "a session has been resumed" \
11127*62c56f98SSadaf Ebrahimi            -c "a session has been resumed" \
11128*62c56f98SSadaf Ebrahimi            -s "Extra-header:" \
11129*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
11130*62c56f98SSadaf Ebrahimi
11131*62c56f98SSadaf Ebrahimiclient_needs_more_time 4
11132*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
11133*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: 3d, min handshake, client-initiated renego" \
11134*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=5 delay=5 duplicate=5" \
11135*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
11136*62c56f98SSadaf Ebrahimi             psk=abc123 renegotiation=1 debug_level=2" \
11137*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \
11138*62c56f98SSadaf Ebrahimi             renegotiate=1 debug_level=2 \
11139*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
11140*62c56f98SSadaf Ebrahimi            0 \
11141*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
11142*62c56f98SSadaf Ebrahimi            -s "=> renegotiate" \
11143*62c56f98SSadaf Ebrahimi            -s "Extra-header:" \
11144*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
11145*62c56f98SSadaf Ebrahimi
11146*62c56f98SSadaf Ebrahimiclient_needs_more_time 4
11147*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
11148*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: 3d, min handshake, client-initiated renego, nbio" \
11149*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=5 delay=5 duplicate=5" \
11150*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
11151*62c56f98SSadaf Ebrahimi             psk=abc123 renegotiation=1 debug_level=2" \
11152*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \
11153*62c56f98SSadaf Ebrahimi             renegotiate=1 debug_level=2 \
11154*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
11155*62c56f98SSadaf Ebrahimi            0 \
11156*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
11157*62c56f98SSadaf Ebrahimi            -s "=> renegotiate" \
11158*62c56f98SSadaf Ebrahimi            -s "Extra-header:" \
11159*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
11160*62c56f98SSadaf Ebrahimi
11161*62c56f98SSadaf Ebrahimiclient_needs_more_time 4
11162*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
11163*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: 3d, min handshake, server-initiated renego" \
11164*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=5 delay=5 duplicate=5" \
11165*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
11166*62c56f98SSadaf Ebrahimi             psk=abc123 renegotiate=1 renegotiation=1 exchanges=4 \
11167*62c56f98SSadaf Ebrahimi             debug_level=2" \
11168*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \
11169*62c56f98SSadaf Ebrahimi             renegotiation=1 exchanges=4 debug_level=2 \
11170*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
11171*62c56f98SSadaf Ebrahimi            0 \
11172*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
11173*62c56f98SSadaf Ebrahimi            -s "=> renegotiate" \
11174*62c56f98SSadaf Ebrahimi            -s "Extra-header:" \
11175*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
11176*62c56f98SSadaf Ebrahimi
11177*62c56f98SSadaf Ebrahimiclient_needs_more_time 4
11178*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_RENEGOTIATION
11179*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: 3d, min handshake, server-initiated renego, nbio" \
11180*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=5 delay=5 duplicate=5" \
11181*62c56f98SSadaf Ebrahimi            "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \
11182*62c56f98SSadaf Ebrahimi             psk=abc123 renegotiate=1 renegotiation=1 exchanges=4 \
11183*62c56f98SSadaf Ebrahimi             debug_level=2 nbio=2" \
11184*62c56f98SSadaf Ebrahimi            "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \
11185*62c56f98SSadaf Ebrahimi             renegotiation=1 exchanges=4 debug_level=2 nbio=2 \
11186*62c56f98SSadaf Ebrahimi             force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \
11187*62c56f98SSadaf Ebrahimi            0 \
11188*62c56f98SSadaf Ebrahimi            -c "=> renegotiate" \
11189*62c56f98SSadaf Ebrahimi            -s "=> renegotiate" \
11190*62c56f98SSadaf Ebrahimi            -s "Extra-header:" \
11191*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
11192*62c56f98SSadaf Ebrahimi
11193*62c56f98SSadaf Ebrahimi## The three tests below require 1.1.1a or higher version of openssl, otherwise
11194*62c56f98SSadaf Ebrahimi## it might trigger a bug due to openssl (https://github.com/openssl/openssl/issues/6902)
11195*62c56f98SSadaf Ebrahimi## Besides, openssl should use dtls1_2 or dtls, otherwise it will cause "SSL alert number 70" error
11196*62c56f98SSadaf Ebrahimirequires_openssl_next
11197*62c56f98SSadaf Ebrahimiclient_needs_more_time 6
11198*62c56f98SSadaf Ebrahiminot_with_valgrind # risk of non-mbedtls peer timing out
11199*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
11200*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: 3d, openssl server" \
11201*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=5 delay=5 duplicate=5 protect_hvr=1" \
11202*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -dtls1_2 -mtu 2048" \
11203*62c56f98SSadaf Ebrahimi            "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000 tickets=0" \
11204*62c56f98SSadaf Ebrahimi            0 \
11205*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
11206*62c56f98SSadaf Ebrahimi
11207*62c56f98SSadaf Ebrahimirequires_openssl_next
11208*62c56f98SSadaf Ebrahimiclient_needs_more_time 8
11209*62c56f98SSadaf Ebrahiminot_with_valgrind # risk of non-mbedtls peer timing out
11210*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
11211*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: 3d, openssl server, fragmentation" \
11212*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=5 delay=5 duplicate=5 protect_hvr=1" \
11213*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -dtls1_2 -mtu 768" \
11214*62c56f98SSadaf Ebrahimi            "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000 tickets=0" \
11215*62c56f98SSadaf Ebrahimi            0 \
11216*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
11217*62c56f98SSadaf Ebrahimi
11218*62c56f98SSadaf Ebrahimirequires_openssl_next
11219*62c56f98SSadaf Ebrahimiclient_needs_more_time 8
11220*62c56f98SSadaf Ebrahiminot_with_valgrind # risk of non-mbedtls peer timing out
11221*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
11222*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: 3d, openssl server, fragmentation, nbio" \
11223*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=5 delay=5 duplicate=5 protect_hvr=1" \
11224*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -dtls1_2 -mtu 768" \
11225*62c56f98SSadaf Ebrahimi            "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000 nbio=2 tickets=0" \
11226*62c56f98SSadaf Ebrahimi            0 \
11227*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
11228*62c56f98SSadaf Ebrahimi
11229*62c56f98SSadaf Ebrahimirequires_gnutls
11230*62c56f98SSadaf Ebrahimiclient_needs_more_time 6
11231*62c56f98SSadaf Ebrahiminot_with_valgrind # risk of non-mbedtls peer timing out
11232*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
11233*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: 3d, gnutls server" \
11234*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=5 delay=5 duplicate=5" \
11235*62c56f98SSadaf Ebrahimi            "$G_SRV -u --mtu 2048 -a" \
11236*62c56f98SSadaf Ebrahimi            "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000" \
11237*62c56f98SSadaf Ebrahimi            0 \
11238*62c56f98SSadaf Ebrahimi            -s "Extra-header:" \
11239*62c56f98SSadaf Ebrahimi            -c "Extra-header:"
11240*62c56f98SSadaf Ebrahimi
11241*62c56f98SSadaf Ebrahimirequires_gnutls_next
11242*62c56f98SSadaf Ebrahimiclient_needs_more_time 8
11243*62c56f98SSadaf Ebrahiminot_with_valgrind # risk of non-mbedtls peer timing out
11244*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
11245*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: 3d, gnutls server, fragmentation" \
11246*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=5 delay=5 duplicate=5" \
11247*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV -u --mtu 512" \
11248*62c56f98SSadaf Ebrahimi            "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000" \
11249*62c56f98SSadaf Ebrahimi            0 \
11250*62c56f98SSadaf Ebrahimi            -s "Extra-header:" \
11251*62c56f98SSadaf Ebrahimi            -c "Extra-header:"
11252*62c56f98SSadaf Ebrahimi
11253*62c56f98SSadaf Ebrahimirequires_gnutls_next
11254*62c56f98SSadaf Ebrahimiclient_needs_more_time 8
11255*62c56f98SSadaf Ebrahiminot_with_valgrind # risk of non-mbedtls peer timing out
11256*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
11257*62c56f98SSadaf Ebrahimirun_test    "DTLS proxy: 3d, gnutls server, fragmentation, nbio" \
11258*62c56f98SSadaf Ebrahimi            -p "$P_PXY drop=5 delay=5 duplicate=5" \
11259*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV -u --mtu 512" \
11260*62c56f98SSadaf Ebrahimi            "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000 nbio=2" \
11261*62c56f98SSadaf Ebrahimi            0 \
11262*62c56f98SSadaf Ebrahimi            -s "Extra-header:" \
11263*62c56f98SSadaf Ebrahimi            -c "Extra-header:"
11264*62c56f98SSadaf Ebrahimi
11265*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
11266*62c56f98SSadaf Ebrahimirun_test    "export keys functionality" \
11267*62c56f98SSadaf Ebrahimi            "$P_SRV eap_tls=1 debug_level=3" \
11268*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls12 eap_tls=1 debug_level=3" \
11269*62c56f98SSadaf Ebrahimi            0 \
11270*62c56f98SSadaf Ebrahimi            -c "EAP-TLS key material is:"\
11271*62c56f98SSadaf Ebrahimi            -s "EAP-TLS key material is:"\
11272*62c56f98SSadaf Ebrahimi            -c "EAP-TLS IV is:" \
11273*62c56f98SSadaf Ebrahimi            -s "EAP-TLS IV is:"
11274*62c56f98SSadaf Ebrahimi
11275*62c56f98SSadaf Ebrahimi# openssl feature tests: check if tls1.3 exists.
11276*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3
11277*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Test openssl tls1_3 feature" \
11278*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -tls1_3 -msg" \
11279*62c56f98SSadaf Ebrahimi            "$O_NEXT_CLI -tls1_3 -msg" \
11280*62c56f98SSadaf Ebrahimi            0 \
11281*62c56f98SSadaf Ebrahimi            -c "TLS 1.3" \
11282*62c56f98SSadaf Ebrahimi            -s "TLS 1.3"
11283*62c56f98SSadaf Ebrahimi
11284*62c56f98SSadaf Ebrahimi# gnutls feature tests: check if TLS 1.3 is supported as well as the NO_TICKETS and DISABLE_TLS13_COMPAT_MODE options.
11285*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
11286*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
11287*62c56f98SSadaf Ebrahimirequires_gnutls_next_disable_tls13_compat
11288*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Test gnutls tls1_3 feature" \
11289*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE --disable-client-cert " \
11290*62c56f98SSadaf Ebrahimi            "$G_NEXT_CLI localhost --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE -V" \
11291*62c56f98SSadaf Ebrahimi            0 \
11292*62c56f98SSadaf Ebrahimi            -s "Version: TLS1.3" \
11293*62c56f98SSadaf Ebrahimi            -c "Version: TLS1.3"
11294*62c56f98SSadaf Ebrahimi
11295*62c56f98SSadaf Ebrahimi# TLS1.3 test cases
11296*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
11297*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11298*62c56f98SSadaf Ebrahimirequires_ciphersuite_enabled TLS1-3-CHACHA20-POLY1305-SHA256
11299*62c56f98SSadaf Ebrahimirequires_any_configs_enabled "PSA_WANT_ECC_MONTGOMERY_255"
11300*62c56f98SSadaf Ebrahimirequires_any_configs_enabled "PSA_WANT_ECC_SECP_R1_256"
11301*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Default" \
11302*62c56f98SSadaf Ebrahimi            "$P_SRV allow_sha1=0 debug_level=3 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13" \
11303*62c56f98SSadaf Ebrahimi            "$P_CLI allow_sha1=0" \
11304*62c56f98SSadaf Ebrahimi            0 \
11305*62c56f98SSadaf Ebrahimi            -s "Protocol is TLSv1.3" \
11306*62c56f98SSadaf Ebrahimi            -s "Ciphersuite is TLS1-3-CHACHA20-POLY1305-SHA256" \
11307*62c56f98SSadaf Ebrahimi            -s "ECDH/FFDH group: " \
11308*62c56f98SSadaf Ebrahimi            -s "selected signature algorithm ecdsa_secp256r1_sha256"
11309*62c56f98SSadaf Ebrahimi
11310*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
11311*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11312*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11313*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11314*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11315*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: minimal feature sets - openssl" \
11316*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache" \
11317*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3" \
11318*62c56f98SSadaf Ebrahimi            0 \
11319*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_HELLO_REQUEST" \
11320*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_SERVER_HELLO" \
11321*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
11322*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CERTIFICATE_REQUEST" \
11323*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
11324*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CERTIFICATE_VERIFY" \
11325*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_SERVER_FINISHED" \
11326*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_FINISHED" \
11327*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_FLUSH_BUFFERS" \
11328*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_HANDSHAKE_WRAPUP" \
11329*62c56f98SSadaf Ebrahimi            -c "<= ssl_tls13_process_server_hello" \
11330*62c56f98SSadaf Ebrahimi            -c "server hello, chosen ciphersuite: ( 1303 ) - TLS1-3-CHACHA20-POLY1305-SHA256" \
11331*62c56f98SSadaf Ebrahimi            -c "DHE group name: " \
11332*62c56f98SSadaf Ebrahimi            -c "=> ssl_tls13_process_server_hello" \
11333*62c56f98SSadaf Ebrahimi            -c "<= parse encrypted extensions" \
11334*62c56f98SSadaf Ebrahimi            -c "Certificate verification flags clear" \
11335*62c56f98SSadaf Ebrahimi            -c "=> parse certificate verify" \
11336*62c56f98SSadaf Ebrahimi            -c "<= parse certificate verify" \
11337*62c56f98SSadaf Ebrahimi            -c "mbedtls_ssl_tls13_process_certificate_verify() returned 0" \
11338*62c56f98SSadaf Ebrahimi            -c "<= parse finished message" \
11339*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
11340*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 ok"
11341*62c56f98SSadaf Ebrahimi
11342*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
11343*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
11344*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11345*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11346*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11347*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11348*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: minimal feature sets - gnutls" \
11349*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS --disable-client-cert" \
11350*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3" \
11351*62c56f98SSadaf Ebrahimi            0 \
11352*62c56f98SSadaf Ebrahimi            -s "SERVER HELLO was queued" \
11353*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_HELLO_REQUEST" \
11354*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_SERVER_HELLO" \
11355*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
11356*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CERTIFICATE_REQUEST" \
11357*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
11358*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CERTIFICATE_VERIFY" \
11359*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_SERVER_FINISHED" \
11360*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_FINISHED" \
11361*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_FLUSH_BUFFERS" \
11362*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_HANDSHAKE_WRAPUP" \
11363*62c56f98SSadaf Ebrahimi            -c "<= ssl_tls13_process_server_hello" \
11364*62c56f98SSadaf Ebrahimi            -c "server hello, chosen ciphersuite: ( 1303 ) - TLS1-3-CHACHA20-POLY1305-SHA256" \
11365*62c56f98SSadaf Ebrahimi            -c "DHE group name: " \
11366*62c56f98SSadaf Ebrahimi            -c "=> ssl_tls13_process_server_hello" \
11367*62c56f98SSadaf Ebrahimi            -c "<= parse encrypted extensions" \
11368*62c56f98SSadaf Ebrahimi            -c "Certificate verification flags clear" \
11369*62c56f98SSadaf Ebrahimi            -c "=> parse certificate verify" \
11370*62c56f98SSadaf Ebrahimi            -c "<= parse certificate verify" \
11371*62c56f98SSadaf Ebrahimi            -c "mbedtls_ssl_tls13_process_certificate_verify() returned 0" \
11372*62c56f98SSadaf Ebrahimi            -c "<= parse finished message" \
11373*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
11374*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
11375*62c56f98SSadaf Ebrahimi
11376*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
11377*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11378*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11379*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ALPN
11380*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11381*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11382*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: alpn - openssl" \
11383*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -alpn h2" \
11384*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 alpn=h2" \
11385*62c56f98SSadaf Ebrahimi            0 \
11386*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_HELLO_REQUEST" \
11387*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_SERVER_HELLO" \
11388*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
11389*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CERTIFICATE_REQUEST" \
11390*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
11391*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CERTIFICATE_VERIFY" \
11392*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_SERVER_FINISHED" \
11393*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_FINISHED" \
11394*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_FLUSH_BUFFERS" \
11395*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_HANDSHAKE_WRAPUP" \
11396*62c56f98SSadaf Ebrahimi            -c "<= ssl_tls13_process_server_hello" \
11397*62c56f98SSadaf Ebrahimi            -c "server hello, chosen ciphersuite: ( 1303 ) - TLS1-3-CHACHA20-POLY1305-SHA256" \
11398*62c56f98SSadaf Ebrahimi            -c "DHE group name: " \
11399*62c56f98SSadaf Ebrahimi            -c "=> ssl_tls13_process_server_hello" \
11400*62c56f98SSadaf Ebrahimi            -c "<= parse encrypted extensions" \
11401*62c56f98SSadaf Ebrahimi            -c "Certificate verification flags clear" \
11402*62c56f98SSadaf Ebrahimi            -c "=> parse certificate verify" \
11403*62c56f98SSadaf Ebrahimi            -c "<= parse certificate verify" \
11404*62c56f98SSadaf Ebrahimi            -c "mbedtls_ssl_tls13_process_certificate_verify() returned 0" \
11405*62c56f98SSadaf Ebrahimi            -c "<= parse finished message" \
11406*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
11407*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 ok" \
11408*62c56f98SSadaf Ebrahimi            -c "Application Layer Protocol is h2"
11409*62c56f98SSadaf Ebrahimi
11410*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
11411*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
11412*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11413*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11414*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ALPN
11415*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11416*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11417*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: alpn - gnutls" \
11418*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS --disable-client-cert --alpn=h2" \
11419*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 alpn=h2" \
11420*62c56f98SSadaf Ebrahimi            0 \
11421*62c56f98SSadaf Ebrahimi            -s "SERVER HELLO was queued" \
11422*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_HELLO_REQUEST" \
11423*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_SERVER_HELLO" \
11424*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
11425*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CERTIFICATE_REQUEST" \
11426*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
11427*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CERTIFICATE_VERIFY" \
11428*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_SERVER_FINISHED" \
11429*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_FINISHED" \
11430*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_FLUSH_BUFFERS" \
11431*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_HANDSHAKE_WRAPUP" \
11432*62c56f98SSadaf Ebrahimi            -c "<= ssl_tls13_process_server_hello" \
11433*62c56f98SSadaf Ebrahimi            -c "server hello, chosen ciphersuite: ( 1303 ) - TLS1-3-CHACHA20-POLY1305-SHA256" \
11434*62c56f98SSadaf Ebrahimi            -c "DHE group name: " \
11435*62c56f98SSadaf Ebrahimi            -c "=> ssl_tls13_process_server_hello" \
11436*62c56f98SSadaf Ebrahimi            -c "<= parse encrypted extensions" \
11437*62c56f98SSadaf Ebrahimi            -c "Certificate verification flags clear" \
11438*62c56f98SSadaf Ebrahimi            -c "=> parse certificate verify" \
11439*62c56f98SSadaf Ebrahimi            -c "<= parse certificate verify" \
11440*62c56f98SSadaf Ebrahimi            -c "mbedtls_ssl_tls13_process_certificate_verify() returned 0" \
11441*62c56f98SSadaf Ebrahimi            -c "<= parse finished message" \
11442*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
11443*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK" \
11444*62c56f98SSadaf Ebrahimi            -c "Application Layer Protocol is h2"
11445*62c56f98SSadaf Ebrahimi
11446*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
11447*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11448*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
11449*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ALPN
11450*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11451*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: server alpn - openssl" \
11452*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=0 crt_file=data_files/server5.crt key_file=data_files/server5.key alpn=h2" \
11453*62c56f98SSadaf Ebrahimi            "$O_NEXT_CLI -msg -tls1_3 -no_middlebox -alpn h2" \
11454*62c56f98SSadaf Ebrahimi            0 \
11455*62c56f98SSadaf Ebrahimi            -s "found alpn extension" \
11456*62c56f98SSadaf Ebrahimi            -s "server side, adding alpn extension" \
11457*62c56f98SSadaf Ebrahimi            -s "Protocol is TLSv1.3" \
11458*62c56f98SSadaf Ebrahimi            -s "HTTP/1.0 200 OK" \
11459*62c56f98SSadaf Ebrahimi            -s "Application Layer Protocol is h2"
11460*62c56f98SSadaf Ebrahimi
11461*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
11462*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11463*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
11464*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_ALPN
11465*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11466*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: server alpn - gnutls" \
11467*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=3 tickets=0 crt_file=data_files/server5.crt key_file=data_files/server5.key alpn=h2" \
11468*62c56f98SSadaf Ebrahimi            "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE -V --alpn h2" \
11469*62c56f98SSadaf Ebrahimi            0 \
11470*62c56f98SSadaf Ebrahimi            -s "found alpn extension" \
11471*62c56f98SSadaf Ebrahimi            -s "server side, adding alpn extension" \
11472*62c56f98SSadaf Ebrahimi            -s "Protocol is TLSv1.3" \
11473*62c56f98SSadaf Ebrahimi            -s "HTTP/1.0 200 OK" \
11474*62c56f98SSadaf Ebrahimi            -s "Application Layer Protocol is h2"
11475*62c56f98SSadaf Ebrahimi
11476*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
11477*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11478*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11479*62c56f98SSadaf Ebrahimiskip_handshake_stage_check
11480*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
11481*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Not supported version check:gnutls: srv max TLS 1.0" \
11482*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --priority=NORMAL:-VERS-TLS-ALL:+VERS-TLS1.0 -d 4" \
11483*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4" \
11484*62c56f98SSadaf Ebrahimi            1 \
11485*62c56f98SSadaf Ebrahimi            -s "Client's version: 3.3" \
11486*62c56f98SSadaf Ebrahimi            -S "Version: TLS1.0" \
11487*62c56f98SSadaf Ebrahimi            -C "Protocol is TLSv1.0"
11488*62c56f98SSadaf Ebrahimi
11489*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
11490*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11491*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11492*62c56f98SSadaf Ebrahimiskip_handshake_stage_check
11493*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
11494*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Not supported version check:gnutls: srv max TLS 1.1" \
11495*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --priority=NORMAL:-VERS-TLS-ALL:+VERS-TLS1.1 -d 4" \
11496*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4" \
11497*62c56f98SSadaf Ebrahimi            1 \
11498*62c56f98SSadaf Ebrahimi            -s "Client's version: 3.3" \
11499*62c56f98SSadaf Ebrahimi            -S "Version: TLS1.1" \
11500*62c56f98SSadaf Ebrahimi            -C "Protocol is TLSv1.1"
11501*62c56f98SSadaf Ebrahimi
11502*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
11503*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11504*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11505*62c56f98SSadaf Ebrahimiskip_handshake_stage_check
11506*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
11507*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Not supported version check:gnutls: srv max TLS 1.2" \
11508*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --priority=NORMAL:-VERS-TLS-ALL:+VERS-TLS1.2 -d 4" \
11509*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls13 debug_level=4" \
11510*62c56f98SSadaf Ebrahimi            1 \
11511*62c56f98SSadaf Ebrahimi            -s "Client's version: 3.3" \
11512*62c56f98SSadaf Ebrahimi            -c "is a fatal alert message (msg 40)" \
11513*62c56f98SSadaf Ebrahimi            -S "Version: TLS1.2" \
11514*62c56f98SSadaf Ebrahimi            -C "Protocol is TLSv1.2"
11515*62c56f98SSadaf Ebrahimi
11516*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
11517*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11518*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11519*62c56f98SSadaf Ebrahimiskip_handshake_stage_check
11520*62c56f98SSadaf Ebrahimirequires_openssl_next
11521*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Not supported version check:openssl: srv max TLS 1.0" \
11522*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1" \
11523*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4" \
11524*62c56f98SSadaf Ebrahimi            1 \
11525*62c56f98SSadaf Ebrahimi            -s "fatal protocol_version" \
11526*62c56f98SSadaf Ebrahimi            -c "is a fatal alert message (msg 70)" \
11527*62c56f98SSadaf Ebrahimi            -S "Version: TLS1.0" \
11528*62c56f98SSadaf Ebrahimi            -C "Protocol  : TLSv1.0"
11529*62c56f98SSadaf Ebrahimi
11530*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
11531*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11532*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11533*62c56f98SSadaf Ebrahimiskip_handshake_stage_check
11534*62c56f98SSadaf Ebrahimirequires_openssl_next
11535*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Not supported version check:openssl: srv max TLS 1.1" \
11536*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_1" \
11537*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4" \
11538*62c56f98SSadaf Ebrahimi            1 \
11539*62c56f98SSadaf Ebrahimi            -s "fatal protocol_version" \
11540*62c56f98SSadaf Ebrahimi            -c "is a fatal alert message (msg 70)" \
11541*62c56f98SSadaf Ebrahimi            -S "Version: TLS1.1" \
11542*62c56f98SSadaf Ebrahimi            -C "Protocol  : TLSv1.1"
11543*62c56f98SSadaf Ebrahimi
11544*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
11545*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11546*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11547*62c56f98SSadaf Ebrahimiskip_handshake_stage_check
11548*62c56f98SSadaf Ebrahimirequires_openssl_next
11549*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Not supported version check:openssl: srv max TLS 1.2" \
11550*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_2" \
11551*62c56f98SSadaf Ebrahimi            "$P_CLI force_version=tls13 debug_level=4" \
11552*62c56f98SSadaf Ebrahimi            1 \
11553*62c56f98SSadaf Ebrahimi            -s "fatal protocol_version" \
11554*62c56f98SSadaf Ebrahimi            -c "is a fatal alert message (msg 70)" \
11555*62c56f98SSadaf Ebrahimi            -S "Version: TLS1.2" \
11556*62c56f98SSadaf Ebrahimi            -C "Protocol  : TLSv1.2"
11557*62c56f98SSadaf Ebrahimi
11558*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
11559*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11560*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11561*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11562*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11563*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication, no client certificate - openssl" \
11564*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -verify 10" \
11565*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=none key_file=none" \
11566*62c56f98SSadaf Ebrahimi            0 \
11567*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11568*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11569*62c56f98SSadaf Ebrahimi            -s "TLS 1.3" \
11570*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 ok" \
11571*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
11572*62c56f98SSadaf Ebrahimi
11573*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
11574*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
11575*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11576*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11577*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11578*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11579*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication, no client certificate - gnutls" \
11580*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS --verify-client-cert" \
11581*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=none key_file=none" \
11582*62c56f98SSadaf Ebrahimi            0 \
11583*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11584*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE"\
11585*62c56f98SSadaf Ebrahimi            -s "Version: TLS1.3" \
11586*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK" \
11587*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
11588*62c56f98SSadaf Ebrahimi
11589*62c56f98SSadaf Ebrahimi
11590*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
11591*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11592*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11593*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11594*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication, no server middlebox compat - openssl" \
11595*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10 -no_middlebox" \
11596*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=data_files/cli2.crt key_file=data_files/cli2.key" \
11597*62c56f98SSadaf Ebrahimi            0 \
11598*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11599*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11600*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
11601*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
11602*62c56f98SSadaf Ebrahimi
11603*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
11604*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
11605*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11606*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11607*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11608*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication, no server middlebox compat - gnutls" \
11609*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE" \
11610*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/cli2.crt \
11611*62c56f98SSadaf Ebrahimi                    key_file=data_files/cli2.key" \
11612*62c56f98SSadaf Ebrahimi            0 \
11613*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11614*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11615*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
11616*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
11617*62c56f98SSadaf Ebrahimi
11618*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
11619*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11620*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11621*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11622*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11623*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication, ecdsa_secp256r1_sha256 - openssl" \
11624*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10" \
11625*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=data_files/ecdsa_secp256r1.crt \
11626*62c56f98SSadaf Ebrahimi                    key_file=data_files/ecdsa_secp256r1.key" \
11627*62c56f98SSadaf Ebrahimi            0 \
11628*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11629*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11630*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
11631*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
11632*62c56f98SSadaf Ebrahimi
11633*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
11634*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
11635*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11636*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11637*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11638*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11639*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication, ecdsa_secp256r1_sha256 - gnutls" \
11640*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS" \
11641*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/ecdsa_secp256r1.crt \
11642*62c56f98SSadaf Ebrahimi                    key_file=data_files/ecdsa_secp256r1.key" \
11643*62c56f98SSadaf Ebrahimi            0 \
11644*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11645*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11646*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
11647*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
11648*62c56f98SSadaf Ebrahimi
11649*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
11650*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11651*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11652*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11653*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11654*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication, ecdsa_secp384r1_sha384 - openssl" \
11655*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10" \
11656*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=data_files/ecdsa_secp384r1.crt \
11657*62c56f98SSadaf Ebrahimi                    key_file=data_files/ecdsa_secp384r1.key" \
11658*62c56f98SSadaf Ebrahimi            0 \
11659*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11660*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11661*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
11662*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
11663*62c56f98SSadaf Ebrahimi
11664*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
11665*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
11666*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11667*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11668*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11669*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11670*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication, ecdsa_secp384r1_sha384 - gnutls" \
11671*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS" \
11672*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/ecdsa_secp384r1.crt \
11673*62c56f98SSadaf Ebrahimi                    key_file=data_files/ecdsa_secp384r1.key" \
11674*62c56f98SSadaf Ebrahimi            0 \
11675*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11676*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11677*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
11678*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
11679*62c56f98SSadaf Ebrahimi
11680*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
11681*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11682*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11683*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11684*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11685*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication, ecdsa_secp521r1_sha512 - openssl" \
11686*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10" \
11687*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=data_files/ecdsa_secp521r1.crt \
11688*62c56f98SSadaf Ebrahimi                    key_file=data_files/ecdsa_secp521r1.key" \
11689*62c56f98SSadaf Ebrahimi            0 \
11690*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11691*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11692*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
11693*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
11694*62c56f98SSadaf Ebrahimi
11695*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
11696*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
11697*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11698*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11699*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11700*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11701*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication, ecdsa_secp521r1_sha512 - gnutls" \
11702*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS" \
11703*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/ecdsa_secp521r1.crt \
11704*62c56f98SSadaf Ebrahimi                    key_file=data_files/ecdsa_secp521r1.key" \
11705*62c56f98SSadaf Ebrahimi            0 \
11706*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11707*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11708*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
11709*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
11710*62c56f98SSadaf Ebrahimi
11711*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
11712*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11713*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11714*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
11715*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11716*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11717*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication, rsa_pss_rsae_sha256 - openssl" \
11718*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10" \
11719*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=data_files/cert_sha256.crt \
11720*62c56f98SSadaf Ebrahimi                    key_file=data_files/server1.key sig_algs=ecdsa_secp256r1_sha256,rsa_pss_rsae_sha256" \
11721*62c56f98SSadaf Ebrahimi            0 \
11722*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11723*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11724*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
11725*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
11726*62c56f98SSadaf Ebrahimi
11727*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
11728*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
11729*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11730*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11731*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
11732*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11733*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11734*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication, rsa_pss_rsae_sha256 - gnutls" \
11735*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS" \
11736*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/server2-sha256.crt \
11737*62c56f98SSadaf Ebrahimi                    key_file=data_files/server2.key sig_algs=ecdsa_secp256r1_sha256,rsa_pss_rsae_sha256" \
11738*62c56f98SSadaf Ebrahimi            0 \
11739*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11740*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11741*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
11742*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
11743*62c56f98SSadaf Ebrahimi
11744*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
11745*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11746*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11747*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
11748*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11749*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11750*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication, rsa_pss_rsae_sha384 - openssl" \
11751*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10" \
11752*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=data_files/cert_sha256.crt \
11753*62c56f98SSadaf Ebrahimi                    key_file=data_files/server1.key sig_algs=ecdsa_secp256r1_sha256,rsa_pss_rsae_sha384" \
11754*62c56f98SSadaf Ebrahimi            0 \
11755*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11756*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11757*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
11758*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
11759*62c56f98SSadaf Ebrahimi
11760*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
11761*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
11762*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11763*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11764*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
11765*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11766*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11767*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication, rsa_pss_rsae_sha384 - gnutls" \
11768*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS" \
11769*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/server2-sha256.crt \
11770*62c56f98SSadaf Ebrahimi                    key_file=data_files/server2.key sig_algs=ecdsa_secp256r1_sha256,rsa_pss_rsae_sha384" \
11771*62c56f98SSadaf Ebrahimi            0 \
11772*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11773*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11774*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
11775*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
11776*62c56f98SSadaf Ebrahimi
11777*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
11778*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11779*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11780*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
11781*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11782*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11783*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication, rsa_pss_rsae_sha512 - openssl" \
11784*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10" \
11785*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=data_files/cert_sha256.crt \
11786*62c56f98SSadaf Ebrahimi                    key_file=data_files/server1.key sig_algs=ecdsa_secp256r1_sha256,rsa_pss_rsae_sha512" \
11787*62c56f98SSadaf Ebrahimi            0 \
11788*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11789*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11790*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
11791*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
11792*62c56f98SSadaf Ebrahimi
11793*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
11794*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
11795*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11796*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11797*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
11798*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11799*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11800*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication, rsa_pss_rsae_sha512 - gnutls" \
11801*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS" \
11802*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/server2-sha256.crt \
11803*62c56f98SSadaf Ebrahimi                    key_file=data_files/server2.key sig_algs=ecdsa_secp256r1_sha256,rsa_pss_rsae_sha512" \
11804*62c56f98SSadaf Ebrahimi            0 \
11805*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11806*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11807*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
11808*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
11809*62c56f98SSadaf Ebrahimi
11810*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
11811*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11812*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11813*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
11814*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11815*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11816*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication, client alg not in server list - openssl" \
11817*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10
11818*62c56f98SSadaf Ebrahimi                -sigalgs ecdsa_secp256r1_sha256" \
11819*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/ecdsa_secp521r1.crt \
11820*62c56f98SSadaf Ebrahimi                    key_file=data_files/ecdsa_secp521r1.key sig_algs=ecdsa_secp256r1_sha256,ecdsa_secp521r1_sha512" \
11821*62c56f98SSadaf Ebrahimi            1 \
11822*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11823*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11824*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
11825*62c56f98SSadaf Ebrahimi            -c "no suitable signature algorithm"
11826*62c56f98SSadaf Ebrahimi
11827*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
11828*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
11829*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11830*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11831*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
11832*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11833*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11834*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication, client alg not in server list - gnutls" \
11835*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:-SIGN-ALL:+SIGN-ECDSA-SECP256R1-SHA256:%NO_TICKETS" \
11836*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/ecdsa_secp521r1.crt \
11837*62c56f98SSadaf Ebrahimi                    key_file=data_files/ecdsa_secp521r1.key sig_algs=ecdsa_secp256r1_sha256,ecdsa_secp521r1_sha512" \
11838*62c56f98SSadaf Ebrahimi            1 \
11839*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11840*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11841*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
11842*62c56f98SSadaf Ebrahimi            -c "no suitable signature algorithm"
11843*62c56f98SSadaf Ebrahimi
11844*62c56f98SSadaf Ebrahimi# Test using an opaque private key for client authentication
11845*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
11846*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11847*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11848*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
11849*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11850*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication - opaque key, no server middlebox compat - openssl" \
11851*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10 -no_middlebox" \
11852*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=data_files/cli2.crt key_file=data_files/cli2.key key_opaque=1" \
11853*62c56f98SSadaf Ebrahimi            0 \
11854*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11855*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11856*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
11857*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
11858*62c56f98SSadaf Ebrahimi
11859*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
11860*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
11861*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11862*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11863*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
11864*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11865*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication - opaque key, no server middlebox compat - gnutls" \
11866*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE" \
11867*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/cli2.crt \
11868*62c56f98SSadaf Ebrahimi                    key_file=data_files/cli2.key key_opaque=1" \
11869*62c56f98SSadaf Ebrahimi            0 \
11870*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11871*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11872*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
11873*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
11874*62c56f98SSadaf Ebrahimi
11875*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
11876*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11877*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11878*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
11879*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11880*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11881*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication - opaque key, ecdsa_secp256r1_sha256 - openssl" \
11882*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10" \
11883*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=data_files/ecdsa_secp256r1.crt \
11884*62c56f98SSadaf Ebrahimi                    key_file=data_files/ecdsa_secp256r1.key key_opaque=1" \
11885*62c56f98SSadaf Ebrahimi            0 \
11886*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11887*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11888*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
11889*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
11890*62c56f98SSadaf Ebrahimi
11891*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
11892*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
11893*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11894*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11895*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
11896*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11897*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11898*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication - opaque key, ecdsa_secp256r1_sha256 - gnutls" \
11899*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS" \
11900*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/ecdsa_secp256r1.crt \
11901*62c56f98SSadaf Ebrahimi                    key_file=data_files/ecdsa_secp256r1.key key_opaque=1" \
11902*62c56f98SSadaf Ebrahimi            0 \
11903*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11904*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11905*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
11906*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
11907*62c56f98SSadaf Ebrahimi
11908*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
11909*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11910*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11911*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
11912*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11913*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11914*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication - opaque key, ecdsa_secp384r1_sha384 - openssl" \
11915*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10" \
11916*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=data_files/ecdsa_secp384r1.crt \
11917*62c56f98SSadaf Ebrahimi                    key_file=data_files/ecdsa_secp384r1.key key_opaque=1" \
11918*62c56f98SSadaf Ebrahimi            0 \
11919*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11920*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11921*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
11922*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
11923*62c56f98SSadaf Ebrahimi
11924*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
11925*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
11926*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11927*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11928*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
11929*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11930*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11931*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication - opaque key, ecdsa_secp384r1_sha384 - gnutls" \
11932*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS" \
11933*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/ecdsa_secp384r1.crt \
11934*62c56f98SSadaf Ebrahimi                    key_file=data_files/ecdsa_secp384r1.key key_opaque=1" \
11935*62c56f98SSadaf Ebrahimi            0 \
11936*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11937*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11938*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
11939*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
11940*62c56f98SSadaf Ebrahimi
11941*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
11942*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11943*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11944*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
11945*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11946*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11947*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication - opaque key, ecdsa_secp521r1_sha512 - openssl" \
11948*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10" \
11949*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=data_files/ecdsa_secp521r1.crt \
11950*62c56f98SSadaf Ebrahimi                    key_file=data_files/ecdsa_secp521r1.key key_opaque=1" \
11951*62c56f98SSadaf Ebrahimi            0 \
11952*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11953*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11954*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
11955*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
11956*62c56f98SSadaf Ebrahimi
11957*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
11958*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
11959*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11960*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11961*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
11962*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11963*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11964*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication - opaque key, ecdsa_secp521r1_sha512 - gnutls" \
11965*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS" \
11966*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/ecdsa_secp521r1.crt \
11967*62c56f98SSadaf Ebrahimi                    key_file=data_files/ecdsa_secp521r1.key key_opaque=1" \
11968*62c56f98SSadaf Ebrahimi            0 \
11969*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11970*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11971*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
11972*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
11973*62c56f98SSadaf Ebrahimi
11974*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
11975*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11976*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11977*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
11978*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
11979*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11980*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11981*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication - opaque key, rsa_pss_rsae_sha256 - openssl" \
11982*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10" \
11983*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=data_files/cert_sha256.crt \
11984*62c56f98SSadaf Ebrahimi                    key_file=data_files/server1.key sig_algs=ecdsa_secp256r1_sha256,rsa_pss_rsae_sha256 key_opaque=1" \
11985*62c56f98SSadaf Ebrahimi            0 \
11986*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
11987*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
11988*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
11989*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
11990*62c56f98SSadaf Ebrahimi
11991*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
11992*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
11993*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
11994*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
11995*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
11996*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
11997*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
11998*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
11999*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication - opaque key, rsa_pss_rsae_sha256 - gnutls" \
12000*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS" \
12001*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/server2-sha256.crt \
12002*62c56f98SSadaf Ebrahimi                    key_file=data_files/server2.key sig_algs=ecdsa_secp256r1_sha256,rsa_pss_rsae_sha256 key_opaque=1" \
12003*62c56f98SSadaf Ebrahimi            0 \
12004*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
12005*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
12006*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
12007*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
12008*62c56f98SSadaf Ebrahimi
12009*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
12010*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12011*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12012*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
12013*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
12014*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12015*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12016*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication - opaque key, rsa_pss_rsae_sha384 - openssl" \
12017*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10" \
12018*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=data_files/cert_sha256.crt \
12019*62c56f98SSadaf Ebrahimi                    key_file=data_files/server1.key sig_algs=ecdsa_secp256r1_sha256,rsa_pss_rsae_sha384 key_opaque=1" \
12020*62c56f98SSadaf Ebrahimi            0 \
12021*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
12022*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
12023*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
12024*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
12025*62c56f98SSadaf Ebrahimi
12026*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
12027*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
12028*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12029*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12030*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
12031*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
12032*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12033*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12034*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication - opaque key, rsa_pss_rsae_sha384 - gnutls" \
12035*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS" \
12036*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/server2-sha256.crt \
12037*62c56f98SSadaf Ebrahimi                    key_file=data_files/server2.key sig_algs=ecdsa_secp256r1_sha256,rsa_pss_rsae_sha384 key_opaque=1" \
12038*62c56f98SSadaf Ebrahimi            0 \
12039*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
12040*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
12041*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
12042*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
12043*62c56f98SSadaf Ebrahimi
12044*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
12045*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12046*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12047*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
12048*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
12049*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12050*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12051*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication - opaque key, rsa_pss_rsae_sha512 - openssl" \
12052*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10" \
12053*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=data_files/cert_sha256.crt \
12054*62c56f98SSadaf Ebrahimi                    key_file=data_files/server1.key sig_algs=ecdsa_secp256r1_sha256,rsa_pss_rsae_sha512 key_opaque=1" \
12055*62c56f98SSadaf Ebrahimi            0 \
12056*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
12057*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
12058*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
12059*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
12060*62c56f98SSadaf Ebrahimi
12061*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
12062*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
12063*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12064*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12065*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
12066*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
12067*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12068*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12069*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication - opaque key, rsa_pss_rsae_sha512 - gnutls" \
12070*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS" \
12071*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/server2-sha256.crt \
12072*62c56f98SSadaf Ebrahimi                    key_file=data_files/server2.key sig_algs=ecdsa_secp256r1_sha256,rsa_pss_rsae_sha512 key_opaque=1" \
12073*62c56f98SSadaf Ebrahimi            0 \
12074*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
12075*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
12076*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
12077*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3"
12078*62c56f98SSadaf Ebrahimi
12079*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
12080*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12081*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12082*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
12083*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
12084*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12085*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12086*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication - opaque key, client alg not in server list - openssl" \
12087*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache -Verify 10
12088*62c56f98SSadaf Ebrahimi                -sigalgs ecdsa_secp256r1_sha256" \
12089*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/ecdsa_secp521r1.crt \
12090*62c56f98SSadaf Ebrahimi                    key_file=data_files/ecdsa_secp521r1.key sig_algs=ecdsa_secp256r1_sha256,ecdsa_secp521r1_sha512 key_opaque=1" \
12091*62c56f98SSadaf Ebrahimi            1 \
12092*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
12093*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
12094*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
12095*62c56f98SSadaf Ebrahimi            -c "no suitable signature algorithm"
12096*62c56f98SSadaf Ebrahimi
12097*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
12098*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
12099*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12100*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12101*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_RSA_C
12102*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_USE_PSA_CRYPTO
12103*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12104*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12105*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Client authentication - opaque key, client alg not in server list - gnutls" \
12106*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --debug=4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:-SIGN-ALL:+SIGN-ECDSA-SECP256R1-SHA256:%NO_TICKETS" \
12107*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=3 crt_file=data_files/ecdsa_secp521r1.crt \
12108*62c56f98SSadaf Ebrahimi                    key_file=data_files/ecdsa_secp521r1.key sig_algs=ecdsa_secp256r1_sha256,ecdsa_secp521r1_sha512 key_opaque=1" \
12109*62c56f98SSadaf Ebrahimi            1 \
12110*62c56f98SSadaf Ebrahimi            -c "got a certificate request" \
12111*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE" \
12112*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY" \
12113*62c56f98SSadaf Ebrahimi            -c "no suitable signature algorithm"
12114*62c56f98SSadaf Ebrahimi
12115*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
12116*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12117*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12118*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12119*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12120*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: HRR check, ciphersuite TLS_AES_128_GCM_SHA256 - openssl" \
12121*62c56f98SSadaf Ebrahimi            "$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" \
12122*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4" \
12123*62c56f98SSadaf Ebrahimi            0 \
12124*62c56f98SSadaf Ebrahimi            -c "received HelloRetryRequest message" \
12125*62c56f98SSadaf Ebrahimi            -c "<= ssl_tls13_process_server_hello ( HelloRetryRequest )" \
12126*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_HELLO" \
12127*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
12128*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 ok"
12129*62c56f98SSadaf Ebrahimi
12130*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
12131*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12132*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12133*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12134*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12135*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: HRR check, ciphersuite TLS_AES_256_GCM_SHA384 - openssl" \
12136*62c56f98SSadaf Ebrahimi            "$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" \
12137*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4" \
12138*62c56f98SSadaf Ebrahimi            0 \
12139*62c56f98SSadaf Ebrahimi            -c "received HelloRetryRequest message" \
12140*62c56f98SSadaf Ebrahimi            -c "<= ssl_tls13_process_server_hello ( HelloRetryRequest )" \
12141*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_HELLO" \
12142*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
12143*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 ok"
12144*62c56f98SSadaf Ebrahimi
12145*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
12146*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
12147*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12148*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12149*62c56f98SSadaf Ebrahimirequires_config_enabled PSA_WANT_ALG_ECDH
12150*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12151*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12152*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: HRR check, ciphersuite TLS_AES_128_GCM_SHA256 - gnutls" \
12153*62c56f98SSadaf Ebrahimi            "$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" \
12154*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4" \
12155*62c56f98SSadaf Ebrahimi            0 \
12156*62c56f98SSadaf Ebrahimi            -c "received HelloRetryRequest message" \
12157*62c56f98SSadaf Ebrahimi            -c "<= ssl_tls13_process_server_hello ( HelloRetryRequest )" \
12158*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_HELLO" \
12159*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
12160*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
12161*62c56f98SSadaf Ebrahimi
12162*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
12163*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
12164*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12165*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12166*62c56f98SSadaf Ebrahimirequires_config_enabled PSA_WANT_ALG_ECDH
12167*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12168*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12169*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: HRR check, ciphersuite TLS_AES_256_GCM_SHA384 - gnutls" \
12170*62c56f98SSadaf Ebrahimi            "$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" \
12171*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4" \
12172*62c56f98SSadaf Ebrahimi            0 \
12173*62c56f98SSadaf Ebrahimi            -c "received HelloRetryRequest message" \
12174*62c56f98SSadaf Ebrahimi            -c "<= ssl_tls13_process_server_hello ( HelloRetryRequest )" \
12175*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CLIENT_HELLO" \
12176*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
12177*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
12178*62c56f98SSadaf Ebrahimi
12179*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
12180*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12181*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12182*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12183*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Server side check - openssl" \
12184*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key tickets=0" \
12185*62c56f98SSadaf Ebrahimi            "$O_NEXT_CLI -msg -debug -tls1_3 -no_middlebox" \
12186*62c56f98SSadaf Ebrahimi            0 \
12187*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_CLIENT_HELLO" \
12188*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_HELLO" \
12189*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
12190*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
12191*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_CERTIFICATE_VERIFY" \
12192*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_FINISHED" \
12193*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_CLIENT_FINISHED" \
12194*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_HANDSHAKE_WRAPUP"
12195*62c56f98SSadaf Ebrahimi
12196*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
12197*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12198*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12199*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12200*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Server side check - openssl with client authentication" \
12201*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 auth_mode=required crt_file=data_files/server5.crt key_file=data_files/server5.key tickets=0" \
12202*62c56f98SSadaf Ebrahimi            "$O_NEXT_CLI -msg -debug -cert data_files/server5.crt -key data_files/server5.key -tls1_3 -no_middlebox" \
12203*62c56f98SSadaf Ebrahimi            0 \
12204*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_CLIENT_HELLO" \
12205*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_HELLO" \
12206*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
12207*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_CERTIFICATE_REQUEST" \
12208*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
12209*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_CERTIFICATE_VERIFY" \
12210*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_FINISHED" \
12211*62c56f98SSadaf Ebrahimi            -s "=> write certificate request" \
12212*62c56f98SSadaf Ebrahimi            -s "=> parse client hello" \
12213*62c56f98SSadaf Ebrahimi            -s "<= parse client hello"
12214*62c56f98SSadaf Ebrahimi
12215*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
12216*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
12217*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12218*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12219*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12220*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Server side check - gnutls" \
12221*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key tickets=0" \
12222*62c56f98SSadaf Ebrahimi            "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE -V" \
12223*62c56f98SSadaf Ebrahimi            0 \
12224*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_CLIENT_HELLO" \
12225*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_HELLO" \
12226*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
12227*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
12228*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_CERTIFICATE_VERIFY" \
12229*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_FINISHED" \
12230*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_CLIENT_FINISHED" \
12231*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_HANDSHAKE_WRAPUP" \
12232*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
12233*62c56f98SSadaf Ebrahimi
12234*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
12235*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
12236*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12237*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12238*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12239*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Server side check - gnutls with client authentication" \
12240*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 auth_mode=required crt_file=data_files/server5.crt key_file=data_files/server5.key tickets=0" \
12241*62c56f98SSadaf Ebrahimi            "$G_NEXT_CLI localhost -d 4 --x509certfile data_files/server5.crt --x509keyfile data_files/server5.key --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE -V" \
12242*62c56f98SSadaf Ebrahimi            0 \
12243*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_CLIENT_HELLO" \
12244*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_HELLO" \
12245*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
12246*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_CERTIFICATE_REQUEST" \
12247*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
12248*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_CERTIFICATE_VERIFY" \
12249*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_FINISHED" \
12250*62c56f98SSadaf Ebrahimi            -s "=> write certificate request" \
12251*62c56f98SSadaf Ebrahimi            -s "=> parse client hello" \
12252*62c56f98SSadaf Ebrahimi            -s "<= parse client hello"
12253*62c56f98SSadaf Ebrahimi
12254*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12255*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12256*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12257*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12258*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Server side check - mbedtls" \
12259*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key tickets=0" \
12260*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4" \
12261*62c56f98SSadaf Ebrahimi            0 \
12262*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_CLIENT_HELLO" \
12263*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_HELLO" \
12264*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
12265*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_CERTIFICATE_REQUEST" \
12266*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
12267*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_CERTIFICATE_VERIFY" \
12268*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_FINISHED" \
12269*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_CLIENT_FINISHED" \
12270*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_HANDSHAKE_WRAPUP" \
12271*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
12272*62c56f98SSadaf Ebrahimi
12273*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12274*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12275*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12276*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12277*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Server side check - mbedtls with client authentication" \
12278*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 auth_mode=required crt_file=data_files/server5.crt key_file=data_files/server5.key tickets=0" \
12279*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key" \
12280*62c56f98SSadaf Ebrahimi            0 \
12281*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_CLIENT_HELLO" \
12282*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_HELLO" \
12283*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
12284*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
12285*62c56f98SSadaf Ebrahimi            -s "=> write certificate request" \
12286*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CERTIFICATE_REQUEST" \
12287*62c56f98SSadaf Ebrahimi            -s "=> parse client hello" \
12288*62c56f98SSadaf Ebrahimi            -s "<= parse client hello"
12289*62c56f98SSadaf Ebrahimi
12290*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12291*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12292*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12293*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12294*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Server side check - mbedtls with client empty certificate" \
12295*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 auth_mode=required crt_file=data_files/server5.crt key_file=data_files/server5.key tickets=0" \
12296*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=none key_file=none" \
12297*62c56f98SSadaf Ebrahimi            1 \
12298*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_CLIENT_HELLO" \
12299*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_HELLO" \
12300*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
12301*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
12302*62c56f98SSadaf Ebrahimi            -s "=> write certificate request" \
12303*62c56f98SSadaf Ebrahimi            -s "SSL - No client certification received from the client, but required by the authentication mode" \
12304*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CERTIFICATE_REQUEST" \
12305*62c56f98SSadaf Ebrahimi            -s "=> parse client hello" \
12306*62c56f98SSadaf Ebrahimi            -s "<= parse client hello"
12307*62c56f98SSadaf Ebrahimi
12308*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12309*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12310*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12311*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12312*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Server side check - mbedtls with optional client authentication" \
12313*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 auth_mode=optional crt_file=data_files/server5.crt key_file=data_files/server5.key tickets=0" \
12314*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=none key_file=none" \
12315*62c56f98SSadaf Ebrahimi            0 \
12316*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_CLIENT_HELLO" \
12317*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_HELLO" \
12318*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
12319*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
12320*62c56f98SSadaf Ebrahimi            -s "=> write certificate request" \
12321*62c56f98SSadaf Ebrahimi            -c "client state: MBEDTLS_SSL_CERTIFICATE_REQUEST" \
12322*62c56f98SSadaf Ebrahimi            -s "=> parse client hello" \
12323*62c56f98SSadaf Ebrahimi            -s "<= parse client hello"
12324*62c56f98SSadaf Ebrahimi
12325*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12326*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12327*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12328*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12329*62c56f98SSadaf Ebrahimirequires_config_enabled PSA_WANT_ALG_ECDH
12330*62c56f98SSadaf Ebrahimirun_test "TLS 1.3: server: HRR check - mbedtls" \
12331*62c56f98SSadaf Ebrahimi         "$P_SRV debug_level=4 groups=secp384r1" \
12332*62c56f98SSadaf Ebrahimi         "$P_CLI debug_level=4 groups=secp256r1,secp384r1" \
12333*62c56f98SSadaf Ebrahimi         0 \
12334*62c56f98SSadaf Ebrahimi        -s "tls13 server state: MBEDTLS_SSL_CLIENT_HELLO" \
12335*62c56f98SSadaf Ebrahimi        -s "tls13 server state: MBEDTLS_SSL_SERVER_HELLO" \
12336*62c56f98SSadaf Ebrahimi        -s "tls13 server state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
12337*62c56f98SSadaf Ebrahimi        -s "tls13 server state: MBEDTLS_SSL_HELLO_RETRY_REQUEST" \
12338*62c56f98SSadaf Ebrahimi        -c "client state: MBEDTLS_SSL_ENCRYPTED_EXTENSIONS" \
12339*62c56f98SSadaf Ebrahimi        -s "selected_group: secp384r1" \
12340*62c56f98SSadaf Ebrahimi        -s "=> write hello retry request" \
12341*62c56f98SSadaf Ebrahimi        -s "<= write hello retry request"
12342*62c56f98SSadaf Ebrahimi
12343*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12344*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12345*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12346*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12347*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Server side check, no server certificate available" \
12348*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 crt_file=none key_file=none" \
12349*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4" \
12350*62c56f98SSadaf Ebrahimi            1 \
12351*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_CERTIFICATE" \
12352*62c56f98SSadaf Ebrahimi            -s "No certificate available."
12353*62c56f98SSadaf Ebrahimi
12354*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
12355*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12356*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12357*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12358*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12359*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Server side check - openssl with sni" \
12360*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 auth_mode=required crt_file=data_files/server5.crt key_file=data_files/server5.key tickets=0 \
12361*62c56f98SSadaf Ebrahimi             sni=localhost,data_files/server5.crt,data_files/server5.key,data_files/test-ca_cat12.crt,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
12362*62c56f98SSadaf Ebrahimi            "$O_NEXT_CLI -msg -debug -servername localhost -CAfile data_files/test-ca_cat12.crt -cert data_files/server5.crt -key data_files/server5.key -tls1_3" \
12363*62c56f98SSadaf Ebrahimi            0 \
12364*62c56f98SSadaf Ebrahimi            -s "parse ServerName extension" \
12365*62c56f98SSadaf Ebrahimi            -s "HTTP/1.0 200 OK"
12366*62c56f98SSadaf Ebrahimi
12367*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
12368*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12369*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12370*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12371*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12372*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Server side check - gnutls with sni" \
12373*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 auth_mode=required crt_file=data_files/server5.crt key_file=data_files/server5.key tickets=0 \
12374*62c56f98SSadaf Ebrahimi             sni=localhost,data_files/server5.crt,data_files/server5.key,data_files/test-ca_cat12.crt,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
12375*62c56f98SSadaf Ebrahimi            "$G_NEXT_CLI localhost -d 4 --sni-hostname=localhost --x509certfile data_files/server5.crt --x509keyfile data_files/server5.key --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:%NO_TICKETS -V" \
12376*62c56f98SSadaf Ebrahimi            0 \
12377*62c56f98SSadaf Ebrahimi            -s "parse ServerName extension" \
12378*62c56f98SSadaf Ebrahimi            -s "HTTP/1.0 200 OK"
12379*62c56f98SSadaf Ebrahimi
12380*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12381*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12382*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12383*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12384*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12385*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Server side check - mbedtls with sni" \
12386*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 auth_mode=required crt_file=data_files/server5.crt key_file=data_files/server5.key tickets=0 \
12387*62c56f98SSadaf Ebrahimi             sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
12388*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 server_name=localhost crt_file=data_files/server5.crt key_file=data_files/server5.key" \
12389*62c56f98SSadaf Ebrahimi            0 \
12390*62c56f98SSadaf Ebrahimi            -s "parse ServerName extension" \
12391*62c56f98SSadaf Ebrahimi            -s "HTTP/1.0 200 OK"
12392*62c56f98SSadaf Ebrahimi
12393*62c56f98SSadaf Ebrahimifor i in opt-testcases/*.sh
12394*62c56f98SSadaf Ebrahimido
12395*62c56f98SSadaf Ebrahimi    TEST_SUITE_NAME=${i##*/}
12396*62c56f98SSadaf Ebrahimi    TEST_SUITE_NAME=${TEST_SUITE_NAME%.*}
12397*62c56f98SSadaf Ebrahimi    . "$i"
12398*62c56f98SSadaf Ebrahimidone
12399*62c56f98SSadaf Ebrahimiunset TEST_SUITE_NAME
12400*62c56f98SSadaf Ebrahimi
12401*62c56f98SSadaf Ebrahimi# Test 1.3 compatibility mode
12402*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
12403*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12404*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12405*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12406*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12407*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 m->m both peers do not support middlebox compatibility" \
12408*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 tickets=0" \
12409*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4" \
12410*62c56f98SSadaf Ebrahimi            0 \
12411*62c56f98SSadaf Ebrahimi            -s "Protocol is TLSv1.3" \
12412*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
12413*62c56f98SSadaf Ebrahimi            -S "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_SERVER_HELLO" \
12414*62c56f98SSadaf Ebrahimi            -C "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
12415*62c56f98SSadaf Ebrahimi
12416*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12417*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12418*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12419*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12420*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12421*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 m->m both with middlebox compat support" \
12422*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 tickets=0" \
12423*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4" \
12424*62c56f98SSadaf Ebrahimi            0 \
12425*62c56f98SSadaf Ebrahimi            -s "Protocol is TLSv1.3" \
12426*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
12427*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_SERVER_HELLO" \
12428*62c56f98SSadaf Ebrahimi            -c "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
12429*62c56f98SSadaf Ebrahimi
12430*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
12431*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
12432*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12433*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12434*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12435*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 m->O both peers do not support middlebox compatibility" \
12436*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -no_middlebox -num_tickets 0 -no_resume_ephemeral -no_cache" \
12437*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4" \
12438*62c56f98SSadaf Ebrahimi            0 \
12439*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
12440*62c56f98SSadaf Ebrahimi            -C "ChangeCipherSpec invalid in TLS 1.3 without compatibility mode" \
12441*62c56f98SSadaf Ebrahimi            -C "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
12442*62c56f98SSadaf Ebrahimi
12443*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
12444*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
12445*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12446*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12447*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12448*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 m->O server with middlebox compat support, not client" \
12449*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache" \
12450*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4" \
12451*62c56f98SSadaf Ebrahimi            1 \
12452*62c56f98SSadaf Ebrahimi            -c "ChangeCipherSpec invalid in TLS 1.3 without compatibility mode"
12453*62c56f98SSadaf Ebrahimi
12454*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
12455*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12456*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12457*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12458*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12459*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 m->O both with middlebox compat support" \
12460*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache" \
12461*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4" \
12462*62c56f98SSadaf Ebrahimi            0 \
12463*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
12464*62c56f98SSadaf Ebrahimi            -c "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
12465*62c56f98SSadaf Ebrahimi
12466*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
12467*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
12468*62c56f98SSadaf Ebrahimirequires_gnutls_next_disable_tls13_compat
12469*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
12470*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12471*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12472*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12473*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 m->G both peers do not support middlebox compatibility" \
12474*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE --disable-client-cert" \
12475*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4" \
12476*62c56f98SSadaf Ebrahimi            0 \
12477*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
12478*62c56f98SSadaf Ebrahimi            -C "ChangeCipherSpec invalid in TLS 1.3 without compatibility mode" \
12479*62c56f98SSadaf Ebrahimi            -C "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
12480*62c56f98SSadaf Ebrahimi
12481*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
12482*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
12483*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
12484*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12485*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12486*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12487*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 m->G server with middlebox compat support, not client" \
12488*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS --disable-client-cert" \
12489*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4" \
12490*62c56f98SSadaf Ebrahimi            1 \
12491*62c56f98SSadaf Ebrahimi            -c "ChangeCipherSpec invalid in TLS 1.3 without compatibility mode"
12492*62c56f98SSadaf Ebrahimi
12493*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
12494*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
12495*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12496*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12497*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12498*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12499*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 m->G both with middlebox compat support" \
12500*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS --disable-client-cert" \
12501*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4" \
12502*62c56f98SSadaf Ebrahimi            0 \
12503*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
12504*62c56f98SSadaf Ebrahimi            -c "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
12505*62c56f98SSadaf Ebrahimi
12506*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
12507*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
12508*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12509*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12510*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12511*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 O->m both peers do not support middlebox compatibility" \
12512*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key tickets=0" \
12513*62c56f98SSadaf Ebrahimi            "$O_NEXT_CLI -msg -debug -no_middlebox" \
12514*62c56f98SSadaf Ebrahimi            0 \
12515*62c56f98SSadaf Ebrahimi            -s "Protocol is TLSv1.3" \
12516*62c56f98SSadaf Ebrahimi            -S "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_SERVER_HELLO" \
12517*62c56f98SSadaf Ebrahimi            -C "14 03 03 00 01"
12518*62c56f98SSadaf Ebrahimi
12519*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
12520*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12521*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12522*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12523*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12524*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 O->m server with middlebox compat support, not client" \
12525*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key tickets=0" \
12526*62c56f98SSadaf Ebrahimi            "$O_NEXT_CLI -msg -debug -no_middlebox" \
12527*62c56f98SSadaf Ebrahimi            0 \
12528*62c56f98SSadaf Ebrahimi            -s "Protocol is TLSv1.3" \
12529*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_SERVER_HELLO"
12530*62c56f98SSadaf Ebrahimi
12531*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
12532*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12533*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12534*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12535*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12536*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 O->m both with middlebox compat support" \
12537*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key tickets=0" \
12538*62c56f98SSadaf Ebrahimi            "$O_NEXT_CLI -msg -debug" \
12539*62c56f98SSadaf Ebrahimi            0 \
12540*62c56f98SSadaf Ebrahimi            -s "Protocol is TLSv1.3" \
12541*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_SERVER_HELLO" \
12542*62c56f98SSadaf Ebrahimi            -c "14 03 03 00 01"
12543*62c56f98SSadaf Ebrahimi
12544*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
12545*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
12546*62c56f98SSadaf Ebrahimirequires_gnutls_next_disable_tls13_compat
12547*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
12548*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12549*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12550*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12551*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 G->m both peers do not support middlebox compatibility" \
12552*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key tickets=0" \
12553*62c56f98SSadaf Ebrahimi            "$G_NEXT_CLI localhost --priority=NORMAL:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE -V" \
12554*62c56f98SSadaf Ebrahimi            0 \
12555*62c56f98SSadaf Ebrahimi            -s "Protocol is TLSv1.3" \
12556*62c56f98SSadaf Ebrahimi            -S "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_SERVER_HELLO" \
12557*62c56f98SSadaf Ebrahimi            -C "SSL 3.3 ChangeCipherSpec packet received"
12558*62c56f98SSadaf Ebrahimi
12559*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
12560*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
12561*62c56f98SSadaf Ebrahimirequires_gnutls_next_disable_tls13_compat
12562*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12563*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12564*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12565*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12566*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 G->m server with middlebox compat support, not client" \
12567*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key tickets=0" \
12568*62c56f98SSadaf Ebrahimi            "$G_NEXT_CLI localhost --debug=10 --priority=NORMAL:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE -V" \
12569*62c56f98SSadaf Ebrahimi            0 \
12570*62c56f98SSadaf Ebrahimi            -s "Protocol is TLSv1.3" \
12571*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_SERVER_HELLO" \
12572*62c56f98SSadaf Ebrahimi            -c "SSL 3.3 ChangeCipherSpec packet received" \
12573*62c56f98SSadaf Ebrahimi            -c "discarding change cipher spec in TLS1.3"
12574*62c56f98SSadaf Ebrahimi
12575*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
12576*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
12577*62c56f98SSadaf Ebrahimirequires_gnutls_next_disable_tls13_compat
12578*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12579*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12580*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12581*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12582*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 G->m both with middlebox compat support" \
12583*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key tickets=0" \
12584*62c56f98SSadaf Ebrahimi            "$G_NEXT_CLI localhost --debug=10 --priority=NORMAL:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE -V" \
12585*62c56f98SSadaf Ebrahimi            0 \
12586*62c56f98SSadaf Ebrahimi            -s "Protocol is TLSv1.3" \
12587*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_SERVER_HELLO" \
12588*62c56f98SSadaf Ebrahimi            -c "SSL 3.3 ChangeCipherSpec packet received"
12589*62c56f98SSadaf Ebrahimi
12590*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
12591*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12592*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12593*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12594*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12595*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 m->m HRR both peers do not support middlebox compatibility" \
12596*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 groups=secp384r1 tickets=0" \
12597*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 groups=secp256r1,secp384r1" \
12598*62c56f98SSadaf Ebrahimi            0 \
12599*62c56f98SSadaf Ebrahimi            -s "Protocol is TLSv1.3" \
12600*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
12601*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_HELLO_RETRY_REQUEST" \
12602*62c56f98SSadaf Ebrahimi            -S "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_HELLO_RETRY_REQUEST" \
12603*62c56f98SSadaf Ebrahimi            -C "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
12604*62c56f98SSadaf Ebrahimi
12605*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12606*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12607*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12608*62c56f98SSadaf Ebrahimirequires_config_enabled PSA_WANT_ALG_ECDH
12609*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12610*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12611*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 m->m HRR both with middlebox compat support" \
12612*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 groups=secp384r1 tickets=0" \
12613*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 groups=secp256r1,secp384r1" \
12614*62c56f98SSadaf Ebrahimi            0 \
12615*62c56f98SSadaf Ebrahimi            -s "Protocol is TLSv1.3" \
12616*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
12617*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_HELLO_RETRY_REQUEST" \
12618*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_HELLO_RETRY_REQUEST" \
12619*62c56f98SSadaf Ebrahimi            -c "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
12620*62c56f98SSadaf Ebrahimi
12621*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
12622*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
12623*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12624*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12625*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12626*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 m->O HRR both peers do not support middlebox compatibility" \
12627*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -groups P-384 -no_middlebox -num_tickets 0 -no_cache" \
12628*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 groups=secp256r1,secp384r1" \
12629*62c56f98SSadaf Ebrahimi            0 \
12630*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
12631*62c56f98SSadaf Ebrahimi            -c "received HelloRetryRequest message" \
12632*62c56f98SSadaf Ebrahimi            -C "ChangeCipherSpec invalid in TLS 1.3 without compatibility mode" \
12633*62c56f98SSadaf Ebrahimi            -C "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
12634*62c56f98SSadaf Ebrahimi
12635*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
12636*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
12637*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12638*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12639*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12640*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 m->O HRR server with middlebox compat support, not client" \
12641*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -groups P-384 -num_tickets 0 -no_cache" \
12642*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 groups=secp256r1,secp384r1" \
12643*62c56f98SSadaf Ebrahimi            1 \
12644*62c56f98SSadaf Ebrahimi            -c "received HelloRetryRequest message" \
12645*62c56f98SSadaf Ebrahimi            -c "ChangeCipherSpec invalid in TLS 1.3 without compatibility mode"
12646*62c56f98SSadaf Ebrahimi
12647*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
12648*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12649*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12650*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12651*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12652*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 m->O HRR both with middlebox compat support" \
12653*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -groups P-384 -num_tickets 0 -no_resume_ephemeral -no_cache" \
12654*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 groups=secp256r1,secp384r1" \
12655*62c56f98SSadaf Ebrahimi            0 \
12656*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
12657*62c56f98SSadaf Ebrahimi            -c "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
12658*62c56f98SSadaf Ebrahimi
12659*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
12660*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
12661*62c56f98SSadaf Ebrahimirequires_gnutls_next_disable_tls13_compat
12662*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
12663*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12664*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12665*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12666*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 m->G HRR both peers do not support middlebox compatibility" \
12667*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --priority=NORMAL:-GROUP-ALL:+GROUP-SECP384R1:-VERS-ALL:+VERS-TLS1.3:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE --disable-client-cert" \
12668*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 groups=secp256r1,secp384r1" \
12669*62c56f98SSadaf Ebrahimi            0 \
12670*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
12671*62c56f98SSadaf Ebrahimi            -c "received HelloRetryRequest message" \
12672*62c56f98SSadaf Ebrahimi            -C "ChangeCipherSpec invalid in TLS 1.3 without compatibility mode" \
12673*62c56f98SSadaf Ebrahimi            -C "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
12674*62c56f98SSadaf Ebrahimi
12675*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
12676*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
12677*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
12678*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12679*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12680*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12681*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 m->G HRR server with middlebox compat support, not client" \
12682*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --priority=NORMAL:-GROUP-ALL:+GROUP-SECP384R1:-VERS-ALL:+VERS-TLS1.3:%NO_TICKETS --disable-client-cert" \
12683*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 groups=secp256r1,secp384r1" \
12684*62c56f98SSadaf Ebrahimi            1 \
12685*62c56f98SSadaf Ebrahimi            -c "received HelloRetryRequest message" \
12686*62c56f98SSadaf Ebrahimi            -c "ChangeCipherSpec invalid in TLS 1.3 without compatibility mode"
12687*62c56f98SSadaf Ebrahimi
12688*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
12689*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
12690*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12691*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12692*62c56f98SSadaf Ebrahimirequires_config_enabled PSA_WANT_ALG_ECDH
12693*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12694*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12695*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 m->G HRR both with middlebox compat support" \
12696*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV --priority=NORMAL:-GROUP-ALL:+GROUP-SECP384R1:-VERS-ALL:+VERS-TLS1.3:+CIPHER-ALL:%NO_TICKETS --disable-client-cert" \
12697*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 groups=secp256r1,secp384r1" \
12698*62c56f98SSadaf Ebrahimi            0 \
12699*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
12700*62c56f98SSadaf Ebrahimi            -c "Ignore ChangeCipherSpec in TLS 1.3 compatibility mode"
12701*62c56f98SSadaf Ebrahimi
12702*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
12703*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
12704*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12705*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12706*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12707*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 O->m HRR both peers do not support middlebox compatibility" \
12708*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key groups=secp384r1 tickets=0" \
12709*62c56f98SSadaf Ebrahimi            "$O_NEXT_CLI -msg -debug -groups P-256:P-384 -no_middlebox" \
12710*62c56f98SSadaf Ebrahimi            0 \
12711*62c56f98SSadaf Ebrahimi            -s "Protocol is TLSv1.3" \
12712*62c56f98SSadaf Ebrahimi            -S "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_HELLO_RETRY_REQUEST" \
12713*62c56f98SSadaf Ebrahimi            -C "14 03 03 00 01"
12714*62c56f98SSadaf Ebrahimi
12715*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
12716*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12717*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12718*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12719*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12720*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 O->m HRR server with middlebox compat support, not client" \
12721*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key groups=secp384r1 tickets=0" \
12722*62c56f98SSadaf Ebrahimi            "$O_NEXT_CLI -msg -debug -groups P-256:P-384 -no_middlebox" \
12723*62c56f98SSadaf Ebrahimi            0 \
12724*62c56f98SSadaf Ebrahimi            -s "Protocol is TLSv1.3" \
12725*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_HELLO_RETRY_REQUEST" \
12726*62c56f98SSadaf Ebrahimi
12727*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
12728*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12729*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12730*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12731*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12732*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 O->m HRR both with middlebox compat support" \
12733*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key groups=secp384r1 tickets=0" \
12734*62c56f98SSadaf Ebrahimi            "$O_NEXT_CLI -msg -debug -groups P-256:P-384" \
12735*62c56f98SSadaf Ebrahimi            0 \
12736*62c56f98SSadaf Ebrahimi            -s "Protocol is TLSv1.3" \
12737*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_HELLO_RETRY_REQUEST" \
12738*62c56f98SSadaf Ebrahimi            -c "14 03 03 00 01"
12739*62c56f98SSadaf Ebrahimi
12740*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
12741*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
12742*62c56f98SSadaf Ebrahimirequires_gnutls_next_disable_tls13_compat
12743*62c56f98SSadaf Ebrahimirequires_config_disabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
12744*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12745*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12746*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12747*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 G->m HRR both peers do not support middlebox compatibility" \
12748*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key groups=secp384r1 tickets=0" \
12749*62c56f98SSadaf Ebrahimi            "$G_NEXT_CLI localhost --priority=NORMAL:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-SECP384R1:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE -V" \
12750*62c56f98SSadaf Ebrahimi            0 \
12751*62c56f98SSadaf Ebrahimi            -s "Protocol is TLSv1.3" \
12752*62c56f98SSadaf Ebrahimi            -S "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_HELLO_RETRY_REQUEST" \
12753*62c56f98SSadaf Ebrahimi            -C "SSL 3.3 ChangeCipherSpec packet received"
12754*62c56f98SSadaf Ebrahimi
12755*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
12756*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
12757*62c56f98SSadaf Ebrahimirequires_gnutls_next_disable_tls13_compat
12758*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12759*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12760*62c56f98SSadaf Ebrahimirequires_config_enabled PSA_WANT_ALG_ECDH
12761*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12762*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12763*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 G->m HRR server with middlebox compat support, not client" \
12764*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key groups=secp384r1 tickets=0" \
12765*62c56f98SSadaf Ebrahimi            "$G_NEXT_CLI localhost --debug=10 --priority=NORMAL:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-SECP384R1:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE -V" \
12766*62c56f98SSadaf Ebrahimi            0 \
12767*62c56f98SSadaf Ebrahimi            -s "Protocol is TLSv1.3" \
12768*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_HELLO_RETRY_REQUEST" \
12769*62c56f98SSadaf Ebrahimi            -c "SSL 3.3 ChangeCipherSpec packet received" \
12770*62c56f98SSadaf Ebrahimi            -c "discarding change cipher spec in TLS1.3"
12771*62c56f98SSadaf Ebrahimi
12772*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
12773*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
12774*62c56f98SSadaf Ebrahimirequires_gnutls_next_disable_tls13_compat
12775*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12776*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12777*62c56f98SSadaf Ebrahimirequires_config_enabled PSA_WANT_ALG_ECDH
12778*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12779*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12780*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3 G->m HRR both with middlebox compat support" \
12781*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key groups=secp384r1 tickets=0" \
12782*62c56f98SSadaf Ebrahimi            "$G_NEXT_CLI localhost --debug=10 --priority=NORMAL:-GROUP-ALL:+GROUP-SECP256R1:+GROUP-SECP384R1:%NO_TICKETS:%DISABLE_TLS13_COMPAT_MODE -V" \
12783*62c56f98SSadaf Ebrahimi            0 \
12784*62c56f98SSadaf Ebrahimi            -s "Protocol is TLSv1.3" \
12785*62c56f98SSadaf Ebrahimi            -s "tls13 server state: MBEDTLS_SSL_SERVER_CCS_AFTER_HELLO_RETRY_REQUEST" \
12786*62c56f98SSadaf Ebrahimi            -c "SSL 3.3 ChangeCipherSpec packet received"
12787*62c56f98SSadaf Ebrahimi
12788*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
12789*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12790*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12791*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12792*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12793*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Check signature algorithm order, m->O" \
12794*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV_NO_CERT -cert data_files/server2-sha256.crt -key data_files/server2.key
12795*62c56f98SSadaf Ebrahimi                                 -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache
12796*62c56f98SSadaf Ebrahimi                                 -Verify 10 -sigalgs rsa_pkcs1_sha512:rsa_pss_rsae_sha512:rsa_pss_rsae_sha384:ecdsa_secp256r1_sha256" \
12797*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=data_files/server2-sha256.crt key_file=data_files/server2.key \
12798*62c56f98SSadaf Ebrahimi                    sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp256r1_sha256" \
12799*62c56f98SSadaf Ebrahimi            0 \
12800*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
12801*62c56f98SSadaf Ebrahimi            -c "CertificateVerify signature with rsa_pss_rsae_sha512" \
12802*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 [Oo][Kk]"
12803*62c56f98SSadaf Ebrahimi
12804*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
12805*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12806*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12807*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12808*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12809*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Check signature algorithm order, m->G" \
12810*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV_NO_CERT --x509certfile data_files/server2-sha256.crt --x509keyfile data_files/server2.key
12811*62c56f98SSadaf Ebrahimi                    -d 4
12812*62c56f98SSadaf Ebrahimi                    --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 " \
12813*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=data_files/server2-sha256.crt key_file=data_files/server2.key \
12814*62c56f98SSadaf Ebrahimi                    sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp256r1_sha256" \
12815*62c56f98SSadaf Ebrahimi            0 \
12816*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
12817*62c56f98SSadaf Ebrahimi            -c "CertificateVerify signature with rsa_pss_rsae_sha512" \
12818*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 [Oo][Kk]"
12819*62c56f98SSadaf Ebrahimi
12820*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12821*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12822*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12823*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12824*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12825*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Check signature algorithm order, m->m" \
12826*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 auth_mode=required
12827*62c56f98SSadaf Ebrahimi                    crt_file2=data_files/server2-sha256.crt key_file2=data_files/server2.key
12828*62c56f98SSadaf Ebrahimi                    crt_file=data_files/server5.crt key_file=data_files/server5.key
12829*62c56f98SSadaf Ebrahimi                    sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp256r1_sha256 " \
12830*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=data_files/server2-sha256.crt key_file=data_files/server2.key \
12831*62c56f98SSadaf Ebrahimi                    sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp256r1_sha256" \
12832*62c56f98SSadaf Ebrahimi            0 \
12833*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
12834*62c56f98SSadaf Ebrahimi            -c "CertificateVerify signature with rsa_pss_rsae_sha512" \
12835*62c56f98SSadaf Ebrahimi            -s "CertificateVerify signature with rsa_pss_rsae_sha512" \
12836*62c56f98SSadaf Ebrahimi            -s "ssl_tls13_pick_key_cert:selected signature algorithm rsa_pss_rsae_sha512" \
12837*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 [Oo][Kk]"
12838*62c56f98SSadaf Ebrahimi
12839*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
12840*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12841*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12842*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12843*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12844*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Check signature algorithm order, O->m" \
12845*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 auth_mode=required
12846*62c56f98SSadaf Ebrahimi                    crt_file2=data_files/server2-sha256.crt key_file2=data_files/server2.key
12847*62c56f98SSadaf Ebrahimi                    crt_file=data_files/server5.crt key_file=data_files/server5.key
12848*62c56f98SSadaf Ebrahimi                    sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp256r1_sha256 " \
12849*62c56f98SSadaf Ebrahimi            "$O_NEXT_CLI_NO_CERT -msg -CAfile data_files/test-ca_cat12.crt \
12850*62c56f98SSadaf Ebrahimi                                 -cert data_files/server2-sha256.crt -key data_files/server2.key \
12851*62c56f98SSadaf Ebrahimi                                 -sigalgs rsa_pkcs1_sha512:rsa_pss_rsae_sha512:rsa_pss_rsae_sha384:ecdsa_secp256r1_sha256"  \
12852*62c56f98SSadaf Ebrahimi            0 \
12853*62c56f98SSadaf Ebrahimi            -c "TLSv1.3" \
12854*62c56f98SSadaf Ebrahimi            -s "CertificateVerify signature with rsa_pss_rsae_sha512" \
12855*62c56f98SSadaf Ebrahimi            -s "ssl_tls13_pick_key_cert:selected signature algorithm rsa_pss_rsae_sha512"
12856*62c56f98SSadaf Ebrahimi
12857*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
12858*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12859*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12860*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12861*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12862*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Check signature algorithm order, G->m" \
12863*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 auth_mode=required
12864*62c56f98SSadaf Ebrahimi                    crt_file2=data_files/server2-sha256.crt key_file2=data_files/server2.key
12865*62c56f98SSadaf Ebrahimi                    crt_file=data_files/server5.crt key_file=data_files/server5.key
12866*62c56f98SSadaf Ebrahimi                    sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp256r1_sha256 " \
12867*62c56f98SSadaf Ebrahimi            "$G_NEXT_CLI_NO_CERT localhost -d 4 --x509cafile data_files/test-ca_cat12.crt \
12868*62c56f98SSadaf Ebrahimi                                 --x509certfile data_files/server2-sha256.crt --x509keyfile data_files/server2.key \
12869*62c56f98SSadaf Ebrahimi                                 --priority=NORMAL:-SIGN-ALL:+SIGN-RSA-SHA512:+SIGN-RSA-PSS-RSAE-SHA512:+SIGN-RSA-PSS-RSAE-SHA384"  \
12870*62c56f98SSadaf Ebrahimi            0 \
12871*62c56f98SSadaf Ebrahimi            -c "Negotiated version: 3.4" \
12872*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 [Oo][Kk]" \
12873*62c56f98SSadaf Ebrahimi            -s "CertificateVerify signature with rsa_pss_rsae_sha512" \
12874*62c56f98SSadaf Ebrahimi            -s "ssl_tls13_pick_key_cert:selected signature algorithm rsa_pss_rsae_sha512"
12875*62c56f98SSadaf Ebrahimi
12876*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
12877*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12878*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12879*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12880*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12881*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Check server no suitable signature algorithm, G->m" \
12882*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 auth_mode=required
12883*62c56f98SSadaf Ebrahimi                    crt_file2=data_files/server2-sha256.crt key_file2=data_files/server2.key
12884*62c56f98SSadaf Ebrahimi                    crt_file=data_files/server5.crt key_file=data_files/server5.key
12885*62c56f98SSadaf Ebrahimi                    sig_algs=rsa_pkcs1_sha512,ecdsa_secp256r1_sha256 " \
12886*62c56f98SSadaf Ebrahimi            "$G_NEXT_CLI_NO_CERT localhost -d 4 --x509cafile data_files/test-ca_cat12.crt \
12887*62c56f98SSadaf Ebrahimi                                 --x509certfile data_files/server2-sha256.crt --x509keyfile data_files/server2.key \
12888*62c56f98SSadaf Ebrahimi                                 --priority=NORMAL:-SIGN-ALL:+SIGN-RSA-SHA512:+SIGN-RSA-PSS-RSAE-SHA512:+SIGN-ECDSA-SECP521R1-SHA512"  \
12889*62c56f98SSadaf Ebrahimi            1 \
12890*62c56f98SSadaf Ebrahimi            -S "ssl_tls13_pick_key_cert:check signature algorithm"
12891*62c56f98SSadaf Ebrahimi
12892*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
12893*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12894*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12895*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12896*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12897*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Check server no suitable signature algorithm, O->m" \
12898*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 auth_mode=required
12899*62c56f98SSadaf Ebrahimi                    crt_file2=data_files/server2-sha256.crt key_file2=data_files/server2.key
12900*62c56f98SSadaf Ebrahimi                    crt_file=data_files/server5.crt key_file=data_files/server5.key
12901*62c56f98SSadaf Ebrahimi                    sig_algs=rsa_pkcs1_sha512,ecdsa_secp256r1_sha256" \
12902*62c56f98SSadaf Ebrahimi            "$O_NEXT_CLI_NO_CERT -msg -CAfile data_files/test-ca_cat12.crt \
12903*62c56f98SSadaf Ebrahimi                                 -cert data_files/server2-sha256.crt -key data_files/server2.key \
12904*62c56f98SSadaf Ebrahimi                                 -sigalgs rsa_pkcs1_sha512:rsa_pss_rsae_sha512:ecdsa_secp521r1_sha512"  \
12905*62c56f98SSadaf Ebrahimi            1 \
12906*62c56f98SSadaf Ebrahimi            -S "ssl_tls13_pick_key_cert:check signature algorithm"
12907*62c56f98SSadaf Ebrahimi
12908*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12909*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12910*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12911*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12912*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12913*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Check server no suitable signature algorithm, m->m" \
12914*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 auth_mode=required
12915*62c56f98SSadaf Ebrahimi                    crt_file2=data_files/server2-sha256.crt key_file2=data_files/server2.key
12916*62c56f98SSadaf Ebrahimi                    crt_file=data_files/server5.crt key_file=data_files/server5.key
12917*62c56f98SSadaf Ebrahimi                    sig_algs=rsa_pkcs1_sha512,ecdsa_secp256r1_sha256 " \
12918*62c56f98SSadaf Ebrahimi            "$P_CLI allow_sha1=0 debug_level=4 crt_file=data_files/server2-sha256.crt key_file=data_files/server2.key \
12919*62c56f98SSadaf Ebrahimi                    sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,ecdsa_secp521r1_sha512" \
12920*62c56f98SSadaf Ebrahimi            1 \
12921*62c56f98SSadaf Ebrahimi            -S "ssl_tls13_pick_key_cert:check signature algorithm"
12922*62c56f98SSadaf Ebrahimi
12923*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
12924*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12925*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12926*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12927*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12928*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Check server no suitable certificate, G->m" \
12929*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4
12930*62c56f98SSadaf Ebrahimi                    crt_file=data_files/server2-sha256.crt key_file=data_files/server2.key
12931*62c56f98SSadaf Ebrahimi                    sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp256r1_sha256 " \
12932*62c56f98SSadaf Ebrahimi            "$G_NEXT_CLI_NO_CERT localhost -d 4 --x509cafile data_files/test-ca_cat12.crt \
12933*62c56f98SSadaf Ebrahimi                                 --priority=NORMAL:-SIGN-ALL:+SIGN-ECDSA-SECP521R1-SHA512:+SIGN-ECDSA-SECP256R1-SHA256"  \
12934*62c56f98SSadaf Ebrahimi            1 \
12935*62c56f98SSadaf Ebrahimi            -s "ssl_tls13_pick_key_cert:no suitable certificate found"
12936*62c56f98SSadaf Ebrahimi
12937*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
12938*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12939*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12940*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12941*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12942*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Check server no suitable certificate, O->m" \
12943*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4
12944*62c56f98SSadaf Ebrahimi                    crt_file=data_files/server2-sha256.crt key_file=data_files/server2.key
12945*62c56f98SSadaf Ebrahimi                    sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp256r1_sha256 " \
12946*62c56f98SSadaf Ebrahimi            "$O_NEXT_CLI_NO_CERT -msg -CAfile data_files/test-ca_cat12.crt \
12947*62c56f98SSadaf Ebrahimi                                 -sigalgs ecdsa_secp521r1_sha512:ecdsa_secp256r1_sha256"  \
12948*62c56f98SSadaf Ebrahimi            1 \
12949*62c56f98SSadaf Ebrahimi            -s "ssl_tls13_pick_key_cert:no suitable certificate found"
12950*62c56f98SSadaf Ebrahimi
12951*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12952*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12953*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12954*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12955*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12956*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Check server no suitable certificate, m->m" \
12957*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4
12958*62c56f98SSadaf Ebrahimi                    crt_file=data_files/server2-sha256.crt key_file=data_files/server2.key
12959*62c56f98SSadaf Ebrahimi                    sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp256r1_sha256 " \
12960*62c56f98SSadaf Ebrahimi            "$P_CLI allow_sha1=0 debug_level=4 \
12961*62c56f98SSadaf Ebrahimi                    sig_algs=ecdsa_secp521r1_sha512,ecdsa_secp256r1_sha256" \
12962*62c56f98SSadaf Ebrahimi            1 \
12963*62c56f98SSadaf Ebrahimi            -s "ssl_tls13_pick_key_cert:no suitable certificate found"
12964*62c56f98SSadaf Ebrahimi
12965*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
12966*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12967*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12968*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12969*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12970*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Check client no signature algorithm, m->O" \
12971*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV_NO_CERT -cert data_files/server2-sha256.crt -key data_files/server2.key
12972*62c56f98SSadaf Ebrahimi                                 -msg -tls1_3 -num_tickets 0 -no_resume_ephemeral -no_cache
12973*62c56f98SSadaf Ebrahimi                                 -Verify 10 -sigalgs rsa_pkcs1_sha512:rsa_pss_rsae_sha512:rsa_pss_rsae_sha384:ecdsa_secp521r1_sha512" \
12974*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key \
12975*62c56f98SSadaf Ebrahimi                    sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp256r1_sha256" \
12976*62c56f98SSadaf Ebrahimi            1 \
12977*62c56f98SSadaf Ebrahimi            -c "no suitable signature algorithm"
12978*62c56f98SSadaf Ebrahimi
12979*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
12980*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12981*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12982*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12983*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12984*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Check client no signature algorithm, m->G" \
12985*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV_NO_CERT --x509certfile data_files/server2-sha256.crt --x509keyfile data_files/server2.key
12986*62c56f98SSadaf Ebrahimi                    -d 4
12987*62c56f98SSadaf Ebrahimi                    --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 " \
12988*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key \
12989*62c56f98SSadaf Ebrahimi                    sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp256r1_sha256" \
12990*62c56f98SSadaf Ebrahimi            1 \
12991*62c56f98SSadaf Ebrahimi            -c "no suitable signature algorithm"
12992*62c56f98SSadaf Ebrahimi
12993*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
12994*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
12995*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
12996*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
12997*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
12998*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: Check client no signature algorithm, m->m" \
12999*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 auth_mode=required
13000*62c56f98SSadaf Ebrahimi                    crt_file2=data_files/server2-sha256.crt key_file2=data_files/server2.key
13001*62c56f98SSadaf Ebrahimi                    crt_file=data_files/server5.crt key_file=data_files/server5.key
13002*62c56f98SSadaf Ebrahimi                    sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp521r1_sha512" \
13003*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key \
13004*62c56f98SSadaf Ebrahimi                    sig_algs=rsa_pkcs1_sha512,rsa_pss_rsae_sha512,rsa_pss_rsae_sha384,ecdsa_secp256r1_sha256" \
13005*62c56f98SSadaf Ebrahimi            1 \
13006*62c56f98SSadaf Ebrahimi            -c "no suitable signature algorithm"
13007*62c56f98SSadaf Ebrahimi
13008*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
13009*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
13010*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
13011*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
13012*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
13013*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
13014*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: NewSessionTicket: Basic check, m->O" \
13015*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV -msg -tls1_3 -no_resume_ephemeral -no_cache --num_tickets 4" \
13016*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=1 reco_mode=1 reconnect=1" \
13017*62c56f98SSadaf Ebrahimi            0 \
13018*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
13019*62c56f98SSadaf Ebrahimi            -c "got new session ticket." \
13020*62c56f98SSadaf Ebrahimi            -c "Saving session for reuse... ok" \
13021*62c56f98SSadaf Ebrahimi            -c "Reconnecting with saved session" \
13022*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 ok"
13023*62c56f98SSadaf Ebrahimi
13024*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
13025*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
13026*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
13027*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
13028*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
13029*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
13030*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: NewSessionTicket: Basic check, m->G" \
13031*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV -d 10 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 --disable-client-cert" \
13032*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=1 reco_mode=1 reconnect=1" \
13033*62c56f98SSadaf Ebrahimi            0 \
13034*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
13035*62c56f98SSadaf Ebrahimi            -c "got new session ticket." \
13036*62c56f98SSadaf Ebrahimi            -c "Saving session for reuse... ok" \
13037*62c56f98SSadaf Ebrahimi            -c "Reconnecting with saved session" \
13038*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK" \
13039*62c56f98SSadaf Ebrahimi            -s "This is a resumed session"
13040*62c56f98SSadaf Ebrahimi
13041*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
13042*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
13043*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
13044*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
13045*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
13046*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
13047*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
13048*62c56f98SSadaf Ebrahimi# https://github.com/openssl/openssl/issues/10714
13049*62c56f98SSadaf Ebrahimi# Until now, OpenSSL client does not support reconnect.
13050*62c56f98SSadaf Ebrahimiskip_next_test
13051*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: NewSessionTicket: Basic check, O->m" \
13052*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key tickets=4" \
13053*62c56f98SSadaf Ebrahimi            "$O_NEXT_CLI -msg -debug -tls1_3 -reconnect" \
13054*62c56f98SSadaf Ebrahimi            0 \
13055*62c56f98SSadaf Ebrahimi            -s "=> write NewSessionTicket msg" \
13056*62c56f98SSadaf Ebrahimi            -s "server state: MBEDTLS_SSL_TLS1_3_NEW_SESSION_TICKET" \
13057*62c56f98SSadaf Ebrahimi            -s "server state: MBEDTLS_SSL_TLS1_3_NEW_SESSION_TICKET_FLUSH"
13058*62c56f98SSadaf Ebrahimi
13059*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
13060*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
13061*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
13062*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
13063*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
13064*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
13065*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
13066*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: NewSessionTicket: Basic check, G->m" \
13067*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key tickets=4" \
13068*62c56f98SSadaf Ebrahimi            "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3 -V -r" \
13069*62c56f98SSadaf Ebrahimi            0 \
13070*62c56f98SSadaf Ebrahimi            -c "Connecting again- trying to resume previous session" \
13071*62c56f98SSadaf Ebrahimi            -c "NEW SESSION TICKET (4) was received" \
13072*62c56f98SSadaf Ebrahimi            -s "=> write NewSessionTicket msg" \
13073*62c56f98SSadaf Ebrahimi            -s "server state: MBEDTLS_SSL_TLS1_3_NEW_SESSION_TICKET" \
13074*62c56f98SSadaf Ebrahimi            -s "server state: MBEDTLS_SSL_TLS1_3_NEW_SESSION_TICKET_FLUSH" \
13075*62c56f98SSadaf Ebrahimi            -s "key exchange mode: ephemeral" \
13076*62c56f98SSadaf Ebrahimi            -s "key exchange mode: psk_ephemeral" \
13077*62c56f98SSadaf Ebrahimi            -s "found pre_shared_key extension"
13078*62c56f98SSadaf Ebrahimi
13079*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
13080*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
13081*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
13082*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
13083*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
13084*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
13085*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
13086*62c56f98SSadaf Ebrahimi# Test the session resumption when the cipher suite for the original session is
13087*62c56f98SSadaf Ebrahimi# TLS1-3-AES-256-GCM-SHA384. In that case, the PSK is 384 bits long and not
13088*62c56f98SSadaf Ebrahimi# 256 bits long as with all the other TLS 1.3 cipher suites.
13089*62c56f98SSadaf Ebrahimirequires_ciphersuite_enabled TLS1-3-AES-256-GCM-SHA384
13090*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: NewSessionTicket: Basic check with AES-256-GCM only, G->m" \
13091*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key force_version=tls13 tickets=4" \
13092*62c56f98SSadaf Ebrahimi            "$G_NEXT_CLI localhost -d 4 --priority=NORMAL:-VERS-ALL:+VERS-TLS1.3:-CIPHER-ALL:+AES-256-GCM -V -r" \
13093*62c56f98SSadaf Ebrahimi            0 \
13094*62c56f98SSadaf Ebrahimi            -c "Connecting again- trying to resume previous session" \
13095*62c56f98SSadaf Ebrahimi            -c "NEW SESSION TICKET (4) was received" \
13096*62c56f98SSadaf Ebrahimi            -s "Ciphersuite is TLS1-3-AES-256-GCM-SHA384" \
13097*62c56f98SSadaf Ebrahimi            -s "=> write NewSessionTicket msg" \
13098*62c56f98SSadaf Ebrahimi            -s "server state: MBEDTLS_SSL_TLS1_3_NEW_SESSION_TICKET" \
13099*62c56f98SSadaf Ebrahimi            -s "server state: MBEDTLS_SSL_TLS1_3_NEW_SESSION_TICKET_FLUSH" \
13100*62c56f98SSadaf Ebrahimi            -s "key exchange mode: ephemeral" \
13101*62c56f98SSadaf Ebrahimi            -s "key exchange mode: psk_ephemeral" \
13102*62c56f98SSadaf Ebrahimi            -s "found pre_shared_key extension"
13103*62c56f98SSadaf Ebrahimi
13104*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
13105*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
13106*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
13107*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
13108*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
13109*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
13110*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
13111*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: NewSessionTicket: Basic check, m->m" \
13112*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key tickets=4" \
13113*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 reco_mode=1 reconnect=1" \
13114*62c56f98SSadaf Ebrahimi            0 \
13115*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
13116*62c56f98SSadaf Ebrahimi            -c "got new session ticket ( 3 )" \
13117*62c56f98SSadaf Ebrahimi            -c "Saving session for reuse... ok" \
13118*62c56f98SSadaf Ebrahimi            -c "Reconnecting with saved session" \
13119*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"    \
13120*62c56f98SSadaf Ebrahimi            -s "=> write NewSessionTicket msg" \
13121*62c56f98SSadaf Ebrahimi            -s "server state: MBEDTLS_SSL_TLS1_3_NEW_SESSION_TICKET" \
13122*62c56f98SSadaf Ebrahimi            -s "server state: MBEDTLS_SSL_TLS1_3_NEW_SESSION_TICKET_FLUSH" \
13123*62c56f98SSadaf Ebrahimi            -s "key exchange mode: ephemeral" \
13124*62c56f98SSadaf Ebrahimi            -s "key exchange mode: psk_ephemeral" \
13125*62c56f98SSadaf Ebrahimi            -s "found pre_shared_key extension"
13126*62c56f98SSadaf Ebrahimi
13127*62c56f98SSadaf Ebrahimirequires_openssl_tls1_3_with_compatible_ephemeral
13128*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
13129*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
13130*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
13131*62c56f98SSadaf Ebrahimirun_test    "TLS 1.2: Check rsa_pss_rsae compatibility issue, m->O" \
13132*62c56f98SSadaf Ebrahimi            "$O_NEXT_SRV_NO_CERT -cert data_files/server2-sha256.crt -key data_files/server2.key
13133*62c56f98SSadaf Ebrahimi                                 -msg -tls1_2
13134*62c56f98SSadaf Ebrahimi                                 -Verify 10 " \
13135*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=data_files/server2-sha256.crt key_file=data_files/server2.key
13136*62c56f98SSadaf Ebrahimi                    sig_algs=rsa_pss_rsae_sha512,rsa_pkcs1_sha512
13137*62c56f98SSadaf Ebrahimi                    min_version=tls12 max_version=tls13 " \
13138*62c56f98SSadaf Ebrahimi            0 \
13139*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.2" \
13140*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 [Oo][Kk]"
13141*62c56f98SSadaf Ebrahimi
13142*62c56f98SSadaf Ebrahimi
13143*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
13144*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
13145*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
13146*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
13147*62c56f98SSadaf Ebrahimirun_test    "TLS 1.2: Check rsa_pss_rsae compatibility issue, m->G" \
13148*62c56f98SSadaf Ebrahimi            "$G_NEXT_SRV_NO_CERT --x509certfile data_files/server2-sha256.crt --x509keyfile data_files/server2.key
13149*62c56f98SSadaf Ebrahimi                    -d 4
13150*62c56f98SSadaf Ebrahimi                    --priority=NORMAL:-VERS-ALL:+VERS-TLS1.2" \
13151*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 crt_file=data_files/server2-sha256.crt key_file=data_files/server2.key
13152*62c56f98SSadaf Ebrahimi                    sig_algs=rsa_pss_rsae_sha512,rsa_pkcs1_sha512
13153*62c56f98SSadaf Ebrahimi                    min_version=tls12 max_version=tls13 " \
13154*62c56f98SSadaf Ebrahimi            0 \
13155*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.2" \
13156*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 [Oo][Kk]"
13157*62c56f98SSadaf Ebrahimi
13158*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
13159*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
13160*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
13161*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
13162*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
13163*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
13164*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
13165*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: NewSessionTicket: servername check, m->m" \
13166*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key tickets=4 \
13167*62c56f98SSadaf Ebrahimi            sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
13168*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 server_name=localhost reco_mode=1 reconnect=1" \
13169*62c56f98SSadaf Ebrahimi            0 \
13170*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
13171*62c56f98SSadaf Ebrahimi            -c "got new session ticket." \
13172*62c56f98SSadaf Ebrahimi            -c "Saving session for reuse... ok" \
13173*62c56f98SSadaf Ebrahimi            -c "Reconnecting with saved session" \
13174*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"    \
13175*62c56f98SSadaf Ebrahimi            -s "=> write NewSessionTicket msg" \
13176*62c56f98SSadaf Ebrahimi            -s "server state: MBEDTLS_SSL_TLS1_3_NEW_SESSION_TICKET" \
13177*62c56f98SSadaf Ebrahimi            -s "server state: MBEDTLS_SSL_TLS1_3_NEW_SESSION_TICKET_FLUSH" \
13178*62c56f98SSadaf Ebrahimi            -s "key exchange mode: ephemeral" \
13179*62c56f98SSadaf Ebrahimi            -s "key exchange mode: psk_ephemeral" \
13180*62c56f98SSadaf Ebrahimi            -s "found pre_shared_key extension"
13181*62c56f98SSadaf Ebrahimi
13182*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SESSION_TICKETS
13183*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
13184*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
13185*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
13186*62c56f98SSadaf Ebrahimirequires_all_configs_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE \
13187*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED \
13188*62c56f98SSadaf Ebrahimi                             MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
13189*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: NewSessionTicket: servername negative check, m->m" \
13190*62c56f98SSadaf Ebrahimi            "$P_SRV debug_level=4 crt_file=data_files/server5.crt key_file=data_files/server5.key tickets=4 \
13191*62c56f98SSadaf Ebrahimi            sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \
13192*62c56f98SSadaf Ebrahimi            "$P_CLI debug_level=4 server_name=localhost reco_server_name=remote reco_mode=1 reconnect=1" \
13193*62c56f98SSadaf Ebrahimi            1 \
13194*62c56f98SSadaf Ebrahimi            -c "Protocol is TLSv1.3" \
13195*62c56f98SSadaf Ebrahimi            -c "got new session ticket." \
13196*62c56f98SSadaf Ebrahimi            -c "Saving session for reuse... ok" \
13197*62c56f98SSadaf Ebrahimi            -c "Reconnecting with saved session" \
13198*62c56f98SSadaf Ebrahimi            -c "Hostname mismatch the session ticket, disable session resumption."    \
13199*62c56f98SSadaf Ebrahimi            -s "=> write NewSessionTicket msg" \
13200*62c56f98SSadaf Ebrahimi            -s "server state: MBEDTLS_SSL_TLS1_3_NEW_SESSION_TICKET" \
13201*62c56f98SSadaf Ebrahimi            -s "server state: MBEDTLS_SSL_TLS1_3_NEW_SESSION_TICKET_FLUSH"
13202*62c56f98SSadaf Ebrahimi
13203*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
13204*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
13205*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
13206*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13207*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_RSASSA_PSS_SUPPORT
13208*62c56f98SSadaf Ebrahimirequires_config_enabled PSA_WANT_ALG_FFDH
13209*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
13210*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
13211*62c56f98SSadaf Ebrahimirequires_gnutls_next_disable_tls13_compat
13212*62c56f98SSadaf Ebrahimirun_test "TLS 1.3 G->m: AES_128_GCM_SHA256,ffdhe3072,rsa_pss_rsae_sha256" \
13213*62c56f98SSadaf Ebrahimi         "$P_SRV crt_file=data_files/server2-sha256.crt key_file=data_files/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" \
13214*62c56f98SSadaf Ebrahimi         "$G_NEXT_CLI_NO_CERT --debug=4 --single-key-share --x509cafile data_files/test-ca_cat12.crt --priority=NONE:+AES-128-GCM:+SHA256:+AEAD:+SIGN-RSA-PSS-RSAE-SHA256:+GROUP-FFDHE3072:+VERS-TLS1.3:%NO_TICKETS" \
13215*62c56f98SSadaf Ebrahimi         0 \
13216*62c56f98SSadaf Ebrahimi         -s "Protocol is TLSv1.3" \
13217*62c56f98SSadaf Ebrahimi         -s "server hello, chosen ciphersuite: TLS1-3-AES-128-GCM-SHA256 ( id=4865 )" \
13218*62c56f98SSadaf Ebrahimi         -s "received signature algorithm: 0x804" \
13219*62c56f98SSadaf Ebrahimi         -s "got named group: ffdhe3072(0101)" \
13220*62c56f98SSadaf Ebrahimi         -s "Certificate verification was skipped" \
13221*62c56f98SSadaf Ebrahimi         -C "received HelloRetryRequest message"
13222*62c56f98SSadaf Ebrahimi
13223*62c56f98SSadaf Ebrahimi
13224*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
13225*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
13226*62c56f98SSadaf Ebrahimirequires_gnutls_next_disable_tls13_compat
13227*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
13228*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
13229*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
13230*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13231*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_RSASSA_PSS_SUPPORT
13232*62c56f98SSadaf Ebrahimirequires_config_enabled PSA_WANT_ALG_FFDH
13233*62c56f98SSadaf Ebrahimirun_test "TLS 1.3 m->G: AES_128_GCM_SHA256,ffdhe3072,rsa_pss_rsae_sha256" \
13234*62c56f98SSadaf Ebrahimi         "$G_NEXT_SRV_NO_CERT --http --disable-client-cert --debug=4 --x509certfile data_files/server2-sha256.crt --x509keyfile data_files/server2.key --priority=NONE:+AES-128-GCM:+SHA256:+AEAD:+SIGN-RSA-PSS-RSAE-SHA256:+GROUP-FFDHE3072:+VERS-TLS1.3:%NO_TICKETS" \
13235*62c56f98SSadaf Ebrahimi         "$P_CLI ca_file=data_files/test-ca_cat12.crt debug_level=4 force_ciphersuite=TLS1-3-AES-128-GCM-SHA256 sig_algs=rsa_pss_rsae_sha256 groups=ffdhe3072" \
13236*62c56f98SSadaf Ebrahimi         0 \
13237*62c56f98SSadaf Ebrahimi         -c "HTTP/1.0 200 OK" \
13238*62c56f98SSadaf Ebrahimi         -c "Protocol is TLSv1.3" \
13239*62c56f98SSadaf Ebrahimi         -c "server hello, chosen ciphersuite: ( 1301 ) - TLS1-3-AES-128-GCM-SHA256" \
13240*62c56f98SSadaf Ebrahimi         -c "Certificate Verify: Signature algorithm ( 0804 )" \
13241*62c56f98SSadaf Ebrahimi         -c "NamedGroup: ffdhe3072 ( 101 )" \
13242*62c56f98SSadaf Ebrahimi         -c "Verifying peer X.509 certificate... ok" \
13243*62c56f98SSadaf Ebrahimi         -C "received HelloRetryRequest message"
13244*62c56f98SSadaf Ebrahimi
13245*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
13246*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
13247*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
13248*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13249*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_RSASSA_PSS_SUPPORT
13250*62c56f98SSadaf Ebrahimirequires_config_enabled PSA_WANT_ALG_FFDH
13251*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
13252*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
13253*62c56f98SSadaf Ebrahimirequires_gnutls_next_disable_tls13_compat
13254*62c56f98SSadaf Ebrahimirun_test "TLS 1.3 G->m: AES_128_GCM_SHA256,ffdhe4096,rsa_pss_rsae_sha256" \
13255*62c56f98SSadaf Ebrahimi         "$P_SRV crt_file=data_files/server2-sha256.crt key_file=data_files/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" \
13256*62c56f98SSadaf Ebrahimi         "$G_NEXT_CLI_NO_CERT --debug=4 --single-key-share --x509cafile data_files/test-ca_cat12.crt --priority=NONE:+AES-128-GCM:+SHA256:+AEAD:+SIGN-RSA-PSS-RSAE-SHA256:+GROUP-FFDHE4096:+VERS-TLS1.3:%NO_TICKETS" \
13257*62c56f98SSadaf Ebrahimi         0 \
13258*62c56f98SSadaf Ebrahimi         -s "Protocol is TLSv1.3" \
13259*62c56f98SSadaf Ebrahimi         -s "server hello, chosen ciphersuite: TLS1-3-AES-128-GCM-SHA256 ( id=4865 )" \
13260*62c56f98SSadaf Ebrahimi         -s "received signature algorithm: 0x804" \
13261*62c56f98SSadaf Ebrahimi         -s "got named group: ffdhe4096(0102)" \
13262*62c56f98SSadaf Ebrahimi         -s "Certificate verification was skipped" \
13263*62c56f98SSadaf Ebrahimi         -C "received HelloRetryRequest message"
13264*62c56f98SSadaf Ebrahimi
13265*62c56f98SSadaf Ebrahimi
13266*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
13267*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
13268*62c56f98SSadaf Ebrahimirequires_gnutls_next_disable_tls13_compat
13269*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
13270*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
13271*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
13272*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13273*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_RSASSA_PSS_SUPPORT
13274*62c56f98SSadaf Ebrahimirequires_config_enabled PSA_WANT_ALG_FFDH
13275*62c56f98SSadaf Ebrahimirun_test "TLS 1.3 m->G: AES_128_GCM_SHA256,ffdhe4096,rsa_pss_rsae_sha256" \
13276*62c56f98SSadaf Ebrahimi         "$G_NEXT_SRV_NO_CERT --http --disable-client-cert --debug=4 --x509certfile data_files/server2-sha256.crt --x509keyfile data_files/server2.key --priority=NONE:+AES-128-GCM:+SHA256:+AEAD:+SIGN-RSA-PSS-RSAE-SHA256:+GROUP-FFDHE4096:+VERS-TLS1.3:%NO_TICKETS" \
13277*62c56f98SSadaf Ebrahimi         "$P_CLI ca_file=data_files/test-ca_cat12.crt debug_level=4 force_ciphersuite=TLS1-3-AES-128-GCM-SHA256 sig_algs=rsa_pss_rsae_sha256 groups=ffdhe4096" \
13278*62c56f98SSadaf Ebrahimi         0 \
13279*62c56f98SSadaf Ebrahimi         -c "HTTP/1.0 200 OK" \
13280*62c56f98SSadaf Ebrahimi         -c "Protocol is TLSv1.3" \
13281*62c56f98SSadaf Ebrahimi         -c "server hello, chosen ciphersuite: ( 1301 ) - TLS1-3-AES-128-GCM-SHA256" \
13282*62c56f98SSadaf Ebrahimi         -c "Certificate Verify: Signature algorithm ( 0804 )" \
13283*62c56f98SSadaf Ebrahimi         -c "NamedGroup: ffdhe4096 ( 102 )" \
13284*62c56f98SSadaf Ebrahimi         -c "Verifying peer X.509 certificate... ok" \
13285*62c56f98SSadaf Ebrahimi         -C "received HelloRetryRequest message"
13286*62c56f98SSadaf Ebrahimi
13287*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
13288*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
13289*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
13290*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13291*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_RSASSA_PSS_SUPPORT
13292*62c56f98SSadaf Ebrahimirequires_config_enabled PSA_WANT_ALG_FFDH
13293*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
13294*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
13295*62c56f98SSadaf Ebrahimirequires_gnutls_next_disable_tls13_compat
13296*62c56f98SSadaf Ebrahimirun_test "TLS 1.3 G->m: AES_128_GCM_SHA256,ffdhe6144,rsa_pss_rsae_sha256" \
13297*62c56f98SSadaf Ebrahimi         "$P_SRV crt_file=data_files/server2-sha256.crt key_file=data_files/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" \
13298*62c56f98SSadaf Ebrahimi         "$G_NEXT_CLI_NO_CERT --debug=4 --single-key-share --x509cafile data_files/test-ca_cat12.crt --priority=NONE:+AES-128-GCM:+SHA256:+AEAD:+SIGN-RSA-PSS-RSAE-SHA256:+GROUP-FFDHE6144:+VERS-TLS1.3:%NO_TICKETS" \
13299*62c56f98SSadaf Ebrahimi         0 \
13300*62c56f98SSadaf Ebrahimi         -s "Protocol is TLSv1.3" \
13301*62c56f98SSadaf Ebrahimi         -s "server hello, chosen ciphersuite: TLS1-3-AES-128-GCM-SHA256 ( id=4865 )" \
13302*62c56f98SSadaf Ebrahimi         -s "received signature algorithm: 0x804" \
13303*62c56f98SSadaf Ebrahimi         -s "got named group: ffdhe6144(0103)" \
13304*62c56f98SSadaf Ebrahimi         -s "Certificate verification was skipped" \
13305*62c56f98SSadaf Ebrahimi         -C "received HelloRetryRequest message"
13306*62c56f98SSadaf Ebrahimi
13307*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
13308*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
13309*62c56f98SSadaf Ebrahimirequires_gnutls_next_disable_tls13_compat
13310*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
13311*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
13312*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
13313*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13314*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_RSASSA_PSS_SUPPORT
13315*62c56f98SSadaf Ebrahimirequires_config_enabled PSA_WANT_ALG_FFDH
13316*62c56f98SSadaf Ebrahimirun_test "TLS 1.3 m->G: AES_128_GCM_SHA256,ffdhe6144,rsa_pss_rsae_sha256" \
13317*62c56f98SSadaf Ebrahimi         "$G_NEXT_SRV_NO_CERT --http --disable-client-cert --debug=4 --x509certfile data_files/server2-sha256.crt --x509keyfile data_files/server2.key --priority=NONE:+AES-128-GCM:+SHA256:+AEAD:+SIGN-RSA-PSS-RSAE-SHA256:+GROUP-FFDHE6144:+VERS-TLS1.3:%NO_TICKETS" \
13318*62c56f98SSadaf Ebrahimi         "$P_CLI ca_file=data_files/test-ca_cat12.crt debug_level=4 force_ciphersuite=TLS1-3-AES-128-GCM-SHA256 sig_algs=rsa_pss_rsae_sha256 groups=ffdhe6144" \
13319*62c56f98SSadaf Ebrahimi         0 \
13320*62c56f98SSadaf Ebrahimi         -c "HTTP/1.0 200 OK" \
13321*62c56f98SSadaf Ebrahimi         -c "Protocol is TLSv1.3" \
13322*62c56f98SSadaf Ebrahimi         -c "server hello, chosen ciphersuite: ( 1301 ) - TLS1-3-AES-128-GCM-SHA256" \
13323*62c56f98SSadaf Ebrahimi         -c "Certificate Verify: Signature algorithm ( 0804 )" \
13324*62c56f98SSadaf Ebrahimi         -c "NamedGroup: ffdhe6144 ( 103 )" \
13325*62c56f98SSadaf Ebrahimi         -c "Verifying peer X.509 certificate... ok" \
13326*62c56f98SSadaf Ebrahimi         -C "received HelloRetryRequest message"
13327*62c56f98SSadaf Ebrahimi
13328*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
13329*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
13330*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
13331*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13332*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_RSASSA_PSS_SUPPORT
13333*62c56f98SSadaf Ebrahimirequires_config_enabled PSA_WANT_ALG_FFDH
13334*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
13335*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
13336*62c56f98SSadaf Ebrahimirequires_gnutls_next_disable_tls13_compat
13337*62c56f98SSadaf Ebrahimiclient_needs_more_time 4
13338*62c56f98SSadaf Ebrahimirun_test "TLS 1.3 G->m: AES_128_GCM_SHA256,ffdhe8192,rsa_pss_rsae_sha256" \
13339*62c56f98SSadaf Ebrahimi         "$P_SRV crt_file=data_files/server2-sha256.crt key_file=data_files/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" \
13340*62c56f98SSadaf Ebrahimi         "$G_NEXT_CLI_NO_CERT --debug=4 --single-key-share --x509cafile data_files/test-ca_cat12.crt --priority=NONE:+AES-128-GCM:+SHA256:+AEAD:+SIGN-RSA-PSS-RSAE-SHA256:+GROUP-FFDHE8192:+VERS-TLS1.3:%NO_TICKETS" \
13341*62c56f98SSadaf Ebrahimi         0 \
13342*62c56f98SSadaf Ebrahimi         -s "Protocol is TLSv1.3" \
13343*62c56f98SSadaf Ebrahimi         -s "server hello, chosen ciphersuite: TLS1-3-AES-128-GCM-SHA256 ( id=4865 )" \
13344*62c56f98SSadaf Ebrahimi         -s "received signature algorithm: 0x804" \
13345*62c56f98SSadaf Ebrahimi         -s "got named group: ffdhe8192(0104)" \
13346*62c56f98SSadaf Ebrahimi         -s "Certificate verification was skipped" \
13347*62c56f98SSadaf Ebrahimi         -C "received HelloRetryRequest message"
13348*62c56f98SSadaf Ebrahimi
13349*62c56f98SSadaf Ebrahimirequires_gnutls_tls1_3
13350*62c56f98SSadaf Ebrahimirequires_gnutls_next_no_ticket
13351*62c56f98SSadaf Ebrahimirequires_gnutls_next_disable_tls13_compat
13352*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
13353*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_DEBUG_C
13354*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
13355*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
13356*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_X509_RSASSA_PSS_SUPPORT
13357*62c56f98SSadaf Ebrahimirequires_config_enabled PSA_WANT_ALG_FFDH
13358*62c56f98SSadaf Ebrahimiclient_needs_more_time 4
13359*62c56f98SSadaf Ebrahimirun_test "TLS 1.3 m->G: AES_128_GCM_SHA256,ffdhe8192,rsa_pss_rsae_sha256" \
13360*62c56f98SSadaf Ebrahimi         "$G_NEXT_SRV_NO_CERT --http --disable-client-cert --debug=4 --x509certfile data_files/server2-sha256.crt --x509keyfile data_files/server2.key --priority=NONE:+AES-128-GCM:+SHA256:+AEAD:+SIGN-RSA-PSS-RSAE-SHA256:+GROUP-FFDHE8192:+VERS-TLS1.3:%NO_TICKETS" \
13361*62c56f98SSadaf Ebrahimi         "$P_CLI ca_file=data_files/test-ca_cat12.crt debug_level=4 force_ciphersuite=TLS1-3-AES-128-GCM-SHA256 sig_algs=rsa_pss_rsae_sha256 groups=ffdhe8192" \
13362*62c56f98SSadaf Ebrahimi         0 \
13363*62c56f98SSadaf Ebrahimi         -c "HTTP/1.0 200 OK" \
13364*62c56f98SSadaf Ebrahimi         -c "Protocol is TLSv1.3" \
13365*62c56f98SSadaf Ebrahimi         -c "server hello, chosen ciphersuite: ( 1301 ) - TLS1-3-AES-128-GCM-SHA256" \
13366*62c56f98SSadaf Ebrahimi         -c "Certificate Verify: Signature algorithm ( 0804 )" \
13367*62c56f98SSadaf Ebrahimi         -c "NamedGroup: ffdhe8192 ( 104 )" \
13368*62c56f98SSadaf Ebrahimi         -c "Verifying peer X.509 certificate... ok" \
13369*62c56f98SSadaf Ebrahimi         -C "received HelloRetryRequest message"
13370*62c56f98SSadaf Ebrahimi
13371*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_3
13372*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_SRV_C
13373*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_CLI_C
13374*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
13375*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
13376*62c56f98SSadaf Ebrahimirun_test    "TLS 1.3: no HRR in case of PSK key exchange mode" \
13377*62c56f98SSadaf Ebrahimi            "$P_SRV nbio=2 psk=010203 psk_identity=0a0b0c tls13_kex_modes=psk groups=none" \
13378*62c56f98SSadaf Ebrahimi            "$P_CLI nbio=2 debug_level=3 psk=010203 psk_identity=0a0b0c tls13_kex_modes=all" \
13379*62c56f98SSadaf Ebrahimi            0 \
13380*62c56f98SSadaf Ebrahimi            -C "received HelloRetryRequest message" \
13381*62c56f98SSadaf Ebrahimi            -c "Selected key exchange mode: psk$" \
13382*62c56f98SSadaf Ebrahimi            -c "HTTP/1.0 200 OK"
13383*62c56f98SSadaf Ebrahimi
13384*62c56f98SSadaf Ebrahimi# Test heap memory usage after handshake
13385*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2
13386*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_MEMORY_DEBUG
13387*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_MEMORY_BUFFER_ALLOC_C
13388*62c56f98SSadaf Ebrahimirequires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
13389*62c56f98SSadaf Ebrahimirequires_max_content_len 16384
13390*62c56f98SSadaf Ebrahimirun_tests_memory_after_hanshake
13391*62c56f98SSadaf Ebrahimi
13392*62c56f98SSadaf Ebrahimi# Final report
13393*62c56f98SSadaf Ebrahimi
13394*62c56f98SSadaf Ebrahimiecho "------------------------------------------------------------------------"
13395*62c56f98SSadaf Ebrahimi
13396*62c56f98SSadaf Ebrahimiif [ $FAILS = 0 ]; then
13397*62c56f98SSadaf Ebrahimi    printf "PASSED"
13398*62c56f98SSadaf Ebrahimielse
13399*62c56f98SSadaf Ebrahimi    printf "FAILED"
13400*62c56f98SSadaf Ebrahimifi
13401*62c56f98SSadaf EbrahimiPASSES=$(( $TESTS - $FAILS ))
13402*62c56f98SSadaf Ebrahimiecho " ($PASSES / $TESTS tests ($SKIPS skipped))"
13403*62c56f98SSadaf Ebrahimi
13404*62c56f98SSadaf Ebrahimiif [ $FAILS -gt 255 ]; then
13405*62c56f98SSadaf Ebrahimi    # Clamp at 255 as caller gets exit code & 0xFF
13406*62c56f98SSadaf Ebrahimi    # (so 256 would be 0, or success, etc)
13407*62c56f98SSadaf Ebrahimi    FAILS=255
13408*62c56f98SSadaf Ebrahimifi
13409*62c56f98SSadaf Ebrahimiexit $FAILS
13410